@sapui5/sap.fe.test 1.108.2 → 1.110.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 (84) hide show
  1. package/README.md +5 -1
  2. package/package.json +9 -7
  3. package/src/sap/fe/test/.library +17 -18
  4. package/src/sap/fe/test/BaseActions.js +3 -2
  5. package/src/sap/fe/test/BaseArrangements.js +3 -2
  6. package/src/sap/fe/test/BaseAssertions.js +26 -2
  7. package/src/sap/fe/test/CollaborationClient.js +21 -5
  8. package/src/sap/fe/test/CollaborationClient.ts +29 -1
  9. package/src/sap/fe/test/ConfirmDialog.js +12 -11
  10. package/src/sap/fe/test/FCLView.js +16 -15
  11. package/src/sap/fe/test/FeMocks.js +1 -11
  12. package/src/sap/fe/test/Flexibility.js +12 -7
  13. package/src/sap/fe/test/FlexibleColumnLayout.js +12 -11
  14. package/src/sap/fe/test/JestFlexibilityHelper.js +141 -0
  15. package/src/sap/fe/test/JestFlexibilityHelper.ts +135 -0
  16. package/src/sap/fe/test/JestTemplatingHelper.js +191 -207
  17. package/src/sap/fe/test/JestTemplatingHelper.ts +171 -91
  18. package/src/sap/fe/test/JourneyRunner.js +3 -2
  19. package/src/sap/fe/test/ListReport.js +3 -2
  20. package/src/sap/fe/test/LocationUtil.js +3 -2
  21. package/src/sap/fe/test/ObjectPage.js +129 -26
  22. package/src/sap/fe/test/Shell.js +9 -4
  23. package/src/sap/fe/test/Stubs.js +18 -17
  24. package/src/sap/fe/test/TemplatePage.js +3 -2
  25. package/src/sap/fe/test/TemplatingTestUtils.js +3 -2
  26. package/src/sap/fe/test/UI5MockHelper.js +39 -72
  27. package/src/sap/fe/test/UI5MockHelper.ts +3 -0
  28. package/src/sap/fe/test/Utils.js +4 -3
  29. package/src/sap/fe/test/api/APIHelper.js +3 -2
  30. package/src/sap/fe/test/api/BaseAPI.js +3 -2
  31. package/src/sap/fe/test/api/ChartActions.js +3 -2
  32. package/src/sap/fe/test/api/ChartAssertions.js +3 -2
  33. package/src/sap/fe/test/api/CollaborationAPI.js +2 -30
  34. package/src/sap/fe/test/api/DialogAPI.js +3 -2
  35. package/src/sap/fe/test/api/DialogActions.js +3 -2
  36. package/src/sap/fe/test/api/DialogAssertions.js +4 -3
  37. package/src/sap/fe/test/api/DialogCreateActions.js +6 -5
  38. package/src/sap/fe/test/api/DialogCreateAssertions.js +48 -49
  39. package/src/sap/fe/test/api/DialogHelper.js +4 -3
  40. package/src/sap/fe/test/api/DialogMassEditActions.js +3 -2
  41. package/src/sap/fe/test/api/DialogMassEditAssertions.js +3 -2
  42. package/src/sap/fe/test/api/DialogMessageActions.js +3 -2
  43. package/src/sap/fe/test/api/DialogMessageAssertions.js +82 -79
  44. package/src/sap/fe/test/api/DialogType.js +3 -2
  45. package/src/sap/fe/test/api/DialogValueHelpActions.js +3 -2
  46. package/src/sap/fe/test/api/DialogValueHelpAssertions.js +3 -2
  47. package/src/sap/fe/test/api/EditState.js +4 -3
  48. package/src/sap/fe/test/api/FilterBarAPI.js +3 -2
  49. package/src/sap/fe/test/api/FilterBarActions.js +3 -2
  50. package/src/sap/fe/test/api/FilterBarAssertions.js +3 -2
  51. package/src/sap/fe/test/api/FooterAPI.js +5 -4
  52. package/src/sap/fe/test/api/FooterActionsBase.js +3 -2
  53. package/src/sap/fe/test/api/FooterActionsOP.js +3 -2
  54. package/src/sap/fe/test/api/FooterAssertionsBase.js +3 -2
  55. package/src/sap/fe/test/api/FooterAssertionsOP.js +3 -2
  56. package/src/sap/fe/test/api/FormAPI.js +4 -2
  57. package/src/sap/fe/test/api/FormActions.js +3 -2
  58. package/src/sap/fe/test/api/FormAssertions.js +3 -2
  59. package/src/sap/fe/test/api/HeaderAPI.js +3 -2
  60. package/src/sap/fe/test/api/HeaderActions.js +3 -2
  61. package/src/sap/fe/test/api/HeaderActionsLR.js +3 -2
  62. package/src/sap/fe/test/api/HeaderAssertions.js +3 -2
  63. package/src/sap/fe/test/api/HeaderAssertionsLR.js +3 -2
  64. package/src/sap/fe/test/api/HeaderLR.js +3 -2
  65. package/src/sap/fe/test/api/KPICardAPI.js +5 -4
  66. package/src/sap/fe/test/api/KPICardActions.js +7 -11
  67. package/src/sap/fe/test/api/KPICardAssertions.js +3 -2
  68. package/src/sap/fe/test/api/TableAPI.js +5 -4
  69. package/src/sap/fe/test/api/TableActions.js +16 -9
  70. package/src/sap/fe/test/api/TableAssertions.js +8 -7
  71. package/src/sap/fe/test/builder/DialogBuilder.js +99 -102
  72. package/src/sap/fe/test/builder/FEBuilder.js +3 -2
  73. package/src/sap/fe/test/builder/KPIBuilder.js +16 -25
  74. package/src/sap/fe/test/builder/MacroFieldBuilder.js +4 -2
  75. package/src/sap/fe/test/builder/MdcFieldBuilder.js +3 -2
  76. package/src/sap/fe/test/builder/MdcFilterBarBuilder.js +3 -2
  77. package/src/sap/fe/test/builder/MdcFilterFieldBuilder.js +3 -2
  78. package/src/sap/fe/test/builder/MdcTableBuilder.js +196 -96
  79. package/src/sap/fe/test/builder/OverflowToolbarBuilder.js +3 -2
  80. package/src/sap/fe/test/builder/VMBuilder.js +3 -2
  81. package/src/sap/fe/test/internal/ConsoleErrorChecker.js +13 -48
  82. package/src/sap/fe/test/internal/FEArrangements.js +3 -2
  83. package/src/sap/fe/test/internal/FEJourneyRunner.js +5 -3
  84. package/src/sap/fe/test/library.js +3 -2
@@ -9,14 +9,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
9
9
  var initializeCollaboration = ActivityBase.initializeCollaboration;
10
10
  var endCollaboration = ActivityBase.endCollaboration;
11
11
  var broadcastCollaborationMessage = ActivityBase.broadcastCollaborationMessage;
