@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.
- package/README.md +5 -1
- package/package.json +9 -7
- package/src/sap/fe/test/.library +17 -18
- package/src/sap/fe/test/BaseActions.js +3 -2
- package/src/sap/fe/test/BaseArrangements.js +3 -2
- package/src/sap/fe/test/BaseAssertions.js +26 -2
- package/src/sap/fe/test/CollaborationClient.js +21 -5
- package/src/sap/fe/test/CollaborationClient.ts +29 -1
- package/src/sap/fe/test/ConfirmDialog.js +12 -11
- package/src/sap/fe/test/FCLView.js +16 -15
- package/src/sap/fe/test/FeMocks.js +1 -11
- package/src/sap/fe/test/Flexibility.js +12 -7
- package/src/sap/fe/test/FlexibleColumnLayout.js +12 -11
- package/src/sap/fe/test/JestFlexibilityHelper.js +141 -0
- package/src/sap/fe/test/JestFlexibilityHelper.ts +135 -0
- package/src/sap/fe/test/JestTemplatingHelper.js +191 -207
- package/src/sap/fe/test/JestTemplatingHelper.ts +171 -91
- package/src/sap/fe/test/JourneyRunner.js +3 -2
- package/src/sap/fe/test/ListReport.js +3 -2
- package/src/sap/fe/test/LocationUtil.js +3 -2
- package/src/sap/fe/test/ObjectPage.js +129 -26
- package/src/sap/fe/test/Shell.js +9 -4
- package/src/sap/fe/test/Stubs.js +18 -17
- package/src/sap/fe/test/TemplatePage.js +3 -2
- package/src/sap/fe/test/TemplatingTestUtils.js +3 -2
- package/src/sap/fe/test/UI5MockHelper.js +39 -72
- package/src/sap/fe/test/UI5MockHelper.ts +3 -0
- package/src/sap/fe/test/Utils.js +4 -3
- package/src/sap/fe/test/api/APIHelper.js +3 -2
- package/src/sap/fe/test/api/BaseAPI.js +3 -2
- package/src/sap/fe/test/api/ChartActions.js +3 -2
- package/src/sap/fe/test/api/ChartAssertions.js +3 -2
- package/src/sap/fe/test/api/CollaborationAPI.js +2 -30
- package/src/sap/fe/test/api/DialogAPI.js +3 -2
- package/src/sap/fe/test/api/DialogActions.js +3 -2
- package/src/sap/fe/test/api/DialogAssertions.js +4 -3
- package/src/sap/fe/test/api/DialogCreateActions.js +6 -5
- package/src/sap/fe/test/api/DialogCreateAssertions.js +48 -49
- package/src/sap/fe/test/api/DialogHelper.js +4 -3
- package/src/sap/fe/test/api/DialogMassEditActions.js +3 -2
- package/src/sap/fe/test/api/DialogMassEditAssertions.js +3 -2
- package/src/sap/fe/test/api/DialogMessageActions.js +3 -2
- package/src/sap/fe/test/api/DialogMessageAssertions.js +82 -79
- package/src/sap/fe/test/api/DialogType.js +3 -2
- package/src/sap/fe/test/api/DialogValueHelpActions.js +3 -2
- package/src/sap/fe/test/api/DialogValueHelpAssertions.js +3 -2
- package/src/sap/fe/test/api/EditState.js +4 -3
- package/src/sap/fe/test/api/FilterBarAPI.js +3 -2
- package/src/sap/fe/test/api/FilterBarActions.js +3 -2
- package/src/sap/fe/test/api/FilterBarAssertions.js +3 -2
- package/src/sap/fe/test/api/FooterAPI.js +5 -4
- package/src/sap/fe/test/api/FooterActionsBase.js +3 -2
- package/src/sap/fe/test/api/FooterActionsOP.js +3 -2
- package/src/sap/fe/test/api/FooterAssertionsBase.js +3 -2
- package/src/sap/fe/test/api/FooterAssertionsOP.js +3 -2
- package/src/sap/fe/test/api/FormAPI.js +4 -2
- package/src/sap/fe/test/api/FormActions.js +3 -2
- package/src/sap/fe/test/api/FormAssertions.js +3 -2
- package/src/sap/fe/test/api/HeaderAPI.js +3 -2
- package/src/sap/fe/test/api/HeaderActions.js +3 -2
- package/src/sap/fe/test/api/HeaderActionsLR.js +3 -2
- package/src/sap/fe/test/api/HeaderAssertions.js +3 -2
- package/src/sap/fe/test/api/HeaderAssertionsLR.js +3 -2
- package/src/sap/fe/test/api/HeaderLR.js +3 -2
- package/src/sap/fe/test/api/KPICardAPI.js +5 -4
- package/src/sap/fe/test/api/KPICardActions.js +7 -11
- package/src/sap/fe/test/api/KPICardAssertions.js +3 -2
- package/src/sap/fe/test/api/TableAPI.js +5 -4
- package/src/sap/fe/test/api/TableActions.js +16 -9
- package/src/sap/fe/test/api/TableAssertions.js +8 -7
- package/src/sap/fe/test/builder/DialogBuilder.js +99 -102
- package/src/sap/fe/test/builder/FEBuilder.js +3 -2
- package/src/sap/fe/test/builder/KPIBuilder.js +16 -25
- package/src/sap/fe/test/builder/MacroFieldBuilder.js +4 -2
- package/src/sap/fe/test/builder/MdcFieldBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcFilterBarBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcFilterFieldBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcTableBuilder.js +196 -96
- package/src/sap/fe/test/builder/OverflowToolbarBuilder.js +3 -2
- package/src/sap/fe/test/builder/VMBuilder.js +3 -2
- package/src/sap/fe/test/internal/ConsoleErrorChecker.js +13 -48
- package/src/sap/fe/test/internal/FEArrangements.js +3 -2
- package/src/sap/fe/test/internal/FEJourneyRunner.js +5 -3
- package/src/sap/fe/test/library.js +3 -2
|
@@ -7,7 +7,6 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
var mock = generic.mock;
|
|
10
|
-
|
|
11
10
|
/**
|
|
12
11
|
* Factory function to create a new MockContext.
|
|
13
12
|
*
|
|
@@ -22,8 +21,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
22
21
|
mocked._isKeptAlive = false;
|
|
23
22
|
mocked._contextData = oContextData || {};
|
|
24
23
|
mocked._oBinding = oBinding;
|
|
25
|
-
mocked._isInactive = !!isInactive;
|
|
24
|
+
mocked._isInactive = !!isInactive;
|
|
26
25
|
|
|
26
|
+
// Default behavior
|
|
27
27
|
mocked.mock.isA.mockImplementation(function (sClassName) {
|
|
28
28
|
return sClassName === "sap.ui.model.odata.v4.Context";
|
|
29
29
|
});
|
|
@@ -36,7 +36,6 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
36
36
|
return mocked._contextData[key];
|
|
37
37
|
}));
|
|
38
38
|
}
|
|
39
|
-
|
|
40
39
|
return Promise.resolve(mocked._contextData[keyOrKeys]);
|
|
41
40
|
});
|
|
42
41
|
mocked.mock.requestObject.mockImplementation(function (key) {
|
|
@@ -48,7 +47,6 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
48
47
|
});
|
|
49
48
|
mocked.mock.getObject.mockImplementation(function (path) {
|
|
50
49
|
var result = path ? mocked._contextData[path] : mocked._contextData;
|
|
51
|
-
|
|
52
50
|
if (!result && path && path.indexOf("/") > -1) {
|
|
53
51
|
var parts = path.split("/");
|
|
54
52
|
result = parts.reduce(function (sum, part) {
|
|
@@ -56,7 +54,6 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
56
54
|
return sum;
|
|
57
55
|
}, mocked._contextData);
|
|
58
56
|
}
|
|
59
|
-
|
|
60
57
|
return result;
|
|
61
58
|
});
|
|
62
59
|
mocked.mock.getPath.mockImplementation(function () {
|
|
@@ -67,7 +64,6 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
67
64
|
});
|
|
68
65
|
mocked.mock.getModel.mockImplementation(function () {
|
|
69
66
|
var _mocked$_oBinding;
|
|
70
|
-
|
|
71
67
|
return (_mocked$_oBinding = mocked._oBinding) === null || _mocked$_oBinding === void 0 ? void 0 : _mocked$_oBinding.getModel();
|
|
72
68
|
});
|
|
73
69
|
mocked.mock.setKeepAlive.mockImplementation(function (bool, _fnOnBeforeDestroy, _bRequestMessages) {
|
|
@@ -84,16 +80,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
84
80
|
/**
|
|
85
81
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockContext instead.
|
|
86
82
|
*/
|
|
87
|
-
|
|
88
|
-
|
|
89
83
|
_exports.createMockContext = createMockContext;
|
|
90
84
|
var MockContext = createMockContext;
|
|
85
|
+
|
|
91
86
|
/**
|
|
92
87
|
* Utility type to mock a sap.ui.base.Event
|
|
93
88
|
*/
|
|
94
|
-
|
|
95
89
|
_exports.MockContext = MockContext;
|
|
96
|
-
|
|
97
90
|
/**
|
|
98
91
|
* Factory function to create a new MockEvent.
|
|
99
92
|
*
|
|
@@ -102,8 +95,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
102
95
|
*/
|
|
103
96
|
function createMockEvent(params) {
|
|
104
97
|
var mocked = mock(Event);
|
|
105
|
-
mocked._params = params || {};
|
|
98
|
+
mocked._params = params || {};
|
|
106
99
|
|
|
100
|
+
// Default behavior
|
|
107
101
|
mocked.mock.getParameter.mockImplementation(function (name) {
|
|
108
102
|
return mocked._params[name];
|
|
109
103
|
});
|
|
@@ -112,16 +106,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
112
106
|
/**
|
|
113
107
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockEvent instead.
|
|
114
108
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
117
109
|
_exports.createMockEvent = createMockEvent;
|
|
118
110
|
var MockEvent = createMockEvent;
|
|
111
|
+
|
|
119
112
|
/**
|
|
120
113
|
* Utility type to mock a sap.ui.model.odata.v4.ODataListBinding
|
|
121
114
|
*/
|
|
122
|
-
|
|
123
115
|
_exports.MockEvent = MockEvent;
|
|
124
|
-
|
|
125
116
|
/**
|
|
126
117
|
* Factory function to create a new MockListBinding.
|
|
127
118
|
*
|
|
@@ -135,13 +126,14 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
135
126
|
mocked._aMockContexts = aContextData.map(function (contextData) {
|
|
136
127
|
return createMockContext(contextData, mocked);
|
|
137
128
|
});
|
|
138
|
-
mocked._mockModel = oMockModel;
|
|
129
|
+
mocked._mockModel = oMockModel;
|
|
139
130
|
|
|
131
|
+
// Utility API
|
|
140
132
|
mocked.setModel = function (model) {
|
|
141
133
|
mocked._mockModel = model;
|
|
142
|
-
};
|
|
143
|
-
|
|
134
|
+
};
|
|
144
135
|
|
|
136
|
+
// Default behavior
|
|
145
137
|
mocked.mock.isA.mockImplementation(function (sClassName) {
|
|
146
138
|
return sClassName === "sap.ui.model.odata.v4.ODataListBinding";
|
|
147
139
|
});
|
|
@@ -154,6 +146,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
154
146
|
mocked.mock.getAllCurrentContexts.mockImplementation(function () {
|
|
155
147
|
return mocked._aMockContexts;
|
|
156
148
|
});
|
|
149
|
+
mocked.mock.getContexts.mockImplementation(function () {
|
|
150
|
+
return mocked._aMockContexts;
|
|
151
|
+
});
|
|
157
152
|
mocked.mock.getModel.mockImplementation(function () {
|
|
158
153
|
return mocked._mockModel;
|
|
159
154
|
});
|
|
@@ -163,16 +158,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
163
158
|
/**
|
|
164
159
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockListBinding instead.
|
|
165
160
|
*/
|
|
166
|
-
|
|
167
|
-
|
|
168
161
|
_exports.createMockListBinding = createMockListBinding;
|
|
169
162
|
var MockListBinding = createMockListBinding;
|
|
163
|
+
|
|
170
164
|
/**
|
|
171
165
|
* Utility type to mock a sap.ui.model.odata.v4.ODataPropertyBinding
|
|
172
166
|
*/
|
|
173
|
-
|
|
174
167
|
_exports.MockListBinding = MockListBinding;
|
|
175
|
-
|
|
176
168
|
/**
|
|
177
169
|
* Factory function to create a new MockPropertyBinding.
|
|
178
170
|
*
|
|
@@ -185,8 +177,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
185
177
|
var mocked = mock(ODataPropertyBinding);
|
|
186
178
|
mocked._mockModel = oMockModel;
|
|
187
179
|
mocked._value = value;
|
|
188
|
-
mocked._path = path;
|
|
180
|
+
mocked._path = path;
|
|
189
181
|
|
|
182
|
+
// Default behavior
|
|
190
183
|
mocked.mock.isA.mockImplementation(function (sClassName) {
|
|
191
184
|
return sClassName === "sap.ui.model.odata.v4.ODataPropertyBinding";
|
|
192
185
|
});
|
|
@@ -204,16 +197,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
204
197
|
/**
|
|
205
198
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockPropertyBinding instead.
|
|
206
199
|
*/
|
|
207
|
-
|
|
208
|
-
|
|
209
200
|
_exports.createMockPropertyBinding = createMockPropertyBinding;
|
|
210
201
|
var MockPropertyBinding = createMockPropertyBinding;
|
|
202
|
+
|
|
211
203
|
/**
|
|
212
204
|
* Utility type to mock a sap.ui.model.CompositeBinding
|
|
213
205
|
*/
|
|
214
|
-
|
|
215
206
|
_exports.MockPropertyBinding = MockPropertyBinding;
|
|
216
|
-
|
|
217
207
|
/**
|
|
218
208
|
* Factory function to create a new MockCompositeBinding.
|
|
219
209
|
*
|
|
@@ -222,8 +212,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
222
212
|
*/
|
|
223
213
|
function createMockCompositeBinding(aBindings) {
|
|
224
214
|
var mocked = mock(CompositeBinding);
|
|
225
|
-
mocked._aBindings = aBindings;
|
|
215
|
+
mocked._aBindings = aBindings;
|
|
226
216
|
|
|
217
|
+
// Default behavior
|
|
227
218
|
mocked.mock.isA.mockImplementation(function (sClassName) {
|
|
228
219
|
return sClassName === "sap.ui.model.CompositeBinding";
|
|
229
220
|
});
|
|
@@ -240,16 +231,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
240
231
|
/**
|
|
241
232
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockCompositeBinding instead.
|
|
242
233
|
*/
|
|
243
|
-
|
|
244
|
-
|
|
245
234
|
_exports.createMockCompositeBinding = createMockCompositeBinding;
|
|
246
235
|
var MockCompositeBinding = createMockCompositeBinding;
|
|
236
|
+
|
|
247
237
|
/**
|
|
248
238
|
* Utility type to mock a sap.ui.model.odata.v4.ODataContextBinding
|
|
249
239
|
*/
|
|
250
|
-
|
|
251
240
|
_exports.MockCompositeBinding = MockCompositeBinding;
|
|
252
|
-
|
|
253
241
|
/**
|
|
254
242
|
* Factory function to create a new MockContextBinding.
|
|
255
243
|
*
|
|
@@ -260,17 +248,17 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
260
248
|
function createMockContextBinding(oContext, oMockModel) {
|
|
261
249
|
var mocked = mock(ODataContextBinding);
|
|
262
250
|
mocked.mockModel = oMockModel;
|
|
263
|
-
mocked.oMockContext = createMockContext(oContext || {}, mocked);
|
|
251
|
+
mocked.oMockContext = createMockContext(oContext || {}, mocked);
|
|
264
252
|
|
|
253
|
+
// Utility API
|
|
265
254
|
mocked.getInternalMockContext = function () {
|
|
266
255
|
return mocked.oMockContext;
|
|
267
256
|
};
|
|
268
|
-
|
|
269
257
|
mocked.setModel = function (oModel) {
|
|
270
258
|
mocked.mockModel = oModel;
|
|
271
|
-
};
|
|
272
|
-
|
|
259
|
+
};
|
|
273
260
|
|
|
261
|
+
// Default behavior
|
|
274
262
|
mocked.mock.isA.mockImplementation(function (sClassName) {
|
|
275
263
|
return sClassName === "sap.ui.model.odata.v4.ODataContextBinding";
|
|
276
264
|
});
|
|
@@ -286,16 +274,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
286
274
|
/**
|
|
287
275
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockContextBinding instead.
|
|
288
276
|
*/
|
|
289
|
-
|
|
290
|
-
|
|
291
277
|
_exports.createMockContextBinding = createMockContextBinding;
|
|
292
278
|
var MockContextBinding = createMockContextBinding;
|
|
279
|
+
|
|
293
280
|
/**
|
|
294
281
|
* Utility type to mock a sap.ui.model.odata.v4.ODataMetaModel
|
|
295
282
|
*/
|
|
296
|
-
|
|
297
283
|
_exports.MockContextBinding = MockContextBinding;
|
|
298
|
-
|
|
299
284
|
/**
|
|
300
285
|
* Factory function to create a new MockMetaModel.
|
|
301
286
|
*
|
|
@@ -304,8 +289,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
304
289
|
*/
|
|
305
290
|
function createMockMetaModel(oMetaData) {
|
|
306
291
|
var mocked = mock(ODataMetaModel);
|
|
307
|
-
mocked.oMetaContext = createMockContext(oMetaData || {});
|
|
292
|
+
mocked.oMetaContext = createMockContext(oMetaData || {});
|
|
308
293
|
|
|
294
|
+
// Default behavior
|
|
309
295
|
mocked.mock.getMetaContext.mockImplementation(function (sPath) {
|
|
310
296
|
return createMockContext({
|
|
311
297
|
$path: sPath
|
|
@@ -328,16 +314,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
328
314
|
/**
|
|
329
315
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockMetaModel instead.
|
|
330
316
|
*/
|
|
331
|
-
|
|
332
|
-
|
|
333
317
|
_exports.createMockMetaModel = createMockMetaModel;
|
|
334
318
|
var MockMetaModel = createMockMetaModel;
|
|
319
|
+
|
|
335
320
|
/**
|
|
336
321
|
* Utility type to mock a sap.ui.model.odata.v4.ODataModel
|
|
337
322
|
*/
|
|
338
|
-
|
|
339
323
|
_exports.MockMetaModel = MockMetaModel;
|
|
340
|
-
|
|
341
324
|
/**
|
|
342
325
|
* Factory function to create a new MockModel.
|
|
343
326
|
*
|
|
@@ -349,21 +332,19 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
349
332
|
var mocked = mock(ODataModel);
|
|
350
333
|
mocked.mockListBinding = oMockListBinding;
|
|
351
334
|
mocked.mockContextBinding = oMockContextBinding;
|
|
352
|
-
|
|
353
335
|
if (oMockListBinding) {
|
|
354
336
|
oMockListBinding.setModel(mocked);
|
|
355
337
|
}
|
|
356
|
-
|
|
357
338
|
if (oMockContextBinding) {
|
|
358
339
|
oMockContextBinding.setModel(mocked);
|
|
359
|
-
}
|
|
360
|
-
|
|
340
|
+
}
|
|
361
341
|
|
|
342
|
+
// Utility API
|
|
362
343
|
mocked.setMetaModel = function (oMetaModel) {
|
|
363
344
|
mocked.oMetaModel = oMetaModel;
|
|
364
|
-
};
|
|
365
|
-
|
|
345
|
+
};
|
|
366
346
|
|
|
347
|
+
// Default behavior
|
|
367
348
|
mocked.mock.bindList.mockImplementation(function () {
|
|
368
349
|
return mocked.mockListBinding;
|
|
369
350
|
});
|
|
@@ -378,8 +359,6 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
378
359
|
/**
|
|
379
360
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockModel instead.
|
|
380
361
|
*/
|
|
381
|
-
|
|
382
|
-
|
|
383
362
|
_exports.createMockModel = createMockModel;
|
|
384
363
|
var MockModel = createMockModel;
|
|
385
364
|
/**
|
|
@@ -388,9 +367,7 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
388
367
|
* @param oMockListBinding A list binding that will be returned when calling bindList.
|
|
389
368
|
* @returns A new MockModel
|
|
390
369
|
*/
|
|
391
|
-
|
|
392
370
|
_exports.MockModel = MockModel;
|
|
393
|
-
|
|
394
371
|
function createMockModelFromListBinding(oMockListBinding) {
|
|
395
372
|
return createMockModel(oMockListBinding);
|
|
396
373
|
}
|
|
@@ -400,28 +377,24 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
400
377
|
* @param oMockContextBinding A context binding that will be returned when calling bindContext.
|
|
401
378
|
* @returns A new MockModel
|
|
402
379
|
*/
|
|
403
|
-
|
|
404
|
-
|
|
405
380
|
_exports.createMockModelFromListBinding = createMockModelFromListBinding;
|
|
406
|
-
|
|
407
381
|
function createMockModelFromContextBinding(oMockContextBinding) {
|
|
408
382
|
return createMockModel(undefined, oMockContextBinding);
|
|
409
383
|
}
|
|
384
|
+
|
|
410
385
|
/**
|
|
411
386
|
* Utility type to mock a sap.ui.core.mvc.View
|
|
412
387
|
*/
|
|
413
|
-
|
|
414
|
-
|
|
415
388
|
_exports.createMockModelFromContextBinding = createMockModelFromContextBinding;
|
|
416
|
-
|
|
417
389
|
/**
|
|
418
390
|
* Factory function to create a new MockView.
|
|
419
391
|
*
|
|
420
392
|
* @returns A new MockView
|
|
421
393
|
*/
|
|
422
394
|
function createMockView() {
|
|
423
|
-
var mocked = mock(View);
|
|
395
|
+
var mocked = mock(View);
|
|
424
396
|
|
|
397
|
+
// Default behavior
|
|
425
398
|
mocked.mock.isA.mockImplementation(function (sClassName) {
|
|
426
399
|
return sClassName === "sap.ui.core.mvc.View";
|
|
427
400
|
});
|
|
@@ -430,16 +403,13 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
430
403
|
/**
|
|
431
404
|
* For compatibility reasons, we keep a new operator. Use the factory function createMockView instead.
|
|
432
405
|
*/
|
|
433
|
-
|
|
434
|
-
|
|
435
406
|
_exports.createMockView = createMockView;
|
|
436
407
|
var MockView = createMockView;
|
|
408
|
+
|
|
437
409
|
/**
|
|
438
410
|
* Utility type to mock a sap.fe.core.PageController
|
|
439
411
|
*/
|
|
440
|
-
|
|
441
412
|
_exports.MockView = MockView;
|
|
442
|
-
|
|
443
413
|
/**
|
|
444
414
|
* Factory function to create a new MockController.
|
|
445
415
|
*
|
|
@@ -451,8 +421,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
451
421
|
mocked._editFlow = mock(InternalEditFlow);
|
|
452
422
|
mocked._sideEffects = mock(SideEffects);
|
|
453
423
|
mocked.editFlow = mock(EditFlow);
|
|
454
|
-
mocked.share = mock(Share);
|
|
424
|
+
mocked.share = mock(Share);
|
|
455
425
|
|
|
426
|
+
// Default Behavior
|
|
456
427
|
mocked.mock.getView.mockReturnValue(createMockView());
|
|
457
428
|
mocked.mock.isA.mockReturnValue(false);
|
|
458
429
|
return mocked;
|
|
@@ -460,12 +431,9 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
460
431
|
/**
|
|
461
432
|
* For compatibility reasons, we keep a new operator. Use the factory function mockController instead.
|
|
462
433
|
*/
|
|
463
|
-
|
|
464
|
-
|
|
465
434
|
_exports.createMockController = createMockController;
|
|
466
435
|
var MockController = createMockController;
|
|
467
436
|
_exports.MockController = MockController;
|
|
468
|
-
|
|
469
437
|
/**
|
|
470
438
|
* Generate model, view and controller mocks that refer to each other.
|
|
471
439
|
*
|
|
@@ -485,8 +453,7 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
|
|
|
485
453
|
controller: controller
|
|
486
454
|
};
|
|
487
455
|
}
|
|
488
|
-
|
|
489
456
|
_exports.mockMVC = mockMVC;
|
|
490
457
|
return _exports;
|
|
491
458
|
}, false);
|
|
492
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVNb2NrQ29udGV4dCIsIm9Db250ZXh0RGF0YSIsIm9CaW5kaW5nIiwiaXNJbmFjdGl2ZSIsIm1vY2tlZCIsIm1vY2siLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsIkNvbnRleHQiLCJjcmVhdGVOZXdDb250ZXh0IiwiX2lzS2VwdEFsaXZlIiwiX2NvbnRleHREYXRhIiwiX29CaW5kaW5nIiwiX2lzSW5hY3RpdmUiLCJpc0EiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJzQ2xhc3NOYW1lIiwiZ2V0UHJvcGVydHkiLCJrZXkiLCJyZXF1ZXN0UHJvcGVydHkiLCJrZXlPcktleXMiLCJBcnJheSIsImlzQXJyYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1hcCIsInJlcXVlc3RPYmplY3QiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJzZXRLZWVwQWxpdmUiLCJib29sIiwiX2ZuT25CZWZvcmVEZXN0cm95IiwiX2JSZXF1ZXN0TWVzc2FnZXMiLCJpc0tlZXBBbGl2ZSIsIk1vY2tDb250ZXh0IiwiY3JlYXRlTW9ja0V2ZW50IiwicGFyYW1zIiwiRXZlbnQiLCJfcGFyYW1zIiwiZ2V0UGFyYW1ldGVyIiwibmFtZSIsIk1vY2tFdmVudCIsImNyZWF0ZU1vY2tMaXN0QmluZGluZyIsImFDb250ZXh0RGF0YSIsIm9Nb2NrTW9kZWwiLCJPRGF0YUxpc3RCaW5kaW5nIiwiX2FNb2NrQ29udGV4dHMiLCJjb250ZXh0RGF0YSIsIl9tb2NrTW9kZWwiLCJzZXRNb2RlbCIsIm1vZGVsIiwicmVxdWVzdENvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIm1vY2tSZXR1cm5WYWx1ZSIsIk1vY2tMaXN0QmluZGluZyIsImNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmciLCJPRGF0YVByb3BlcnR5QmluZGluZyIsIl92YWx1ZSIsIl9wYXRoIiwiZ2V0VmFsdWUiLCJNb2NrUHJvcGVydHlCaW5kaW5nIiwiY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmciLCJhQmluZGluZ3MiLCJDb21wb3NpdGVCaW5kaW5nIiwiX2FCaW5kaW5ncyIsImdldEJpbmRpbmdzIiwiYmluZGluZyIsIk1vY2tDb21wb3NpdGVCaW5kaW5nIiwiY3JlYXRlTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJPRGF0YUNvbnRleHRCaW5kaW5nIiwibW9ja01vZGVsIiwib01vY2tDb250ZXh0IiwiZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCIsIm9Nb2RlbCIsImdldEJvdW5kQ29udGV4dCIsImV4ZWN1dGUiLCJtb2NrUmVzb2x2ZWRWYWx1ZSIsIk1vY2tDb250ZXh0QmluZGluZyIsImNyZWF0ZU1vY2tNZXRhTW9kZWwiLCJvTWV0YURhdGEiLCJPRGF0YU1ldGFNb2RlbCIsIm9NZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0Iiwic1BhdGgiLCIkcGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0TWV0YVBhdGgiLCJtZXRhbW9kZWwiLCJNb2NrTWV0YU1vZGVsIiwiY3JlYXRlTW9ja01vZGVsIiwib01vY2tMaXN0QmluZGluZyIsIm9Nb2NrQ29udGV4dEJpbmRpbmciLCJPRGF0YU1vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwic2V0TWV0YU1vZGVsIiwib01ldGFNb2RlbCIsImJpbmRMaXN0IiwiYmluZENvbnRleHQiLCJnZXRNZXRhTW9kZWwiLCJNb2NrTW9kZWwiLCJjcmVhdGVNb2NrTW9kZWxGcm9tTGlzdEJpbmRpbmciLCJjcmVhdGVNb2NrTW9kZWxGcm9tQ29udGV4dEJpbmRpbmciLCJ1bmRlZmluZWQiLCJjcmVhdGVNb2NrVmlldyIsIlZpZXciLCJNb2NrVmlldyIsImNyZWF0ZU1vY2tDb250cm9sbGVyIiwiQ29udHJvbGxlciIsIl9yb3V0aW5nIiwiSW50ZXJuYWxSb3V0aW5nIiwiX2VkaXRGbG93IiwiSW50ZXJuYWxFZGl0RmxvdyIsIl9zaWRlRWZmZWN0cyIsIlNpZGVFZmZlY3RzIiwiZWRpdEZsb3ciLCJFZGl0RmxvdyIsInNoYXJlIiwiU2hhcmUiLCJnZXRWaWV3IiwiTW9ja0NvbnRyb2xsZXIiLCJtb2NrTVZDIiwiZXhpc3RpbmciLCJ2aWV3IiwiY29udHJvbGxlciIsImdldENvbnRyb2xsZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBXaXRoTW9jayB9IGZyb20gXCJAc2FwLXV4L2plc3QtbW9jay11aTUvZGlzdC9nZW5lcmljXCI7XG5pbXBvcnQgeyBtb2NrIH0gZnJvbSBcIkBzYXAtdXgvamVzdC1tb2NrLXVpNS9kaXN0L2dlbmVyaWNcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlcm5hbEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEVkaXRGbG93XCI7XG5pbXBvcnQgSW50ZXJuYWxSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbFJvdXRpbmdcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBTaWRlRWZmZWN0cyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlclwiO1xuaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgQ29tcG9zaXRlQmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NvbXBvc2l0ZUJpbmRpbmdcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IE9EYXRhQ29udGV4dEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YVByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dFxuICovXG5leHBvcnQgdHlwZSBNb2NrQ29udGV4dCA9IFdpdGhNb2NrPENvbnRleHQ+ICYge1xuXHRfaXNLZXB0QWxpdmU6IGJvb2xlYW47XG5cdF9jb250ZXh0RGF0YTogYW55O1xuXHRfb0JpbmRpbmc6IGFueTtcblx0X2lzSW5hY3RpdmU6IGJvb2xlYW47XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrQ29udGV4dC5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHREYXRhIEEgbWFwIG9mIHRoZSBkaWZmZXJlbnQgcHJvcGVydGllcyBvZiB0aGUgY29udGV4dC4gVGhlIHZhbHVlIGZvciB0aGUga2V5ICckcGF0aCcgd2lsbCBiZSByZXR1cm5lZCBieSB0aGUgJ2dldFBhdGgnIG1ldGhvZFxuICogQHBhcmFtIG9CaW5kaW5nIFRoZSBiaW5kaW5nIG9mIHRoZSBjb250ZXh0XG4gKiBAcGFyYW0gaXNJbmFjdGl2ZSBJcyB0aGUgY29udGV4dCBpbmlhY3RpdmUgb3Igbm90XG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrQ29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbnRleHQob0NvbnRleHREYXRhPzogYW55LCBvQmluZGluZz86IGFueSwgaXNJbmFjdGl2ZT86IGJvb2xlYW4pOiBNb2NrQ29udGV4dCB7XG5cdC8vIFVnbHkgd29ya2Fyb3VuZCB0byBnZXQgYSBwcm9wZXIgbW9jayBwYmplY3QsIGFzIENvbnRleHQgaXNuJ3QgcHJvcGVybHkgZXhwb3J0ZWQgZnJvbSBVSTVcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPYmplY3QuZ2V0UHJvdG90eXBlT2YoKENvbnRleHQgYXMgYW55KS5jcmVhdGVOZXdDb250ZXh0KG51bGwsIG51bGwsIFwiL2VcIikpKSBhcyBNb2NrQ29udGV4dDtcblx0bW9ja2VkLl9pc0tlcHRBbGl2ZSA9IGZhbHNlO1xuXHRtb2NrZWQuX2NvbnRleHREYXRhID0gb0NvbnRleHREYXRhIHx8IHt9O1xuXHRtb2NrZWQuX29CaW5kaW5nID0gb0JpbmRpbmc7XG5cdG1vY2tlZC5faXNJbmFjdGl2ZSA9ICEhaXNJbmFjdGl2ZTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCI7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRQcm9wZXJ0eS5tb2NrSW1wbGVtZW50YXRpb24oKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fY29udGV4dERhdGFba2V5XTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLnJlcXVlc3RQcm9wZXJ0eS5tb2NrSW1wbGVtZW50YXRpb24oKGtleU9yS2V5czogc3RyaW5nIHwgc3RyaW5nW10pID0+IHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShrZXlPcktleXMpKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGtleU9yS2V5cy5tYXAoKGtleSkgPT4gbW9ja2VkLl9jb250ZXh0RGF0YVtrZXldKSk7XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUobW9ja2VkLl9jb250ZXh0RGF0YVtrZXlPcktleXNdKTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLnJlcXVlc3RPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUobW9ja2VkLl9jb250ZXh0RGF0YVtrZXldKTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLnNldFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbigoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHRtb2NrZWQuX2NvbnRleHREYXRhW2tleV0gPSB2YWx1ZTtcblx0XHRyZXR1cm4gbW9ja2VkLl9jb250ZXh0RGF0YVtrZXldO1xuXHR9KTtcblxuXHRtb2NrZWQubW9jay5nZXRPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChwYXRoOiBzdHJpbmcpID0+IHtcblx0XHRsZXQgcmVzdWx0ID0gcGF0aCA/IG1vY2tlZC5fY29udGV4dERhdGFbcGF0aF0gOiBtb2NrZWQuX2NvbnRleHREYXRhO1xuXG5cdFx0aWYgKCFyZXN1bHQgJiYgcGF0aCAmJiBwYXRoLmluZGV4T2YoXCIvXCIpID4gLTEpIHtcblx0XHRcdGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRyZXN1bHQgPSBwYXJ0cy5yZWR1Y2UoKHN1bSwgcGFydDogYW55KSA9PiB7XG5cdFx0XHRcdHN1bSA9IHBhcnQgPyBzdW1bcGFydF0gOiBzdW07XG5cdFx0XHRcdHJldHVybiBzdW07XG5cdFx0XHR9LCBtb2NrZWQuX2NvbnRleHREYXRhKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9KTtcblxuXHRtb2NrZWQubW9jay5nZXRQYXRoLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBtb2NrZWQuX2NvbnRleHREYXRhW1wiJHBhdGhcIl0pO1xuXHRtb2NrZWQubW9jay5nZXRCaW5kaW5nLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBtb2NrZWQuX29CaW5kaW5nKTtcblx0bW9ja2VkLm1vY2suZ2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5fb0JpbmRpbmc/LmdldE1vZGVsKCkpO1xuXHRtb2NrZWQubW9jay5zZXRLZWVwQWxpdmUubW9ja0ltcGxlbWVudGF0aW9uKChib29sOiBib29sZWFuLCBfZm5PbkJlZm9yZURlc3Ryb3k/OiBhbnksIF9iUmVxdWVzdE1lc3NhZ2VzPzogYm9vbGVhbikgPT4ge1xuXHRcdG1vY2tlZC5faXNLZXB0QWxpdmUgPSBib29sO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suaXNLZWVwQWxpdmUubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5faXNLZXB0QWxpdmUpO1xuXHRtb2NrZWQubW9jay5pc0luYWN0aXZlLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBtb2NrZWQuX2lzSW5hY3RpdmUpO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrQ29udGV4dCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbnRleHQ6IG5ldyAob1ZhbHVlcz86IGFueSwgb0JpbmRpbmc/OiBhbnksIGlzSW5hY3RpdmU/OiBib29sZWFuKSA9PiBNb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0IGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5iYXNlLkV2ZW50XG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tFdmVudCA9IFdpdGhNb2NrPEV2ZW50PiAmIHtcblx0X3BhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tFdmVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBldmVudFxuICogQHJldHVybnMgQSBuZXcgTW9ja0V2ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrRXZlbnQocGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IE1vY2tFdmVudCB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soRXZlbnQpIGFzIE1vY2tFdmVudDtcblx0bW9ja2VkLl9wYXJhbXMgPSBwYXJhbXMgfHwge307XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5nZXRQYXJhbWV0ZXIubW9ja0ltcGxlbWVudGF0aW9uKChuYW1lKSA9PiBtb2NrZWQuX3BhcmFtc1tuYW1lXSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tFdmVudCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0V2ZW50OiBuZXcgKHBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IE1vY2tFdmVudCA9IGNyZWF0ZU1vY2tFdmVudCBhcyBhbnk7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1xuICovXG5leHBvcnQgdHlwZSBNb2NrTGlzdEJpbmRpbmcgPSBXaXRoTW9jazxPRGF0YUxpc3RCaW5kaW5nPiAmIHtcblx0X2FNb2NrQ29udGV4dHM6IE1vY2tDb250ZXh0W107XG5cdF9tb2NrTW9kZWw/OiBNb2NrTW9kZWw7XG5cblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIHNldCB0aGUgbW9kZWwgb2YgdGhlIExpc3RCaW5kaW5nXG5cdCAqL1xuXHRzZXRNb2RlbDogKG1vZGVsOiBNb2NrTW9kZWwpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrTGlzdEJpbmRpbmcuXG4gKlxuICogQHBhcmFtIGFDb250ZXh0RGF0YSBBbiBhcnJheSBvZiBvYmplY3RzIGhvbGRpbmcgdGhlIGRpZmZlcmVudCBwcm9wZXJ0aWVzIG9mIHRoZSBjb250ZXh0cyByZWZlcmVuY2VkIGJ5IHRoZSBMaXN0QmluZGluZ1xuICogQHBhcmFtIG9Nb2NrTW9kZWwgVGhlIG1vZGVsIG9mIHRoZSBMaXN0QmluZGluZ1xuICogQHJldHVybnMgQSBuZXcgTW9ja0xpc3RCaW5kaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTGlzdEJpbmRpbmcoYUNvbnRleHREYXRhPzogYW55W10sIG9Nb2NrTW9kZWw/OiBNb2NrTW9kZWwpOiBNb2NrTGlzdEJpbmRpbmcge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhTGlzdEJpbmRpbmcpIGFzIE1vY2tMaXN0QmluZGluZztcblx0YUNvbnRleHREYXRhID0gYUNvbnRleHREYXRhIHx8IFtdO1xuXHRtb2NrZWQuX2FNb2NrQ29udGV4dHMgPSBhQ29udGV4dERhdGEubWFwKChjb250ZXh0RGF0YSkgPT4ge1xuXHRcdHJldHVybiBjcmVhdGVNb2NrQ29udGV4dChjb250ZXh0RGF0YSwgbW9ja2VkKTtcblx0fSk7XG5cdG1vY2tlZC5fbW9ja01vZGVsID0gb01vY2tNb2RlbDtcblxuXHQvLyBVdGlsaXR5IEFQSVxuXHRtb2NrZWQuc2V0TW9kZWwgPSAobW9kZWw6IE1vY2tNb2RlbCkgPT4ge1xuXHRcdG1vY2tlZC5fbW9ja01vZGVsID0gbW9kZWw7XG5cdH07XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5pc0EubW9ja0ltcGxlbWVudGF0aW9uKChzQ2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2sucmVxdWVzdENvbnRleHRzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShtb2NrZWQuX2FNb2NrQ29udGV4dHMpO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0Q3VycmVudENvbnRleHRzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fYU1vY2tDb250ZXh0cztcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldEFsbEN1cnJlbnRDb250ZXh0cy5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX2FNb2NrQ29udGV4dHM7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX21vY2tNb2RlbDtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldFVwZGF0ZUdyb3VwSWQubW9ja1JldHVyblZhbHVlKFwiYXV0b1wiKTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0xpc3RCaW5kaW5nIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrTGlzdEJpbmRpbmc6IG5ldyAoYUNvbnRleHRzPzogYW55W10sIG1vY2tNb2RlbD86IE1vY2tNb2RlbCkgPT4gTW9ja0xpc3RCaW5kaW5nID0gY3JlYXRlTW9ja0xpc3RCaW5kaW5nIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YVByb3BlcnR5QmluZGluZ1xuICovXG5leHBvcnQgdHlwZSBNb2NrUHJvcGVydHlCaW5kaW5nID0gV2l0aE1vY2s8T0RhdGFQcm9wZXJ0eUJpbmRpbmc+ICYge1xuXHRfdmFsdWU/OiBhbnk7XG5cdF9wYXRoPzogc3RyaW5nO1xuXHRfbW9ja01vZGVsPzogTW9ja01vZGVsO1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja1Byb3BlcnR5QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHJldHVybmQgYnkgdGhlIFByb3BlcnR5QmluZGluZ1xuICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIFByb3BlcnR5QmluZGluZ1xuICogQHBhcmFtIG9Nb2NrTW9kZWwgVGhlIG1vZGVsIG9mIHRoZSBQcm9wZXJ0eUJpbmRpbmdcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tQcm9wZXJ0eUJpbmRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmcodmFsdWU6IGFueSwgcGF0aD86IHN0cmluZywgb01vY2tNb2RlbD86IE1vY2tNb2RlbCk6IE1vY2tQcm9wZXJ0eUJpbmRpbmcge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhUHJvcGVydHlCaW5kaW5nKSBhcyBNb2NrUHJvcGVydHlCaW5kaW5nO1xuXHRtb2NrZWQuX21vY2tNb2RlbCA9IG9Nb2NrTW9kZWw7XG5cdG1vY2tlZC5fdmFsdWUgPSB2YWx1ZTtcblx0bW9ja2VkLl9wYXRoID0gcGF0aDtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YVByb3BlcnR5QmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9tb2NrTW9kZWw7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRWYWx1ZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX3ZhbHVlO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0UGF0aC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX3BhdGg7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrUHJvcGVydHlCaW5kaW5nIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrUHJvcGVydHlCaW5kaW5nOiBuZXcgKHZhbHVlOiBhbnksIG9Nb2NrTW9kZWw/OiBNb2NrTW9kZWwpID0+IE1vY2tQcm9wZXJ0eUJpbmRpbmcgPSBjcmVhdGVNb2NrUHJvcGVydHlCaW5kaW5nIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5Db21wb3NpdGVCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb21wb3NpdGVCaW5kaW5nID0gV2l0aE1vY2s8Q29tcG9zaXRlQmluZGluZz4gJiB7XG5cdF9hQmluZGluZ3M6IE1vY2tQcm9wZXJ0eUJpbmRpbmdbXTtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb21wb3NpdGVCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBhQmluZGluZ3MgVGhlIGJpbmRpbmdzIG9mIHRoZSBDb21wb3NpdGVCaW5kaW5nXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrQ29tcG9zaXRlQmluZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmcoYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW10pOiBNb2NrQ29tcG9zaXRlQmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soQ29tcG9zaXRlQmluZGluZykgYXMgTW9ja0NvbXBvc2l0ZUJpbmRpbmc7XG5cdG1vY2tlZC5fYUJpbmRpbmdzID0gYUJpbmRpbmdzO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLkNvbXBvc2l0ZUJpbmRpbmdcIjtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldEJpbmRpbmdzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fYUJpbmRpbmdzO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0VmFsdWUubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9hQmluZGluZ3MubWFwKChiaW5kaW5nKSA9PiBiaW5kaW5nLmdldFZhbHVlKCkpO1xuXHR9KTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmcgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vY2tDb21wb3NpdGVCaW5kaW5nOiBuZXcgKGFCaW5kaW5nczogTW9ja1Byb3BlcnR5QmluZGluZ1tdKSA9PiBNb2NrQ29tcG9zaXRlQmluZGluZyA9IGNyZWF0ZU1vY2tDb21wb3NpdGVCaW5kaW5nIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUNvbnRleHRCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb250ZXh0QmluZGluZyA9IFdpdGhNb2NrPE9EYXRhQ29udGV4dEJpbmRpbmc+ICYge1xuXHRvTW9ja0NvbnRleHQ6IE1vY2tDb250ZXh0O1xuXHRpc0tlcHRBbGl2ZTogYm9vbGVhbjtcblx0bW9ja01vZGVsPzogTW9ja01vZGVsO1xuXG5cdC8qKlxuXHQgKiBVdGlsaXR5IG1ldGhvZCB0byBhY2Nlc3MgdGhlIGludGVybmFsIE1vY2tDb250ZXh0IG9mIHRoZSBDb250ZXh0QmluZGluZ1xuXHQgKi9cblx0Z2V0SW50ZXJuYWxNb2NrQ29udGV4dDogKCkgPT4gTW9ja0NvbnRleHQ7XG5cdC8qKlxuXHQgKiBVdGlsaXR5IG1ldGhvZCB0byBzZXQgdGhlIG1vZGVsIG9mIHRoZSBDb250ZXh0QmluZGluZ1xuXHQgKi9cblx0c2V0TW9kZWw6IChvTW9kZWw6IE1vY2tNb2RlbCkgPT4gdm9pZDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb250ZXh0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIENvbnRleHRCaW5kaW5nXG4gKiBAcGFyYW0gb01vY2tNb2RlbCBUaGUgbW9kZWwgb2YgdGhlIENvbnRleHRCaW5kaW5nXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrQ29udGV4dEJpbmRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250ZXh0QmluZGluZyhvQ29udGV4dD86IGFueSwgb01vY2tNb2RlbD86IE1vY2tNb2RlbCk6IE1vY2tDb250ZXh0QmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soT0RhdGFDb250ZXh0QmluZGluZykgYXMgTW9ja0NvbnRleHRCaW5kaW5nO1xuXHRtb2NrZWQubW9ja01vZGVsID0gb01vY2tNb2RlbDtcblx0bW9ja2VkLm9Nb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KG9Db250ZXh0IHx8IHt9LCBtb2NrZWQpO1xuXG5cdC8vIFV0aWxpdHkgQVBJXG5cdG1vY2tlZC5nZXRJbnRlcm5hbE1vY2tDb250ZXh0ID0gKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQub01vY2tDb250ZXh0O1xuXHR9O1xuXHRtb2NrZWQuc2V0TW9kZWwgPSAob01vZGVsOiBNb2NrTW9kZWwpID0+IHtcblx0XHRtb2NrZWQubW9ja01vZGVsID0gb01vZGVsO1xuXHR9O1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcIjtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldEJvdW5kQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQub01vY2tDb250ZXh0O1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLm1vY2tNb2RlbDtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmV4ZWN1dGUubW9ja1Jlc29sdmVkVmFsdWUodHJ1ZSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250ZXh0QmluZGluZyBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbnRleHRCaW5kaW5nOiBuZXcgKG9Db250ZXh0PzogYW55LCBvTW9ja01vZGVsPzogTW9ja01vZGVsKSA9PiBNb2NrQ29udGV4dEJpbmRpbmcgPSBjcmVhdGVNb2NrQ29udGV4dEJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tNZXRhTW9kZWwgPSBXaXRoTW9jazxPRGF0YU1ldGFNb2RlbD4gJiB7XG5cdG9NZXRhQ29udGV4dDogTW9ja0NvbnRleHQ7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrTWV0YU1vZGVsLlxuICpcbiAqIEBwYXJhbSBvTWV0YURhdGEgQSBtYXAgb2YgdGhlIGRpZmZlcmVudCBtZXRhZGF0YSBwcm9wZXJ0aWVzIG9mIHRoZSBNZXRhTW9kZWwgKHBhdGggLT4gdmFsdWUpLlxuICogQHJldHVybnMgQSBuZXcgTW9ja01ldGFNb2RlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja01ldGFNb2RlbChvTWV0YURhdGE/OiBhbnkpOiBNb2NrTWV0YU1vZGVsIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPRGF0YU1ldGFNb2RlbCkgYXMgTW9ja01ldGFNb2RlbDtcblx0bW9ja2VkLm9NZXRhQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KG9NZXRhRGF0YSB8fCB7fSk7XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5nZXRNZXRhQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gY3JlYXRlTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkoc1BhdGgpO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suY3JlYXRlQmluZGluZ0NvbnRleHQubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIGNyZWF0ZU1vY2tDb250ZXh0KHsgJHBhdGg6IHNQYXRoIH0pO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TWV0YVBhdGgubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0Y29uc3QgbWV0YW1vZGVsID0gbmV3IE9EYXRhTWV0YU1vZGVsKCk7XG5cdFx0cmV0dXJuIHNQYXRoID8gbWV0YW1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKSA6IHNQYXRoO1xuXHR9KTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja01ldGFNb2RlbCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja01ldGFNb2RlbDogbmV3IChvTWV0YURhdGE/OiBhbnkpID0+IE1vY2tNZXRhTW9kZWwgPSBjcmVhdGVNb2NrTWV0YU1vZGVsIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1vZGVsXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tNb2RlbCA9IFdpdGhNb2NrPE9EYXRhTW9kZWw+ICYge1xuXHRvTWV0YU1vZGVsPzogTW9ja01ldGFNb2RlbDtcblx0bW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nO1xuXHRtb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmc7XG5cblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIHNldCB0aGUgbWV0YW1vZGVsIG9mIHRoZSBNb2NrTW9kZWxcblx0ICovXG5cdHNldE1ldGFNb2RlbDogKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrTW9kZWwuXG4gKlxuICogQHBhcmFtIG9Nb2NrTGlzdEJpbmRpbmcgQSBsaXN0IGJpbmRpbmcgdGhhdCB3aWxsIGJlIHJldHVybmVkIHdoZW4gY2FsbGluZyBiaW5kTGlzdC5cbiAqIEBwYXJhbSBvTW9ja0NvbnRleHRCaW5kaW5nIEEgY29udGV4dCBiaW5kaW5nIHRoYXQgd2lsbCBiZSByZXR1cm5lZCB3aGVuIGNhbGxpbmcgYmluZENvbnRleHQuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbChvTW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nLCBvTW9ja0NvbnRleHRCaW5kaW5nPzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPRGF0YU1vZGVsKSBhcyBNb2NrTW9kZWw7XG5cdG1vY2tlZC5tb2NrTGlzdEJpbmRpbmcgPSBvTW9ja0xpc3RCaW5kaW5nO1xuXHRtb2NrZWQubW9ja0NvbnRleHRCaW5kaW5nID0gb01vY2tDb250ZXh0QmluZGluZztcblx0aWYgKG9Nb2NrTGlzdEJpbmRpbmcpIHtcblx0XHRvTW9ja0xpc3RCaW5kaW5nLnNldE1vZGVsKG1vY2tlZCk7XG5cdH1cblx0aWYgKG9Nb2NrQ29udGV4dEJpbmRpbmcpIHtcblx0XHRvTW9ja0NvbnRleHRCaW5kaW5nLnNldE1vZGVsKG1vY2tlZCk7XG5cdH1cblxuXHQvLyBVdGlsaXR5IEFQSVxuXHRtb2NrZWQuc2V0TWV0YU1vZGVsID0gKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpID0+IHtcblx0XHRtb2NrZWQub01ldGFNb2RlbCA9IG9NZXRhTW9kZWw7XG5cdH07XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5iaW5kTGlzdC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQubW9ja0xpc3RCaW5kaW5nO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suYmluZENvbnRleHQubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLm1vY2tDb250ZXh0QmluZGluZztcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldE1ldGFNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQub01ldGFNb2RlbDtcblx0fSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja01vZGVsOiBuZXcgKG9Nb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmcsIG9Nb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmcpID0+IE1vY2tNb2RlbCA9XG5cdGNyZWF0ZU1vY2tNb2RlbCBhcyBhbnk7XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNb2RlbCB1c2VkIHdpdGggYSBsaXN0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gb01vY2tMaXN0QmluZGluZyBBIGxpc3QgYmluZGluZyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBjYWxsaW5nIGJpbmRMaXN0LlxuICogQHJldHVybnMgQSBuZXcgTW9ja01vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTW9kZWxGcm9tTGlzdEJpbmRpbmcob01vY2tMaXN0QmluZGluZzogTW9ja0xpc3RCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0cmV0dXJuIGNyZWF0ZU1vY2tNb2RlbChvTW9ja0xpc3RCaW5kaW5nKTtcbn1cbi8qKlxuICogIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNb2RlbCB1c2VkIHdpdGggYSBjb250ZXh0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gb01vY2tDb250ZXh0QmluZGluZyBBIGNvbnRleHQgYmluZGluZyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBjYWxsaW5nIGJpbmRDb250ZXh0LlxuICogQHJldHVybnMgQSBuZXcgTW9ja01vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTW9kZWxGcm9tQ29udGV4dEJpbmRpbmcob01vY2tDb250ZXh0QmluZGluZzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0cmV0dXJuIGNyZWF0ZU1vY2tNb2RlbCh1bmRlZmluZWQsIG9Nb2NrQ29udGV4dEJpbmRpbmcpO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLmNvcmUubXZjLlZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja1ZpZXcgPSBXaXRoTW9jazxWaWV3Pjtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja1ZpZXcuXG4gKlxuICogQHJldHVybnMgQSBuZXcgTW9ja1ZpZXdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tWaWV3KCk6IE1vY2tWaWV3IHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhWaWV3KTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrVmlldyBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja1ZpZXc6IG5ldyAoKSA9PiBNb2NrVmlldyA9IGNyZWF0ZU1vY2tWaWV3IGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb250cm9sbGVyID0gV2l0aE1vY2s8Q29udHJvbGxlcj4gJiB7XG5cdF9yb3V0aW5nOiBXaXRoTW9jazxJbnRlcm5hbFJvdXRpbmc+O1xuXHRfZWRpdEZsb3c6IFdpdGhNb2NrPEludGVybmFsRWRpdEZsb3c+O1xuXHRfc2lkZUVmZmVjdHM6IFdpdGhNb2NrPFNpZGVFZmZlY3RzPjtcblx0ZWRpdEZsb3c6IFdpdGhNb2NrPEVkaXRGbG93Pjtcblx0c2hhcmU6IFdpdGhNb2NrPFNoYXJlPjtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb250cm9sbGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrQ29udHJvbGxlcigpOiBNb2NrQ29udHJvbGxlciB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soQ29udHJvbGxlcikgYXMgTW9ja0NvbnRyb2xsZXI7XG5cdG1vY2tlZC5fcm91dGluZyA9IG1vY2soSW50ZXJuYWxSb3V0aW5nKTtcblx0bW9ja2VkLl9lZGl0RmxvdyA9IG1vY2soSW50ZXJuYWxFZGl0Rmxvdyk7XG5cdG1vY2tlZC5fc2lkZUVmZmVjdHMgPSBtb2NrKFNpZGVFZmZlY3RzKTtcblx0bW9ja2VkLmVkaXRGbG93ID0gbW9jayhFZGl0Rmxvdyk7XG5cdG1vY2tlZC5zaGFyZSA9IG1vY2soU2hhcmUpO1xuXG5cdC8vIERlZmF1bHQgQmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suZ2V0Vmlldy5tb2NrUmV0dXJuVmFsdWUoY3JlYXRlTW9ja1ZpZXcoKSk7XG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBtb2NrQ29udHJvbGxlciBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbnRyb2xsZXI6IG5ldyAoKSA9PiBNb2NrQ29udHJvbGxlciA9IGNyZWF0ZU1vY2tDb250cm9sbGVyIGFzIGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBNVkNNb2NrIHtcblx0bW9kZWw6IE1vY2tNb2RlbDtcblx0dmlldzogTW9ja1ZpZXc7XG5cdGNvbnRyb2xsZXI6IE1vY2tDb250cm9sbGVyO1xufVxuLyoqXG4gKiBHZW5lcmF0ZSBtb2RlbCwgdmlldyBhbmQgY29udHJvbGxlciBtb2NrcyB0aGF0IHJlZmVyIHRvIGVhY2ggb3RoZXIuXG4gKlxuICogQHBhcmFtIGV4aXN0aW5nIE9wdGlvbmFsIGV4aXN0aW5nIG1vY2tlZCBpbnN0YW5jZXMgdGhhdCBzaG91bGQgYmUgdXNlZFxuICogQHJldHVybnMgTW9ja2VkIG1vZGVsLCB2aWV3IGFuZCBjb250cm9sbGVyIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja01WQyhleGlzdGluZz86IFBhcnRpYWw8TVZDTW9jaz4pOiBNVkNNb2NrIHtcblx0Y29uc3QgbW9kZWwgPSBleGlzdGluZz8ubW9kZWwgfHwgY3JlYXRlTW9ja01vZGVsKCk7XG5cdGNvbnN0IHZpZXcgPSBleGlzdGluZz8udmlldyB8fCBjcmVhdGVNb2NrVmlldygpO1xuXHRjb25zdCBjb250cm9sbGVyID0gZXhpc3Rpbmc/LmNvbnRyb2xsZXIgfHwgY3JlYXRlTW9ja0NvbnRyb2xsZXIoKTtcblxuXHR2aWV3Lm1vY2suZ2V0Q29udHJvbGxlci5tb2NrUmV0dXJuVmFsdWUoY29udHJvbGxlcik7XG5cdHZpZXcubW9jay5nZXRNb2RlbC5tb2NrUmV0dXJuVmFsdWUobW9kZWwpO1xuXHRjb250cm9sbGVyLm1vY2suZ2V0Vmlldy5tb2NrUmV0dXJuVmFsdWUodmlldyk7XG5cblx0cmV0dXJuIHsgbW9kZWwsIHZpZXcsIGNvbnRyb2xsZXIgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7OztFQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0EsaUJBQVQsQ0FBMkJDLFlBQTNCLEVBQStDQyxRQUEvQyxFQUErREMsVUFBL0QsRUFBa0c7SUFDeEc7SUFDQSxJQUFNQyxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxjQUFQLENBQXVCQyxPQUFELENBQWlCQyxnQkFBakIsQ0FBa0MsSUFBbEMsRUFBd0MsSUFBeEMsRUFBOEMsSUFBOUMsQ0FBdEIsQ0FBRCxDQUFuQjtJQUNBTCxNQUFNLENBQUNNLFlBQVAsR0FBc0IsS0FBdEI7SUFDQU4sTUFBTSxDQUFDTyxZQUFQLEdBQXNCVixZQUFZLElBQUksRUFBdEM7SUFDQUcsTUFBTSxDQUFDUSxTQUFQLEdBQW1CVixRQUFuQjtJQUNBRSxNQUFNLENBQUNTLFdBQVAsR0FBcUIsQ0FBQyxDQUFDVixVQUF2QixDQU53RyxDQVF4Rzs7SUFDQUMsTUFBTSxDQUFDQyxJQUFQLENBQVlTLEdBQVosQ0FBZ0JDLGtCQUFoQixDQUFtQyxVQUFDQyxVQUFELEVBQXdCO01BQzFELE9BQU9BLFVBQVUsS0FBSywrQkFBdEI7SUFDQSxDQUZEO0lBR0FaLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWSxXQUFaLENBQXdCRixrQkFBeEIsQ0FBMkMsVUFBQ0csR0FBRCxFQUFpQjtNQUMzRCxPQUFPZCxNQUFNLENBQUNPLFlBQVAsQ0FBb0JPLEdBQXBCLENBQVA7SUFDQSxDQUZEO0lBR0FkLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZYyxlQUFaLENBQTRCSixrQkFBNUIs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
|
|
459
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVNb2NrQ29udGV4dCIsIm9Db250ZXh0RGF0YSIsIm9CaW5kaW5nIiwiaXNJbmFjdGl2ZSIsIm1vY2tlZCIsIm1vY2siLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsIkNvbnRleHQiLCJjcmVhdGVOZXdDb250ZXh0IiwiX2lzS2VwdEFsaXZlIiwiX2NvbnRleHREYXRhIiwiX29CaW5kaW5nIiwiX2lzSW5hY3RpdmUiLCJpc0EiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJzQ2xhc3NOYW1lIiwiZ2V0UHJvcGVydHkiLCJrZXkiLCJyZXF1ZXN0UHJvcGVydHkiLCJrZXlPcktleXMiLCJBcnJheSIsImlzQXJyYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1hcCIsInJlcXVlc3RPYmplY3QiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJzZXRLZWVwQWxpdmUiLCJib29sIiwiX2ZuT25CZWZvcmVEZXN0cm95IiwiX2JSZXF1ZXN0TWVzc2FnZXMiLCJpc0tlZXBBbGl2ZSIsIk1vY2tDb250ZXh0IiwiY3JlYXRlTW9ja0V2ZW50IiwicGFyYW1zIiwiRXZlbnQiLCJfcGFyYW1zIiwiZ2V0UGFyYW1ldGVyIiwibmFtZSIsIk1vY2tFdmVudCIsImNyZWF0ZU1vY2tMaXN0QmluZGluZyIsImFDb250ZXh0RGF0YSIsIm9Nb2NrTW9kZWwiLCJPRGF0YUxpc3RCaW5kaW5nIiwiX2FNb2NrQ29udGV4dHMiLCJjb250ZXh0RGF0YSIsIl9tb2NrTW9kZWwiLCJzZXRNb2RlbCIsIm1vZGVsIiwicmVxdWVzdENvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZ2V0Q29udGV4dHMiLCJnZXRVcGRhdGVHcm91cElkIiwibW9ja1JldHVyblZhbHVlIiwiTW9ja0xpc3RCaW5kaW5nIiwiY3JlYXRlTW9ja1Byb3BlcnR5QmluZGluZyIsIk9EYXRhUHJvcGVydHlCaW5kaW5nIiwiX3ZhbHVlIiwiX3BhdGgiLCJnZXRWYWx1ZSIsIk1vY2tQcm9wZXJ0eUJpbmRpbmciLCJjcmVhdGVNb2NrQ29tcG9zaXRlQmluZGluZyIsImFCaW5kaW5ncyIsIkNvbXBvc2l0ZUJpbmRpbmciLCJfYUJpbmRpbmdzIiwiZ2V0QmluZGluZ3MiLCJiaW5kaW5nIiwiTW9ja0NvbXBvc2l0ZUJpbmRpbmciLCJjcmVhdGVNb2NrQ29udGV4dEJpbmRpbmciLCJvQ29udGV4dCIsIk9EYXRhQ29udGV4dEJpbmRpbmciLCJtb2NrTW9kZWwiLCJvTW9ja0NvbnRleHQiLCJnZXRJbnRlcm5hbE1vY2tDb250ZXh0Iiwib01vZGVsIiwiZ2V0Qm91bmRDb250ZXh0IiwiZXhlY3V0ZSIsIm1vY2tSZXNvbHZlZFZhbHVlIiwiTW9ja0NvbnRleHRCaW5kaW5nIiwiY3JlYXRlTW9ja01ldGFNb2RlbCIsIm9NZXRhRGF0YSIsIk9EYXRhTWV0YU1vZGVsIiwib01ldGFDb250ZXh0IiwiZ2V0TWV0YUNvbnRleHQiLCJzUGF0aCIsIiRwYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJnZXRNZXRhUGF0aCIsIm1ldGFtb2RlbCIsIk1vY2tNZXRhTW9kZWwiLCJjcmVhdGVNb2NrTW9kZWwiLCJvTW9ja0xpc3RCaW5kaW5nIiwib01vY2tDb250ZXh0QmluZGluZyIsIk9EYXRhTW9kZWwiLCJtb2NrTGlzdEJpbmRpbmciLCJtb2NrQ29udGV4dEJpbmRpbmciLCJzZXRNZXRhTW9kZWwiLCJvTWV0YU1vZGVsIiwiYmluZExpc3QiLCJiaW5kQ29udGV4dCIsImdldE1ldGFNb2RlbCIsIk1vY2tNb2RlbCIsImNyZWF0ZU1vY2tNb2RlbEZyb21MaXN0QmluZGluZyIsImNyZWF0ZU1vY2tNb2RlbEZyb21Db250ZXh0QmluZGluZyIsInVuZGVmaW5lZCIsImNyZWF0ZU1vY2tWaWV3IiwiVmlldyIsIk1vY2tWaWV3IiwiY3JlYXRlTW9ja0NvbnRyb2xsZXIiLCJDb250cm9sbGVyIiwiX3JvdXRpbmciLCJJbnRlcm5hbFJvdXRpbmciLCJfZWRpdEZsb3ciLCJJbnRlcm5hbEVkaXRGbG93IiwiX3NpZGVFZmZlY3RzIiwiU2lkZUVmZmVjdHMiLCJlZGl0RmxvdyIsIkVkaXRGbG93Iiwic2hhcmUiLCJTaGFyZSIsImdldFZpZXciLCJNb2NrQ29udHJvbGxlciIsIm1vY2tNVkMiLCJleGlzdGluZyIsInZpZXciLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVUk1TW9ja0hlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFdpdGhNb2NrIH0gZnJvbSBcIkBzYXAtdXgvamVzdC1tb2NrLXVpNS9kaXN0L2dlbmVyaWNcIjtcbmltcG9ydCB7IG1vY2sgfSBmcm9tIFwiQHNhcC11eC9qZXN0LW1vY2stdWk1L2Rpc3QvZ2VuZXJpY1wiO1xuaW1wb3J0IEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IEludGVybmFsRWRpdEZsb3cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyXCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBDb21wb3NpdGVCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQ29tcG9zaXRlQmluZGluZ1wiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgT0RhdGFDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IE9EYXRhUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFQcm9wZXJ0eUJpbmRpbmdcIjtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb250ZXh0ID0gV2l0aE1vY2s8Q29udGV4dD4gJiB7XG5cdF9pc0tlcHRBbGl2ZTogYm9vbGVhbjtcblx0X2NvbnRleHREYXRhOiBhbnk7XG5cdF9vQmluZGluZzogYW55O1xuXHRfaXNJbmFjdGl2ZTogYm9vbGVhbjtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb250ZXh0LlxuICpcbiAqIEBwYXJhbSBvQ29udGV4dERhdGEgQSBtYXAgb2YgdGhlIGRpZmZlcmVudCBwcm9wZXJ0aWVzIG9mIHRoZSBjb250ZXh0LiBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgJyRwYXRoJyB3aWxsIGJlIHJldHVybmVkIGJ5IHRoZSAnZ2V0UGF0aCcgbWV0aG9kXG4gKiBAcGFyYW0gb0JpbmRpbmcgVGhlIGJpbmRpbmcgb2YgdGhlIGNvbnRleHRcbiAqIEBwYXJhbSBpc0luYWN0aXZlIElzIHRoZSBjb250ZXh0IGluaWFjdGl2ZSBvciBub3RcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrQ29udGV4dChvQ29udGV4dERhdGE/OiBhbnksIG9CaW5kaW5nPzogYW55LCBpc0luYWN0aXZlPzogYm9vbGVhbik6IE1vY2tDb250ZXh0IHtcblx0Ly8gVWdseSB3b3JrYXJvdW5kIHRvIGdldCBhIHByb3BlciBtb2NrIHBiamVjdCwgYXMgQ29udGV4dCBpc24ndCBwcm9wZXJseSBleHBvcnRlZCBmcm9tIFVJNVxuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9iamVjdC5nZXRQcm90b3R5cGVPZigoQ29udGV4dCBhcyBhbnkpLmNyZWF0ZU5ld0NvbnRleHQobnVsbCwgbnVsbCwgXCIvZVwiKSkpIGFzIE1vY2tDb250ZXh0O1xuXHRtb2NrZWQuX2lzS2VwdEFsaXZlID0gZmFsc2U7XG5cdG1vY2tlZC5fY29udGV4dERhdGEgPSBvQ29udGV4dERhdGEgfHwge307XG5cdG1vY2tlZC5fb0JpbmRpbmcgPSBvQmluZGluZztcblx0bW9ja2VkLl9pc0luYWN0aXZlID0gISFpc0luYWN0aXZlO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHRcIjtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbigoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9jb250ZXh0RGF0YVtrZXldO1xuXHR9KTtcblx0bW9ja2VkLm1vY2sucmVxdWVzdFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbigoa2V5T3JLZXlzOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4ge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGtleU9yS2V5cykpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoa2V5T3JLZXlzLm1hcCgoa2V5KSA9PiBtb2NrZWQuX2NvbnRleHREYXRhW2tleV0pKTtcblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShtb2NrZWQuX2NvbnRleHREYXRhW2tleU9yS2V5c10pO1xuXHR9KTtcblx0bW9ja2VkLm1vY2sucmVxdWVzdE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShtb2NrZWQuX2NvbnRleHREYXRhW2tleV0pO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suc2V0UHJvcGVydHkubW9ja0ltcGxlbWVudGF0aW9uKChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuXHRcdG1vY2tlZC5fY29udGV4dERhdGFba2V5XSA9IHZhbHVlO1xuXHRcdHJldHVybiBtb2NrZWQuX2NvbnRleHREYXRhW2tleV07XG5cdH0pO1xuXG5cdG1vY2tlZC5tb2NrLmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHBhdGg6IHN0cmluZykgPT4ge1xuXHRcdGxldCByZXN1bHQgPSBwYXRoID8gbW9ja2VkLl9jb250ZXh0RGF0YVtwYXRoXSA6IG1vY2tlZC5fY29udGV4dERhdGE7XG5cblx0XHRpZiAoIXJlc3VsdCAmJiBwYXRoICYmIHBhdGguaW5kZXhPZihcIi9cIikgPiAtMSkge1xuXHRcdFx0Y29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdHJlc3VsdCA9IHBhcnRzLnJlZHVjZSgoc3VtLCBwYXJ0OiBhbnkpID0+IHtcblx0XHRcdFx0c3VtID0gcGFydCA/IHN1bVtwYXJ0XSA6IHN1bTtcblx0XHRcdFx0cmV0dXJuIHN1bTtcblx0XHRcdH0sIG1vY2tlZC5fY29udGV4dERhdGEpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0pO1xuXG5cdG1vY2tlZC5tb2NrLmdldFBhdGgubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5fY29udGV4dERhdGFbXCIkcGF0aFwiXSk7XG5cdG1vY2tlZC5tb2NrLmdldEJpbmRpbmcubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5fb0JpbmRpbmcpO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gbW9ja2VkLl9vQmluZGluZz8uZ2V0TW9kZWwoKSk7XG5cdG1vY2tlZC5tb2NrLnNldEtlZXBBbGl2ZS5tb2NrSW1wbGVtZW50YXRpb24oKGJvb2w6IGJvb2xlYW4sIF9mbk9uQmVmb3JlRGVzdHJveT86IGFueSwgX2JSZXF1ZXN0TWVzc2FnZXM/OiBib29sZWFuKSA9PiB7XG5cdFx0bW9ja2VkLl9pc0tlcHRBbGl2ZSA9IGJvb2w7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5pc0tlZXBBbGl2ZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gbW9ja2VkLl9pc0tlcHRBbGl2ZSk7XG5cdG1vY2tlZC5tb2NrLmlzSW5hY3RpdmUubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5faXNJbmFjdGl2ZSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250ZXh0IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrQ29udGV4dDogbmV3IChvVmFsdWVzPzogYW55LCBvQmluZGluZz86IGFueSwgaXNJbmFjdGl2ZT86IGJvb2xlYW4pID0+IE1vY2tDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLmJhc2UuRXZlbnRcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0V2ZW50ID0gV2l0aE1vY2s8RXZlbnQ+ICYge1xuXHRfcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0V2ZW50LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIGV2ZW50XG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrRXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tFdmVudChwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogTW9ja0V2ZW50IHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhFdmVudCkgYXMgTW9ja0V2ZW50O1xuXHRtb2NrZWQuX3BhcmFtcyA9IHBhcmFtcyB8fCB7fTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmdldFBhcmFtZXRlci5tb2NrSW1wbGVtZW50YXRpb24oKG5hbWUpID0+IG1vY2tlZC5fcGFyYW1zW25hbWVdKTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0V2ZW50IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrRXZlbnQ6IG5ldyAocGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gTW9ja0V2ZW50ID0gY3JlYXRlTW9ja0V2ZW50IGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tMaXN0QmluZGluZyA9IFdpdGhNb2NrPE9EYXRhTGlzdEJpbmRpbmc+ICYge1xuXHRfYU1vY2tDb250ZXh0czogTW9ja0NvbnRleHRbXTtcblx0X21vY2tNb2RlbD86IE1vY2tNb2RlbDtcblxuXHQvKipcblx0ICogVXRpbGl0eSBtZXRob2QgdG8gc2V0IHRoZSBtb2RlbCBvZiB0aGUgTGlzdEJpbmRpbmdcblx0ICovXG5cdHNldE1vZGVsOiAobW9kZWw6IE1vY2tNb2RlbCkgPT4gdm9pZDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tMaXN0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gYUNvbnRleHREYXRhIEFuIGFycmF5IG9mIG9iamVjdHMgaG9sZGluZyB0aGUgZGlmZmVyZW50IHByb3BlcnRpZXMgb2YgdGhlIGNvbnRleHRzIHJlZmVyZW5jZWQgYnkgdGhlIExpc3RCaW5kaW5nXG4gKiBAcGFyYW0gb01vY2tNb2RlbCBUaGUgbW9kZWwgb2YgdGhlIExpc3RCaW5kaW5nXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTGlzdEJpbmRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tMaXN0QmluZGluZyhhQ29udGV4dERhdGE/OiBhbnlbXSwgb01vY2tNb2RlbD86IE1vY2tNb2RlbCk6IE1vY2tMaXN0QmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soT0RhdGFMaXN0QmluZGluZykgYXMgTW9ja0xpc3RCaW5kaW5nO1xuXHRhQ29udGV4dERhdGEgPSBhQ29udGV4dERhdGEgfHwgW107XG5cdG1vY2tlZC5fYU1vY2tDb250ZXh0cyA9IGFDb250ZXh0RGF0YS5tYXAoKGNvbnRleHREYXRhKSA9PiB7XG5cdFx0cmV0dXJuIGNyZWF0ZU1vY2tDb250ZXh0KGNvbnRleHREYXRhLCBtb2NrZWQpO1xuXHR9KTtcblx0bW9ja2VkLl9tb2NrTW9kZWwgPSBvTW9ja01vZGVsO1xuXG5cdC8vIFV0aWxpdHkgQVBJXG5cdG1vY2tlZC5zZXRNb2RlbCA9IChtb2RlbDogTW9ja01vZGVsKSA9PiB7XG5cdFx0bW9ja2VkLl9tb2NrTW9kZWwgPSBtb2RlbDtcblx0fTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCI7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5yZXF1ZXN0Q29udGV4dHMubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1vY2tlZC5fYU1vY2tDb250ZXh0cyk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRDdXJyZW50Q29udGV4dHMubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9hTW9ja0NvbnRleHRzO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0QWxsQ3VycmVudENvbnRleHRzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fYU1vY2tDb250ZXh0cztcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldENvbnRleHRzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fYU1vY2tDb250ZXh0cztcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldE1vZGVsLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fbW9ja01vZGVsO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0VXBkYXRlR3JvdXBJZC5tb2NrUmV0dXJuVmFsdWUoXCJhdXRvXCIpO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrTGlzdEJpbmRpbmcgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vY2tMaXN0QmluZGluZzogbmV3IChhQ29udGV4dHM/OiBhbnlbXSwgbW9ja01vZGVsPzogTW9ja01vZGVsKSA9PiBNb2NrTGlzdEJpbmRpbmcgPSBjcmVhdGVNb2NrTGlzdEJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhUHJvcGVydHlCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tQcm9wZXJ0eUJpbmRpbmcgPSBXaXRoTW9jazxPRGF0YVByb3BlcnR5QmluZGluZz4gJiB7XG5cdF92YWx1ZT86IGFueTtcblx0X3BhdGg/OiBzdHJpbmc7XG5cdF9tb2NrTW9kZWw/OiBNb2NrTW9kZWw7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrUHJvcGVydHlCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgcmV0dXJuZCBieSB0aGUgUHJvcGVydHlCaW5kaW5nXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBvZiB0aGUgUHJvcGVydHlCaW5kaW5nXG4gKiBAcGFyYW0gb01vY2tNb2RlbCBUaGUgbW9kZWwgb2YgdGhlIFByb3BlcnR5QmluZGluZ1xuICogQHJldHVybnMgQSBuZXcgTW9ja1Byb3BlcnR5QmluZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja1Byb3BlcnR5QmluZGluZyh2YWx1ZTogYW55LCBwYXRoPzogc3RyaW5nLCBvTW9ja01vZGVsPzogTW9ja01vZGVsKTogTW9ja1Byb3BlcnR5QmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soT0RhdGFQcm9wZXJ0eUJpbmRpbmcpIGFzIE1vY2tQcm9wZXJ0eUJpbmRpbmc7XG5cdG1vY2tlZC5fbW9ja01vZGVsID0gb01vY2tNb2RlbDtcblx0bW9ja2VkLl92YWx1ZSA9IHZhbHVlO1xuXHRtb2NrZWQuX3BhdGggPSBwYXRoO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX21vY2tNb2RlbDtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldFZhbHVlLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fdmFsdWU7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRQYXRoLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fcGF0aDtcblx0fSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmcgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vY2tQcm9wZXJ0eUJpbmRpbmc6IG5ldyAodmFsdWU6IGFueSwgb01vY2tNb2RlbD86IE1vY2tNb2RlbCkgPT4gTW9ja1Byb3BlcnR5QmluZGluZyA9IGNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLkNvbXBvc2l0ZUJpbmRpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0NvbXBvc2l0ZUJpbmRpbmcgPSBXaXRoTW9jazxDb21wb3NpdGVCaW5kaW5nPiAmIHtcblx0X2FCaW5kaW5nczogTW9ja1Byb3BlcnR5QmluZGluZ1tdO1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0NvbXBvc2l0ZUJpbmRpbmcuXG4gKlxuICogQHBhcmFtIGFCaW5kaW5ncyBUaGUgYmluZGluZ3Mgb2YgdGhlIENvbXBvc2l0ZUJpbmRpbmdcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb21wb3NpdGVCaW5kaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrQ29tcG9zaXRlQmluZGluZyhhQmluZGluZ3M6IE1vY2tQcm9wZXJ0eUJpbmRpbmdbXSk6IE1vY2tDb21wb3NpdGVCaW5kaW5nIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhDb21wb3NpdGVCaW5kaW5nKSBhcyBNb2NrQ29tcG9zaXRlQmluZGluZztcblx0bW9ja2VkLl9hQmluZGluZ3MgPSBhQmluZGluZ3M7XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5pc0EubW9ja0ltcGxlbWVudGF0aW9uKChzQ2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwuQ29tcG9zaXRlQmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0QmluZGluZ3MubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9hQmluZGluZ3M7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRWYWx1ZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX2FCaW5kaW5ncy5tYXAoKGJpbmRpbmcpID0+IGJpbmRpbmcuZ2V0VmFsdWUoKSk7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrQ29tcG9zaXRlQmluZGluZyBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbXBvc2l0ZUJpbmRpbmc6IG5ldyAoYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW10pID0+IE1vY2tDb21wb3NpdGVCaW5kaW5nID0gY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0NvbnRleHRCaW5kaW5nID0gV2l0aE1vY2s8T0RhdGFDb250ZXh0QmluZGluZz4gJiB7XG5cdG9Nb2NrQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cdGlzS2VwdEFsaXZlOiBib29sZWFuO1xuXHRtb2NrTW9kZWw/OiBNb2NrTW9kZWw7XG5cblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIGFjY2VzcyB0aGUgaW50ZXJuYWwgTW9ja0NvbnRleHQgb2YgdGhlIENvbnRleHRCaW5kaW5nXG5cdCAqL1xuXHRnZXRJbnRlcm5hbE1vY2tDb250ZXh0OiAoKSA9PiBNb2NrQ29udGV4dDtcblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIHNldCB0aGUgbW9kZWwgb2YgdGhlIENvbnRleHRCaW5kaW5nXG5cdCAqL1xuXHRzZXRNb2RlbDogKG9Nb2RlbDogTW9ja01vZGVsKSA9PiB2b2lkO1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0NvbnRleHRCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBvQ29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgQ29udGV4dEJpbmRpbmdcbiAqIEBwYXJhbSBvTW9ja01vZGVsIFRoZSBtb2RlbCBvZiB0aGUgQ29udGV4dEJpbmRpbmdcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb250ZXh0QmluZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbnRleHRCaW5kaW5nKG9Db250ZXh0PzogYW55LCBvTW9ja01vZGVsPzogTW9ja01vZGVsKTogTW9ja0NvbnRleHRCaW5kaW5nIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPRGF0YUNvbnRleHRCaW5kaW5nKSBhcyBNb2NrQ29udGV4dEJpbmRpbmc7XG5cdG1vY2tlZC5tb2NrTW9kZWwgPSBvTW9ja01vZGVsO1xuXHRtb2NrZWQub01vY2tDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQob0NvbnRleHQgfHwge30sIG1vY2tlZCk7XG5cblx0Ly8gVXRpbGl0eSBBUElcblx0bW9ja2VkLmdldEludGVybmFsTW9ja0NvbnRleHQgPSAoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTW9ja0NvbnRleHQ7XG5cdH07XG5cdG1vY2tlZC5zZXRNb2RlbCA9IChvTW9kZWw6IE1vY2tNb2RlbCkgPT4ge1xuXHRcdG1vY2tlZC5tb2NrTW9kZWwgPSBvTW9kZWw7XG5cdH07XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5pc0EubW9ja0ltcGxlbWVudGF0aW9uKChzQ2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0Qm91bmRDb250ZXh0Lm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTW9ja0NvbnRleHQ7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQubW9ja01vZGVsO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZXhlY3V0ZS5tb2NrUmVzb2x2ZWRWYWx1ZSh0cnVlKTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbnRleHRCaW5kaW5nIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrQ29udGV4dEJpbmRpbmc6IG5ldyAob0NvbnRleHQ/OiBhbnksIG9Nb2NrTW9kZWw/OiBNb2NrTW9kZWwpID0+IE1vY2tDb250ZXh0QmluZGluZyA9IGNyZWF0ZU1vY2tDb250ZXh0QmluZGluZyBhcyBhbnk7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNZXRhTW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja01ldGFNb2RlbCA9IFdpdGhNb2NrPE9EYXRhTWV0YU1vZGVsPiAmIHtcblx0b01ldGFDb250ZXh0OiBNb2NrQ29udGV4dDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNZXRhTW9kZWwuXG4gKlxuICogQHBhcmFtIG9NZXRhRGF0YSBBIG1hcCBvZiB0aGUgZGlmZmVyZW50IG1ldGFkYXRhIHByb3BlcnRpZXMgb2YgdGhlIE1ldGFNb2RlbCAocGF0aCAtPiB2YWx1ZSkuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTWV0YU1vZGVsKG9NZXRhRGF0YT86IGFueSk6IE1vY2tNZXRhTW9kZWwge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhTWV0YU1vZGVsKSBhcyBNb2NrTWV0YU1vZGVsO1xuXHRtb2NrZWQub01ldGFDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQob01ldGFEYXRhIHx8IHt9KTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmdldE1ldGFDb250ZXh0Lm1vY2tJbXBsZW1lbnRhdGlvbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBjcmVhdGVNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLm9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShzUGF0aCk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5jcmVhdGVCaW5kaW5nQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gY3JlYXRlTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNZXRhUGF0aC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRjb25zdCBtZXRhbW9kZWwgPSBuZXcgT0RhdGFNZXRhTW9kZWwoKTtcblx0XHRyZXR1cm4gc1BhdGggPyBtZXRhbW9kZWwuZ2V0TWV0YVBhdGgoc1BhdGgpIDogc1BhdGg7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrTWV0YU1vZGVsIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrTWV0YU1vZGVsOiBuZXcgKG9NZXRhRGF0YT86IGFueSkgPT4gTW9ja01ldGFNb2RlbCA9IGNyZWF0ZU1vY2tNZXRhTW9kZWwgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja01vZGVsID0gV2l0aE1vY2s8T0RhdGFNb2RlbD4gJiB7XG5cdG9NZXRhTW9kZWw/OiBNb2NrTWV0YU1vZGVsO1xuXHRtb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmc7XG5cdG1vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZztcblxuXHQvKipcblx0ICogVXRpbGl0eSBtZXRob2QgdG8gc2V0IHRoZSBtZXRhbW9kZWwgb2YgdGhlIE1vY2tNb2RlbFxuXHQgKi9cblx0c2V0TWV0YU1vZGVsOiAob01ldGFNb2RlbDogTW9ja01ldGFNb2RlbCkgPT4gdm9pZDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNb2RlbC5cbiAqXG4gKiBAcGFyYW0gb01vY2tMaXN0QmluZGluZyBBIGxpc3QgYmluZGluZyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBjYWxsaW5nIGJpbmRMaXN0LlxuICogQHBhcmFtIG9Nb2NrQ29udGV4dEJpbmRpbmcgQSBjb250ZXh0IGJpbmRpbmcgdGhhdCB3aWxsIGJlIHJldHVybmVkIHdoZW4gY2FsbGluZyBiaW5kQ29udGV4dC5cbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tNb2RlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja01vZGVsKG9Nb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmcsIG9Nb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhTW9kZWwpIGFzIE1vY2tNb2RlbDtcblx0bW9ja2VkLm1vY2tMaXN0QmluZGluZyA9IG9Nb2NrTGlzdEJpbmRpbmc7XG5cdG1vY2tlZC5tb2NrQ29udGV4dEJpbmRpbmcgPSBvTW9ja0NvbnRleHRCaW5kaW5nO1xuXHRpZiAob01vY2tMaXN0QmluZGluZykge1xuXHRcdG9Nb2NrTGlzdEJpbmRpbmcuc2V0TW9kZWwobW9ja2VkKTtcblx0fVxuXHRpZiAob01vY2tDb250ZXh0QmluZGluZykge1xuXHRcdG9Nb2NrQ29udGV4dEJpbmRpbmcuc2V0TW9kZWwobW9ja2VkKTtcblx0fVxuXG5cdC8vIFV0aWxpdHkgQVBJXG5cdG1vY2tlZC5zZXRNZXRhTW9kZWwgPSAob01ldGFNb2RlbDogTW9ja01ldGFNb2RlbCkgPT4ge1xuXHRcdG1vY2tlZC5vTWV0YU1vZGVsID0gb01ldGFNb2RlbDtcblx0fTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmJpbmRMaXN0Lm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5tb2NrTGlzdEJpbmRpbmc7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5iaW5kQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQubW9ja0NvbnRleHRCaW5kaW5nO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TWV0YU1vZGVsLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTWV0YU1vZGVsO1xuXHR9KTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja01vZGVsIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrTW9kZWw6IG5ldyAob01vY2tMaXN0QmluZGluZz86IE1vY2tMaXN0QmluZGluZywgb01vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZykgPT4gTW9ja01vZGVsID1cblx0Y3JlYXRlTW9ja01vZGVsIGFzIGFueTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja01vZGVsIHVzZWQgd2l0aCBhIGxpc3RCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBvTW9ja0xpc3RCaW5kaW5nIEEgbGlzdCBiaW5kaW5nIHRoYXQgd2lsbCBiZSByZXR1cm5lZCB3aGVuIGNhbGxpbmcgYmluZExpc3QuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbEZyb21MaXN0QmluZGluZyhvTW9ja0xpc3RCaW5kaW5nOiBNb2NrTGlzdEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRyZXR1cm4gY3JlYXRlTW9ja01vZGVsKG9Nb2NrTGlzdEJpbmRpbmcpO1xufVxuLyoqXG4gKiAgRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja01vZGVsIHVzZWQgd2l0aCBhIGNvbnRleHRCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBvTW9ja0NvbnRleHRCaW5kaW5nIEEgY29udGV4dCBiaW5kaW5nIHRoYXQgd2lsbCBiZSByZXR1cm5lZCB3aGVuIGNhbGxpbmcgYmluZENvbnRleHQuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbEZyb21Db250ZXh0QmluZGluZyhvTW9ja0NvbnRleHRCaW5kaW5nOiBNb2NrQ29udGV4dEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRyZXR1cm4gY3JlYXRlTW9ja01vZGVsKHVuZGVmaW5lZCwgb01vY2tDb250ZXh0QmluZGluZyk7XG59XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkuY29yZS5tdmMuVmlld1xuICovXG5leHBvcnQgdHlwZSBNb2NrVmlldyA9IFdpdGhNb2NrPFZpZXc+O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrVmlldy5cbiAqXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrVmlld1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja1ZpZXcoKTogTW9ja1ZpZXcge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKFZpZXcpO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLmNvcmUubXZjLlZpZXdcIjtcblx0fSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tWaWV3IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrVmlldzogbmV3ICgpID0+IE1vY2tWaWV3ID0gY3JlYXRlTW9ja1ZpZXcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0NvbnRyb2xsZXIgPSBXaXRoTW9jazxDb250cm9sbGVyPiAmIHtcblx0X3JvdXRpbmc6IFdpdGhNb2NrPEludGVybmFsUm91dGluZz47XG5cdF9lZGl0RmxvdzogV2l0aE1vY2s8SW50ZXJuYWxFZGl0Rmxvdz47XG5cdF9zaWRlRWZmZWN0czogV2l0aE1vY2s8U2lkZUVmZmVjdHM+O1xuXHRlZGl0RmxvdzogV2l0aE1vY2s8RWRpdEZsb3c+O1xuXHRzaGFyZTogV2l0aE1vY2s8U2hhcmU+O1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0NvbnRyb2xsZXIuXG4gKlxuICogQHJldHVybnMgQSBuZXcgTW9ja0NvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250cm9sbGVyKCk6IE1vY2tDb250cm9sbGVyIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhDb250cm9sbGVyKSBhcyBNb2NrQ29udHJvbGxlcjtcblx0bW9ja2VkLl9yb3V0aW5nID0gbW9jayhJbnRlcm5hbFJvdXRpbmcpO1xuXHRtb2NrZWQuX2VkaXRGbG93ID0gbW9jayhJbnRlcm5hbEVkaXRGbG93KTtcblx0bW9ja2VkLl9zaWRlRWZmZWN0cyA9IG1vY2soU2lkZUVmZmVjdHMpO1xuXHRtb2NrZWQuZWRpdEZsb3cgPSBtb2NrKEVkaXRGbG93KTtcblx0bW9ja2VkLnNoYXJlID0gbW9jayhTaGFyZSk7XG5cblx0Ly8gRGVmYXVsdCBCZWhhdmlvclxuXHRtb2NrZWQubW9jay5nZXRWaWV3Lm1vY2tSZXR1cm5WYWx1ZShjcmVhdGVNb2NrVmlldygpKTtcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIG1vY2tDb250cm9sbGVyIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrQ29udHJvbGxlcjogbmV3ICgpID0+IE1vY2tDb250cm9sbGVyID0gY3JlYXRlTW9ja0NvbnRyb2xsZXIgYXMgYW55O1xuXG5leHBvcnQgaW50ZXJmYWNlIE1WQ01vY2sge1xuXHRtb2RlbDogTW9ja01vZGVsO1xuXHR2aWV3OiBNb2NrVmlldztcblx0Y29udHJvbGxlcjogTW9ja0NvbnRyb2xsZXI7XG59XG4vKipcbiAqIEdlbmVyYXRlIG1vZGVsLCB2aWV3IGFuZCBjb250cm9sbGVyIG1vY2tzIHRoYXQgcmVmZXIgdG8gZWFjaCBvdGhlci5cbiAqXG4gKiBAcGFyYW0gZXhpc3RpbmcgT3B0aW9uYWwgZXhpc3RpbmcgbW9ja2VkIGluc3RhbmNlcyB0aGF0IHNob3VsZCBiZSB1c2VkXG4gKiBAcmV0dXJucyBNb2NrZWQgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgaW5zdGFuY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrTVZDKGV4aXN0aW5nPzogUGFydGlhbDxNVkNNb2NrPik6IE1WQ01vY2sge1xuXHRjb25zdCBtb2RlbCA9IGV4aXN0aW5nPy5tb2RlbCB8fCBjcmVhdGVNb2NrTW9kZWwoKTtcblx0Y29uc3QgdmlldyA9IGV4aXN0aW5nPy52aWV3IHx8IGNyZWF0ZU1vY2tWaWV3KCk7XG5cdGNvbnN0IGNvbnRyb2xsZXIgPSBleGlzdGluZz8uY29udHJvbGxlciB8fCBjcmVhdGVNb2NrQ29udHJvbGxlcigpO1xuXG5cdHZpZXcubW9jay5nZXRDb250cm9sbGVyLm1vY2tSZXR1cm5WYWx1ZShjb250cm9sbGVyKTtcblx0dmlldy5tb2NrLmdldE1vZGVsLm1vY2tSZXR1cm5WYWx1ZShtb2RlbCk7XG5cdGNvbnRyb2xsZXIubW9jay5nZXRWaWV3Lm1vY2tSZXR1cm5WYWx1ZSh2aWV3KTtcblxuXHRyZXR1cm4geyBtb2RlbCwgdmlldywgY29udHJvbGxlciB9O1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7RUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNBLGlCQUFpQixDQUFDQyxZQUFrQixFQUFFQyxRQUFjLEVBQUVDLFVBQW9CLEVBQWU7SUFDeEc7SUFDQSxJQUFNQyxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxjQUFjLENBQUVDLE9BQU8sQ0FBU0MsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFnQjtJQUM5R0wsTUFBTSxDQUFDTSxZQUFZLEdBQUcsS0FBSztJQUMzQk4sTUFBTSxDQUFDTyxZQUFZLEdBQUdWLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDeENHLE1BQU0sQ0FBQ1EsU0FBUyxHQUFHVixRQUFRO0lBQzNCRSxNQUFNLENBQUNTLFdBQVcsR0FBRyxDQUFDLENBQUNWLFVBQVU7O0lBRWpDO0lBQ0FDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDUyxHQUFHLENBQUNDLGtCQUFrQixDQUFDLFVBQUNDLFVBQWtCLEVBQUs7TUFDMUQsT0FBT0EsVUFBVSxLQUFLLCtCQUErQjtJQUN0RCxDQUFDLENBQUM7SUFDRlosTUFBTSxDQUFDQyxJQUFJLENBQUNZLFdBQVcsQ0FBQ0Ysa0JBQWtCLENBQUMsVUFBQ0csR0FBVyxFQUFLO01BQzNELE9BQU9kLE1BQU0sQ0FBQ08sWUFBWSxDQUFDTyxHQUFHLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBQ0ZkLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDYyxlQUFlLENBQUNKLGtCQUFrQixDQUFDLFVBQUNLLFNBQTRCLEVBQUs7TUFDaEYsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNGLFNBQVMsQ0FBQyxFQUFFO1FBQzdCLE9BQU9HLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDSixTQUFTLENBQUNLLEdBQUcsQ0FBQyxVQUFDUCxHQUFHO1VBQUEsT0FBS2QsTUFBTSxDQUFDTyxZQUFZLENBQUNPLEdBQUcsQ0FBQztRQUFBLEVBQUMsQ0FBQztNQUN6RTtNQUNBLE9BQU9LLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDcEIsTUFBTSxDQUFDTyxZQUFZLENBQUNTLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQztJQUNGaEIsTUFBTSxDQUFDQyxJQUFJLENBQUNxQixhQUFhLENBQUNYLGtCQUFrQixDQUFDLFVBQUNHLEdBQVcsRUFBSztNQUM3RCxPQUFPSyxPQUFPLENBQUNDLE9BQU8sQ0FBQ3BCLE1BQU0sQ0FBQ08sWUFBWSxDQUFDTyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUM7SUFDRmQsTUFBTSxDQUFDQyxJQUFJLENBQUNzQixXQUFXLENBQUNaLGtCQUFrQixDQUFDLFVBQUNHLEdBQVcsRUFBRVUsS0FBVSxFQUFLO01BQ3ZFeEIsTUFBTSxDQUFDTyxZQUFZLENBQUNPLEdBQUcsQ0FBQyxHQUFHVSxLQUFLO01BQ2hDLE9BQU94QixNQUFNLENBQUNPLFlBQVksQ0FBQ08sR0FBRyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztJQUVGZCxNQUFNLENBQUNDLElBQUksQ0FBQ3dCLFNBQVMsQ0FBQ2Qsa0JBQWtCLENBQUMsVUFBQ2UsSUFBWSxFQUFLO01BQzFELElBQUlDLE1BQU0sR0FBR0QsSUFBSSxHQUFHMUIsTUFBTSxDQUFDTyxZQUFZLENBQUNtQixJQUFJLENBQUMsR0FBRzFCLE1BQU0sQ0FBQ08sWUFBWTtNQUVuRSxJQUFJLENBQUNvQixNQUFNLElBQUlELElBQUksSUFBSUEsSUFBSSxDQUFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDOUMsSUFBTUMsS0FBSyxHQUFHSCxJQUFJLENBQUNJLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDN0JILE1BQU0sR0FBR0UsS0FBSyxDQUFDRSxNQUFNLENBQUMsVUFBQ0MsR0FBRyxFQUFFQyxJQUFTLEVBQUs7VUFDekNELEdBQUcsR0FBR0MsSUFBSSxHQUFHRCxHQUFHLENBQUNDLElBQUksQ0FBQyxHQUFHRCxHQUFHO1VBQzVCLE9BQU9BLEdBQUc7UUFDWCxDQUFDLEVBQUVoQyxNQUFNLENBQUNPLFlBQVksQ0FBQztNQUN4QjtNQUVBLE9BQU9vQixNQUFNO0lBQ2QsQ0FBQyxDQUFDO0lBRUYzQixNQUFNLENBQUNDLElBQUksQ0FBQ2lDLE9BQU8sQ0FBQ3ZCLGtCQUFrQixDQUFDO01BQUEsT0FBTVgsTUFBTSxDQUFDTyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQUEsRUFBQztJQUMxRVAsTUFBTSxDQUFDQyxJQUFJLENBQUNrQyxVQUFVLENBQUN4QixrQkFBa0IsQ0FBQztNQUFBLE9BQU1YLE1BQU0sQ0FBQ1EsU0FBUztJQUFBLEVBQUM7SUFDakVSLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDbUMsUUFBUSxDQUFDekIsa0JBQWtCLENBQUM7TUFBQTtNQUFBLDRCQUFNWCxNQUFNLENBQUNRLFNBQVMsc0RBQWhCLGtCQUFrQjRCLFFBQVEsRUFBRTtJQUFBLEVBQUM7SUFDM0VwQyxNQUFNLENBQUNDLElBQUksQ0FBQ29DLFlBQVksQ0FBQzFCLGtCQUFrQixDQUFDLFVBQUMyQixJQUFhLEVBQUVDLGtCQUF3QixFQUFFQyxpQkFBMkIsRUFBSztNQUNySHhDLE1BQU0sQ0FBQ00sWUFBWSxHQUFHZ0MsSUFBSTtJQUMzQixDQUFDLENBQUM7SUFDRnRDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDd0MsV0FBVyxDQUFDOUIsa0JBQWtCLENBQUM7TUFBQSxPQUFNWCxNQUFNLENBQUNNLFlBQVk7SUFBQSxFQUFDO0lBQ3JFTixNQUFNLENBQUNDLElBQUksQ0FBQ0YsVUFBVSxDQUFDWSxrQkFBa0IsQ0FBQztNQUFBLE9BQU1YLE1BQU0sQ0FBQ1MsV0FBVztJQUFBLEVBQUM7SUFFbkUsT0FBT1QsTUFBTTtFQUNkO0VBQ0E7QUFDQTtBQUNBO0VBRkE7RUFHTyxJQUFNMEMsV0FBcUYsR0FBRzlDLGlCQUF3Qjs7RUFFN0g7QUFDQTtBQUNBO0VBRkE7RUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTK0MsZUFBZSxDQUFDQyxNQUErQixFQUFhO0lBQzNFLElBQU01QyxNQUFNLEdBQUdDLElBQUksQ0FBQzRDLEtBQUssQ0FBYztJQUN2QzdDLE1BQU0sQ0FBQzhDLE9BQU8sR0FBR0YsTUFBTSxJQUFJLENBQUMsQ0FBQzs7SUFFN0I7SUFDQTVDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDOEMsWUFBWSxDQUFDcEMsa0JBQWtCLENBQUMsVUFBQ3FDLElBQUk7TUFBQSxPQUFLaEQsTUFBTSxDQUFDOEMsT0FBTyxDQUFDRSxJQUFJLENBQUM7SUFBQSxFQUFDO0lBRTNFLE9BQU9oRCxNQUFNO0VBQ2Q7RUFDQTtBQUNBO0FBQ0E7RUFGQTtFQUdPLElBQU1pRCxTQUE2RCxHQUFHTixlQUFzQjs7RUFFbkc7QUFDQTtBQUNBO0VBRkE7RUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNPLHFCQUFxQixDQUFDQyxZQUFvQixFQUFFQyxVQUFzQixFQUFtQjtJQUNwRyxJQUFNcEQsTUFBTSxHQUFHQyxJQUFJLENBQUNvRCxnQkFBZ0IsQ0FBb0I7SUFDeERGLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQUU7SUFDakNuRCxNQUFNLENBQUNzRCxjQUFjLEdBQUdILFlBQVksQ0FBQzlCLEdBQUcsQ0FBQyxVQUFDa0MsV0FBVyxFQUFLO01BQ3pELE9BQU8zRCxpQkFBaUIsQ0FBQzJELFdBQVcsRUFBRXZELE1BQU0sQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFDRkEsTUFBTSxDQUFDd0QsVUFBVSxHQUFHSixVQUFVOztJQUU5QjtJQUNBcEQsTUFBTSxDQUFDeUQsUUFBUSxHQUFHLFVBQUNDLEtBQWdCLEVBQUs7TUFDdkMxRCxNQUFNLENBQUN3RCxVQUFVLEdBQUdFLEtBQUs7SUFDMUIsQ0FBQzs7SUFFRDtJQUNBMUQsTUFBTSxDQUFDQyxJQUFJLENBQUNTLEdBQUcsQ0FBQ0Msa0JBQWtCLENBQUMsVUFBQ0MsVUFBa0IsRUFBSztNQUMxRCxPQUFPQSxVQUFVLEtBQUssd0NBQXdDO0lBQy9ELENBQUMsQ0FBQztJQUNGWixNQUFNLENBQUNDLElBQUksQ0FBQzBELGVBQWUsQ0FBQ2hELGtCQUFrQixDQUFDLFlBQU07TUFDcEQsT0FBT1EsT0FBTyxDQUFDQyxPQUFPLENBQUNwQixNQUFNLENBQUNzRCxjQUFjLENBQUM7SUFDOUMsQ0FBQyxDQUFDO0lBQ0Z0RCxNQUFNLENBQUNDLElBQUksQ0FBQzJELGtCQUFrQixDQUFDakQsa0JBQWtCLENBQUMsWUFBTTtNQUN2RCxPQUFPWCxNQUFNLENBQUNzRCxjQUFjO0lBQzdCLENBQUMsQ0FBQztJQUNGdEQsTUFBTSxDQUFDQyxJQUFJLENBQUM0RCxxQkFBcUIsQ0FBQ2xELGtCQUFrQixDQUFDLFlBQU07TUFDMUQsT0FBT1gsTUFBTSxDQUFDc0QsY0FBYztJQUM3QixDQUFDLENBQUM7SUFDRnRELE1BQU0sQ0FBQ0MsSUFBSSxDQUFDNkQsV0FBVyxDQUFDbkQsa0JBQWtCLENBQUMsWUFBTTtNQUNoRCxPQUFPWCxNQUFNLENBQUNzRCxjQUFjO0lBQzdCLENBQUMsQ0FBQztJQUNGdEQsTUFBTSxDQUFDQyxJQUFJLENBQUNtQyxRQUFRLENBQUN6QixrQkFBa0IsQ0FBQyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQ3dELFVBQVU7SUFDekIsQ0FBQyxDQUFDO0lBQ0Z4RCxNQUFNLENBQUNDLElBQUksQ0FBQzhELGdCQUFnQixDQUFDQyxlQUFlLENBQUMsTUFBTSxDQUFDO0lBRXBELE9BQU9oRSxNQUFNO0VBQ2Q7RUFDQTtBQUNBO0FBQ0E7RUFGQTtFQUdPLElBQU1pRSxlQUFrRixHQUFHZixxQkFBNEI7O0VBRTlIO0FBQ0E7QUFDQTtFQUZBO0VBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNnQix5QkFBeUIsQ0FBQzFDLEtBQVUsRUFBRUUsSUFBYSxFQUFFMEIsVUFBc0IsRUFBdUI7SUFDakgsSUFBTXBELE1BQU0sR0FBR0MsSUFBSSxDQUFDa0Usb0JBQW9CLENBQXdCO0lBQ2hFbkUsTUFBTSxDQUFDd0QsVUFBVSxHQUFHSixVQUFVO0lBQzlCcEQsTUFBTSxDQUFDb0UsTUFBTSxHQUFHNUMsS0FBSztJQUNyQnhCLE1BQU0sQ0FBQ3FFLEtBQUssR0FBRzNDLElBQUk7O0lBRW5CO0lBQ0ExQixNQUFNLENBQUNDLElBQUksQ0FBQ1MsR0FBRyxDQUFDQyxrQkFBa0IsQ0FBQyxVQUFDQyxVQUFrQixFQUFLO01BQzFELE9BQU9BLFVBQVUsS0FBSyw0Q0FBNEM7SUFDbkUsQ0FBQyxDQUFDO0lBQ0ZaLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDbUMsUUFBUSxDQUFDekIsa0JBQWtCLENBQUMsWUFBTTtNQUM3QyxPQUFPWCxNQUFNLENBQUN3RCxVQUFVO0lBQ3pCLENBQUMsQ0FBQztJQUNGeEQsTUFBTSxDQUFDQyxJQUFJLENBQUNxRSxRQUFRLENBQUMzRCxrQkFBa0IsQ0FBQyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQ29FLE1BQU07SUFDckIsQ0FBQyxDQUFDO0lBQ0ZwRSxNQUFNLENBQUNDLElBQUksQ0FBQ2lDLE9BQU8sQ0FBQ3ZCLGtCQUFrQixDQUFDLFlBQU07TUFDNUMsT0FBT1gsTUFBTSxDQUFDcUUsS0FBSztJQUNwQixDQUFDLENBQUM7SUFFRixPQUFPckUsTUFBTTtFQUNkO0VBQ0E7QUFDQTtBQUNBO0VBRkE7RUFHTyxJQUFNdUUsbUJBQW9GLEdBQUdMLHlCQUFnQzs7RUFFcEk7QUFDQTtBQUNBO0VBRkE7RUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTTSwwQkFBMEIsQ0FBQ0MsU0FBZ0MsRUFBd0I7SUFDbEcsSUFBTXpFLE1BQU0sR0FBR0MsSUFBSSxDQUFDeUUsZ0JBQWdCLENBQXlCO0lBQzdEMUUsTUFBTSxDQUFDMkUsVUFBVSxHQUFHRixTQUFTOztJQUU3QjtJQUNBekUsTUFBTSxDQUFDQyxJQUFJLENBQUNTLEdBQUcsQ0FBQ0Msa0JBQWtCLENBQUMsVUFBQ0MsVUFBa0IsRUFBSztNQUMxRCxPQUFPQSxVQUFVLEtBQUssK0JBQStCO0lBQ3RELENBQUMsQ0FBQztJQUNGWixNQUFNLENBQUNDLElBQUksQ0FBQzJFLFdBQVcsQ0FBQ2pFLGtCQUFrQixDQUFDLFlBQU07TUFDaEQsT0FBT1gsTUFBTSxDQUFDMkUsVUFBVTtJQUN6QixDQUFDLENBQUM7SUFDRjNFLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDcUUsUUFBUSxDQUFDM0Qsa0JBQWtCLENBQUMsWUFBTTtNQUM3QyxPQUFPWCxNQUFNLENBQUMyRSxVQUFVLENBQUN0RCxHQUFHLENBQUMsVUFBQ3dELE9BQU87UUFBQSxPQUFLQSxPQUFPLENBQUNQLFFBQVEsRUFBRTtNQUFBLEVBQUM7SUFDOUQsQ0FBQyxDQUFDO0lBRUYsT0FBT3RFLE1BQU07RUFDZDtFQUNBO0FBQ0E7QUFDQTtFQUZBO0VBR08sSUFBTThFLG9CQUFvRixHQUFHTiwwQkFBaUM7O0VBRXJJO0FBQ0E7QUFDQTtFQUZBO0VBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU08sd0JBQXdCLENBQUNDLFFBQWMsRUFBRTVCLFVBQXNCLEVBQXNCO0lBQ3BHLElBQU1wRCxNQUFNLEdBQUdDLElBQUksQ0FBQ2dGLG1CQUFtQixDQUF1QjtJQUM5RGpGLE1BQU0sQ0FBQ2tGLFNBQVMsR0FBRzlCLFVBQVU7SUFDN0JwRCxNQUFNLENBQUNtRixZQUFZLEdBQUd2RixpQkFBaUIsQ0FBQ29GLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRWhGLE1BQU0sQ0FBQzs7SUFFL0Q7SUFDQUEsTUFBTSxDQUFDb0Ysc0JBQXNCLEdBQUcsWUFBTTtNQUNyQyxPQUFPcEYsTUFBTSxDQUFDbUYsWUFBWTtJQUMzQixDQUFDO0lBQ0RuRixNQUFNLENBQUN5RCxRQUFRLEdBQUcsVUFBQzRCLE1BQWlCLEVBQUs7TUFDeENyRixNQUFNLENBQUNrRixTQUFTLEdBQUdHLE1BQU07SUFDMUIsQ0FBQzs7SUFFRDtJQUNBckYsTUFBTSxDQUFDQyxJQUFJLENBQUNTLEdBQUcsQ0FBQ0Msa0JBQWtCLENBQUMsVUFBQ0MsVUFBa0IsRUFBSztNQUMxRCxPQUFPQSxVQUFVLEtBQUssMkNBQTJDO0lBQ2xFLENBQUMsQ0FBQztJQUNGWixNQUFNLENBQUNDLElBQUksQ0FBQ3FGLGVBQWUsQ0FBQzNFLGtCQUFrQixDQUFDLFlBQU07TUFDcEQsT0FBT1gsTUFBTSxDQUFDbUYsWUFBWTtJQUMzQixDQUFDLENBQUM7SUFDRm5GLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDbUMsUUFBUSxDQUFDekIsa0JBQWtCLENBQUMsWUFBTTtNQUM3QyxPQUFPWCxNQUFNLENBQUNrRixTQUFTO0lBQ3hCLENBQUMsQ0FBQztJQUNGbEYsTUFBTSxDQUFDQyxJQUFJLENBQUNzRixPQUFPLENBQUNDLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUUzQyxPQUFPeEYsTUFBTTtFQUNkO0VBQ0E7QUFDQTtBQUNBO0VBRkE7RUFHTyxJQUFNeUYsa0JBQXNGLEdBQUdWLHdCQUErQjs7RUFFckk7QUFDQTtBQUNBO0VBRkE7RUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTVyxtQkFBbUIsQ0FBQ0MsU0FBZSxFQUFpQjtJQUNuRSxJQUFNM0YsTUFBTSxHQUFHQyxJQUFJLENBQUMyRixjQUFjLENBQWtCO0lBQ3BENUYsTUFBTSxDQUFDNkYsWUFBWSxHQUFHakcsaUJBQWlCLENBQUMrRixTQUFTLElBQUksQ0FBQyxDQUFDLENBQUM7O0lBRXhEO0lBQ0EzRixNQUFNLENBQUNDLElBQUksQ0FBQzZGLGNBQWMsQ0FBQ25GLGtCQUFrQixDQUFDLFVBQUNvRixLQUFhLEVBQUs7TUFDaEUsT0FBT25HLGlCQUFpQixDQUFDO1FBQUVvRyxLQUFLLEVBQUVEO01BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztJQUNGL0YsTUFBTSxDQUFDQyxJQUFJLENBQUN3QixTQUFTLENBQUNkLGtCQUFrQixDQUFDLFVBQUNvRixLQUFhLEVBQUs7TUFDM0QsT0FBTy9GLE1BQU0sQ0FBQzZGLFlBQVksQ0FBQ2hGLFdBQVcsQ0FBQ2tGLEtBQUssQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFDRi9GLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDZ0csb0JBQW9CLENBQUN0RixrQkFBa0IsQ0FBQyxVQUFDb0YsS0FBYSxFQUFLO01BQ3RFLE9BQU9uRyxpQkFBaUIsQ0FBQztRQUFFb0csS0FBSyxFQUFFRDtNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFDRi9GLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDaUcsV0FBVyxDQUFDdkYsa0JBQWtCLENBQUMsVUFBQ29GLEtBQWEsRUFBSztNQUM3RCxJQUFNSSxTQUFTLEdBQUcsSUFBSVAsY0FBYyxFQUFFO01BQ3RDLE9BQU9HLEtBQUssR0FBR0ksU0FBUyxDQUFDRCxXQUFXLENBQUNILEtBQUssQ0FBQyxHQUFHQSxLQUFLO0lBQ3BELENBQUMsQ0FBQztJQUVGLE9BQU8vRixNQUFNO0VBQ2Q7RUFDQTtBQUNBO0FBQ0E7RUFGQTtFQUdPLElBQU1vRyxhQUFxRCxHQUFHVixtQkFBMEI7O0VBRS9GO0FBQ0E7QUFDQTtFQUZBO0VBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTVyxlQUFlLENBQUNDLGdCQUFrQyxFQUFFQyxtQkFBd0MsRUFBYTtJQUN4SCxJQUFNdkcsTUFBTSxHQUFHQyxJQUFJLENBQUN1RyxVQUFVLENBQWM7SUFDNUN4RyxNQUFNLENBQUN5RyxlQUFlLEdBQUdILGdCQUFnQjtJQUN6Q3RHLE1BQU0sQ0FBQzBHLGtCQUFrQixHQUFHSCxtQkFBbUI7SUFDL0MsSUFBSUQsZ0JBQWdCLEVBQUU7TUFDckJBLGdCQUFnQixDQUFDN0MsUUFBUSxDQUFDekQsTUFBTSxDQUFDO0lBQ2xDO0lBQ0EsSUFBSXVHLG1CQUFtQixFQUFFO01BQ3hCQSxtQkFBbUIsQ0FBQzlDLFFBQVEsQ0FBQ3pELE1BQU0sQ0FBQztJQUNyQzs7SUFFQTtJQUNBQSxNQUFNLENBQUMyRyxZQUFZLEdBQUcsVUFBQ0MsVUFBeUIsRUFBSztNQUNwRDVHLE1BQU0sQ0FBQzRHLFVBQVUsR0FBR0EsVUFBVTtJQUMvQixDQUFDOztJQUVEO0lBQ0E1RyxNQUFNLENBQUNDLElBQUksQ0FBQzRHLFFBQVEsQ0FBQ2xHLGtCQUFrQixDQUFDLFlBQU07TUFDN0MsT0FBT1gsTUFBTSxDQUFDeUcsZUFBZTtJQUM5QixDQUFDLENBQUM7SUFDRnpHLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDNkcsV0FBVyxDQUFDbkcsa0JBQWtCLENBQUMsWUFBTTtNQUNoRCxPQUFPWCxNQUFNLENBQUMwRyxrQkFBa0I7SUFDakMsQ0FBQyxDQUFDO0lBQ0YxRyxNQUFNLENBQUNDLElBQUksQ0FBQzhHLFlBQVksQ0FBQ3BHLGtCQUFrQixDQUFDLFlBQU07TUFDakQsT0FBT1gsTUFBTSxDQUFDNEcsVUFBVTtJQUN6QixDQUFDLENBQUM7SUFFRixPQUFPNUcsTUFBTTtFQUNkO0VBQ0E7QUFDQTtBQUNBO0VBRkE7RUFHTyxJQUFNZ0gsU0FBMEcsR0FDdEhYLGVBQXNCO0VBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBO0VBTU8sU0FBU1ksOEJBQThCLENBQUNYLGdCQUFpQyxFQUFhO0lBQzVGLE9BQU9ELGVBQWUsQ0FBQ0MsZ0JBQWdCLENBQUM7RUFDekM7RUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFMQTtFQU1PLFNBQVNZLGlDQUFpQyxDQUFDWCxtQkFBdUMsRUFBYTtJQUNyRyxPQUFPRixlQUFlLENBQUNjLFNBQVMsRUFBRVosbUJBQW1CLENBQUM7RUFDdkQ7O0VBRUE7QUFDQTtBQUNBO0VBRkE7RUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU2EsY0FBYyxHQUFhO0lBQzFDLElBQU1wSCxNQUFNLEdBQUdDLElBQUksQ0FBQ29ILElBQUksQ0FBQzs7SUFFekI7SUFDQXJILE1BQU0sQ0FBQ0MsSUFBSSxDQUFDUyxHQUFHLENBQUNDLGtCQUFrQixDQUFDLFVBQUNDLFVBQWtCLEVBQUs7TUFDMUQsT0FBT0EsVUFBVSxLQUFLLHNCQUFzQjtJQUM3QyxDQUFDLENBQUM7SUFFRixPQUFPWixNQUFNO0VBQ2Q7RUFDQTtBQUNBO0FBQ0E7RUFGQTtFQUdPLElBQU1zSCxRQUE0QixHQUFHRixjQUFxQjs7RUFFakU7QUFDQTtBQUNBO0VBRkE7RUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0csb0JBQW9CLEdBQW1CO0lBQ3RELElBQU12SCxNQUFNLEdBQUdDLElBQUksQ0FBQ3VILFVBQVUsQ0FBbUI7SUFDakR4SCxNQUFNLENBQUN5SCxRQUFRLEdBQUd4SCxJQUFJLENBQUN5SCxlQUFlLENBQUM7SUFDdkMxSCxNQUFNLENBQUMySCxTQUFTLEdBQUcxSCxJQUFJLENBQUMySCxnQkFBZ0IsQ0FBQztJQUN6QzVILE1BQU0sQ0FBQzZILFlBQVksR0FBRzVILElBQUksQ0FBQzZILFdBQVcsQ0FBQztJQUN2QzlILE1BQU0sQ0FBQytILFFBQVEsR0FBRzlILElBQUksQ0FBQytILFFBQVEsQ0FBQztJQUNoQ2hJLE1BQU0sQ0FBQ2lJLEtBQUssR0FBR2hJLElBQUksQ0FBQ2lJLEtBQUssQ0FBQzs7SUFFMUI7SUFDQWxJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDa0ksT0FBTyxDQUFDbkUsZUFBZSxDQUFDb0QsY0FBYyxFQUFFLENBQUM7SUFDckRwSCxNQUFNLENBQUNDLElBQUksQ0FBQ1MsR0FBRyxDQUFDc0QsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUV0QyxPQUFPaEUsTUFBTTtFQUNkO0VBQ0E7QUFDQTtBQUNBO0VBRkE7RUFHTyxJQUFNb0ksY0FBd0MsR0FBR2Isb0JBQTJCO0VBQUM7RUFPcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU2MsT0FBTyxDQUFDQyxRQUEyQixFQUFXO0lBQzdELElBQU01RSxLQUFLLEdBQUcsQ0FBQTRFLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFNUUsS0FBSyxLQUFJMkMsZUFBZSxFQUFFO0lBQ2xELElBQU1rQyxJQUFJLEdBQUcsQ0FBQUQsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVDLElBQUksS0FBSW5CLGNBQWMsRUFBRTtJQUMvQyxJQUFNb0IsVUFBVSxHQUFHLENBQUFGLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFRSxVQUFVLEtBQUlqQixvQkFBb0IsRUFBRTtJQUVqRWdCLElBQUksQ0FBQ3RJLElBQUksQ0FBQ3dJLGFBQWEsQ0FBQ3pFLGVBQWUsQ0FBQ3dFLFVBQVUsQ0FBQztJQUNuREQsSUFBSSxDQUFDdEksSUFBSSxDQUFDbUMsUUFBUSxDQUFDNEIsZUFBZSxDQUFDTixLQUFLLENBQUM7SUFDekM4RSxVQUFVLENBQUN2SSxJQUFJLENBQUNrSSxPQUFPLENBQUNuRSxlQUFlLENBQUN1RSxJQUFJLENBQUM7SUFFN0MsT0FBTztNQUFFN0UsS0FBSyxFQUFMQSxLQUFLO01BQUU2RSxJQUFJLEVBQUpBLElBQUk7TUFBRUMsVUFBVSxFQUFWQTtJQUFXLENBQUM7RUFDbkM7RUFBQztFQUFBO0FBQUEifQ==
|
|
@@ -163,6 +163,9 @@ export function createMockListBinding(aContextData?: any[], oMockModel?: MockMod
|
|
|
163
163
|
mocked.mock.getAllCurrentContexts.mockImplementation(() => {
|
|
164
164
|
return mocked._aMockContexts;
|
|
165
165
|
});
|
|
166
|
+
mocked.mock.getContexts.mockImplementation(() => {
|
|
167
|
+
return mocked._aMockContexts;
|
|
168
|
+
});
|
|
166
169
|
mocked.mock.getModel.mockImplementation(() => {
|
|
167
170
|
return mocked._mockModel;
|
|
168
171
|
});
|
package/src/sap/fe/test/Utils.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* !
|
|
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
|
[
|
|
@@ -135,7 +136,7 @@ sap.ui.define(
|
|
|
135
136
|
appName: "SalesOrderCreateFCL",
|
|
136
137
|
appPath: "/apps/salesorder-CreateFCL/webapp"
|
|
137
138
|
},
|
|
138
|
-
|
|
139
|
+
SalesOrder: {
|
|
139
140
|
appName: "SalesOrder",
|
|
140
141
|
appPath: "/apps/salesorder/webapp"
|
|
141
142
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* !
|
|
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(["sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder"], function (Utils, OpaBuilder, FEBuilder) {
|
|
7
8
|
"use strict";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* !
|
|
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
|
["sap/fe/test/Utils", "sap/ui/test/Opa5", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/m/p13n/BasePanel"],
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* !
|
|
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
|
["./BaseAPI", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder"],
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* !
|
|
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
|
["./BaseAPI", "sap/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/ui/core/SortOrder"],
|