12
-
13
12
  var CollaborationAPI = {
14
13
  _lastReceivedMessage: undefined,
15
14
  _rootPath: "",
16
15
  _oModel: undefined,
17
16
  _lockedPropertyPath: "",
18
17
  _internalModel: undefined,
19
-
20
18
  /**
21
19
  * Open an existing collaborative draft with a new user, and creates a 'ghost client' for this user.
22
20
  *
@@ -26,12 +24,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
26
24
  */
27
25
  enterDraft: function (oContext, userID, userName) {
28
26
  var webSocketBaseURL = oContext.getModel().getMetaModel().getObject("/@com.sap.vocabularies.Common.v1.WebSocketBaseURL");
29
-
30
27
  if (!webSocketBaseURL) {
31
28
  Log.error("Cannot find WebSocketBaseURL annotation");
32
29
  return;
33
30
  }
34
-
35
31
  var sDraftUUID = oContext.getProperty("DraftAdministrativeData/DraftUUID");
36
32
  this._internalModel = new JSONModel({});
37
33
  var serviceUrl = oContext.getModel().getServiceUrl();
@@ -43,7 +39,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
43
39
  this._rootPath = oContext.getPath();
44
40
  this._oModel = oContext.getModel();
45
41
  },
46
-
47
42
  /**
48
43
  * Checks if the ghost client has revieved a given message.
49
44
  *
@@ -54,26 +49,21 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
54
49
  if (!this._lastReceivedMessage) {
55
50
  return false;
56
51
  }
57
-
58
52
  var found = (!message.userID || message.userID === this._lastReceivedMessage.userID) && (!message.userAction || message.userAction === this._lastReceivedMessage.userAction) && (!message.clientContent || message.clientContent === this._lastReceivedMessage.clientContent);
59
53
  this._lastReceivedMessage = undefined; // reset history to avoid finding the same message twice
60
54
 
61
55
  return found;
62
56
  },
63
-
64
57
  /**
65
58
  * Closes the ghost client and removes the user from the collaborative draft.
66
59
  */
67
60
  leaveDraft: function () {
68
61
  if (this._internalModel) {
69
62
  endCollaboration(this._internalModel);
70
-
71
63
  this._internalModel.destroy();
72
-
73
64
  this._internalModel = undefined;
74
65
  }
75
66
  },
76
-
77
67
  /**
78
68
  * Simulates that the user starts typing in an input (live change).
79
69
  *
@@ -85,12 +75,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
85
75
  // Unlock previous property path
86
76
  this.undoChange();
87
77
  }
88
-
89
78
  this._lockedPropertyPath = sPropertyPath;
90
79
  broadcastCollaborationMessage(Activity.LiveChange, "".concat(this._rootPath, "/").concat(sPropertyPath), this._internalModel);
91
80
  }
92
81
  },
93
-
94
82
  /**
95
83
  * Simulates that the user has modified a property.
96
84
  *
@@ -99,20 +87,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
99
87
  */
100
88
  updatePropertyValue: function (sPropertyPath, value) {
101
89
  var _this = this;
102
-
103
90
  if (this._internalModel) {
104
91
  if (this._lockedPropertyPath !== sPropertyPath) {
105
92
  this.startLiveChange(sPropertyPath);
106
93
  }
107
-
108
94
  var oContextBinding = this._oModel.bindContext(this._rootPath, undefined, {
109
95
  $$patchWithoutSideEffects: true,
110
96
  $$groupId: "$auto",
111
97
  $$updateGroupId: "$auto"
112
98
  });
113
-
114
99
  var oPropertyBinding = this._oModel.bindProperty(sPropertyPath, oContextBinding.getBoundContext());
115
-
116
100
  oPropertyBinding.requestValue().then(function () {
117
101
  oPropertyBinding.setValue(value);
118
102
  oContextBinding.attachEventOnce("patchCompleted", function () {
@@ -124,7 +108,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
124
108
  });
125
109
  }
126
110
  },
127
-
128
111
  /**
129
112
  * Simulates that the user did an 'undo' (to be called after startLiveChange).
130
113
  */
@@ -134,39 +117,31 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
134
117
  this._lockedPropertyPath = "";
135
118
  }
136
119
  },
137
-
138
120
  /**
139
121
  * Simulates that the user has discarded the draft.
140
122
  */
141
123
  discardDraft: function () {
142
124
  var _this2 = this;
143
-
144
125
  if (this._internalModel) {
145
126
  var draftContext = this._getDraftContext();
146
-
147
127
  draftContext.requestProperty("IsActiveEntity").then(function () {
148
128
  draft.deleteDraft(draftContext);
149
129
  }).then(function () {
150
130
  broadcastCollaborationMessage(Activity.Discard, _this2._rootPath.replace("IsActiveEntity=false", "IsActiveEntity=true"), _this2._internalModel);
151
-
152
131
  _this2._internalModel.destroy();
153
-
154
132
  _this2._internalModel = undefined;
155
133
  }).catch(function (err) {
156
134
  Log.error(err);
157
135
  });
158
136
  }
159
137
  },
160
-
161
138
  /**
162
139
  * Simulates that the user has deleted the draft.
163
140
  */
164
141
  deleteDraft: function () {
165
142
  var _this3 = this;
166
-
167
143
  if (this._internalModel) {
168
144
  var draftContext = this._getDraftContext();
169
-
170
145
  var activeContext;
171
146
  draftContext.requestProperty("IsActiveEntity").then(function () {
172
147
  return draftContext.getModel().bindContext("".concat(_this3._rootPath, "/SiblingEntity")).getBoundContext();
@@ -178,9 +153,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
178
153
  }).then(function () {
179
154
  activeContext.delete();
180
155
  broadcastCollaborationMessage(Activity.Delete, _this3._rootPath, _this3._internalModel);
181
-
182
156
  _this3._internalModel.destroy();
183
-
184
157
  _this3._internalModel = undefined;
185
158
  }).catch(function (err) {
186
159
  Log.error(err);
@@ -189,6 +162,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
189
162
  },
190
163
  // /////////////////////////////
191
164
  // Private methods
165
+
192
166
  _getDraftContext: function () {
193
167
  return this._oModel.bindContext(this._rootPath, undefined, {
194
168
  $$patchWithoutSideEffects: true,
@@ -196,7 +170,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
196
170
  $$updateGroupId: "$auto"
197
171
  }).getBoundContext();
198
172
  },
199
-
200
173
  /**
201
174
  * Callback of the ghost client when receiving a message on the web socket.
202
175
  *
@@ -205,7 +178,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
205
178
  _onMessageReceived: function (oMessage) {
206
179
  oMessage.userAction = oMessage.userAction || oMessage.clientAction;
207
180
  this._lastReceivedMessage = oMessage;
208
-
209
181
  if (oMessage.userAction === Activity.Join) {
210
182
  broadcastCollaborationMessage(Activity.JoinEcho, this._lockedPropertyPath ? "".concat(this._rootPath, "/").concat(this._lockedPropertyPath) : undefined, this._internalModel);
211
183
  }
@@ -213,4 +185,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/collaboration/A
213
185
  };
214
186
  return CollaborationAPI;
215
187
  }, false);
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2xsYWJvcmF0aW9uQVBJIiwiX2xhc3RSZWNlaXZlZE1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJfcm9vdFBhdGgiLCJfb01vZGVsIiwiX2xvY2tlZFByb3BlcnR5UGF0aCIsIl9pbnRlcm5hbE1vZGVsIiwiZW50ZXJEcmFmdCIsIm9Db250ZXh0IiwidXNlcklEIiwidXNlck5hbWUiLCJ3ZWJTb2NrZXRCYXNlVVJMIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJnZXRPYmplY3QiLCJMb2ciLCJlcnJvciIsInNEcmFmdFVVSUQiLCJnZXRQcm9wZXJ0eSIsIkpTT05Nb2RlbCIsInNlcnZpY2VVcmwiLCJnZXRTZXJ2aWNlVXJsIiwiaW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24iLCJpZCIsIm5hbWUiLCJpbml0aWFsTmFtZSIsIl9vbk1lc3NhZ2VSZWNlaXZlZCIsImJpbmQiLCJnZXRQYXRoIiwiY2hlY2tSZWNlaXZlZCIsIm1lc3NhZ2UiLCJmb3VuZCIsInVzZXJBY3Rpb24iLCJjbGllbnRDb250ZW50IiwibGVhdmVEcmFmdCIsImVuZENvbGxhYm9yYXRpb24iLCJkZXN0cm95Iiwic3RhcnRMaXZlQ2hhbmdlIiwic1Byb3BlcnR5UGF0aCIsInVuZG9DaGFuZ2UiLCJicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZSIsIkFjdGl2aXR5IiwiTGl2ZUNoYW5nZSIsInVwZGF0ZVByb3BlcnR5VmFsdWUiLCJ2YWx1ZSIsIm9Db250ZXh0QmluZGluZyIsImJpbmRDb250ZXh0IiwiJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cyIsIiQkZ3JvdXBJZCIsIiQkdXBkYXRlR3JvdXBJZCIsIm9Qcm9wZXJ0eUJpbmRpbmciLCJiaW5kUHJvcGVydHkiLCJnZXRCb3VuZENvbnRleHQiLCJyZXF1ZXN0VmFsdWUiLCJ0aGVuIiwic2V0VmFsdWUiLCJhdHRhY2hFdmVudE9uY2UiLCJDaGFuZ2UiLCJjYXRjaCIsImVyciIsIlVuZG8iLCJkaXNjYXJkRHJhZnQiLCJkcmFmdENvbnRleHQiLCJfZ2V0RHJhZnRDb250ZXh0IiwicmVxdWVzdFByb3BlcnR5IiwiZHJhZnQiLCJkZWxldGVEcmFmdCIsIkRpc2NhcmQiLCJyZXBsYWNlIiwiYWN0aXZlQ29udGV4dCIsImNvbnRleHQiLCJyZXF1ZXN0Q2Fub25pY2FsUGF0aCIsImRlbGV0ZSIsIkRlbGV0ZSIsIm9NZXNzYWdlIiwiY2xpZW50QWN0aW9uIiwiSm9pbiIsIkpvaW5FY2hvIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb2xsYWJvcmF0aW9uQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHtcblx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UsXG5cdGVuZENvbGxhYm9yYXRpb24sXG5cdGluaXRpYWxpemVDb2xsYWJvcmF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0FjdGl2aXR5QmFzZVwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L2RyYWZ0XCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFY0Q29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuY29uc3QgQ29sbGFib3JhdGlvbkFQSSA9IHtcblx0X2xhc3RSZWNlaXZlZE1lc3NhZ2U6IHVuZGVmaW5lZCBhcyBNZXNzYWdlIHwgdW5kZWZpbmVkLFxuXHRfcm9vdFBhdGg6IFwiXCIsXG5cdF9vTW9kZWw6IHVuZGVmaW5lZCBhcyBPRGF0YU1vZGVsIHwgdW5kZWZpbmVkLFxuXHRfbG9ja2VkUHJvcGVydHlQYXRoOiBcIlwiLFxuXHRfaW50ZXJuYWxNb2RlbDogdW5kZWZpbmVkIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZCxcblxuXHQvKipcblx0ICogT3BlbiBhbiBleGlzdGluZyBjb2xsYWJvcmF0aXZlIGRyYWZ0IHdpdGggYSBuZXcgdXNlciwgYW5kIGNyZWF0ZXMgYSAnZ2hvc3QgY2xpZW50JyBmb3IgdGhpcyB1c2VyLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIGNvbGxhYm9yYXRpdmUgZHJhZnRcblx0ICogQHBhcmFtIHVzZXJJRCBUaGUgSUQgb2YgdGhlIHVzZXJcblx0ICogQHBhcmFtIHVzZXJOYW1lIFRoZSBuYW1lIG9mIHRoZSB1c2VyXG5cdCAqL1xuXHRlbnRlckRyYWZ0OiBmdW5jdGlvbiAob0NvbnRleHQ6IFY0Q29udGV4dCwgdXNlcklEOiBzdHJpbmcsIHVzZXJOYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCB3ZWJTb2NrZXRCYXNlVVJMOiBzdHJpbmcgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLldlYlNvY2tldEJhc2VVUkxcIik7XG5cblx0XHRpZiAoIXdlYlNvY2tldEJhc2VVUkwpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBmaW5kIFdlYlNvY2tldEJhc2VVUkwgYW5ub3RhdGlvblwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBzRHJhZnRVVUlEOiBzdHJpbmcgPSBvQ29udGV4dC5nZXRQcm9wZXJ0eShcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0VVVJRFwiKTtcblx0XHR0aGlzLl9pbnRlcm5hbE1vZGVsID0gbmV3IEpTT05Nb2RlbCh7fSk7XG5cblx0XHRjb25zdCBzZXJ2aWNlVXJsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRTZXJ2aWNlVXJsKCk7XG5cblx0XHRpbml0aWFsaXplQ29sbGFib3JhdGlvbihcblx0XHRcdHtcblx0XHRcdFx0aWQ6IHVzZXJJRCxcblx0XHRcdFx0bmFtZTogdXNlck5hbWUsXG5cdFx0XHRcdGluaXRpYWxOYW1lOiB1c2VyTmFtZVxuXHRcdFx0fSxcblx0XHRcdHdlYlNvY2tldEJhc2VVUkwsXG5cdFx0XHRzRHJhZnRVVUlELFxuXHRcdFx0c2VydmljZVVybCxcblx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwsXG5cdFx0XHR0aGlzLl9vbk1lc3NhZ2VSZWNlaXZlZC5iaW5kKHRoaXMpLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cblx0XHR0aGlzLl9yb290UGF0aCA9IG9Db250ZXh0LmdldFBhdGgoKTtcblx0XHR0aGlzLl9vTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZ2hvc3QgY2xpZW50IGhhcyByZXZpZXZlZCBhIGdpdmVuIG1lc3NhZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIGNvbnRlbnQgdG8gYmUgbG9va2VkIGZvclxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBsYXN0IHJlY2lldmVkIG1lc3NhZ2UgbWF0Y2hlcyB0aGUgY29udGVudFxuXHQgKi9cblx0Y2hlY2tSZWNlaXZlZDogZnVuY3Rpb24gKG1lc3NhZ2U6IFBhcnRpYWw8TWVzc2FnZT4pOiBib29sZWFuIHtcblx0XHRpZiAoIXRoaXMuX2xhc3RSZWNlaXZlZE1lc3NhZ2UpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBmb3VuZCA9XG5cdFx0XHQoIW1lc3NhZ2UudXNlcklEIHx8IG1lc3NhZ2UudXNlcklEID09PSB0aGlzLl9sYXN0UmVjZWl2ZWRNZXNzYWdlLnVzZXJJRCkgJiZcblx0XHRcdCghbWVzc2FnZS51c2VyQWN0aW9uIHx8IG1lc3NhZ2UudXNlckFjdGlvbiA9PT0gdGhpcy5fbGFzdFJlY2VpdmVkTWVzc2FnZS51c2VyQWN0aW9uKSAmJlxuXHRcdFx0KCFtZXNzYWdlLmNsaWVudENvbnRlbnQgfHwgbWVzc2FnZS5jbGllbnRDb250ZW50ID09PSB0aGlzLl9sYXN0UmVjZWl2ZWRNZXNzYWdlLmNsaWVudENvbnRlbnQpO1xuXG5cdFx0dGhpcy5fbGFzdFJlY2VpdmVkTWVzc2FnZSA9IHVuZGVmaW5lZDsgLy8gcmVzZXQgaGlzdG9yeSB0byBhdm9pZCBmaW5kaW5nIHRoZSBzYW1lIG1lc3NhZ2UgdHdpY2VcblxuXHRcdHJldHVybiBmb3VuZDtcblx0fSxcblxuXHQvKipcblx0ICogQ2xvc2VzIHRoZSBnaG9zdCBjbGllbnQgYW5kIHJlbW92ZXMgdGhlIHVzZXIgZnJvbSB0aGUgY29sbGFib3JhdGl2ZSBkcmFmdC5cblx0ICovXG5cdGxlYXZlRHJhZnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0ZW5kQ29sbGFib3JhdGlvbih0aGlzLl9pbnRlcm5hbE1vZGVsKTtcblx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwuZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5faW50ZXJuYWxNb2RlbCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNpbXVsYXRlcyB0aGF0IHRoZSB1c2VyIHN0YXJ0cyB0eXBpbmcgaW4gYW4gaW5wdXQgKGxpdmUgY2hhbmdlKS5cblx0ICpcblx0ICogQHBhcmFtIHNQcm9wZXJ0eVBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IGJlaW5nIG1vZGlmaWVkXG5cdCAqL1xuXHRzdGFydExpdmVDaGFuZ2U6IGZ1bmN0aW9uIChzUHJvcGVydHlQYXRoOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0aWYgKHRoaXMuX2xvY2tlZFByb3BlcnR5UGF0aCkge1xuXHRcdFx0XHQvLyBVbmxvY2sgcHJldmlvdXMgcHJvcGVydHkgcGF0aFxuXHRcdFx0XHR0aGlzLnVuZG9DaGFuZ2UoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX2xvY2tlZFByb3BlcnR5UGF0aCA9IHNQcm9wZXJ0eVBhdGg7XG5cdFx0XHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZShBY3Rpdml0eS5MaXZlQ2hhbmdlLCBgJHt0aGlzLl9yb290UGF0aH0vJHtzUHJvcGVydHlQYXRofWAsIHRoaXMuX2ludGVybmFsTW9kZWwpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2ltdWxhdGVzIHRoYXQgdGhlIHVzZXIgaGFzIG1vZGlmaWVkIGEgcHJvcGVydHkuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUHJvcGVydHlQYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSBiZWluZyBtb2RpZmllZFxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgYmVpbmcgbW9kaWZpZWRcblx0ICovXG5cdHVwZGF0ZVByb3BlcnR5VmFsdWU6IGZ1bmN0aW9uIChzUHJvcGVydHlQYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0aWYgKHRoaXMuX2xvY2tlZFByb3BlcnR5UGF0aCAhPT0gc1Byb3BlcnR5UGF0aCkge1xuXHRcdFx0XHR0aGlzLnN0YXJ0TGl2ZUNoYW5nZShzUHJvcGVydHlQYXRoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgb0NvbnRleHRCaW5kaW5nID0gdGhpcy5fb01vZGVsIS5iaW5kQ29udGV4dCh0aGlzLl9yb290UGF0aCwgdW5kZWZpbmVkLCB7XG5cdFx0XHRcdCQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHM6IHRydWUsXG5cdFx0XHRcdCQkZ3JvdXBJZDogXCIkYXV0b1wiLFxuXHRcdFx0XHQkJHVwZGF0ZUdyb3VwSWQ6IFwiJGF1dG9cIlxuXHRcdFx0fSk7XG5cblx0XHRcdGNvbnN0IG9Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9vTW9kZWwhLmJpbmRQcm9wZXJ0eShzUHJvcGVydHlQYXRoLCBvQ29udGV4dEJpbmRpbmcuZ2V0Qm91bmRDb250ZXh0KCkpO1xuXG5cdFx0XHRvUHJvcGVydHlCaW5kaW5nXG5cdFx0XHRcdC5yZXF1ZXN0VmFsdWUoKVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0b1Byb3BlcnR5QmluZGluZy5zZXRWYWx1ZSh2YWx1ZSk7XG5cdFx0XHRcdFx0b0NvbnRleHRCaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsICgpID0+IHtcblx0XHRcdFx0XHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKEFjdGl2aXR5LkNoYW5nZSwgYCR7dGhpcy5fcm9vdFBhdGh9LyR7c1Byb3BlcnR5UGF0aH1gLCB0aGlzLl9pbnRlcm5hbE1vZGVsISk7XG5cdFx0XHRcdFx0XHR0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGggPSBcIlwiO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihlcnIpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNpbXVsYXRlcyB0aGF0IHRoZSB1c2VyIGRpZCBhbiAndW5kbycgKHRvIGJlIGNhbGxlZCBhZnRlciBzdGFydExpdmVDaGFuZ2UpLlxuXHQgKi9cblx0dW5kb0NoYW5nZTogZnVuY3Rpb24gKCkge1xuXHRcdGlmICh0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGgpIHtcblx0XHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKEFjdGl2aXR5LlVuZG8sIGAke3RoaXMuX3Jvb3RQYXRofS8ke3RoaXMuX2xvY2tlZFByb3BlcnR5UGF0aH1gLCB0aGlzLl9pbnRlcm5hbE1vZGVsISk7XG5cdFx0XHR0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGggPSBcIlwiO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2ltdWxhdGVzIHRoYXQgdGhlIHVzZXIgaGFzIGRpc2NhcmRlZCB0aGUgZHJhZnQuXG5cdCAqL1xuXHRkaXNjYXJkRHJhZnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0Y29uc3QgZHJhZnRDb250ZXh0ID0gdGhpcy5fZ2V0RHJhZnRDb250ZXh0KCk7XG5cblx0XHRcdGRyYWZ0Q29udGV4dFxuXHRcdFx0XHQucmVxdWVzdFByb3BlcnR5KFwiSXNBY3RpdmVFbnRpdHlcIilcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGRyYWZ0LmRlbGV0ZURyYWZ0KGRyYWZ0Q29udGV4dCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZShcblx0XHRcdFx0XHRcdEFjdGl2aXR5LkRpc2NhcmQsXG5cdFx0XHRcdFx0XHR0aGlzLl9yb290UGF0aC5yZXBsYWNlKFwiSXNBY3RpdmVFbnRpdHk9ZmFsc2VcIiwgXCJJc0FjdGl2ZUVudGl0eT10cnVlXCIpLFxuXHRcdFx0XHRcdFx0dGhpcy5faW50ZXJuYWxNb2RlbCFcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwhLmRlc3Ryb3koKTtcblx0XHRcdFx0XHR0aGlzLl9pbnRlcm5hbE1vZGVsID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2ltdWxhdGVzIHRoYXQgdGhlIHVzZXIgaGFzIGRlbGV0ZWQgdGhlIGRyYWZ0LlxuXHQgKi9cblx0ZGVsZXRlRHJhZnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0Y29uc3QgZHJhZnRDb250ZXh0ID0gdGhpcy5fZ2V0RHJhZnRDb250ZXh0KCk7XG5cdFx0XHRsZXQgYWN0aXZlQ29udGV4dDogVjRDb250ZXh0O1xuXG5cdFx0XHRkcmFmdENvbnRleHRcblx0XHRcdFx0LnJlcXVlc3RQcm9wZXJ0eShcIklzQWN0aXZlRW50aXR5XCIpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gZHJhZnRDb250ZXh0LmdldE1vZGVsKCkuYmluZENvbnRleHQoYCR7dGhpcy5fcm9vdFBhdGh9L1NpYmxpbmdFbnRpdHlgKS5nZXRCb3VuZENvbnRleHQoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKGNvbnRleHQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGFjdGl2ZUNvbnRleHQgPSBjb250ZXh0O1xuXHRcdFx0XHRcdHJldHVybiBjb250ZXh0LnJlcXVlc3RDYW5vbmljYWxQYXRoKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gZHJhZnQuZGVsZXRlRHJhZnQoZHJhZnRDb250ZXh0KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdChhY3RpdmVDb250ZXh0IGFzIGFueSkuZGVsZXRlKCk7XG5cdFx0XHRcdFx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UoQWN0aXZpdHkuRGVsZXRlLCB0aGlzLl9yb290UGF0aCwgdGhpcy5faW50ZXJuYWxNb2RlbCEpO1xuXHRcdFx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwhLmRlc3Ryb3koKTtcblx0XHRcdFx0XHR0aGlzLl9pbnRlcm5hbE1vZGVsID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHQvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXHQvLyBQcml2YXRlIG1ldGhvZHNcblxuXHRfZ2V0RHJhZnRDb250ZXh0OiBmdW5jdGlvbiAoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5fb01vZGVsIS5iaW5kQ29udGV4dCh0aGlzLl9yb290UGF0aCwgdW5kZWZpbmVkLCB7XG5cdFx0XHQkJHBhdGNoV2l0aG91dFNpZGVFZmZlY3RzOiB0cnVlLFxuXHRcdFx0JCRncm91cElkOiBcIiRhdXRvXCIsXG5cdFx0XHQkJHVwZGF0ZUdyb3VwSWQ6IFwiJGF1dG9cIlxuXHRcdH0pLmdldEJvdW5kQ29udGV4dCgpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayBvZiB0aGUgZ2hvc3QgY2xpZW50IHdoZW4gcmVjZWl2aW5nIGEgbWVzc2FnZSBvbiB0aGUgd2ViIHNvY2tldC5cblx0ICpcblx0ICogQHBhcmFtIG9NZXNzYWdlIFRoZSBtZXNzYWdlXG5cdCAqL1xuXHRfb25NZXNzYWdlUmVjZWl2ZWQ6IGZ1bmN0aW9uIChvTWVzc2FnZTogTWVzc2FnZSkge1xuXHRcdG9NZXNzYWdlLnVzZXJBY3Rpb24gPSBvTWVzc2FnZS51c2VyQWN0aW9uIHx8IG9NZXNzYWdlLmNsaWVudEFjdGlvbjtcblx0XHR0aGlzLl9sYXN0UmVjZWl2ZWRNZXNzYWdlID0gb01lc3NhZ2U7XG5cblx0XHRpZiAob01lc3NhZ2UudXNlckFjdGlvbiA9PT0gQWN0aXZpdHkuSm9pbikge1xuXHRcdFx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UoXG5cdFx0XHRcdEFjdGl2aXR5LkpvaW5FY2hvLFxuXHRcdFx0XHR0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGggPyBgJHt0aGlzLl9yb290UGF0aH0vJHt0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGh9YCA6IHVuZGVmaW5lZCxcblx0XHRcdFx0dGhpcy5faW50ZXJuYWxNb2RlbCFcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb2xsYWJvcmF0aW9uQVBJO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7RUFhQSxJQUFNQSxnQkFBZ0IsR0FBRztJQUN4QkMsb0JBQW9CLEVBQUVDLFNBREU7SUFFeEJDLFNBQVMsRUFBRSxFQUZhO0lBR3hCQyxPQUFPLEVBQUVGLFNBSGU7SUFJeEJHLG1CQUFtQixFQUFFLEVBSkc7SUFLeEJDLGNBQWMsRUFBRUosU0FMUTs7SUFPeEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0ssVUFBVSxFQUFFLFVBQVVDLFFBQVYsRUFBK0JDLE1BQS9CLEVBQStDQyxRQUEvQyxFQUFpRTtNQUM1RSxJQUFNQyxnQkFBd0IsR0FBR0gsUUFBUSxDQUFDSSxRQUFULEdBQW9CQyxZQUFwQixHQUFtQ0MsU0FBbkMsQ0FBNkMsbURBQTdDLENBQWpDOztNQUVBLElBQUksQ0FBQ0gsZ0JBQUwsRUFBdUI7UUFDdEJJLEdBQUcsQ0FBQ0MsS0FBSixDQUFVLHlDQUFWO1FBQ0E7TUFDQTs7TUFFRCxJQUFNQyxVQUFrQixHQUFHVCxRQUFRLENBQUNVLFdBQVQsQ0FBcUIsbUNBQXJCLENBQTNCO01BQ0EsS0FBS1osY0FBTCxHQUFzQixJQUFJYSxTQUFKLENBQWMsRUFBZCxDQUF0QjtNQUVBLElBQU1DLFVBQVUsR0FBR1osUUFBUSxDQUFDSSxRQUFULEdBQW9CUyxhQUFwQixFQUFuQjtNQUVBQyx1QkFBdUIsQ0FDdEI7UUFDQ0MsRUFBRSxFQUFFZCxNQURMO1FBRUNlLElBQUksRUFBRWQsUUFGUDtRQUdDZSxXQUFXLEVBQUVmO01BSGQsQ0FEc0IsRUFNdEJDLGdCQU5zQixFQU90Qk0sVUFQc0IsRUFRdEJHLFVBUnNCLEVBU3RCLEtBQUtkLGNBVGlCLEVBVXRCLEtBQUtvQixrQkFBTCxDQUF3QkMsSUFBeEIsQ0FBNkIsSUFBN0IsQ0FW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
188
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb2xsYWJvcmF0aW9uQVBJIiwiX2xhc3RSZWNlaXZlZE1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJfcm9vdFBhdGgiLCJfb01vZGVsIiwiX2xvY2tlZFByb3BlcnR5UGF0aCIsIl9pbnRlcm5hbE1vZGVsIiwiZW50ZXJEcmFmdCIsIm9Db250ZXh0IiwidXNlcklEIiwidXNlck5hbWUiLCJ3ZWJTb2NrZXRCYXNlVVJMIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJnZXRPYmplY3QiLCJMb2ciLCJlcnJvciIsInNEcmFmdFVVSUQiLCJnZXRQcm9wZXJ0eSIsIkpTT05Nb2RlbCIsInNlcnZpY2VVcmwiLCJnZXRTZXJ2aWNlVXJsIiwiaW5pdGlhbGl6ZUNvbGxhYm9yYXRpb24iLCJpZCIsIm5hbWUiLCJpbml0aWFsTmFtZSIsIl9vbk1lc3NhZ2VSZWNlaXZlZCIsImJpbmQiLCJnZXRQYXRoIiwiY2hlY2tSZWNlaXZlZCIsIm1lc3NhZ2UiLCJmb3VuZCIsInVzZXJBY3Rpb24iLCJjbGllbnRDb250ZW50IiwibGVhdmVEcmFmdCIsImVuZENvbGxhYm9yYXRpb24iLCJkZXN0cm95Iiwic3RhcnRMaXZlQ2hhbmdlIiwic1Byb3BlcnR5UGF0aCIsInVuZG9DaGFuZ2UiLCJicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZSIsIkFjdGl2aXR5IiwiTGl2ZUNoYW5nZSIsInVwZGF0ZVByb3BlcnR5VmFsdWUiLCJ2YWx1ZSIsIm9Db250ZXh0QmluZGluZyIsImJpbmRDb250ZXh0IiwiJCRwYXRjaFdpdGhvdXRTaWRlRWZmZWN0cyIsIiQkZ3JvdXBJZCIsIiQkdXBkYXRlR3JvdXBJZCIsIm9Qcm9wZXJ0eUJpbmRpbmciLCJiaW5kUHJvcGVydHkiLCJnZXRCb3VuZENvbnRleHQiLCJyZXF1ZXN0VmFsdWUiLCJ0aGVuIiwic2V0VmFsdWUiLCJhdHRhY2hFdmVudE9uY2UiLCJDaGFuZ2UiLCJjYXRjaCIsImVyciIsIlVuZG8iLCJkaXNjYXJkRHJhZnQiLCJkcmFmdENvbnRleHQiLCJfZ2V0RHJhZnRDb250ZXh0IiwicmVxdWVzdFByb3BlcnR5IiwiZHJhZnQiLCJkZWxldGVEcmFmdCIsIkRpc2NhcmQiLCJyZXBsYWNlIiwiYWN0aXZlQ29udGV4dCIsImNvbnRleHQiLCJyZXF1ZXN0Q2Fub25pY2FsUGF0aCIsImRlbGV0ZSIsIkRlbGV0ZSIsIm9NZXNzYWdlIiwiY2xpZW50QWN0aW9uIiwiSm9pbiIsIkpvaW5FY2hvIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb2xsYWJvcmF0aW9uQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHtcblx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UsXG5cdGVuZENvbGxhYm9yYXRpb24sXG5cdGluaXRpYWxpemVDb2xsYWJvcmF0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0FjdGl2aXR5QmFzZVwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L2RyYWZ0XCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFY0Q29udGV4dCB9IGZyb20gXCJ0eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcblxuY29uc3QgQ29sbGFib3JhdGlvbkFQSSA9IHtcblx0X2xhc3RSZWNlaXZlZE1lc3NhZ2U6IHVuZGVmaW5lZCBhcyBNZXNzYWdlIHwgdW5kZWZpbmVkLFxuXHRfcm9vdFBhdGg6IFwiXCIsXG5cdF9vTW9kZWw6IHVuZGVmaW5lZCBhcyBPRGF0YU1vZGVsIHwgdW5kZWZpbmVkLFxuXHRfbG9ja2VkUHJvcGVydHlQYXRoOiBcIlwiLFxuXHRfaW50ZXJuYWxNb2RlbDogdW5kZWZpbmVkIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZCxcblxuXHQvKipcblx0ICogT3BlbiBhbiBleGlzdGluZyBjb2xsYWJvcmF0aXZlIGRyYWZ0IHdpdGggYSBuZXcgdXNlciwgYW5kIGNyZWF0ZXMgYSAnZ2hvc3QgY2xpZW50JyBmb3IgdGhpcyB1c2VyLlxuXHQgKlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIGNvbGxhYm9yYXRpdmUgZHJhZnRcblx0ICogQHBhcmFtIHVzZXJJRCBUaGUgSUQgb2YgdGhlIHVzZXJcblx0ICogQHBhcmFtIHVzZXJOYW1lIFRoZSBuYW1lIG9mIHRoZSB1c2VyXG5cdCAqL1xuXHRlbnRlckRyYWZ0OiBmdW5jdGlvbiAob0NvbnRleHQ6IFY0Q29udGV4dCwgdXNlcklEOiBzdHJpbmcsIHVzZXJOYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCB3ZWJTb2NrZXRCYXNlVVJMOiBzdHJpbmcgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLldlYlNvY2tldEJhc2VVUkxcIik7XG5cblx0XHRpZiAoIXdlYlNvY2tldEJhc2VVUkwpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBmaW5kIFdlYlNvY2tldEJhc2VVUkwgYW5ub3RhdGlvblwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBzRHJhZnRVVUlEOiBzdHJpbmcgPSBvQ29udGV4dC5nZXRQcm9wZXJ0eShcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0VVVJRFwiKTtcblx0XHR0aGlzLl9pbnRlcm5hbE1vZGVsID0gbmV3IEpTT05Nb2RlbCh7fSk7XG5cblx0XHRjb25zdCBzZXJ2aWNlVXJsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRTZXJ2aWNlVXJsKCk7XG5cblx0XHRpbml0aWFsaXplQ29sbGFib3JhdGlvbihcblx0XHRcdHtcblx0XHRcdFx0aWQ6IHVzZXJJRCxcblx0XHRcdFx0bmFtZTogdXNlck5hbWUsXG5cdFx0XHRcdGluaXRpYWxOYW1lOiB1c2VyTmFtZVxuXHRcdFx0fSxcblx0XHRcdHdlYlNvY2tldEJhc2VVUkwsXG5cdFx0XHRzRHJhZnRVVUlELFxuXHRcdFx0c2VydmljZVVybCxcblx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwsXG5cdFx0XHR0aGlzLl9vbk1lc3NhZ2VSZWNlaXZlZC5iaW5kKHRoaXMpLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cblx0XHR0aGlzLl9yb290UGF0aCA9IG9Db250ZXh0LmdldFBhdGgoKTtcblx0XHR0aGlzLl9vTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWw7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgZ2hvc3QgY2xpZW50IGhhcyByZXZpZXZlZCBhIGdpdmVuIG1lc3NhZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIGNvbnRlbnQgdG8gYmUgbG9va2VkIGZvclxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBsYXN0IHJlY2lldmVkIG1lc3NhZ2UgbWF0Y2hlcyB0aGUgY29udGVudFxuXHQgKi9cblx0Y2hlY2tSZWNlaXZlZDogZnVuY3Rpb24gKG1lc3NhZ2U6IFBhcnRpYWw8TWVzc2FnZT4pOiBib29sZWFuIHtcblx0XHRpZiAoIXRoaXMuX2xhc3RSZWNlaXZlZE1lc3NhZ2UpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBmb3VuZCA9XG5cdFx0XHQoIW1lc3NhZ2UudXNlcklEIHx8IG1lc3NhZ2UudXNlcklEID09PSB0aGlzLl9sYXN0UmVjZWl2ZWRNZXNzYWdlLnVzZXJJRCkgJiZcblx0XHRcdCghbWVzc2FnZS51c2VyQWN0aW9uIHx8IG1lc3NhZ2UudXNlckFjdGlvbiA9PT0gdGhpcy5fbGFzdFJlY2VpdmVkTWVzc2FnZS51c2VyQWN0aW9uKSAmJlxuXHRcdFx0KCFtZXNzYWdlLmNsaWVudENvbnRlbnQgfHwgbWVzc2FnZS5jbGllbnRDb250ZW50ID09PSB0aGlzLl9sYXN0UmVjZWl2ZWRNZXNzYWdlLmNsaWVudENvbnRlbnQpO1xuXG5cdFx0dGhpcy5fbGFzdFJlY2VpdmVkTWVzc2FnZSA9IHVuZGVmaW5lZDsgLy8gcmVzZXQgaGlzdG9yeSB0byBhdm9pZCBmaW5kaW5nIHRoZSBzYW1lIG1lc3NhZ2UgdHdpY2VcblxuXHRcdHJldHVybiBmb3VuZDtcblx0fSxcblxuXHQvKipcblx0ICogQ2xvc2VzIHRoZSBnaG9zdCBjbGllbnQgYW5kIHJlbW92ZXMgdGhlIHVzZXIgZnJvbSB0aGUgY29sbGFib3JhdGl2ZSBkcmFmdC5cblx0ICovXG5cdGxlYXZlRHJhZnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0ZW5kQ29sbGFib3JhdGlvbih0aGlzLl9pbnRlcm5hbE1vZGVsKTtcblx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwuZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5faW50ZXJuYWxNb2RlbCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNpbXVsYXRlcyB0aGF0IHRoZSB1c2VyIHN0YXJ0cyB0eXBpbmcgaW4gYW4gaW5wdXQgKGxpdmUgY2hhbmdlKS5cblx0ICpcblx0ICogQHBhcmFtIHNQcm9wZXJ0eVBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IGJlaW5nIG1vZGlmaWVkXG5cdCAqL1xuXHRzdGFydExpdmVDaGFuZ2U6IGZ1bmN0aW9uIChzUHJvcGVydHlQYXRoOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0aWYgKHRoaXMuX2xvY2tlZFByb3BlcnR5UGF0aCkge1xuXHRcdFx0XHQvLyBVbmxvY2sgcHJldmlvdXMgcHJvcGVydHkgcGF0aFxuXHRcdFx0XHR0aGlzLnVuZG9DaGFuZ2UoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX2xvY2tlZFByb3BlcnR5UGF0aCA9IHNQcm9wZXJ0eVBhdGg7XG5cdFx0XHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZShBY3Rpdml0eS5MaXZlQ2hhbmdlLCBgJHt0aGlzLl9yb290UGF0aH0vJHtzUHJvcGVydHlQYXRofWAsIHRoaXMuX2ludGVybmFsTW9kZWwpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2ltdWxhdGVzIHRoYXQgdGhlIHVzZXIgaGFzIG1vZGlmaWVkIGEgcHJvcGVydHkuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUHJvcGVydHlQYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSBiZWluZyBtb2RpZmllZFxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIG5ldyB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgYmVpbmcgbW9kaWZpZWRcblx0ICovXG5cdHVwZGF0ZVByb3BlcnR5VmFsdWU6IGZ1bmN0aW9uIChzUHJvcGVydHlQYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0aWYgKHRoaXMuX2xvY2tlZFByb3BlcnR5UGF0aCAhPT0gc1Byb3BlcnR5UGF0aCkge1xuXHRcdFx0XHR0aGlzLnN0YXJ0TGl2ZUNoYW5nZShzUHJvcGVydHlQYXRoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgb0NvbnRleHRCaW5kaW5nID0gdGhpcy5fb01vZGVsIS5iaW5kQ29udGV4dCh0aGlzLl9yb290UGF0aCwgdW5kZWZpbmVkLCB7XG5cdFx0XHRcdCQkcGF0Y2hXaXRob3V0U2lkZUVmZmVjdHM6IHRydWUsXG5cdFx0XHRcdCQkZ3JvdXBJZDogXCIkYXV0b1wiLFxuXHRcdFx0XHQkJHVwZGF0ZUdyb3VwSWQ6IFwiJGF1dG9cIlxuXHRcdFx0fSk7XG5cblx0XHRcdGNvbnN0IG9Qcm9wZXJ0eUJpbmRpbmcgPSB0aGlzLl9vTW9kZWwhLmJpbmRQcm9wZXJ0eShzUHJvcGVydHlQYXRoLCBvQ29udGV4dEJpbmRpbmcuZ2V0Qm91bmRDb250ZXh0KCkpO1xuXG5cdFx0XHRvUHJvcGVydHlCaW5kaW5nXG5cdFx0XHRcdC5yZXF1ZXN0VmFsdWUoKVxuXHRcdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdFx0b1Byb3BlcnR5QmluZGluZy5zZXRWYWx1ZSh2YWx1ZSk7XG5cdFx0XHRcdFx0b0NvbnRleHRCaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsICgpID0+IHtcblx0XHRcdFx0XHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKEFjdGl2aXR5LkNoYW5nZSwgYCR7dGhpcy5fcm9vdFBhdGh9LyR7c1Byb3BlcnR5UGF0aH1gLCB0aGlzLl9pbnRlcm5hbE1vZGVsISk7XG5cdFx0XHRcdFx0XHR0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGggPSBcIlwiO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihlcnIpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNpbXVsYXRlcyB0aGF0IHRoZSB1c2VyIGRpZCBhbiAndW5kbycgKHRvIGJlIGNhbGxlZCBhZnRlciBzdGFydExpdmVDaGFuZ2UpLlxuXHQgKi9cblx0dW5kb0NoYW5nZTogZnVuY3Rpb24gKCkge1xuXHRcdGlmICh0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGgpIHtcblx0XHRcdGJyb2FkY2FzdENvbGxhYm9yYXRpb25NZXNzYWdlKEFjdGl2aXR5LlVuZG8sIGAke3RoaXMuX3Jvb3RQYXRofS8ke3RoaXMuX2xvY2tlZFByb3BlcnR5UGF0aH1gLCB0aGlzLl9pbnRlcm5hbE1vZGVsISk7XG5cdFx0XHR0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGggPSBcIlwiO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2ltdWxhdGVzIHRoYXQgdGhlIHVzZXIgaGFzIGRpc2NhcmRlZCB0aGUgZHJhZnQuXG5cdCAqL1xuXHRkaXNjYXJkRHJhZnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0Y29uc3QgZHJhZnRDb250ZXh0ID0gdGhpcy5fZ2V0RHJhZnRDb250ZXh0KCk7XG5cblx0XHRcdGRyYWZ0Q29udGV4dFxuXHRcdFx0XHQucmVxdWVzdFByb3BlcnR5KFwiSXNBY3RpdmVFbnRpdHlcIilcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGRyYWZ0LmRlbGV0ZURyYWZ0KGRyYWZ0Q29udGV4dCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRicm9hZGNhc3RDb2xsYWJvcmF0aW9uTWVzc2FnZShcblx0XHRcdFx0XHRcdEFjdGl2aXR5LkRpc2NhcmQsXG5cdFx0XHRcdFx0XHR0aGlzLl9yb290UGF0aC5yZXBsYWNlKFwiSXNBY3RpdmVFbnRpdHk9ZmFsc2VcIiwgXCJJc0FjdGl2ZUVudGl0eT10cnVlXCIpLFxuXHRcdFx0XHRcdFx0dGhpcy5faW50ZXJuYWxNb2RlbCFcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwhLmRlc3Ryb3koKTtcblx0XHRcdFx0XHR0aGlzLl9pbnRlcm5hbE1vZGVsID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2ltdWxhdGVzIHRoYXQgdGhlIHVzZXIgaGFzIGRlbGV0ZWQgdGhlIGRyYWZ0LlxuXHQgKi9cblx0ZGVsZXRlRHJhZnQ6IGZ1bmN0aW9uICgpIHtcblx0XHRpZiAodGhpcy5faW50ZXJuYWxNb2RlbCkge1xuXHRcdFx0Y29uc3QgZHJhZnRDb250ZXh0ID0gdGhpcy5fZ2V0RHJhZnRDb250ZXh0KCk7XG5cdFx0XHRsZXQgYWN0aXZlQ29udGV4dDogVjRDb250ZXh0O1xuXG5cdFx0XHRkcmFmdENvbnRleHRcblx0XHRcdFx0LnJlcXVlc3RQcm9wZXJ0eShcIklzQWN0aXZlRW50aXR5XCIpXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gZHJhZnRDb250ZXh0LmdldE1vZGVsKCkuYmluZENvbnRleHQoYCR7dGhpcy5fcm9vdFBhdGh9L1NpYmxpbmdFbnRpdHlgKS5nZXRCb3VuZENvbnRleHQoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKGNvbnRleHQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGFjdGl2ZUNvbnRleHQgPSBjb250ZXh0O1xuXHRcdFx0XHRcdHJldHVybiBjb250ZXh0LnJlcXVlc3RDYW5vbmljYWxQYXRoKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gZHJhZnQuZGVsZXRlRHJhZnQoZHJhZnRDb250ZXh0KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdChhY3RpdmVDb250ZXh0IGFzIGFueSkuZGVsZXRlKCk7XG5cdFx0XHRcdFx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UoQWN0aXZpdHkuRGVsZXRlLCB0aGlzLl9yb290UGF0aCwgdGhpcy5faW50ZXJuYWxNb2RlbCEpO1xuXHRcdFx0XHRcdHRoaXMuX2ludGVybmFsTW9kZWwhLmRlc3Ryb3koKTtcblx0XHRcdFx0XHR0aGlzLl9pbnRlcm5hbE1vZGVsID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHQvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXHQvLyBQcml2YXRlIG1ldGhvZHNcblxuXHRfZ2V0RHJhZnRDb250ZXh0OiBmdW5jdGlvbiAoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5fb01vZGVsIS5iaW5kQ29udGV4dCh0aGlzLl9yb290UGF0aCwgdW5kZWZpbmVkLCB7XG5cdFx0XHQkJHBhdGNoV2l0aG91dFNpZGVFZmZlY3RzOiB0cnVlLFxuXHRcdFx0JCRncm91cElkOiBcIiRhdXRvXCIsXG5cdFx0XHQkJHVwZGF0ZUdyb3VwSWQ6IFwiJGF1dG9cIlxuXHRcdH0pLmdldEJvdW5kQ29udGV4dCgpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayBvZiB0aGUgZ2hvc3QgY2xpZW50IHdoZW4gcmVjZWl2aW5nIGEgbWVzc2FnZSBvbiB0aGUgd2ViIHNvY2tldC5cblx0ICpcblx0ICogQHBhcmFtIG9NZXNzYWdlIFRoZSBtZXNzYWdlXG5cdCAqL1xuXHRfb25NZXNzYWdlUmVjZWl2ZWQ6IGZ1bmN0aW9uIChvTWVzc2FnZTogTWVzc2FnZSkge1xuXHRcdG9NZXNzYWdlLnVzZXJBY3Rpb24gPSBvTWVzc2FnZS51c2VyQWN0aW9uIHx8IG9NZXNzYWdlLmNsaWVudEFjdGlvbjtcblx0XHR0aGlzLl9sYXN0UmVjZWl2ZWRNZXNzYWdlID0gb01lc3NhZ2U7XG5cblx0XHRpZiAob01lc3NhZ2UudXNlckFjdGlvbiA9PT0gQWN0aXZpdHkuSm9pbikge1xuXHRcdFx0YnJvYWRjYXN0Q29sbGFib3JhdGlvbk1lc3NhZ2UoXG5cdFx0XHRcdEFjdGl2aXR5LkpvaW5FY2hvLFxuXHRcdFx0XHR0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGggPyBgJHt0aGlzLl9yb290UGF0aH0vJHt0aGlzLl9sb2NrZWRQcm9wZXJ0eVBhdGh9YCA6IHVuZGVmaW5lZCxcblx0XHRcdFx0dGhpcy5faW50ZXJuYWxNb2RlbCFcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb2xsYWJvcmF0aW9uQVBJO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztFQWFBLElBQU1BLGdCQUFnQixHQUFHO0lBQ3hCQyxvQkFBb0IsRUFBRUMsU0FBZ0M7SUFDdERDLFNBQVMsRUFBRSxFQUFFO0lBQ2JDLE9BQU8sRUFBRUYsU0FBbUM7SUFDNUNHLG1CQUFtQixFQUFFLEVBQUU7SUFDdkJDLGNBQWMsRUFBRUosU0FBa0M7SUFFbEQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0ssVUFBVSxFQUFFLFVBQVVDLFFBQW1CLEVBQUVDLE1BQWMsRUFBRUMsUUFBZ0IsRUFBRTtNQUM1RSxJQUFNQyxnQkFBd0IsR0FBR0gsUUFBUSxDQUFDSSxRQUFRLEVBQUUsQ0FBQ0MsWUFBWSxFQUFFLENBQUNDLFNBQVMsQ0FBQyxtREFBbUQsQ0FBQztNQUVsSSxJQUFJLENBQUNILGdCQUFnQixFQUFFO1FBQ3RCSSxHQUFHLENBQUNDLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQztRQUNwRDtNQUNEO01BRUEsSUFBTUMsVUFBa0IsR0FBR1QsUUFBUSxDQUFDVSxXQUFXLENBQUMsbUNBQW1DLENBQUM7TUFDcEYsSUFBSSxDQUFDWixjQUFjLEdBQUcsSUFBSWEsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BRXZDLElBQU1DLFVBQVUsR0FBR1osUUFBUSxDQUFDSSxRQUFRLEVBQUUsQ0FBQ1MsYUFBYSxFQUFFO01BRXREQyx1QkFBdUIsQ0FDdEI7UUFDQ0MsRUFBRSxFQUFFZCxNQUFNO1FBQ1ZlLElBQUksRUFBRWQsUUFBUTtRQUNkZSxXQUFXLEVBQUVmO01BQ2QsQ0FBQyxFQUNEQyxnQkFBZ0IsRUFDaEJNLFVBQVUsRUFDVkcsVUFBVSxFQUNWLElBQUksQ0FBQ2QsY0FBYyxFQUNuQixJQUFJLENBQUNvQixrQkFBa0IsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUNsQyxJQUFJLENBQ0o7TUFFRCxJQUFJLENBQUN4QixTQUFTLEdBQUdLLFFBQVEsQ0FBQ29CLE9BQU8sRUFBRTtNQUNuQyxJQUFJLENBQUN4QixPQUFPLEdBQUdJLFFBQVEsQ0FBQ0ksUUFBUSxFQUFnQjtJQUNqRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NpQixhQUFhLEVBQUUsVUFBVUMsT0FBeUIsRUFBVztNQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDN0Isb0JBQW9CLEVBQUU7UUFDL0IsT0FBTyxLQUFLO01BQ2I7TUFFQSxJQUFNOEIsS0FBSyxHQUNWLENBQUMsQ0FBQ0QsT0FBTyxDQUFDckIsTUFBTSxJQUFJcUIsT0FBTyxDQUFDckIsTUFBTSxLQUFLLElBQUksQ0FBQ1Isb0JBQW9CLENBQUNRLE1BQU0sTUFDdEUsQ0FBQ3FCLE9BQU8sQ0FBQ0UsVUFBVSxJQUFJRixPQUFPLENBQUNFLFVBQVUsS0FBSyxJQUFJLENBQUMvQixvQkFBb0IsQ0FBQytCLFVBQVUsQ0FBQyxLQUNuRixDQUFDRixPQUFPLENBQUNHLGFBQWEsSUFBSUgsT0FBTyxDQUFDRyxhQUFhLEtBQUssSUFBSSxDQUFDaEMsb0JBQW9CLENBQUNnQyxhQUFhLENBQUM7TUFFOUYsSUFBSSxDQUFDaEMsb0JBQW9CLEdBQUdDLFNBQVMsQ0FBQyxDQUFDOztNQUV2QyxPQUFPNkIsS0FBSztJQUNiLENBQUM7SUFFRDtBQUNEO0FBQ0E7SUFDQ0csVUFBVSxFQUFFLFlBQVk7TUFDdkIsSUFBSSxJQUFJLENBQUM1QixjQUFjLEVBQUU7UUFDeEI2QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM3QixjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDQSxjQUFjLENBQUM4QixPQUFPLEVBQUU7UUFDN0IsSUFBSSxDQUFDOUIsY0FBYyxHQUFHSixTQUFTO01BQ2hDO0lBQ0QsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ21DLGVBQWUsRUFBRSxVQUFVQyxhQUFxQixFQUFFO01BQ2pELElBQUksSUFBSSxDQUFDaEMsY0FBYyxFQUFFO1FBQ3hCLElBQUksSUFBSSxDQUFDRCxtQkFBbUIsRUFBRTtVQUM3QjtVQUNBLElBQUksQ0FBQ2tDLFVBQVUsRUFBRTtRQUNsQjtRQUNBLElBQUksQ0FBQ2xDLG1CQUFtQixHQUFHaUMsYUFBYTtRQUN4Q0UsNkJBQTZCLENBQUNDLFFBQVEsQ0FBQ0MsVUFBVSxZQUFLLElBQUksQ0FBQ3ZDLFNBQVMsY0FBSW1DLGFBQWEsR0FBSSxJQUFJLENBQUNoQyxjQUFjLENBQUM7TUFDOUc7SUFDRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NxQyxtQkFBbUIsRUFBRSxVQUFVTCxhQUFxQixFQUFFTSxLQUFVLEVBQUU7TUFBQTtNQUNqRSxJQUFJLElBQUksQ0FBQ3RDLGNBQWMsRUFBRTtRQUN4QixJQUFJLElBQUksQ0FBQ0QsbUJBQW1CLEtBQUtpQyxhQUFhLEVBQUU7VUFDL0MsSUFBSSxDQUFDRCxlQUFlLENBQUNDLGFBQWEsQ0FBQztRQUNwQztRQUVBLElBQU1PLGVBQWUsR0FBRyxJQUFJLENBQUN6QyxPQUFPLENBQUUwQyxXQUFXLENBQUMsSUFBSSxDQUFDM0MsU0FBUyxFQUFFRCxTQUFTLEVBQUU7VUFDNUU2Qyx5QkFBeUIsRUFBRSxJQUFJO1VBQy9CQyxTQUFTLEVBQUUsT0FBTztVQUNsQkMsZUFBZSxFQUFFO1FBQ2xCLENBQUMsQ0FBQztRQUVGLElBQU1DLGdCQUFnQixHQUFHLElBQUksQ0FBQzlDLE9BQU8sQ0FBRStDLFlBQVksQ0FBQ2IsYUFBYSxFQUFFTyxlQUFlLENBQUNPLGVBQWUsRUFBRSxDQUFDO1FBRXJHRixnQkFBZ0IsQ0FDZEcsWUFBWSxFQUFFLENBQ2RDLElBQUksQ0FBQyxZQUFNO1VBQ1hKLGdCQUFnQixDQUFDSyxRQUFRLENBQUNYLEtBQUssQ0FBQztVQUNoQ0MsZUFBZSxDQUFDVyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsWUFBTTtZQUN2RGhCLDZCQUE2QixDQUFDQyxRQUFRLENBQUNnQixNQUFNLFlBQUssS0FBSSxDQUFDdEQsU0FBUyxjQUFJbUMsYUFBYSxHQUFJLEtBQUksQ0FBQ2hDLGNBQWMsQ0FBRTtZQUMxRyxLQUFJLENBQUNELG1CQUFtQixHQUFHLEVBQUU7VUFDOUIsQ0FBQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0RxRCxLQUFLLENBQUMsVUFBVUMsR0FBRyxFQUFFO1VBQ3JCNUMsR0FBRyxDQUFDQyxLQUFLLENBQUMyQyxHQUFHLENBQUM7UUFDZixDQUFDLENBQUM7TUFDSjtJQUNELENBQUM7SUFFRDtBQUNEO0FBQ0E7SUFDQ3BCLFVBQVUsRUFBRSxZQUFZO01BQ3ZCLElBQUksSUFBSSxDQUFDbEMsbUJBQW1CLEVBQUU7UUFDN0JtQyw2QkFBNkIsQ0FBQ0MsUUFBUSxDQUFDbUIsSUFBSSxZQUFLLElBQUksQ0FBQ3pELFNBQVMsY0FBSSxJQUFJLENBQUNFLG1CQUFtQixHQUFJLElBQUksQ0FBQ0MsY0FBYyxDQUFFO1FBQ25ILElBQUksQ0FBQ0QsbUJBQW1CLEdBQUcsRUFBRTtNQUM5QjtJQUNELENBQUM7SUFFRDtBQUNEO0FBQ0E7SUFDQ3dELFlBQVksRUFBRSxZQUFZO01BQUE7TUFDekIsSUFBSSxJQUFJLENBQUN2RCxjQUFjLEVBQUU7UUFDeEIsSUFBTXdELFlBQVksR0FBRyxJQUFJLENBQUNDLGdCQUFnQixFQUFFO1FBRTVDRCxZQUFZLENBQ1ZFLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNqQ1YsSUFBSSxDQUFDLFlBQU07VUFDWFcsS0FBSyxDQUFDQyxXQUFXLENBQUNKLFlBQVksQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FDRFIsSUFBSSxDQUFDLFlBQU07VUFDWGQsNkJBQTZCLENBQzVCQyxRQUFRLENBQUMwQixPQUFPLEVBQ2hCLE1BQUksQ0FBQ2hFLFNBQVMsQ0FBQ2lFLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsQ0FBQyxFQUNyRSxNQUFJLENBQUM5RCxjQUFjLENBQ25CO1VBQ0QsTUFBSSxDQUFDQSxjQUFjLENBQUU4QixPQUFPLEVBQUU7VUFDOUIsTUFBSSxDQUFDOUIsY0FBYyxHQUFHSixTQUFTO1FBQ2hDLENBQUMsQ0FBQyxDQUNEd0QsS0FBSyxDQUFDLFVBQVVDLEdBQVEsRUFBRTtVQUMxQjVDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDMkMsR0FBRyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO01BQ0o7SUFDRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0lBQ0NPLFdBQVcsRUFBRSxZQUFZO01BQUE7TUFDeEIsSUFBSSxJQUFJLENBQUM1RCxjQUFjLEVBQUU7UUFDeEIsSUFBTXdELFlBQVksR0FBRyxJQUFJLENBQUNDLGdCQUFnQixFQUFFO1FBQzVDLElBQUlNLGFBQXdCO1FBRTVCUCxZQUFZLENBQ1ZFLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNqQ1YsSUFBSSxDQUFDLFlBQU07VUFDWCxPQUFPUSxZQUFZLENBQUNsRCxRQUFRLEVBQUUsQ0FBQ2tDLFdBQVcsV0FBSSxNQUFJLENBQUMzQyxTQUFTLG9CQUFpQixDQUFDaUQsZUFBZSxFQUFFO1FBQ2hHLENBQUMsQ0FBQyxDQUNERSxJQUFJLENBQUMsVUFBQ2dCLE9BQVksRUFBSztVQUN2QkQsYUFBYSxHQUFHQyxPQUFPO1VBQ3ZCLE9BQU9BLE9BQU8sQ0FBQ0Msb0JBQW9CLEVBQUU7UUFDdEMsQ0FBQyxDQUFDLENBQ0RqQixJQUFJLENBQUMsWUFBTTtVQUNYLE9BQU9XLEtBQUssQ0FBQ0MsV0FBVyxDQUFDSixZQUFZLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQ0RSLElBQUksQ0FBQyxZQUFNO1VBQ1ZlLGFBQWEsQ0FBU0csTUFBTSxFQUFFO1VBQy9CaEMsNkJBQTZCLENBQUNDLFFBQVEsQ0FBQ2dDLE1BQU0sRUFBRSxNQUFJLENBQUN0RSxTQUFTLEVBQUUsTUFBSSxDQUFDRyxjQUFjLENBQUU7VUFDcEYsTUFBSSxDQUFDQSxjQUFjLENBQUU4QixPQUFPLEVBQUU7VUFDOUIsTUFBSSxDQUFDOUIsY0FBYyxHQUFHSixTQUFTO1FBQ2hDLENBQUMsQ0FBQyxDQUNEd0QsS0FBSyxDQUFDLFVBQVVDLEdBQVEsRUFBRTtVQUMxQjVDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDMkMsR0FBRyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO01BQ0o7SUFDRCxDQUFDO0lBRUQ7SUFDQTs7SUFFQUksZ0JBQWdCLEVBQUUsWUFBaUI7TUFDbEMsT0FBTyxJQUFJLENBQUMzRCxPQUFPLENBQUUwQyxXQUFXLENBQUMsSUFBSSxDQUFDM0MsU0FBUyxFQUFFRCxTQUFTLEVBQUU7UUFDM0Q2Qyx5QkFBeUIsRUFBRSxJQUFJO1FBQy9CQyxTQUFTLEVBQUUsT0FBTztRQUNsQkMsZUFBZSxFQUFFO01BQ2xCLENBQUMsQ0FBQyxDQUFDRyxlQUFlLEVBQUU7SUFDckIsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQzFCLGtCQUFrQixFQUFFLFVBQVVnRCxRQUFpQixFQUFFO01BQ2hEQSxRQUFRLENBQUMxQyxVQUFVLEdBQUcwQyxRQUFRLENBQUMxQyxVQUFVLElBQUkwQyxRQUFRLENBQUNDLFlBQVk7TUFDbEUsSUFBSSxDQUFDMUUsb0JBQW9CLEdBQUd5RSxRQUFRO01BRXBDLElBQUlBLFFBQVEsQ0FBQzFDLFVBQVUsS0FBS1MsUUFBUSxDQUFDbUMsSUFBSSxFQUFFO1FBQzFDcEMsNkJBQTZCLENBQzVCQyxRQUFRLENBQUNvQyxRQUFRLEVBQ2pCLElBQUksQ0FBQ3hFLG1CQUFtQixhQUFNLElBQUksQ0FBQ0YsU0FBUyxjQUFJLElBQUksQ0FBQ0UsbUJBQW1CLElBQUtILFNBQVMsRUFDdEYsSUFBSSxDQUFDSSxjQUFjLENBQ25CO01BQ0Y7SUFDRDtFQUNELENBQUM7RUFBQyxPQUVhTixnQkFBZ0I7QUFBQSJ9
@@ -1,7 +1,8 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
7
  sap.ui.define(
7
8
  [
@@ -1,7 +1,8 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
7
  sap.ui.define(["./DialogAPI", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder"], function (DialogAPI, Utils, OpaBuilder) {
7
8
  "use strict";
@@ -1,7 +1,8 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
7
  sap.ui.define(["./DialogAPI", "sap/fe/test/Utils"], function (DialogAPI, Utils) {
7
8
  "use strict";
@@ -40,7 +41,7 @@ sap.ui.define(["./DialogAPI", "sap/fe/test/Utils"], function (DialogAPI, Utils)
40
41
  .execute()
41
42
  );
42
43
  };
43
-
44
+
44
45
  /**
45
46
  * Checks the confirmation button of the dialog.
46
47
  *
@@ -1,9 +1,10 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
- sap.ui.define(["./DialogActions", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder"], function(DialogActions, Utils, OpaBuilder) {
7
+ sap.ui.define(["./DialogActions", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder"], function (DialogActions, Utils, OpaBuilder) {
7
8
  "use strict";
8
9
 
9
10
  /**
@@ -18,7 +19,7 @@ sap.ui.define(["./DialogActions", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder"]
18
19
  * @hideconstructor
19
20
  * @public
20
21
  */
21
- var DialogCreateActions = function(oDialogBuilder, vDialogDescription) {
22
+ var DialogCreateActions = function (oDialogBuilder, vDialogDescription) {
22
23
  return DialogActions.call(this, oDialogBuilder, vDialogDescription, 0);
23
24
  };
24
25
  DialogCreateActions.prototype = Object.create(DialogActions.prototype);
@@ -31,7 +32,7 @@ sap.ui.define(["./DialogActions", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder"]
31
32
  * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
32
33
  * @public
33
34
  */
34
- DialogCreateActions.prototype.iExecuteCreate = function() {
35
+ DialogCreateActions.prototype.iExecuteCreate = function () {
35
36
  return this.prepareResult(
36
37
  this.getBuilder()
37
38
  .doPressFooterButton(
@@ -1,55 +1,54 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
- sap.ui.define(["./DialogAssertions", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/fe/test/Utils"], function(
7
- DialogAssertions,
8
- OpaBuilder,
9
- FEBuilder,
10
- Utils
11
- ) {
12
- "use strict";
7
+ sap.ui.define(
8
+ ["./DialogAssertions", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/fe/test/Utils"],
9
+ function (DialogAssertions, OpaBuilder, FEBuilder, Utils) {
10
+ "use strict";
13
11
 
14
- /**
15
- * Constructs a new DialogCreateAssertions instance.
16
- *
17
- * @param {sap.fe.test.builder.DialogBuilder} oDialogBuilder The {@link sap.fe.test.builder.DialogBuilder} instance used to interact with the UI
18
- * @param {string} [vDialogDescription] Description (optional) of the dialog to be used for logging messages
19
- * @returns {sap.fe.test.api.DialogCreateAssertions} The new instance
20
- * @extends sap.fe.test.api.DialogAssertions
21
- * @alias sap.fe.test.api.DialogCreateAssertions
22
- * @class
23
- * @hideconstructor
24
- * @public
25
- */
26
- var DialogCreateAssertions = function(oDialogBuilder, vDialogDescription) {
27
- return DialogAssertions.call(this, oDialogBuilder, vDialogDescription, 0);
28
- };
29
- DialogCreateAssertions.prototype = Object.create(DialogAssertions.prototype);
30
- DialogCreateAssertions.prototype.constructor = DialogCreateAssertions;
31
- DialogCreateAssertions.prototype.isAction = false;
12
+ /**
13
+ * Constructs a new DialogCreateAssertions instance.
14
+ *
15
+ * @param {sap.fe.test.builder.DialogBuilder} oDialogBuilder The {@link sap.fe.test.builder.DialogBuilder} instance used to interact with the UI
16
+ * @param {string} [vDialogDescription] Description (optional) of the dialog to be used for logging messages
17
+ * @returns {sap.fe.test.api.DialogCreateAssertions} The new instance
18
+ * @extends sap.fe.test.api.DialogAssertions
19
+ * @alias sap.fe.test.api.DialogCreateAssertions
20
+ * @class
21
+ * @hideconstructor
22
+ * @public
23
+ */
24
+ var DialogCreateAssertions = function (oDialogBuilder, vDialogDescription) {
25
+ return DialogAssertions.call(this, oDialogBuilder, vDialogDescription, 0);
26
+ };
27
+ DialogCreateAssertions.prototype = Object.create(DialogAssertions.prototype);
28
+ DialogCreateAssertions.prototype.constructor = DialogCreateAssertions;
29
+ DialogCreateAssertions.prototype.isAction = false;
32
30
 
33
- /**
34
- * Checks the <code>Create</code> action on the dialog.
35
- *
36
- * @param {object} [mState] Defines the expected state of the button
37
- * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
38
- * @public
39
- */
40
- DialogCreateAssertions.prototype.iCheckCreate = function(mState) {
41
- return this.prepareResult(
42
- this.getBuilder()
43
- .hasFooterButton(
44
- OpaBuilder.Matchers.resourceBundle("text", "sap.fe.core", "C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE_BUTTON"),
45
- mState
46
- )
47
- .description(
48
- Utils.formatMessage("Checking that dialog '{0}' has create button with state '{1}'", this.getIdentifier(), mState)
49
- )
50
- .execute()
51
- );
52
- };
31
+ /**
32
+ * Checks the <code>Create</code> action on the dialog.
33
+ *
34
+ * @param {object} [mState] Defines the expected state of the button
35
+ * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
36
+ * @public
37
+ */
38
+ DialogCreateAssertions.prototype.iCheckCreate = function (mState) {
39
+ return this.prepareResult(
40
+ this.getBuilder()
41
+ .hasFooterButton(
42
+ OpaBuilder.Matchers.resourceBundle("text", "sap.fe.core", "C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE_BUTTON"),
43
+ mState
44
+ )
45
+ .description(
46
+ Utils.formatMessage("Checking that dialog '{0}' has create button with state '{1}'", this.getIdentifier(), mState)
47
+ )
48
+ .execute()
49
+ );
50
+ };
53
51
 
54
- return DialogCreateAssertions;
55
- });
52
+ return DialogCreateAssertions;
53
+ }
54
+ );
@@ -1,7 +1,8 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
7
  sap.ui.define(["./DialogAPI"], function (DialogAPI) {
7
8
  "use strict";
@@ -27,7 +28,7 @@ sap.ui.define(["./DialogAPI"], function (DialogAPI) {
27
28
  var changeField = loParams.changeField
28
29
  ? loParams.changeField
29
30
  : {
30
- "PurchaseOrderByCustomer": "CHANGED" //default field with "changed value"
31
+ PurchaseOrderByCustomer: "CHANGED" //default field with "changed value"
31
32
  };
32
33
 
33
34
  var draftOption = loParams.draftOption ? loParams.draftOption : "draftDataLossOptionKeep";
@@ -1,7 +1,8 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
7
  sap.ui.define(
7
8
  ["./DialogActions", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder"],
@@ -1,7 +1,8 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
7
  sap.ui.define(
7
8
  ["./DialogAssertions", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/fe/test/Utils"],
@@ -1,7 +1,8 @@
1
1
  /*
2
- * ! SAP UI development toolkit for HTML5 (SAPUI5)
2
+ * !
3
+ SAP UI development toolkit for HTML5 (SAPUI5)
3
4
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
5
+
5
6
  */
6
7
  sap.ui.define(
7
8
  ["./DialogActions", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder"],