@sapui5/sap.fe.core 1.97.0 → 1.99.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -4
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AnnotationHelper.js +377 -405
- package/src/sap/fe/core/AnnotationHelper.ts +385 -0
- package/src/sap/fe/core/AppComponent.js +6 -3
- package/src/sap/fe/core/AppStateHandler.js +229 -181
- package/src/sap/fe/core/AppStateHandler.ts +171 -0
- package/src/sap/fe/core/BaseController.js +3 -2
- package/src/sap/fe/core/BusyLocker.js +105 -121
- package/src/sap/fe/core/BusyLocker.ts +98 -0
- package/src/sap/fe/core/CommonUtils.js +2073 -2379
- package/src/sap/fe/core/CommonUtils.ts +2078 -0
- package/src/sap/fe/core/ExtensionAPI.js +16 -7
- package/src/sap/fe/core/PageController.js +84 -119
- package/src/sap/fe/core/PageController.ts +101 -0
- package/src/sap/fe/core/RouterProxy.js +986 -807
- package/src/sap/fe/core/RouterProxy.ts +838 -0
- package/src/sap/fe/core/Synchronization.js +51 -35
- package/src/sap/fe/core/Synchronization.ts +29 -0
- package/src/sap/fe/core/TemplateComponent.js +173 -155
- package/src/sap/fe/core/TemplateComponent.ts +166 -0
- package/src/sap/fe/core/TemplateModel.js +97 -54
- package/src/sap/fe/core/TemplateModel.ts +64 -0
- package/src/sap/fe/core/TransactionHelper.js +1576 -1579
- package/src/sap/fe/core/TransactionHelper.ts +1706 -0
- package/src/sap/fe/core/actions/draft.js +560 -581
- package/src/sap/fe/core/actions/draft.ts +594 -0
- package/src/sap/fe/core/actions/messageHandling.js +545 -511
- package/src/sap/fe/core/actions/messageHandling.ts +532 -0
- package/src/sap/fe/core/actions/nonDraft.js +17 -19
- package/src/sap/fe/core/actions/nonDraft.ts +12 -0
- package/src/sap/fe/core/actions/operations.js +1074 -1211
- package/src/sap/fe/core/actions/operations.ts +1162 -0
- package/src/sap/fe/core/actions/sticky.js +102 -105
- package/src/sap/fe/core/actions/sticky.ts +102 -0
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +3 -2
- package/src/sap/fe/core/controllerextensions/EditFlow.js +229 -260
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -2
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +288 -13
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +27 -23
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +82 -46
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +113 -25
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +135 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.js +172 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +22 -9
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -8
- package/src/sap/fe/core/controllerextensions/Paginator.js +37 -9
- package/src/sap/fe/core/controllerextensions/Placeholder.js +8 -4
- package/src/sap/fe/core/controllerextensions/Routing.js +25 -5
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -2
- package/src/sap/fe/core/controllerextensions/Share.js +22 -8
- package/src/sap/fe/core/controllerextensions/SideEffects.js +9 -9
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -21
- package/src/sap/fe/core/controllerextensions/ViewState.js +3 -2
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -1
- package/src/sap/fe/core/controls/CommandExecution.js +3 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +9 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +18 -23
- package/src/sap/fe/core/controls/FilterBar.js +3 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +3 -7
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -2
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +5 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -2
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
- package/src/sap/fe/core/converters/ConverterContext.js +14 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +14 -3
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +4 -0
- package/src/sap/fe/core/converters/ManifestWrapper.js +56 -32
- package/src/sap/fe/core/converters/ManifestWrapper.ts +24 -6
- package/src/sap/fe/core/converters/MetaModelConverter.js +67 -6
- package/src/sap/fe/core/converters/MetaModelConverter.ts +70 -14
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -2
- package/src/sap/fe/core/converters/annotations/DataField.js +3 -3
- package/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
- package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
- package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
- package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
- package/src/sap/fe/core/converters/controls/Common/Form.js +20 -10
- package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -4
- package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +72 -0
- package/src/sap/fe/core/converters/controls/Common/Table.js +390 -398
- package/src/sap/fe/core/converters/controls/Common/Table.ts +497 -484
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +527 -0
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +655 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +489 -37
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +506 -58
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
- package/src/sap/fe/core/converters/helpers/Aggregation.js +18 -3
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
- package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +4 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +3 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +13 -6
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +26 -15
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
- package/src/sap/fe/core/formatters/TableFormatter.js +39 -28
- package/src/sap/fe/core/formatters/TableFormatter.ts +43 -28
- package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
- package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
- package/src/sap/fe/core/fpm/Component.js +3 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +391 -0
- package/src/sap/fe/core/helpers/BindingExpression.js +484 -437
- package/src/sap/fe/core/helpers/BindingExpression.ts +480 -463
- package/src/sap/fe/core/helpers/ClassSupport.js +27 -15
- package/src/sap/fe/core/helpers/ClassSupport.ts +31 -20
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +63 -59
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +56 -0
- package/src/sap/fe/core/helpers/EditState.js +81 -84
- package/src/sap/fe/core/helpers/EditState.ts +81 -0
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
- package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
- package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
- package/src/sap/fe/core/helpers/MassEditHelper.js +687 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +229 -225
- package/src/sap/fe/core/helpers/ModelHelper.ts +227 -0
- package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
- package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +332 -313
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +330 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
- package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
- package/src/sap/fe/core/library.js +30 -3
- package/src/sap/fe/core/library.support.js +12 -5
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
- package/src/sap/fe/core/messagebundle.properties +61 -13
- package/src/sap/fe/core/messagebundle_ar.properties +33 -2
- package/src/sap/fe/core/messagebundle_bg.properties +33 -2
- package/src/sap/fe/core/messagebundle_ca.properties +33 -2
- package/src/sap/fe/core/messagebundle_cs.properties +34 -3
- package/src/sap/fe/core/messagebundle_cy.properties +33 -2
- package/src/sap/fe/core/messagebundle_da.properties +33 -2
- package/src/sap/fe/core/messagebundle_de.properties +33 -2
- package/src/sap/fe/core/messagebundle_el.properties +33 -2
- package/src/sap/fe/core/messagebundle_en.properties +32 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +32 -1
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +36 -1
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +33 -2
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +33 -2
- package/src/sap/fe/core/messagebundle_es.properties +33 -2
- package/src/sap/fe/core/messagebundle_es_MX.properties +33 -2
- package/src/sap/fe/core/messagebundle_et.properties +33 -2
- package/src/sap/fe/core/messagebundle_fi.properties +34 -3
- package/src/sap/fe/core/messagebundle_fr.properties +38 -7
- package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -2
- package/src/sap/fe/core/messagebundle_hi.properties +33 -2
- package/src/sap/fe/core/messagebundle_hr.properties +33 -2
- package/src/sap/fe/core/messagebundle_hu.properties +34 -3
- package/src/sap/fe/core/messagebundle_id.properties +36 -5
- package/src/sap/fe/core/messagebundle_it.properties +33 -2
- package/src/sap/fe/core/messagebundle_iw.properties +33 -2
- package/src/sap/fe/core/messagebundle_ja.properties +33 -2
- package/src/sap/fe/core/messagebundle_kk.properties +33 -2
- package/src/sap/fe/core/messagebundle_ko.properties +33 -2
- package/src/sap/fe/core/messagebundle_lt.properties +33 -2
- package/src/sap/fe/core/messagebundle_lv.properties +33 -2
- package/src/sap/fe/core/messagebundle_ms.properties +33 -2
- package/src/sap/fe/core/messagebundle_nl.properties +33 -2
- package/src/sap/fe/core/messagebundle_no.properties +33 -2
- package/src/sap/fe/core/messagebundle_pl.properties +33 -2
- package/src/sap/fe/core/messagebundle_pt.properties +34 -3
- package/src/sap/fe/core/messagebundle_pt_PT.properties +33 -2
- package/src/sap/fe/core/messagebundle_ro.properties +33 -2
- package/src/sap/fe/core/messagebundle_ru.properties +33 -2
- package/src/sap/fe/core/messagebundle_sh.properties +33 -2
- package/src/sap/fe/core/messagebundle_sk.properties +33 -2
- package/src/sap/fe/core/messagebundle_sl.properties +33 -2
- package/src/sap/fe/core/messagebundle_sv.properties +34 -3
- package/src/sap/fe/core/messagebundle_th.properties +33 -2
- package/src/sap/fe/core/messagebundle_tr.properties +33 -2
- package/src/sap/fe/core/messagebundle_uk.properties +33 -2
- package/src/sap/fe/core/messagebundle_vi.properties +33 -2
- package/src/sap/fe/core/messagebundle_zh_CN.properties +33 -2
- package/src/sap/fe/core/messagebundle_zh_TW.properties +33 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +269 -202
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +9 -5
- package/src/sap/fe/core/services/NavigationServiceFactory.js +406 -300
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +316 -0
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +149 -81
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +80 -0
- package/src/sap/fe/core/services/RoutingServiceFactory.js +987 -1152
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
- package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +45 -11
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +42 -85
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +57 -100
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +461 -478
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +453 -0
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
- package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
- package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
- package/src/sap/fe/core/templating/DataModelPathHelper.js +10 -48
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +14 -46
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
- package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
- package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
- package/src/sap/fe/core/templating/FilterHelper.js +139 -70
- package/src/sap/fe/core/templating/FilterHelper.ts +140 -70
- package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +45 -110
- package/src/sap/fe/core/templating/UIFormatters.ts +39 -75
- package/src/sap/fe/core/type/Email.js +1 -1
- package/src/sap/fe/core/type/Email.ts +4 -6
- package/ui5.yaml +0 -3
- package/src/sap/fe/core/controls/filterbar.d.js +0 -8
- package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
|
@@ -213,7 +213,15 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/base/util/deepClone", "sap/ui/co
|
|
|
213
213
|
|
|
214
214
|
_exports.Association = Association;
|
|
215
215
|
|
|
216
|
+
/**
|
|
217
|
+
* Decorator to provide a new API class to be used in the macros.
|
|
218
|
+
*
|
|
219
|
+
* @param sTarget The fully qualified name of the macro API
|
|
220
|
+
* @param isDependentBound Whether this API will be used as a dependent or not
|
|
221
|
+
* @class
|
|
222
|
+
*/
|
|
216
223
|
function APIClass(sTarget) {
|
|
224
|
+
var isDependentBound = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
217
225
|
return function (constructor) {
|
|
218
226
|
if (!constructor.prototype.metadata) {
|
|
219
227
|
constructor.prototype.metadata = {};
|
|
@@ -224,6 +232,7 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/base/util/deepClone", "sap/ui/co
|
|
|
224
232
|
}
|
|
225
233
|
|
|
226
234
|
constructor.prototype.metadata.interfaces.push("sap.ui.core.IFormContent");
|
|
235
|
+
constructor.isDependentBound = isDependentBound;
|
|
227
236
|
|
|
228
237
|
if (!constructor.prototype.renderer) {
|
|
229
238
|
constructor.prototype.renderer = {
|
|
@@ -289,21 +298,24 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/base/util/deepClone", "sap/ui/co
|
|
|
289
298
|
args[_key] = arguments[_key];
|
|
290
299
|
}
|
|
291
300
|
|
|
292
|
-
fnInit.apply(this, args);
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
301
|
+
fnInit && fnInit.apply(this, args);
|
|
302
|
+
|
|
303
|
+
if (obj.metadata.properties) {
|
|
304
|
+
var aPropertyKeys = Object.keys(obj.metadata.properties); // eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
305
|
+
|
|
306
|
+
var that = this;
|
|
307
|
+
aPropertyKeys.forEach(function (propertyKey) {
|
|
308
|
+
Object.defineProperty(that, propertyKey, {
|
|
309
|
+
configurable: true,
|
|
310
|
+
set: function (v) {
|
|
311
|
+
return that.setProperty(propertyKey, v);
|
|
312
|
+
},
|
|
313
|
+
get: function () {
|
|
314
|
+
return that.getProperty(propertyKey);
|
|
315
|
+
}
|
|
316
|
+
});
|
|
305
317
|
});
|
|
306
|
-
}
|
|
318
|
+
}
|
|
307
319
|
};
|
|
308
320
|
|
|
309
321
|
ObjectPath.set(name, clazz);
|
|
@@ -311,4 +323,4 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/base/util/deepClone", "sap/ui/co
|
|
|
311
323
|
|
|
312
324
|
return _exports;
|
|
313
325
|
}, false);
|
|
314
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNsYXNzU3VwcG9ydC50cyJdLCJuYW1lcyI6WyJlbnN1cmVNZXRhZGF0YSIsInRhcmdldCIsImhhc093blByb3BlcnR5IiwibWV0YWRhdGEiLCJkZWVwQ2xvbmUiLCJwcm9wZXJ0aWVzIiwibWFjcm9Db250ZXh0cyIsImFnZ3JlZ2F0aW9ucyIsImFzc29jaWF0aW9ucyIsIm1ldGhvZHMiLCJldmVudHMiLCJPdmVycmlkZSIsInNUYXJnZXQiLCJwcm9wZXJ0eUtleSIsIm92ZXJyaWRlIiwiY3VycmVudFRhcmdldCIsImV4dGVuc2lvbiIsIkV4dGVuc2libGUiLCJvT3ZlcnJpZGVFeGVjdXRpb24iLCJvdmVycmlkZUV4ZWN1dGlvbiIsIlB1YmxpYyIsInB1YmxpYyIsIlByaXZhdGUiLCJGaW5hbCIsImZpbmFsIiwiRXZlbnQiLCJldmVudEtleSIsIkV2ZW50SGFuZGxlciIsInByb3BlcnR5a2V5IiwiY29uc3RydWN0b3IiLCJnZXRBUEkiLCJNYWNyb0NvbnRleHQiLCJiTWV0YU1vZGVsT2JqZWN0IiwiUHJvcGVydHkiLCJ0eXBlIiwibWFjcm9Db250ZXh0IiwibWV0YU1vZGVsT2JqZWN0Iiwib1Byb3BlcnR5UGFyYW1zIiwicHJvcGVydHlEZXNjcmlwdG9yIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsInNldCIsInYiLCJzZXRQcm9wZXJ0eSIsImdldCIsImdldFByb3BlcnR5IiwiQWdncmVnYXRpb24iLCJvQWdncmVnYXRpb25EZXNjcmlwdG9yIiwiaXNEZWZhdWx0IiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwic2V0QWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsIkFzc29jaWF0aW9uIiwib0Fzc29jaWF0aW9uRGVzY3JpcHRpb24iLCJBUElDbGFzcyIsInByb3RvdHlwZSIsImludGVyZmFjZXMiLCJwdXNoIiwicmVuZGVyZXIiLCJhcGlWZXJzaW9uIiwicmVuZGVyIiwib1JtIiwib0NvbnRyb2wiLCJyZW5kZXJDb250cm9sIiwiZ2V0Q29udGVudCIsImRlc2NyaWJlIiwiRWxlbWVudE1ldGFkYXRhIiwiVUk1Q2xhc3MiLCJtZXRhZGF0YUNsYXNzIiwibWV0YWRhdGFEZWZpbml0aW9uIiwiY2xhenoiLCJuYW1lIiwiaW5PYmoiLCJvYmoiLCJiYXNlVHlwZSIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZm5Jbml0IiwiaW5pdCIsImFyZ3MiLCJhcHBseSIsImFQcm9wZXJ0eUtleXMiLCJrZXlzIiwidGhhdCIsImZvckVhY2giLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsIk9iamVjdFBhdGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQUVBLE1BQU1BLGNBQWMsR0FBRyxVQUFTQyxNQUFULEVBQXNCO0FBQzVDLFFBQUksQ0FBQ0EsTUFBTSxDQUFDQyxjQUFQLENBQXNCLFVBQXRCLENBQUwsRUFBd0M7QUFDdkNELE1BQUFBLE1BQU0sQ0FBQ0UsUUFBUCxHQUFrQkMsU0FBUyxDQUMxQkgsTUFBTSxDQUFDRSxRQUFQLElBQW1CO0FBQ2xCRSxRQUFBQSxVQUFVLEVBQUUsRUFETTtBQUVsQkMsUUFBQUEsYUFBYSxFQUFFLEVBRkc7QUFHbEJDLFFBQUFBLFlBQVksRUFBRSxFQUhJO0FBSWxCQyxRQUFBQSxZQUFZLEVBQUUsRUFKSTtBQUtsQkMsUUFBQUEsT0FBTyxFQUFFLEVBTFM7QUFNbEJDLFFBQUFBLE1BQU0sRUFBRTtBQU5VLE9BRE8sQ0FBM0I7QUFVQTs7QUFDRCxXQUFPVCxNQUFNLENBQUNFLFFBQWQ7QUFDQSxHQWREOztBQWVPLFdBQVNRLFFBQVQsQ0FBa0JDLE9BQWxCLEVBQW9DO0FBQzFDLFdBQU8sVUFBU1gsTUFBVCxFQUFzQlksV0FBdEIsRUFBMkM7QUFDakQsVUFBSSxDQUFDWixNQUFNLENBQUNhLFFBQVosRUFBc0I7QUFDckJiLFFBQUFBLE1BQU0sQ0FBQ2EsUUFBUCxHQUFrQixFQUFsQjtBQUNBOztBQUNELFVBQUlDLGFBQWEsR0FBR2QsTUFBTSxDQUFDYSxRQUEzQjs7QUFDQSxVQUFJRixPQUFKLEVBQWE7QUFDWixZQUFJLENBQUNHLGFBQWEsQ0FBQ0MsU0FBbkIsRUFBOEI7QUFDN0JELFVBQUFBLGFBQWEsQ0FBQ0MsU0FBZCxHQUEwQixFQUExQjtBQUNBOztBQUNELFlBQUksQ0FBQ0QsYUFBYSxDQUFDQyxTQUFkLENBQXdCSixPQUF4QixDQUFMLEVBQXVDO0FBQ3RDRyxVQUFBQSxhQUFhLENBQUNDLFNBQWQsQ0FBd0JKLE9BQXhCLElBQW1DLEVBQW5DO0FBQ0E7O0FBQ0RHLFFBQUFBLGFBQWEsR0FBR0EsYUFBYSxDQUFDQyxTQUFkLENBQXdCSixPQUF4QixDQUFoQjtBQUNBOztBQUNERyxNQUFBQSxhQUFhLENBQUNGLFdBQUQsQ0FBYixHQUE2QlosTUFBTSxDQUFDWSxXQUFELENBQW5DO0FBQ0EsS0FmRDtBQWdCQTs7OztBQUNNLFdBQVNJLFVBQVQsQ0FBb0JDLGtCQUFwQixFQUE0RDtBQUNsRSxXQUFPLFVBQVNqQixNQUFULEVBQXNCWSxXQUF0QixFQUEyQztBQUNqRCxVQUFNVixRQUFRLEdBQUdILGNBQWMsQ0FBQ0MsTUFBRCxDQUEvQjs7QUFDQSxVQUFJLENBQUNFLFFBQVEsQ0FBQ00sT0FBVCxDQUFpQkksV0FBakIsQ0FBTCxFQUFvQztBQUNuQ1YsUUFBQUEsUUFBUSxDQUFDTSxPQUFULENBQWlCSSxXQUFqQixJQUFnQyxFQUFoQztBQUNBOztBQUNEVixNQUFBQSxRQUFRLENBQUNNLE9BQVQsQ0FBaUJJLFdBQWpCLEVBQThCTSxpQkFBOUIsR0FBa0RELGtCQUFsRDtBQUNBLEtBTkQ7QUFPQTs7OztBQUNNLFdBQVNFLE1BQVQsQ0FBZ0JuQixNQUFoQixFQUE2QlksV0FBN0IsRUFBa0Q7QUFDeEQsUUFBTVYsUUFBUSxHQUFHSCxjQUFjLENBQUNDLE1BQUQsQ0FBL0I7O0FBQ0EsUUFBSSxDQUFDRSxRQUFRLENBQUNNLE9BQVQsQ0FBaUJJLFdBQWpCLENBQUwsRUFBb0M7QUFDbkNWLE1BQUFBLFFBQVEsQ0FBQ00sT0FBVCxDQUFpQkksV0FBakIsSUFBZ0MsRUFBaEM7QUFDQTs7QUFDRFYsSUFBQUEsUUFBUSxDQUFDTSxPQUFULENBQWlCSSxXQUFqQixFQUE4QlEsTUFBOUIsR0FBdUMsSUFBdkM7QUFDQTs7OztBQUNNLFdBQVNDLE9BQVQsQ0FBaUJyQixNQUFqQixFQUE4QlksV0FBOUIsRUFBbUQ7QUFDekQsUUFBTVYsUUFBUSxHQUFHSCxjQUFjLENBQUNDLE1BQUQsQ0FBL0I7O0FBQ0EsUUFBSSxDQUFDRSxRQUFRLENBQUNNLE9BQVQsQ0FBaUJJLFdBQWpCLENBQUwsRUFBb0M7QUFDbkNWLE1BQUFBLFFBQVEsQ0FBQ00sT0FBVCxDQUFpQkksV0FBakIsSUFBZ0MsRUFBaEM7QUFDQTs7QUFDRFYsSUFBQUEsUUFBUSxDQUFDTSxPQUFULENBQWlCSSxXQUFqQixFQUE4QlEsTUFBOUIsR0FBdUMsS0FBdkM7QUFDQTs7OztBQUNNLFdBQVNFLEtBQVQsQ0FBZXRCLE1BQWYsRUFBNEJZLFdBQTVCLEVBQWlEO0FBQ3ZELFFBQU1WLFFBQVEsR0FBR0gsY0FBYyxDQUFDQyxNQUFELENBQS9COztBQUNBLFFBQUksQ0FBQ0UsUUFBUSxDQUFDTSxPQUFULENBQWlCSSxXQUFqQixDQUFMLEVBQW9DO0FBQ25DVixNQUFBQSxRQUFRLENBQUNNLE9BQVQsQ0FBaUJJLFdBQWpCLElBQWdDLEVBQWhDO0FBQ0E7O0FBQ0RWLElBQUFBLFFBQVEsQ0FBQ00sT0FBVCxDQUFpQkksV0FBakIsRUFBOEJXLEtBQTlCLEdBQXNDLElBQXRDO0FBQ0E7Ozs7QUFFTSxXQUFTQyxLQUFULENBQWV4QixNQUFmLEVBQTRCeUIsUUFBNUIsRUFBOEM7QUFDcEQsUUFBTXZCLFFBQVEsR0FBR0gsY0FBYyxDQUFDQyxNQUFELENBQS9COztBQUNBLFFBQUksQ0FBQ0UsUUFBUSxDQUFDTyxNQUFULENBQWdCZ0IsUUFBaEIsQ0FBTCxFQUFnQztBQUMvQnZCLE1BQUFBLFFBQVEsQ0FBQ08sTUFBVCxDQUFnQmdCLFFBQWhCLElBQTRCLEVBQTVCO0FBQ0E7QUFDRDs7OztBQUVNLFdBQVNDLFlBQVQsQ0FBc0IxQixNQUF0QixFQUFtQzJCLFdBQW5DLEVBQXFEO0FBQzNEM0IsSUFBQUEsTUFBTSxDQUFDNEIsV0FBUCxDQUFtQkQsV0FBbkIsSUFBa0MsWUFBeUI7QUFDMUQsVUFBTWIsYUFBYSxHQUFHZCxNQUFNLENBQUM0QixXQUFQLENBQW1CQyxNQUFuQixrREFBdEI7QUFDQWYsTUFBQUEsYUFBYSxDQUFDYSxXQUFELENBQWIsT0FBQWIsYUFBYSxZQUFiO0FBQ0EsS0FIRDtBQUlBOzs7O0FBRU0sV0FBU2dCLFlBQVQsR0FBOEQ7QUFBQSxRQUF4Q0MsZ0JBQXdDLHVFQUFaLEtBQVk7QUFDcEUsV0FBT0MsUUFBUSxDQUFDO0FBQUVDLE1BQUFBLElBQUksRUFBRSxzQkFBUjtBQUFnQ0MsTUFBQUEsWUFBWSxFQUFFLElBQTlDO0FBQW9EQyxNQUFBQSxlQUFlLEVBQUVKO0FBQXJFLEtBQUQsQ0FBZjtBQUNBOzs7O0FBRU0sV0FBU0MsUUFBVCxDQUFrQkksZUFBbEIsRUFBNkM7QUFDbkQsV0FBTyxVQUFTcEMsTUFBVCxFQUFzQlksV0FBdEIsRUFBMkN5QixrQkFBM0MsRUFBd0Y7QUFDOUYsVUFBTW5DLFFBQVEsR0FBR0gsY0FBYyxDQUFDQyxNQUFELENBQS9COztBQUNBLFVBQUlvQyxlQUFKLGFBQUlBLGVBQUosZUFBSUEsZUFBZSxDQUFFRixZQUFyQixFQUFtQztBQUNsQyxZQUFJLENBQUNoQyxRQUFRLENBQUNHLGFBQVQsQ0FBdUJPLFdBQXZCLENBQUwsRUFBMEM7QUFDekNWLFVBQUFBLFFBQVEsQ0FBQ0csYUFBVCxDQUF1Qk8sV0FBdkIsSUFBc0N3QixlQUF0QztBQUNBO0FBQ0Q7O0FBQ0QsVUFBSSxDQUFDbEMsUUFBUSxDQUFDRSxVQUFULENBQW9CUSxXQUFwQixDQUFMLEVBQXVDO0FBQ3RDVixRQUFBQSxRQUFRLENBQUNFLFVBQVQsQ0FBb0JRLFdBQXBCLElBQW1Dd0IsZUFBbkM7QUFDQTs7QUFDRCxhQUFPQyxrQkFBa0IsQ0FBQ0MsUUFBMUI7QUFDQSxhQUFRRCxrQkFBRCxDQUE0QkUsV0FBbkM7O0FBQ0NGLE1BQUFBLGtCQUFELENBQTRCRyxHQUE1QixHQUFrQyxVQUFTQyxDQUFULEVBQWlCO0FBQ2xELGVBQU8sS0FBS0MsV0FBTCxDQUFpQjlCLFdBQWpCLEVBQThCNkIsQ0FBOUIsQ0FBUDtBQUNBLE9BRkQ7O0FBR0NKLE1BQUFBLGtCQUFELENBQTRCTSxHQUE1QixHQUFrQyxZQUFXO0FBQzVDLGVBQU8sS0FBS0MsV0FBTCxDQUFpQmhDLFdBQWpCLENBQVA7QUFDQSxPQUZEOztBQUlBLGFBQU95QixrQkFBUDtBQUNBLEtBcEJEO0FBcUJBOzs7O0FBRU0sV0FBU1EsV0FBVCxDQUFxQkMsc0JBQXJCLEVBQXdEO0FBQzlELFdBQU8sVUFBUzlDLE1BQVQsRUFBc0JZLFdBQXRCLEVBQTJDeUIsa0JBQTNDLEVBQXdGO0FBQzlGLFVBQU1uQyxRQUFRLEdBQUdILGNBQWMsQ0FBQ0MsTUFBRCxDQUEvQjs7QUFDQSxVQUFJLENBQUNFLFFBQVEsQ0FBQ0ksWUFBVCxDQUFzQk0sV0FBdEIsQ0FBTCxFQUF5QztBQUN4Q1YsUUFBQUEsUUFBUSxDQUFDSSxZQUFULENBQXNCTSxXQUF0QixJQUFxQ2tDLHNCQUFyQztBQUNBOztBQUNELFVBQUlBLHNCQUFzQixDQUFDQyxTQUEzQixFQUFzQztBQUNyQzdDLFFBQUFBLFFBQVEsQ0FBQzhDLGtCQUFULEdBQThCcEMsV0FBOUI7QUFDQTs7QUFDRCxhQUFPeUIsa0JBQWtCLENBQUNDLFFBQTFCO0FBQ0EsYUFBUUQsa0JBQUQsQ0FBNEJFLFdBQW5DOztBQUNDRixNQUFBQSxrQkFBRCxDQUE0QkcsR0FBNUIsR0FBa0MsVUFBU0MsQ0FBVCxFQUFpQjtBQUNsRCxlQUFPLEtBQUtRLGNBQUwsQ0FBb0JyQyxXQUFwQixFQUFpQzZCLENBQWpDLENBQVA7QUFDQSxPQUZEOztBQUdDSixNQUFBQSxrQkFBRCxDQUE0Qk0sR0FBNUIsR0FBa0MsWUFBVztBQUM1QyxlQUFPLEtBQUtPLGNBQUwsQ0FBb0J0QyxXQUFwQixDQUFQO0FBQ0EsT0FGRDs7QUFJQSxhQUFPeUIsa0JBQVA7QUFDQSxLQWxCRDtBQW1CQTs7OztBQUVNLFdBQVNjLFdBQVQsQ0FBcUJDLHVCQUFyQixFQUF5RDtBQUMvRCxXQUFPLFVBQVNwRCxNQUFULEVBQXNCWSxXQUF0QixFQUEyQ3lCLGtCQUEzQyxFQUF3RjtBQUM5RixVQUFNbkMsUUFBUSxHQUFHSCxjQUFjLENBQUNDLE1BQUQsQ0FBL0I7O0FBQ0EsVUFBSSxDQUFDRSxRQUFRLENBQUNLLFlBQVQsQ0FBc0JLLFdBQXRCLENBQUwsRUFBeUM7QUFDeENWLFFBQUFBLFFBQVEsQ0FBQ0ssWUFBVCxDQUFzQkssV0FBdEIsSUFBcUN3Qyx1QkFBckM7QUFDQTs7QUFDRCxhQUFPZixrQkFBa0IsQ0FBQ0MsUUFBMUI7QUFDQSxhQUFRRCxrQkFBRCxDQUE0QkUsV0FBbkM7O0FBQ0NGLE1BQUFBLGtCQUFELENBQTRCRyxHQUE1QixHQUFrQyxVQUFTQyxDQUFULEVBQWlCO0FBQ2xELGVBQU8sS0FBS1EsY0FBTCxDQUFvQnJDLFdBQXBCLEVBQWlDNkIsQ0FBakMsQ0FBUDtBQUNBLE9BRkQ7O0FBR0NKLE1BQUFBLGtCQUFELENBQTRCTSxHQUE1QixHQUFrQyxZQUFXO0FBQzVDLGVBQU8sS0FBS08sY0FBTCxDQUFvQnRDLFdBQXBCLENBQVA7QUFDQSxPQUZEOztBQUlBLGFBQU95QixrQkFBUDtBQUNBLEtBZkQ7QUFnQkE7Ozs7QUFNTSxXQUFTZ0IsUUFBVCxDQUFrQjFDLE9BQWxCLEVBQW1DO0FBQ3pDLFdBQU8sVUFBU2lCLFdBQVQsRUFBZ0M7QUFDdEMsVUFBSSxDQUFDQSxXQUFXLENBQUMwQixTQUFaLENBQXNCcEQsUUFBM0IsRUFBcUM7QUFDcEMwQixRQUFBQSxXQUFXLENBQUMwQixTQUFaLENBQXNCcEQsUUFBdEIsR0FBaUMsRUFBakM7QUFDQTs7QUFFRCxVQUFJLENBQUMwQixXQUFXLENBQUMwQixTQUFaLENBQXNCcEQsUUFBdEIsQ0FBK0JxRCxVQUFwQyxFQUFnRDtBQUMvQzNCLFFBQUFBLFdBQVcsQ0FBQzBCLFNBQVosQ0FBc0JwRCxRQUF0QixDQUErQnFELFVBQS9CLEdBQTRDLEVBQTVDO0FBQ0E7O0FBQ0QzQixNQUFBQSxXQUFXLENBQUMwQixTQUFaLENBQXNCcEQsUUFBdEIsQ0FBK0JxRCxVQUEvQixDQUEwQ0MsSUFBMUMsQ0FBK0MsMEJBQS9DOztBQUVBLFVBQUksQ0FBQzVCLFdBQVcsQ0FBQzBCLFNBQVosQ0FBc0JHLFFBQTNCLEVBQXFDO0FBQ3BDN0IsUUFBQUEsV0FBVyxDQUFDMEIsU0FBWixDQUFzQkcsUUFBdEIsR0FBaUM7QUFDaENDLFVBQUFBLFVBQVUsRUFBRSxDQURvQjtBQUVoQ0MsVUFBQUEsTUFBTSxFQUFFLFVBQVNDLEdBQVQsRUFBNkJDLFFBQTdCLEVBQTRDO0FBQ25ERCxZQUFBQSxHQUFHLENBQUNFLGFBQUosQ0FBa0JELFFBQVEsQ0FBQ0UsVUFBVCxFQUFsQjtBQUNBO0FBSitCLFNBQWpDO0FBTUE7O0FBRURDLE1BQUFBLFFBQVEsQ0FBQ3BDLFdBQUQsRUFBY2pCLE9BQWQsRUFBdUJpQixXQUFXLENBQUMwQixTQUFuQyxFQUE4Q1csZUFBOUMsQ0FBUjtBQUNBLEtBcEJEO0FBcUJBOzs7O0FBQ00sV0FBU0MsUUFBVCxDQUFrQnZELE9BQWxCLEVBQW1Dd0QsYUFBbkMsRUFBd0RDLGtCQUF4RCxFQUFrRjtBQUN4RixXQUFPLFVBQVN4QyxXQUFULEVBQWdDO0FBQ3RDLFVBQUksQ0FBQ0EsV0FBVyxDQUFDMEIsU0FBWixDQUFzQnBELFFBQTNCLEVBQXFDO0FBQ3BDMEIsUUFBQUEsV0FBVyxDQUFDMEIsU0FBWixDQUFzQnBELFFBQXRCLEdBQWlDLEVBQWpDO0FBQ0E7O0FBQ0QsVUFBSWtFLGtCQUFKLGFBQUlBLGtCQUFKLGVBQUlBLGtCQUFrQixDQUFFaEUsVUFBeEIsRUFBb0M7QUFDbkN3QixRQUFBQSxXQUFXLENBQUMwQixTQUFaLENBQXNCcEQsUUFBdEIsQ0FBK0JFLFVBQS9CLEdBQTRDZ0Usa0JBQWtCLENBQUNoRSxVQUEvRDtBQUNBOztBQUNELFVBQUlnRSxrQkFBSixhQUFJQSxrQkFBSixlQUFJQSxrQkFBa0IsQ0FBRTNELE1BQXhCLEVBQWdDO0FBQy9CbUIsUUFBQUEsV0FBVyxDQUFDMEIsU0FBWixDQUFzQnBELFFBQXRCLENBQStCTyxNQUEvQixHQUF3QzJELGtCQUFrQixDQUFDM0QsTUFBM0Q7QUFDQTs7QUFDRHVELE1BQUFBLFFBQVEsQ0FBQ3BDLFdBQUQsRUFBY2pCLE9BQWQsRUFBdUJpQixXQUFXLENBQUMwQixTQUFuQyxFQUE4Q2EsYUFBOUMsQ0FBUjtBQUNBLEtBWEQ7QUFZQTs7OztBQUVELFdBQVNILFFBQVQsQ0FBa0JLLEtBQWxCLEVBQThCQyxJQUE5QixFQUE0Q0MsS0FBNUMsRUFBd0RKLGFBQXhELEVBQTZFO0FBQUE7O0FBQzVFLFFBQU1LLEdBQVEsR0FBRyxFQUFqQjtBQUNBQSxJQUFBQSxHQUFHLENBQUN0RSxRQUFKLEdBQWVxRSxLQUFLLENBQUNyRSxRQUFOLElBQWtCLEVBQWpDO0FBQ0FzRSxJQUFBQSxHQUFHLENBQUMzRCxRQUFKLEdBQWUwRCxLQUFLLENBQUMxRCxRQUFyQjtBQUNBMkQsSUFBQUEsR0FBRyxDQUFDNUMsV0FBSixHQUFrQnlDLEtBQWxCO0FBQ0FHLElBQUFBLEdBQUcsQ0FBQ3RFLFFBQUosQ0FBYXVFLFFBQWIsR0FBd0JDLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQk4sS0FBSyxDQUFDZixTQUE1QixFQUN0QnNCLFdBRHNCLEdBRXRCQyxPQUZzQixFQUF4QjtBQUdBTCxJQUFBQSxHQUFHLENBQUNmLFFBQUosR0FBZWMsS0FBSyxDQUFDZCxRQUFOLElBQWtCWSxLQUFLLENBQUNaLFFBQXZDO0FBQ0FlLElBQUFBLEdBQUcsQ0FBQ3RFLFFBQUosQ0FBYXFELFVBQWIsR0FBMEIsb0JBQUFnQixLQUFLLENBQUNyRSxRQUFOLG9FQUFnQnFELFVBQWhCLHlCQUE4QmMsS0FBSyxDQUFDbkUsUUFBcEMsb0RBQThCLGdCQUFnQnFELFVBQTlDLENBQTFCO0FBQ0EsUUFBSXJELFFBQUo7O0FBQ0EsUUFBSWlFLGFBQUosRUFBbUI7QUFDbEJqRSxNQUFBQSxRQUFRLEdBQUcsSUFBSWlFLGFBQUosQ0FBa0JHLElBQWxCLEVBQXdCRSxHQUF4QixDQUFYO0FBQ0EsS0FGRCxNQUVPO0FBQ050RSxNQUFBQSxRQUFRLEdBQUcsSUFBSStELGVBQUosQ0FBb0JLLElBQXBCLEVBQTBCRSxHQUExQixDQUFYO0FBQ0E7O0FBQ0RILElBQUFBLEtBQUssQ0FBQ08sV0FBTixHQUFvQlAsS0FBSyxDQUFDZixTQUFOLENBQWdCc0IsV0FBaEIsR0FBOEIsWUFBVztBQUM1RCxhQUFPMUUsUUFBUDtBQUNBLEtBRkQ7O0FBR0EsUUFBTTRFLE1BQU0sR0FBR1QsS0FBSyxDQUFDZixTQUFOLENBQWdCeUIsSUFBL0I7O0FBQ0FWLElBQUFBLEtBQUssQ0FBQ2YsU0FBTixDQUFnQnlCLElBQWhCLEdBQXVCLFlBQXlCO0FBQUEsd0NBQWJDLElBQWE7QUFBYkEsUUFBQUEsSUFBYTtBQUFBOztBQUMvQ0YsTUFBQUEsTUFBTSxDQUFDRyxLQUFQLENBQWEsSUFBYixFQUFtQkQsSUFBbkI7QUFDQSxVQUFNRSxhQUFhLEdBQUdSLE1BQU0sQ0FBQ1MsSUFBUCxDQUFZWCxHQUFHLENBQUN0RSxRQUFKLENBQWFFLFVBQXpCLENBQXRCLENBRitDLENBRy9DOztBQUNBLFVBQU1nRixJQUFJLEdBQUcsSUFBYjtBQUNBRixNQUFBQSxhQUFhLENBQUNHLE9BQWQsQ0FBc0IsVUFBQXpFLFdBQVcsRUFBSTtBQUNwQzhELFFBQUFBLE1BQU0sQ0FBQ1ksY0FBUCxDQUFzQkYsSUFBdEIsRUFBNEJ4RSxXQUE1QixFQUF5QztBQUN4QzJFLFVBQUFBLFlBQVksRUFBRSxJQUQwQjtBQUV4Qy9DLFVBQUFBLEdBQUcsRUFBRSxVQUFDQyxDQUFELEVBQVk7QUFDaEIsbUJBQU8yQyxJQUFJLENBQUMxQyxXQUFMLENBQWlCOUIsV0FBakIsRUFBOEI2QixDQUE5QixDQUFQO0FBQ0EsV0FKdUM7QUFLeENFLFVBQUFBLEdBQUcsRUFBRSxZQUFNO0FBQ1YsbUJBQU95QyxJQUFJLENBQUN4QyxXQUFMLENBQWlCaEMsV0FBakIsQ0FBUDtBQUNBO0FBUHVDLFNBQXpDO0FBU0EsT0FWRDtBQVdBLEtBaEJEOztBQWlCQTRFLElBQUFBLFVBQVUsQ0FBQ2hELEdBQVgsQ0FBZThCLElBQWYsRUFBcUJELEtBQXJCO0FBQ0EiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJyaWRlRXhlY3V0aW9uIH0gZnJvbSBcInNhcC91aS9jb3JlL212Y1wiO1xuaW1wb3J0IHsgT2JqZWN0UGF0aCwgZGVlcENsb25lIH0gZnJvbSBcInNhcC9iYXNlL3V0aWxcIjtcbmltcG9ydCB7ICRDb250cm9sU2V0dGluZ3MsIEVsZW1lbnRNZXRhZGF0YSwgUmVuZGVyTWFuYWdlciB9IGZyb20gXCJzYXAvdWkvY29yZVwiO1xuXG5jb25zdCBlbnN1cmVNZXRhZGF0YSA9IGZ1bmN0aW9uKHRhcmdldDogYW55KSB7XG5cdGlmICghdGFyZ2V0Lmhhc093blByb3BlcnR5KFwibWV0YWRhdGFcIikpIHtcblx0XHR0YXJnZXQubWV0YWRhdGEgPSBkZWVwQ2xvbmUoXG5cdFx0XHR0YXJnZXQubWV0YWRhdGEgfHwge1xuXHRcdFx0XHRwcm9wZXJ0aWVzOiB7fSxcblx0XHRcdFx0bWFjcm9Db250ZXh0czoge30sXG5cdFx0XHRcdGFnZ3JlZ2F0aW9uczoge30sXG5cdFx0XHRcdGFzc29jaWF0aW9uczoge30sXG5cdFx0XHRcdG1ldGhvZHM6IHt9LFxuXHRcdFx0XHRldmVudHM6IHt9XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gdGFyZ2V0Lm1ldGFkYXRhO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBPdmVycmlkZShzVGFyZ2V0Pzogc3RyaW5nKSB7XG5cdHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRcdGlmICghdGFyZ2V0Lm92ZXJyaWRlKSB7XG5cdFx0XHR0YXJnZXQub3ZlcnJpZGUgPSB7fTtcblx0XHR9XG5cdFx0bGV0IGN1cnJlbnRUYXJnZXQgPSB0YXJnZXQub3ZlcnJpZGU7XG5cdFx0aWYgKHNUYXJnZXQpIHtcblx0XHRcdGlmICghY3VycmVudFRhcmdldC5leHRlbnNpb24pIHtcblx0XHRcdFx0Y3VycmVudFRhcmdldC5leHRlbnNpb24gPSB7fTtcblx0XHRcdH1cblx0XHRcdGlmICghY3VycmVudFRhcmdldC5leHRlbnNpb25bc1RhcmdldF0pIHtcblx0XHRcdFx0Y3VycmVudFRhcmdldC5leHRlbnNpb25bc1RhcmdldF0gPSB7fTtcblx0XHRcdH1cblx0XHRcdGN1cnJlbnRUYXJnZXQgPSBjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbltzVGFyZ2V0XTtcblx0XHR9XG5cdFx0Y3VycmVudFRhcmdldFtwcm9wZXJ0eUtleV0gPSB0YXJnZXRbcHJvcGVydHlLZXldO1xuXHR9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIEV4dGVuc2libGUob092ZXJyaWRlRXhlY3V0aW9uPzogT3ZlcnJpZGVFeGVjdXRpb24pIHtcblx0cmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0pIHtcblx0XHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldLm92ZXJyaWRlRXhlY3V0aW9uID0gb092ZXJyaWRlRXhlY3V0aW9uO1xuXHR9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIFB1YmxpYyh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdGlmICghbWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0pIHtcblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XSA9IHt9O1xuXHR9XG5cdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldLnB1YmxpYyA9IHRydWU7XG59XG5leHBvcnQgZnVuY3Rpb24gUHJpdmF0ZSh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdGlmICghbWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0pIHtcblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XSA9IHt9O1xuXHR9XG5cdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldLnB1YmxpYyA9IGZhbHNlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIEZpbmFsKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG5cdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XSkge1xuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldID0ge307XG5cdH1cblx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0uZmluYWwgPSB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRXZlbnQodGFyZ2V0OiBhbnksIGV2ZW50S2V5OiBzdHJpbmcpIHtcblx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRpZiAoIW1ldGFkYXRhLmV2ZW50c1tldmVudEtleV0pIHtcblx0XHRtZXRhZGF0YS5ldmVudHNbZXZlbnRLZXldID0ge307XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV2ZW50SGFuZGxlcih0YXJnZXQ6IGFueSwgcHJvcGVydHlrZXk6IGFueSkge1xuXHR0YXJnZXQuY29uc3RydWN0b3JbcHJvcGVydHlrZXldID0gZnVuY3Rpb24oLi4uYXJnczogYW55W10pIHtcblx0XHRjb25zdCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0LmNvbnN0cnVjdG9yLmdldEFQSShhcmdzWzBdIGFzIFVJNUV2ZW50KTtcblx0XHRjdXJyZW50VGFyZ2V0W3Byb3BlcnR5a2V5XSguLi5hcmdzKTtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1hY3JvQ29udGV4dChiTWV0YU1vZGVsT2JqZWN0OiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuXHRyZXR1cm4gUHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsIG1hY3JvQ29udGV4dDogdHJ1ZSwgbWV0YU1vZGVsT2JqZWN0OiBiTWV0YU1vZGVsT2JqZWN0IH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJvcGVydHkob1Byb3BlcnR5UGFyYW1zOiBhbnkpOiBhbnkge1xuXHRyZXR1cm4gZnVuY3Rpb24odGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5RGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKTogYW55IHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0aWYgKG9Qcm9wZXJ0eVBhcmFtcz8ubWFjcm9Db250ZXh0KSB7XG5cdFx0XHRpZiAoIW1ldGFkYXRhLm1hY3JvQ29udGV4dHNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRcdG1ldGFkYXRhLm1hY3JvQ29udGV4dHNbcHJvcGVydHlLZXldID0gb1Byb3BlcnR5UGFyYW1zO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIW1ldGFkYXRhLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSA9IG9Qcm9wZXJ0eVBhcmFtcztcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5zZXQgPSBmdW5jdGlvbih2OiBhbnkpIHtcblx0XHRcdHJldHVybiB0aGlzLnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCB2KTtcblx0XHR9O1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5nZXQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFByb3BlcnR5KHByb3BlcnR5S2V5KTtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFnZ3JlZ2F0aW9uKG9BZ2dyZWdhdGlvbkRlc2NyaXB0b3I/OiBhbnkpOiBhbnkge1xuXHRyZXR1cm4gZnVuY3Rpb24odGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5RGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKTogYW55IHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0aWYgKCFtZXRhZGF0YS5hZ2dyZWdhdGlvbnNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5hZ2dyZWdhdGlvbnNbcHJvcGVydHlLZXldID0gb0FnZ3JlZ2F0aW9uRGVzY3JpcHRvcjtcblx0XHR9XG5cdFx0aWYgKG9BZ2dyZWdhdGlvbkRlc2NyaXB0b3IuaXNEZWZhdWx0KSB7XG5cdFx0XHRtZXRhZGF0YS5kZWZhdWx0QWdncmVnYXRpb24gPSBwcm9wZXJ0eUtleTtcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5zZXQgPSBmdW5jdGlvbih2OiBhbnkpIHtcblx0XHRcdHJldHVybiB0aGlzLnNldEFnZ3JlZ2F0aW9uKHByb3BlcnR5S2V5LCB2KTtcblx0XHR9O1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5nZXQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKHByb3BlcnR5S2V5KTtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFzc29jaWF0aW9uKG9Bc3NvY2lhdGlvbkRlc2NyaXB0aW9uPzogYW55KTogYW55IHtcblx0cmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IGFueSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEuYXNzb2NpYXRpb25zW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0bWV0YWRhdGEuYXNzb2NpYXRpb25zW3Byb3BlcnR5S2V5XSA9IG9Bc3NvY2lhdGlvbkRlc2NyaXB0aW9uO1xuXHRcdH1cblx0XHRkZWxldGUgcHJvcGVydHlEZXNjcmlwdG9yLndyaXRhYmxlO1xuXHRcdGRlbGV0ZSAocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuaW5pdGlhbGl6ZXI7XG5cdFx0KHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLnNldCA9IGZ1bmN0aW9uKHY6IGFueSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuc2V0QWdncmVnYXRpb24ocHJvcGVydHlLZXksIHYpO1xuXHRcdH07XG5cdFx0KHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmdldCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0QWdncmVnYXRpb24ocHJvcGVydHlLZXkpO1xuXHRcdH07XG5cblx0XHRyZXR1cm4gcHJvcGVydHlEZXNjcmlwdG9yO1xuXHR9O1xufVxudHlwZSBDb250cm9sUHJvcGVydHlOYW1lczxUPiA9IHtcblx0W0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBGdW5jdGlvbiA/IG5ldmVyIDogSztcbn1ba2V5b2YgVF07XG5leHBvcnQgdHlwZSBQcm9wZXJ0aWVzT2Y8VD4gPSBQYXJ0aWFsPFBpY2s8VCwgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4+PiAmICRDb250cm9sU2V0dGluZ3M7XG5cbmV4cG9ydCBmdW5jdGlvbiBBUElDbGFzcyhzVGFyZ2V0OiBzdHJpbmcpIHtcblx0cmV0dXJuIGZ1bmN0aW9uKGNvbnN0cnVjdG9yOiBGdW5jdGlvbikge1xuXHRcdGlmICghY29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhKSB7XG5cdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEgPSB7fTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YS5pbnRlcmZhY2VzKSB7XG5cdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEuaW50ZXJmYWNlcyA9IFtdO1xuXHRcdH1cblx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEuaW50ZXJmYWNlcy5wdXNoKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpO1xuXG5cdFx0aWYgKCFjb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyZXIpIHtcblx0XHRcdGNvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXJlciA9IHtcblx0XHRcdFx0YXBpVmVyc2lvbjogMixcblx0XHRcdFx0cmVuZGVyOiBmdW5jdGlvbihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBhbnkpIHtcblx0XHRcdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5nZXRDb250ZW50KCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGRlc2NyaWJlKGNvbnN0cnVjdG9yLCBzVGFyZ2V0LCBjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIEVsZW1lbnRNZXRhZGF0YSk7XG5cdH07XG59XG5leHBvcnQgZnVuY3Rpb24gVUk1Q2xhc3Moc1RhcmdldDogc3RyaW5nLCBtZXRhZGF0YUNsYXNzPzogYW55LCBtZXRhZGF0YURlZmluaXRpb24/OiBhbnkpIHtcblx0cmV0dXJuIGZ1bmN0aW9uKGNvbnN0cnVjdG9yOiBGdW5jdGlvbikge1xuXHRcdGlmICghY29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhKSB7XG5cdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEgPSB7fTtcblx0XHR9XG5cdFx0aWYgKG1ldGFkYXRhRGVmaW5pdGlvbj8ucHJvcGVydGllcykge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhLnByb3BlcnRpZXMgPSBtZXRhZGF0YURlZmluaXRpb24ucHJvcGVydGllcztcblx0XHR9XG5cdFx0aWYgKG1ldGFkYXRhRGVmaW5pdGlvbj8uZXZlbnRzKSB7XG5cdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEuZXZlbnRzID0gbWV0YWRhdGFEZWZpbml0aW9uLmV2ZW50cztcblx0XHR9XG5cdFx0ZGVzY3JpYmUoY29uc3RydWN0b3IsIHNUYXJnZXQsIGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgbWV0YWRhdGFDbGFzcyk7XG5cdH07XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlKGNsYXp6OiBhbnksIG5hbWU6IHN0cmluZywgaW5PYmo6IGFueSwgbWV0YWRhdGFDbGFzcz86IGFueSkge1xuXHRjb25zdCBvYmo6IGFueSA9IHt9O1xuXHRvYmoubWV0YWRhdGEgPSBpbk9iai5tZXRhZGF0YSB8fCB7fTtcblx0b2JqLm92ZXJyaWRlID0gaW5PYmoub3ZlcnJpZGU7XG5cdG9iai5jb25zdHJ1Y3RvciA9IGNsYXp6O1xuXHRvYmoubWV0YWRhdGEuYmFzZVR5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2xhenoucHJvdG90eXBlKVxuXHRcdC5nZXRNZXRhZGF0YSgpXG5cdFx0LmdldE5hbWUoKTtcblx0b2JqLnJlbmRlcmVyID0gaW5PYmoucmVuZGVyZXIgfHwgY2xhenoucmVuZGVyZXI7XG5cdG9iai5tZXRhZGF0YS5pbnRlcmZhY2VzID0gaW5PYmoubWV0YWRhdGE/LmludGVyZmFjZXMgfHwgY2xhenoubWV0YWRhdGE/LmludGVyZmFjZXM7XG5cdGxldCBtZXRhZGF0YTogYW55O1xuXHRpZiAobWV0YWRhdGFDbGFzcykge1xuXHRcdG1ldGFkYXRhID0gbmV3IG1ldGFkYXRhQ2xhc3MobmFtZSwgb2JqKTtcblx0fSBlbHNlIHtcblx0XHRtZXRhZGF0YSA9IG5ldyBFbGVtZW50TWV0YWRhdGEobmFtZSwgb2JqKTtcblx0fVxuXHRjbGF6ei5nZXRNZXRhZGF0YSA9IGNsYXp6LnByb3RvdHlwZS5nZXRNZXRhZGF0YSA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBtZXRhZGF0YTtcblx0fTtcblx0Y29uc3QgZm5Jbml0ID0gY2xhenoucHJvdG90eXBlLmluaXQ7XG5cdGNsYXp6LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oLi4uYXJnczogYW55W10pIHtcblx0XHRmbkluaXQuYXBwbHkodGhpcywgYXJncyk7XG5cdFx0Y29uc3QgYVByb3BlcnR5S2V5cyA9IE9iamVjdC5rZXlzKG9iai5tZXRhZGF0YS5wcm9wZXJ0aWVzKTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRhUHJvcGVydHlLZXlzLmZvckVhY2gocHJvcGVydHlLZXkgPT4ge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoYXQsIHByb3BlcnR5S2V5LCB7XG5cdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0c2V0OiAodjogYW55KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoYXQuc2V0UHJvcGVydHkocHJvcGVydHlLZXksIHYpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRnZXQ6ICgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhhdC5nZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xuXHRPYmplY3RQYXRoLnNldChuYW1lLCBjbGF6eik7XG59XG4iXX0=
|
|
326
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNsYXNzU3VwcG9ydC50cyJdLCJuYW1lcyI6WyJlbnN1cmVNZXRhZGF0YSIsInRhcmdldCIsImhhc093blByb3BlcnR5IiwibWV0YWRhdGEiLCJkZWVwQ2xvbmUiLCJwcm9wZXJ0aWVzIiwibWFjcm9Db250ZXh0cyIsImFnZ3JlZ2F0aW9ucyIsImFzc29jaWF0aW9ucyIsIm1ldGhvZHMiLCJldmVudHMiLCJPdmVycmlkZSIsInNUYXJnZXQiLCJwcm9wZXJ0eUtleSIsIm92ZXJyaWRlIiwiY3VycmVudFRhcmdldCIsImV4dGVuc2lvbiIsIkV4dGVuc2libGUiLCJvT3ZlcnJpZGVFeGVjdXRpb24iLCJvdmVycmlkZUV4ZWN1dGlvbiIsIlB1YmxpYyIsInB1YmxpYyIsIlByaXZhdGUiLCJGaW5hbCIsImZpbmFsIiwiRXZlbnQiLCJldmVudEtleSIsIkV2ZW50SGFuZGxlciIsInByb3BlcnR5a2V5IiwiY29uc3RydWN0b3IiLCJnZXRBUEkiLCJNYWNyb0NvbnRleHQiLCJiTWV0YU1vZGVsT2JqZWN0IiwiUHJvcGVydHkiLCJ0eXBlIiwibWFjcm9Db250ZXh0IiwibWV0YU1vZGVsT2JqZWN0Iiwib1Byb3BlcnR5UGFyYW1zIiwicHJvcGVydHlEZXNjcmlwdG9yIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsInNldCIsInYiLCJzZXRQcm9wZXJ0eSIsImdldCIsImdldFByb3BlcnR5IiwiQWdncmVnYXRpb24iLCJvQWdncmVnYXRpb25EZXNjcmlwdG9yIiwiaXNEZWZhdWx0IiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwic2V0QWdncmVnYXRpb24iLCJnZXRBZ2dyZWdhdGlvbiIsIkFzc29jaWF0aW9uIiwib0Fzc29jaWF0aW9uRGVzY3JpcHRpb24iLCJBUElDbGFzcyIsImlzRGVwZW5kZW50Qm91bmQiLCJwcm90b3R5cGUiLCJpbnRlcmZhY2VzIiwicHVzaCIsInJlbmRlcmVyIiwiYXBpVmVyc2lvbiIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImdldENvbnRlbnQiLCJkZXNjcmliZSIsIkVsZW1lbnRNZXRhZGF0YSIsIlVJNUNsYXNzIiwibWV0YWRhdGFDbGFzcyIsIm1ldGFkYXRhRGVmaW5pdGlvbiIsImNsYXp6IiwibmFtZSIsImluT2JqIiwib2JqIiwiYmFzZVR5cGUiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsImZuSW5pdCIsImluaXQiLCJhcmdzIiwiYXBwbHkiLCJhUHJvcGVydHlLZXlzIiwia2V5cyIsInRoYXQiLCJmb3JFYWNoIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJPYmplY3RQYXRoIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFJQSxNQUFNQSxjQUFjLEdBQUcsVUFBU0MsTUFBVCxFQUFzQjtBQUM1QyxRQUFJLENBQUNBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQixVQUF0QixDQUFMLEVBQXdDO0FBQ3ZDRCxNQUFBQSxNQUFNLENBQUNFLFFBQVAsR0FBa0JDLFNBQVMsQ0FDMUJILE1BQU0sQ0FBQ0UsUUFBUCxJQUFtQjtBQUNsQkUsUUFBQUEsVUFBVSxFQUFFLEVBRE07QUFFbEJDLFFBQUFBLGFBQWEsRUFBRSxFQUZHO0FBR2xCQyxRQUFBQSxZQUFZLEVBQUUsRUFISTtBQUlsQkMsUUFBQUEsWUFBWSxFQUFFLEVBSkk7QUFLbEJDLFFBQUFBLE9BQU8sRUFBRSxFQUxTO0FBTWxCQyxRQUFBQSxNQUFNLEVBQUU7QUFOVSxPQURPLENBQTNCO0FBVUE7O0FBQ0QsV0FBT1QsTUFBTSxDQUFDRSxRQUFkO0FBQ0EsR0FkRDs7QUFlTyxXQUFTUSxRQUFULENBQWtCQyxPQUFsQixFQUFvQztBQUMxQyxXQUFPLFVBQVNYLE1BQVQsRUFBc0JZLFdBQXRCLEVBQTJDO0FBQ2pELFVBQUksQ0FBQ1osTUFBTSxDQUFDYSxRQUFaLEVBQXNCO0FBQ3JCYixRQUFBQSxNQUFNLENBQUNhLFFBQVAsR0FBa0IsRUFBbEI7QUFDQTs7QUFDRCxVQUFJQyxhQUFh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LElBQUksQ0FBQzNDLFdBQUwsQ0FBaUI5QixXQUFqQixFQUE4QjZCLENBQTlCLENBQVA7QUFDQSxhQUp1QztBQUt4Q0UsWUFBQUEsR0FBRyxFQUFFLFlBQU07QUFDVixxQkFBTzBDLElBQUksQ0FBQ3pDLFdBQUwsQ0FBaUJoQyxXQUFqQixDQUFQO0FBQ0E7QUFQdUMsV0FBekM7QUFTQSxTQVZEO0FBV0E7QUFDRCxLQWxCRDs7QUFtQkE2RSxJQUFBQSxVQUFVLENBQUNqRCxHQUFYLENBQWUrQixJQUFmLEVBQXFCRCxLQUFyQjtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IE9iamVjdFBhdGggZnJvbSBcInNhcC9iYXNlL3V0aWwvT2JqZWN0UGF0aFwiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCBFbGVtZW50TWV0YWRhdGEgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRNZXRhZGF0YVwiO1xuaW1wb3J0IFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcblxuY29uc3QgZW5zdXJlTWV0YWRhdGEgPSBmdW5jdGlvbih0YXJnZXQ6IGFueSkge1xuXHRpZiAoIXRhcmdldC5oYXNPd25Qcm9wZXJ0eShcIm1ldGFkYXRhXCIpKSB7XG5cdFx0dGFyZ2V0Lm1ldGFkYXRhID0gZGVlcENsb25lKFxuXHRcdFx0dGFyZ2V0Lm1ldGFkYXRhIHx8IHtcblx0XHRcdFx0cHJvcGVydGllczoge30sXG5cdFx0XHRcdG1hY3JvQ29udGV4dHM6IHt9LFxuXHRcdFx0XHRhZ2dyZWdhdGlvbnM6IHt9LFxuXHRcdFx0XHRhc3NvY2lhdGlvbnM6IHt9LFxuXHRcdFx0XHRtZXRob2RzOiB7fSxcblx0XHRcdFx0ZXZlbnRzOiB7fVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIHRhcmdldC5tZXRhZGF0YTtcbn07XG5leHBvcnQgZnVuY3Rpb24gT3ZlcnJpZGUoc1RhcmdldD86IHN0cmluZykge1xuXHRyZXR1cm4gZnVuY3Rpb24odGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblx0XHRpZiAoIXRhcmdldC5vdmVycmlkZSkge1xuXHRcdFx0dGFyZ2V0Lm92ZXJyaWRlID0ge307XG5cdFx0fVxuXHRcdGxldCBjdXJyZW50VGFyZ2V0ID0gdGFyZ2V0Lm92ZXJyaWRlO1xuXHRcdGlmIChzVGFyZ2V0KSB7XG5cdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uKSB7XG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW3NUYXJnZXRdKSB7XG5cdFx0XHRcdGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW3NUYXJnZXRdID0ge307XG5cdFx0XHR9XG5cdFx0XHRjdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldC5leHRlbnNpb25bc1RhcmdldF07XG5cdFx0fVxuXHRcdGN1cnJlbnRUYXJnZXRbcHJvcGVydHlLZXldID0gdGFyZ2V0W3Byb3BlcnR5S2V5XTtcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBFeHRlbnNpYmxlKG9PdmVycmlkZUV4ZWN1dGlvbj86IE92ZXJyaWRlRXhlY3V0aW9uKSB7XG5cdHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XSA9IHt9O1xuXHRcdH1cblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XS5vdmVycmlkZUV4ZWN1dGlvbiA9IG9PdmVycmlkZUV4ZWN1dGlvbjtcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBQdWJsaWModGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldKSB7XG5cdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0gPSB7fTtcblx0fVxuXHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XS5wdWJsaWMgPSB0cnVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFByaXZhdGUodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcblx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRpZiAoIW1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldKSB7XG5cdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0gPSB7fTtcblx0fVxuXHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XS5wdWJsaWMgPSBmYWxzZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBGaW5hbCh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuXHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdGlmICghbWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleV0pIHtcblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5XSA9IHt9O1xuXHR9XG5cdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXldLmZpbmFsID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV2ZW50KHRhcmdldDogYW55LCBldmVudEtleTogc3RyaW5nKSB7XG5cdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0aWYgKCFtZXRhZGF0YS5ldmVudHNbZXZlbnRLZXldKSB7XG5cdFx0bWV0YWRhdGEuZXZlbnRzW2V2ZW50S2V5XSA9IHt9O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFdmVudEhhbmRsZXIodGFyZ2V0OiBhbnksIHByb3BlcnR5a2V5OiBhbnkpIHtcblx0dGFyZ2V0LmNvbnN0cnVjdG9yW3Byb3BlcnR5a2V5XSA9IGZ1bmN0aW9uKC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0Y29uc3QgY3VycmVudFRhcmdldCA9IHRhcmdldC5jb25zdHJ1Y3Rvci5nZXRBUEkoYXJnc1swXSBhcyBVSTVFdmVudCk7XG5cdFx0Y3VycmVudFRhcmdldFtwcm9wZXJ0eWtleV0oLi4uYXJncyk7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNYWNyb0NvbnRleHQoYk1ldGFNb2RlbE9iamVjdDogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcblx0cmV0dXJuIFByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLCBtYWNyb0NvbnRleHQ6IHRydWUsIG1ldGFNb2RlbE9iamVjdDogYk1ldGFNb2RlbE9iamVjdCB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByb3BlcnR5KG9Qcm9wZXJ0eVBhcmFtczogYW55KTogYW55IHtcblx0cmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IGFueSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmIChvUHJvcGVydHlQYXJhbXM/Lm1hY3JvQ29udGV4dCkge1xuXHRcdFx0aWYgKCFtZXRhZGF0YS5tYWNyb0NvbnRleHRzW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0XHRtZXRhZGF0YS5tYWNyb0NvbnRleHRzW3Byb3BlcnR5S2V5XSA9IG9Qcm9wZXJ0eVBhcmFtcztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKCFtZXRhZGF0YS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0bWV0YWRhdGEucHJvcGVydGllc1twcm9wZXJ0eUtleV0gPSBvUHJvcGVydHlQYXJhbXM7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuc2V0ID0gZnVuY3Rpb24odjogYW55KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5zZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSwgdik7XG5cdFx0fTtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuZ2V0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSk7XG5cdFx0fTtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZ2dyZWdhdGlvbihvQWdncmVnYXRpb25EZXNjcmlwdG9yPzogYW55KTogYW55IHtcblx0cmV0dXJuIGZ1bmN0aW9uKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IGFueSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEuYWdncmVnYXRpb25zW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0bWV0YWRhdGEuYWdncmVnYXRpb25zW3Byb3BlcnR5S2V5XSA9IG9BZ2dyZWdhdGlvbkRlc2NyaXB0b3I7XG5cdFx0fVxuXHRcdGlmIChvQWdncmVnYXRpb25EZXNjcmlwdG9yLmlzRGVmYXVsdCkge1xuXHRcdFx0bWV0YWRhdGEuZGVmYXVsdEFnZ3JlZ2F0aW9uID0gcHJvcGVydHlLZXk7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuc2V0ID0gZnVuY3Rpb24odjogYW55KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5zZXRBZ2dyZWdhdGlvbihwcm9wZXJ0eUtleSwgdik7XG5cdFx0fTtcblx0XHQocHJvcGVydHlEZXNjcmlwdG9yIGFzIGFueSkuZ2V0ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRBZ2dyZWdhdGlvbihwcm9wZXJ0eUtleSk7XG5cdFx0fTtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBc3NvY2lhdGlvbihvQXNzb2NpYXRpb25EZXNjcmlwdGlvbj86IGFueSk6IGFueSB7XG5cdHJldHVybiBmdW5jdGlvbih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlEZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiBhbnkge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAoIW1ldGFkYXRhLmFzc29jaWF0aW9uc1twcm9wZXJ0eUtleV0pIHtcblx0XHRcdG1ldGFkYXRhLmFzc29jaWF0aW9uc1twcm9wZXJ0eUtleV0gPSBvQXNzb2NpYXRpb25EZXNjcmlwdGlvbjtcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5zZXQgPSBmdW5jdGlvbih2OiBhbnkpIHtcblx0XHRcdHJldHVybiB0aGlzLnNldEFnZ3JlZ2F0aW9uKHByb3BlcnR5S2V5LCB2KTtcblx0XHR9O1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5nZXQgPSBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKHByb3BlcnR5S2V5KTtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fTtcbn1cbnR5cGUgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xuZXhwb3J0IHR5cGUgUHJvcGVydGllc09mPFQ+ID0gUGFydGlhbDxQaWNrPFQsIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+Pj47XG5cbi8qKlxuICogRGVjb3JhdG9yIHRvIHByb3ZpZGUgYSBuZXcgQVBJIGNsYXNzIHRvIGJlIHVzZWQgaW4gdGhlIG1hY3Jvcy5cbiAqXG4gKiBAcGFyYW0gc1RhcmdldCBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG1hY3JvIEFQSVxuICogQHBhcmFtIGlzRGVwZW5kZW50Qm91bmQgV2hldGhlciB0aGlzIEFQSSB3aWxsIGJlIHVzZWQgYXMgYSBkZXBlbmRlbnQgb3Igbm90XG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFQSUNsYXNzKHNUYXJnZXQ6IHN0cmluZywgaXNEZXBlbmRlbnRCb3VuZCA9IGZhbHNlKSB7XG5cdHJldHVybiBmdW5jdGlvbihjb25zdHJ1Y3RvcjogRnVuY3Rpb24pIHtcblx0XHRpZiAoIWNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YSkge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhID0ge307XG5cdFx0fVxuXG5cdFx0aWYgKCFjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEuaW50ZXJmYWNlcykge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhLmludGVyZmFjZXMgPSBbXTtcblx0XHR9XG5cdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhLmludGVyZmFjZXMucHVzaChcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKTtcblx0XHQoY29uc3RydWN0b3IgYXMgYW55KS5pc0RlcGVuZGVudEJvdW5kID0gaXNEZXBlbmRlbnRCb3VuZDtcblx0XHRpZiAoIWNvbnN0cnVjdG9yLnByb3RvdHlwZS5yZW5kZXJlcikge1xuXHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlcmVyID0ge1xuXHRcdFx0XHRhcGlWZXJzaW9uOiAyLFxuXHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IGFueSkge1xuXHRcdFx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmdldENvbnRlbnQoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0ZGVzY3JpYmUoY29uc3RydWN0b3IsIHNUYXJnZXQsIGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgRWxlbWVudE1ldGFkYXRhKTtcblx0fTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBVSTVDbGFzcyhzVGFyZ2V0OiBzdHJpbmcsIG1ldGFkYXRhQ2xhc3M/OiBhbnksIG1ldGFkYXRhRGVmaW5pdGlvbj86IGFueSkge1xuXHRyZXR1cm4gZnVuY3Rpb24oY29uc3RydWN0b3I6IEZ1bmN0aW9uKSB7XG5cdFx0aWYgKCFjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEpIHtcblx0XHRcdGNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YSA9IHt9O1xuXHRcdH1cblx0XHRpZiAobWV0YWRhdGFEZWZpbml0aW9uPy5wcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEucHJvcGVydGllcyA9IG1ldGFkYXRhRGVmaW5pdGlvbi5wcm9wZXJ0aWVzO1xuXHRcdH1cblx0XHRpZiAobWV0YWRhdGFEZWZpbml0aW9uPy5ldmVudHMpIHtcblx0XHRcdGNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YS5ldmVudHMgPSBtZXRhZGF0YURlZmluaXRpb24uZXZlbnRzO1xuXHRcdH1cblx0XHRkZXNjcmliZShjb25zdHJ1Y3Rvciwgc1RhcmdldCwgY29uc3RydWN0b3IucHJvdG90eXBlLCBtZXRhZGF0YUNsYXNzKTtcblx0fTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmUoY2xheno6IGFueSwgbmFtZTogc3RyaW5nLCBpbk9iajogYW55LCBtZXRhZGF0YUNsYXNzPzogYW55KSB7XG5cdGNvbnN0IG9iajogYW55ID0ge307XG5cdG9iai5tZXRhZGF0YSA9IGluT2JqLm1ldGFkYXRhIHx8IHt9O1xuXHRvYmoub3ZlcnJpZGUgPSBpbk9iai5vdmVycmlkZTtcblx0b2JqLmNvbnN0cnVjdG9yID0gY2xheno7XG5cdG9iai5tZXRhZGF0YS5iYXNlVHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGF6ei5wcm90b3R5cGUpXG5cdFx0LmdldE1ldGFkYXRhKClcblx0XHQuZ2V0TmFtZSgpO1xuXHRvYmoucmVuZGVyZXIgPSBpbk9iai5yZW5kZXJlciB8fCBjbGF6ei5yZW5kZXJlcjtcblx0b2JqLm1ldGFkYXRhLmludGVyZmFjZXMgPSBpbk9iai5tZXRhZGF0YT8uaW50ZXJmYWNlcyB8fCBjbGF6ei5tZXRhZGF0YT8uaW50ZXJmYWNlcztcblx0bGV0IG1ldGFkYXRhOiBhbnk7XG5cdGlmIChtZXRhZGF0YUNsYXNzKSB7XG5cdFx0bWV0YWRhdGEgPSBuZXcgbWV0YWRhdGFDbGFzcyhuYW1lLCBvYmopO1xuXHR9IGVsc2Uge1xuXHRcdG1ldGFkYXRhID0gbmV3IEVsZW1lbnRNZXRhZGF0YShuYW1lLCBvYmopO1xuXHR9XG5cdGNsYXp6LmdldE1ldGFkYXRhID0gY2xhenoucHJvdG90eXBlLmdldE1ldGFkYXRhID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIG1ldGFkYXRhO1xuXHR9O1xuXHRjb25zdCBmbkluaXQgPSBjbGF6ei5wcm90b3R5cGUuaW5pdDtcblx0Y2xhenoucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSkge1xuXHRcdGZuSW5pdCAmJiBmbkluaXQuYXBwbHkodGhpcywgYXJncyk7XG5cdFx0aWYgKG9iai5tZXRhZGF0YS5wcm9wZXJ0aWVzKSB7XG5cdFx0XHRjb25zdCBhUHJvcGVydHlLZXlzID0gT2JqZWN0LmtleXMob2JqLm1ldGFkYXRhLnByb3BlcnRpZXMpO1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdGFQcm9wZXJ0eUtleXMuZm9yRWFjaChwcm9wZXJ0eUtleSA9PiB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGF0LCBwcm9wZXJ0eUtleSwge1xuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRzZXQ6ICh2OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGF0LnNldFByb3BlcnR5KHByb3BlcnR5S2V5LCB2KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoYXQuZ2V0UHJvcGVydHkocHJvcGVydHlLZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH07XG5cdE9iamVjdFBhdGguc2V0KG5hbWUsIGNsYXp6KTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
2
|
+
import ObjectPath from "sap/base/util/ObjectPath";
|
|
3
|
+
import deepClone from "sap/base/util/deepClone";
|
|
4
|
+
import ElementMetadata from "sap/ui/core/ElementMetadata";
|
|
5
|
+
import RenderManager from "sap/ui/core/RenderManager";
|
|
4
6
|
|
|
5
7
|
const ensureMetadata = function(target: any) {
|
|
6
8
|
if (!target.hasOwnProperty("metadata")) {
|
|
@@ -151,9 +153,16 @@ export function Association(oAssociationDescription?: any): any {
|
|
|
151
153
|
type ControlPropertyNames<T> = {
|
|
152
154
|
[K in keyof T]: T[K] extends Function ? never : K;
|
|
153
155
|
}[keyof T];
|
|
154
|
-
export type PropertiesOf<T> = Partial<Pick<T, ControlPropertyNames<T
|
|
156
|
+
export type PropertiesOf<T> = Partial<Pick<T, ControlPropertyNames<T>>>;
|
|
155
157
|
|
|
156
|
-
|
|
158
|
+
/**
|
|
159
|
+
* Decorator to provide a new API class to be used in the macros.
|
|
160
|
+
*
|
|
161
|
+
* @param sTarget The fully qualified name of the macro API
|
|
162
|
+
* @param isDependentBound Whether this API will be used as a dependent or not
|
|
163
|
+
* @class
|
|
164
|
+
*/
|
|
165
|
+
export function APIClass(sTarget: string, isDependentBound = false) {
|
|
157
166
|
return function(constructor: Function) {
|
|
158
167
|
if (!constructor.prototype.metadata) {
|
|
159
168
|
constructor.prototype.metadata = {};
|
|
@@ -163,7 +172,7 @@ export function APIClass(sTarget: string) {
|
|
|
163
172
|
constructor.prototype.metadata.interfaces = [];
|
|
164
173
|
}
|
|
165
174
|
constructor.prototype.metadata.interfaces.push("sap.ui.core.IFormContent");
|
|
166
|
-
|
|
175
|
+
(constructor as any).isDependentBound = isDependentBound;
|
|
167
176
|
if (!constructor.prototype.renderer) {
|
|
168
177
|
constructor.prototype.renderer = {
|
|
169
178
|
apiVersion: 2,
|
|
@@ -212,21 +221,23 @@ function describe(clazz: any, name: string, inObj: any, metadataClass?: any) {
|
|
|
212
221
|
};
|
|
213
222
|
const fnInit = clazz.prototype.init;
|
|
214
223
|
clazz.prototype.init = function(...args: any[]) {
|
|
215
|
-
fnInit.apply(this, args);
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
224
|
+
fnInit && fnInit.apply(this, args);
|
|
225
|
+
if (obj.metadata.properties) {
|
|
226
|
+
const aPropertyKeys = Object.keys(obj.metadata.properties);
|
|
227
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
228
|
+
const that = this;
|
|
229
|
+
aPropertyKeys.forEach(propertyKey => {
|
|
230
|
+
Object.defineProperty(that, propertyKey, {
|
|
231
|
+
configurable: true,
|
|
232
|
+
set: (v: any) => {
|
|
233
|
+
return that.setProperty(propertyKey, v);
|
|
234
|
+
},
|
|
235
|
+
get: () => {
|
|
236
|
+
return that.getProperty(propertyKey);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
228
239
|
});
|
|
229
|
-
}
|
|
240
|
+
}
|
|
230
241
|
};
|
|
231
242
|
ObjectPath.set(name, clazz);
|
|
232
243
|
}
|
|
@@ -1,61 +1,65 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SAPUI5
|
|
3
|
-
*
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/ui/base/BindingParser"], function(BindingParser) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
5
|
+
sap.ui.define(["sap/ui/base/BindingParser"], function (BindingParser) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
function getObject(oObject, sPath) {
|
|
9
|
+
if (!oObject) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
var sPathSplit = sPath.split("/");
|
|
14
|
+
|
|
15
|
+
if (sPathSplit.length === 1) {
|
|
16
|
+
return oObject[sPath];
|
|
17
|
+
} else {
|
|
18
|
+
return getObject(oObject[sPathSplit[0]], sPathSplit.splice(1).join("/"));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a dynamic annotation path down to a standard annotation path.
|
|
23
|
+
*
|
|
24
|
+
* @param sAnnotationPath
|
|
25
|
+
* @param oMetaModel
|
|
26
|
+
* @returns {string} The non dynamic version of the annotation path
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
function resolveDynamicExpression(sAnnotationPath, oMetaModel) {
|
|
31
|
+
if (sAnnotationPath.indexOf("[") !== -1) {
|
|
32
|
+
var firstBracket = sAnnotationPath.indexOf("[");
|
|
33
|
+
var sStableBracket = sAnnotationPath.substr(0, firstBracket);
|
|
34
|
+
var sRest = sAnnotationPath.substr(firstBracket + 1);
|
|
35
|
+
var lastBracket = sRest.indexOf("]");
|
|
36
|
+
var aValue = oMetaModel.getObject(sStableBracket);
|
|
37
|
+
var oExpression = BindingParser.parseExpression(sRest.substr(0, lastBracket));
|
|
38
|
+
|
|
39
|
+
if (Array.isArray(aValue) && oExpression && oExpression.result && oExpression.result.parts && oExpression.result.parts[0] && oExpression.result.parts[0].path) {
|
|
40
|
+
var i;
|
|
41
|
+
var bFound = false;
|
|
42
|
+
|
|
43
|
+
for (i = 0; i < aValue.length && !bFound; i++) {
|
|
44
|
+
var oObjectValue = getObject(aValue[i], oExpression.result.parts[0].path);
|
|
45
|
+
var bResult = oExpression.result.formatter(oObjectValue);
|
|
46
|
+
|
|
47
|
+
if (bResult) {
|
|
48
|
+
bFound = true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (bFound) {
|
|
53
|
+
sAnnotationPath = resolveDynamicExpression(sStableBracket + (i - 1) + sRest.substr(lastBracket + 1), oMetaModel);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return sAnnotationPath;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
resolveDynamicExpression: resolveDynamicExpression
|
|
63
|
+
};
|
|
64
|
+
}, false);
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR5bmFtaWNBbm5vdGF0aW9uUGF0aEhlbHBlci50cyJdLCJuYW1lcyI6WyJnZXRPYmplY3QiLCJvT2JqZWN0Iiwic1BhdGgiLCJzUGF0aFNwbGl0Iiwic3BsaXQiLCJsZW5ndGgiLCJzcGxpY2UiLCJqb2luIiwicmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIiwic0Fubm90YXRpb25QYXRoIiwib01ldGFNb2RlbCIsImluZGV4T2YiLCJmaXJzdEJyYWNrZXQiLCJzU3RhYmxlQnJhY2tldCIsInN1YnN0ciIsInNSZXN0IiwibGFzdEJyYWNrZXQiLCJhVmFsdWUiLCJvRXhwcmVzc2lvbiIsIkJpbmRpbmdQYXJzZXIiLCJwYXJzZUV4cHJlc3Npb24iLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJwYXJ0cyIsInBhdGgiLCJpIiwiYkZvdW5kIiwib09iamVjdFZhbHVlIiwiYlJlc3VsdCIsImZvcm1hdHRlciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUFBLFdBQVNBLFNBQVQsQ0FBbUJDLE9BQW5CLEVBQWlDQyxLQUFqQyxFQUFrRDtBQUNqRCxRQUFJLENBQUNELE9BQUwsRUFBYztBQUNiLGFBQU8sSUFBUDtBQUNBOztBQUNELFFBQU1FLFVBQVUsR0FBR0QsS0FBSyxDQUFDRSxLQUFOLENBQVksR0FBWixDQUFuQjs7QUFDQSxRQUFJRCxVQUFVLENBQUNFLE1BQVgsS0FBc0IsQ0FBMUIsRUFBNkI7QUFDNUIsYUFBT0osT0FBTyxDQUFDQyxLQUFELENBQWQ7QUFDQSxLQUZELE1BRU87QUFDTixhQUFPRixTQUFTLENBQUNDLE9BQU8sQ0FBQ0UsVUFBVSxDQUFDLENBQUQsQ0FBWCxDQUFSLEVBQXlCQSxVQUFVLENBQUNHLE1BQVgsQ0FBa0IsQ0FBbEIsRUFBcUJDLElBQXJCLENBQTBCLEdBQTFCLENBQXpCLENBQWhCO0FBQ0E7QUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxXQUFTQyx3QkFBVCxDQUFrQ0MsZUFBbEMsRUFBd0RDLFVBQXhELEVBQXlFO0FBQ3hFLFFBQUlELGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsR0FBeEIsTUFBaUMsQ0FBQyxDQUF0QyxFQUF5QztBQUN4QyxVQUFNQyxZQUFZLEdBQUdILGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsR0FBeEIsQ0FBckI7QUFDQSxVQUFNRSxjQUFjLEdBQUdKLGVBQWUsQ0FBQ0ssTUFBaEIsQ0FBdUIsQ0FBdkIsRUFBMEJGLFlBQTFCLENBQXZCO0FBQ0EsVUFBTUcsS0FBSyxHQUFHTixlQUFlLENBQUNLLE1BQWhCLENBQXVCRixZQUFZLEdBQUcsQ0FBdEMsQ0FBZDtBQUNBLFVBQU1JLFdBQVcsR0FBR0QsS0FBSyxDQUFDSixPQUFOLENBQWMsR0FBZCxDQUFwQjtBQUNBLFVBQU1NLE1BQU0sR0FBR1AsVUFBVSxDQUFDVixTQUFYLENBQXFCYSxjQUFyQixDQUFmO0FBQ0EsVUFBTUssV0FBVyxHQUFHQyxhQUFhLENBQUNDLGVBQWQsQ0FBOEJMLEtBQUssQ0FBQ0QsTUFBTixDQUFhLENBQWIsRUFBZ0JFLFdBQWhCLENBQTlCLENBQXBCOztBQUNBLFVBQ0NLLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxNQUFkLEtBQ0FDLFdBREEsSUFFQUEsV0FBVyxDQUFDSyxNQUZaLElBR0FMLFdBQVcsQ0FBQ0ssTUFBWixDQUFtQkMsS0FIbkIsSUFJQU4sV0FBVyxDQUFDSyxNQUFaLENBQW1CQyxLQUFuQixDQUF5QixDQUF6QixDQUpBLElBS0FOLFdBQVcsQ0FBQ0ssTUFBWixDQUFtQkMsS0FBbkIsQ0FBeUIsQ0FBekIsRUFBNEJDLElBTjdCLEVBT0U7QUFDRCxZQUFJQyxDQUFKO0FBQ0EsWUFBSUMsTUFBTSxHQUFHLEtBQWI7O0FBQ0EsYUFBS0QsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHVCxNQUFNLENBQUNaLE1BQVgsSUFBcUIsQ0FBQ3NCLE1BQWxDLEVBQTBDRCxDQUFDLEVBQTNDLEVBQStDO0FBQzlDLGNBQU1FLFlBQVksR0FBRzVCLFNBQVMsQ0FBQ2lCLE1BQU0sQ0FBQ1MsQ0FBRCxDQUFQLEVBQVlSLFdBQVcsQ0FBQ0ssTUFBWixDQUFtQkMsS0FBbkIsQ0FBeUIsQ0FBekIsRUFBNEJDLElBQXhDLENBQTlCO0FBQ0EsY0FBTUksT0FBTyxHQUFHWCxXQUFXLENBQUNLLE1BQVosQ0FBbUJPLFNBQW5CLENBQTZCRixZQUE3QixDQUFoQjs7QUFDQSxjQUFJQyxPQUFKLEVBQWE7QUFDWkYsWUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDQTtBQUNEOztBQUNELFlBQUlBLE1BQUosRUFBWTtBQUNYbEIsVUFBQUEsZUFBZSxHQUFHRCx3QkFBd0IsQ0FBQ0ssY0FBYyxJQUFJYSxDQUFDLEdBQUcsQ0FBUixDQUFkLEdBQTJCWCxLQUFLLENBQUNELE1BQU4sQ0FBYUUsV0FBVyxHQUFHLENBQTNCLENBQTVCLEVBQTJETixVQUEzRCxDQUExQztBQUNBO0FBQ0Q7QUFDRDs7QUFDRCxXQUFPRCxlQUFQO0FBQ0E7O1NBRWM7QUFDZEQsSUFBQUEsd0JBQXdCLEVBQUVBO0FBRFosRyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpbmRpbmdQYXJzZXIgZnJvbSBcInNhcC91aS9iYXNlL0JpbmRpbmdQYXJzZXJcIjtcblxuZnVuY3Rpb24gZ2V0T2JqZWN0KG9PYmplY3Q6IGFueSwgc1BhdGg6IGFueSk6IGFueSB7XG5cdGlmICghb09iamVjdCkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IHNQYXRoU3BsaXQgPSBzUGF0aC5zcGxpdChcIi9cIik7XG5cdGlmIChzUGF0aFNwbGl0Lmxlbmd0aCA9PT0gMSkge1xuXHRcdHJldHVybiBvT2JqZWN0W3NQYXRoXTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZ2V0T2JqZWN0KG9PYmplY3Rbc1BhdGhTcGxpdFswXV0sIHNQYXRoU3BsaXQuc3BsaWNlKDEpLmpvaW4oXCIvXCIpKTtcblx0fVxufVxuLyoqXG4gKiBSZXNvbHZlIGEgZHluYW1pYyBhbm5vdGF0aW9uIHBhdGggZG93biB0byBhIHN0YW5kYXJkIGFubm90YXRpb24gcGF0aC5cbiAqXG4gKiBAcGFyYW0gc0Fubm90YXRpb25QYXRoXG4gKiBAcGFyYW0gb01ldGFNb2RlbFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIG5vbiBkeW5hbWljIHZlcnNpb24gb2YgdGhlIGFubm90YXRpb24gcGF0aFxuICovXG5mdW5jdGlvbiByZXNvbHZlRHluYW1pY0V4cHJlc3Npb24oc0Fubm90YXRpb25QYXRoOiBhbnksIG9NZXRhTW9kZWw6IGFueSkge1xuXHRpZiAoc0Fubm90YXRpb25QYXRoLmluZGV4T2YoXCJbXCIpICE9PSAtMSkge1xuXHRcdGNvbnN0IGZpcnN0QnJhY2tldCA9IHNBbm5vdGF0aW9uUGF0aC5pbmRleE9mKFwiW1wiKTtcblx0XHRjb25zdCBzU3RhYmxlQnJhY2tldCA9IHNBbm5vdGF0aW9uUGF0aC5zdWJzdHIoMCwgZmlyc3RCcmFja2V0KTtcblx0XHRjb25zdCBzUmVzdCA9IHNBbm5vdGF0aW9uUGF0aC5zdWJzdHIoZmlyc3RCcmFja2V0ICsgMSk7XG5cdFx0Y29uc3QgbGFzdEJyYWNrZXQgPSBzUmVzdC5pbmRleE9mKFwiXVwiKTtcblx0XHRjb25zdCBhVmFsdWUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChzU3RhYmxlQnJhY2tldCk7XG5cdFx0Y29uc3Qgb0V4cHJlc3Npb24gPSBCaW5kaW5nUGFyc2VyLnBhcnNlRXhwcmVzc2lvbihzUmVzdC5zdWJzdHIoMCwgbGFzdEJyYWNrZXQpKTtcblx0XHRpZiAoXG5cdFx0XHRBcnJheS5pc0FycmF5KGFWYWx1ZSkgJiZcblx0XHRcdG9FeHByZXNzaW9uICYmXG5cdFx0XHRvRXhwcmVzc2lvbi5yZXN1bHQgJiZcblx0XHRcdG9FeHByZXNzaW9uLnJlc3VsdC5wYXJ0cyAmJlxuXHRcdFx0b0V4cHJlc3Npb24ucmVzdWx0LnBhcnRzWzBdICYmXG5cdFx0XHRvRXhwcmVzc2lvbi5yZXN1bHQucGFydHNbMF0ucGF0aFxuXHRcdCkge1xuXHRcdFx0bGV0IGk7XG5cdFx0XHRsZXQgYkZvdW5kID0gZmFsc2U7XG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgYVZhbHVlLmxlbmd0aCAmJiAhYkZvdW5kOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgb09iamVjdFZhbHVlID0gZ2V0T2JqZWN0KGFWYWx1ZVtpXSwgb0V4cHJlc3Npb24ucmVzdWx0LnBhcnRzWzBdLnBhdGgpO1xuXHRcdFx0XHRjb25zdCBiUmVzdWx0ID0gb0V4cHJlc3Npb24ucmVzdWx0LmZvcm1hdHRlcihvT2JqZWN0VmFsdWUpO1xuXHRcdFx0XHRpZiAoYlJlc3VsdCkge1xuXHRcdFx0XHRcdGJGb3VuZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChiRm91bmQpIHtcblx0XHRcdFx0c0Fubm90YXRpb25QYXRoID0gcmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uKHNTdGFibGVCcmFja2V0ICsgKGkgLSAxKSArIHNSZXN0LnN1YnN0cihsYXN0QnJhY2tldCArIDEpLCBvTWV0YU1vZGVsKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHNBbm5vdGF0aW9uUGF0aDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRyZXNvbHZlRHluYW1pY0V4cHJlc3Npb246IHJlc29sdmVEeW5hbWljRXhwcmVzc2lvblxufTtcbiJdfQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import BindingParser from "sap/ui/base/BindingParser";
|
|
2
|
+
|
|
3
|
+
function getObject(oObject: any, sPath: any): any {
|
|
4
|
+
if (!oObject) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const sPathSplit = sPath.split("/");
|
|
8
|
+
if (sPathSplit.length === 1) {
|
|
9
|
+
return oObject[sPath];
|
|
10
|
+
} else {
|
|
11
|
+
return getObject(oObject[sPathSplit[0]], sPathSplit.splice(1).join("/"));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a dynamic annotation path down to a standard annotation path.
|
|
16
|
+
*
|
|
17
|
+
* @param sAnnotationPath
|
|
18
|
+
* @param oMetaModel
|
|
19
|
+
* @returns {string} The non dynamic version of the annotation path
|
|
20
|
+
*/
|
|
21
|
+
function resolveDynamicExpression(sAnnotationPath: any, oMetaModel: any) {
|
|
22
|
+
if (sAnnotationPath.indexOf("[") !== -1) {
|
|
23
|
+
const firstBracket = sAnnotationPath.indexOf("[");
|
|
24
|
+
const sStableBracket = sAnnotationPath.substr(0, firstBracket);
|
|
25
|
+
const sRest = sAnnotationPath.substr(firstBracket + 1);
|
|
26
|
+
const lastBracket = sRest.indexOf("]");
|
|
27
|
+
const aValue = oMetaModel.getObject(sStableBracket);
|
|
28
|
+
const oExpression = BindingParser.parseExpression(sRest.substr(0, lastBracket));
|
|
29
|
+
if (
|
|
30
|
+
Array.isArray(aValue) &&
|
|
31
|
+
oExpression &&
|
|
32
|
+
oExpression.result &&
|
|
33
|
+
oExpression.result.parts &&
|
|
34
|
+
oExpression.result.parts[0] &&
|
|
35
|
+
oExpression.result.parts[0].path
|
|
36
|
+
) {
|
|
37
|
+
let i;
|
|
38
|
+
let bFound = false;
|
|
39
|
+
for (i = 0; i < aValue.length && !bFound; i++) {
|
|
40
|
+
const oObjectValue = getObject(aValue[i], oExpression.result.parts[0].path);
|
|
41
|
+
const bResult = oExpression.result.formatter(oObjectValue);
|
|
42
|
+
if (bResult) {
|
|
43
|
+
bFound = true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (bFound) {
|
|
47
|
+
sAnnotationPath = resolveDynamicExpression(sStableBracket + (i - 1) + sRest.substr(lastBracket + 1), oMetaModel);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return sAnnotationPath;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default {
|
|
55
|
+
resolveDynamicExpression: resolveDynamicExpression
|
|
56
|
+
};
|
|
@@ -1,91 +1,88 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SAPUI5
|
|
3
|
-
*
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
+
sap.ui.define([], function () {
|
|
6
|
+
"use strict";
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
var enumEditState = {
|
|
9
|
+
CLEAN: 0,
|
|
10
|
+
PROCESSED: 1,
|
|
11
|
+
DIRTY: 2
|
|
12
|
+
};
|
|
13
|
+
var currentEditState = enumEditState.CLEAN;
|
|
14
|
+
return {
|
|
15
|
+
/**
|
|
16
|
+
* This sets the edit state as dirty, meaning bindings have to be refreshed.
|
|
17
|
+
*
|
|
18
|
+
* @function
|
|
19
|
+
* @name sap.fe.core.helpers.EditState#setEditStateDirty
|
|
20
|
+
* @memberof sap.fe.core.helpers.EditState
|
|
21
|
+
*
|
|
22
|
+
* @ui5-restricted
|
|
23
|
+
* @final
|
|
24
|
+
*/
|
|
25
|
+
setEditStateDirty: function () {
|
|
26
|
+
currentEditState = enumEditState.DIRTY;
|
|
27
|
+
},
|
|
8
28
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
29
|
+
/**
|
|
30
|
+
* This sets the edit state as processed, meaning is can be reset to clean after all bindings are refreshed.
|
|
31
|
+
*
|
|
32
|
+
* @function
|
|
33
|
+
* @name sap.fe.core.helpers.EditState#setEditStateProcessed
|
|
34
|
+
* @memberof sap.fe.core.helpers.EditState
|
|
35
|
+
*
|
|
36
|
+
* @ui5-restricted
|
|
37
|
+
* @final
|
|
38
|
+
*/
|
|
39
|
+
setEditStateProcessed: function () {
|
|
40
|
+
currentEditState = enumEditState.PROCESSED;
|
|
41
|
+
},
|
|
14
42
|
|
|
15
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Resets the edit state to the initial state.
|
|
45
|
+
*
|
|
46
|
+
* @function
|
|
47
|
+
* @name sap.fe.core.helpers.EditState#resetEditState
|
|
48
|
+
* @memberof sap.fe.core.helpers.EditState
|
|
49
|
+
*
|
|
50
|
+
* @ui5-restricted
|
|
51
|
+
* @final
|
|
52
|
+
*/
|
|
53
|
+
resetEditState: function () {
|
|
54
|
+
currentEditState = enumEditState.CLEAN;
|
|
55
|
+
},
|
|
16
56
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
},
|
|
57
|
+
/**
|
|
58
|
+
* Returns true if the edit state is not clean, meaning bindings have to be refreshed
|
|
59
|
+
*
|
|
60
|
+
* @function
|
|
61
|
+
* @name sap.fe.core.helpers.EditState#isEditStateDirty
|
|
62
|
+
* @memberof sap.fe.core.helpers.EditState
|
|
63
|
+
*
|
|
64
|
+
* @ui5-restricted
|
|
65
|
+
* @final
|
|
66
|
+
*/
|
|
67
|
+
isEditStateDirty: function () {
|
|
68
|
+
return currentEditState !== enumEditState.CLEAN;
|
|
69
|
+
},
|
|
31
70
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
* @name sap.fe.core.helpers.EditState#resetEditState
|
|
51
|
-
* @memberof sap.fe.core.helpers.EditState
|
|
52
|
-
*
|
|
53
|
-
* @ui5-restricted
|
|
54
|
-
* @final
|
|
55
|
-
*/
|
|
56
|
-
resetEditState: function() {
|
|
57
|
-
currentEditState = enumEditState.CLEAN;
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Returns true if the edit state is not clean, meaning bindings have to be refreshed
|
|
62
|
-
*
|
|
63
|
-
* @function
|
|
64
|
-
* @name sap.fe.core.helpers.EditState#isEditStateDirty
|
|
65
|
-
* @memberof sap.fe.core.helpers.EditState
|
|
66
|
-
*
|
|
67
|
-
* @ui5-restricted
|
|
68
|
-
* @final
|
|
69
|
-
*/
|
|
70
|
-
|
|
71
|
-
isEditStateDirty: function() {
|
|
72
|
-
return currentEditState !== enumEditState.CLEAN;
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Cleans the edit state if it has been processed, i.e. bindings have been properly refreshed.
|
|
77
|
-
*
|
|
78
|
-
* @function
|
|
79
|
-
* @name sap.fe.core.helpers.EditState#cleanProcessedEditState
|
|
80
|
-
* @memberof sap.fe.core.helpers.EditState
|
|
81
|
-
*
|
|
82
|
-
* @ui5-restricted
|
|
83
|
-
* @final
|
|
84
|
-
*/
|
|
85
|
-
cleanProcessedEditState: function() {
|
|
86
|
-
if (currentEditState === enumEditState.PROCESSED) {
|
|
87
|
-
currentEditState = enumEditState.CLEAN;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
});
|
|
71
|
+
/**
|
|
72
|
+
* Cleans the edit state if it has been processed, i.e. bindings have been properly refreshed.
|
|
73
|
+
*
|
|
74
|
+
* @function
|
|
75
|
+
* @name sap.fe.core.helpers.EditState#cleanProcessedEditState
|
|
76
|
+
* @memberof sap.fe.core.helpers.EditState
|
|
77
|
+
*
|
|
78
|
+
* @ui5-restricted
|
|
79
|
+
* @final
|
|
80
|
+
*/
|
|
81
|
+
cleanProcessedEditState: function () {
|
|
82
|
+
if (currentEditState === enumEditState.PROCESSED) {
|
|
83
|
+
currentEditState = enumEditState.CLEAN;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}, false);
|
|
88
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVkaXRTdGF0ZS50cyJdLCJuYW1lcyI6WyJlbnVtRWRpdFN0YXRlIiwiQ0xFQU4iLCJQUk9DRVNTRUQiLCJESVJUWSIsImN1cnJlbnRFZGl0U3RhdGUiLCJzZXRFZGl0U3RhdGVEaXJ0eSIsInNldEVkaXRTdGF0ZVByb2Nlc3NlZCIsInJlc2V0RWRpdFN0YXRlIiwiaXNFZGl0U3RhdGVEaXJ0eSIsImNsZWFuUHJvY2Vzc2VkRWRpdFN0YXRlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBRkEsTUFBTUEsYUFBYSxHQUFHO0FBQ3JCQyxJQUFBQSxLQUFLLEVBQUUsQ0FEYztBQUVyQkMsSUFBQUEsU0FBUyxFQUFFLENBRlU7QUFHckJDLElBQUFBLEtBQUssRUFBRTtBQUhjLEdBQXRCO0FBS0EsTUFBSUMsZ0JBQWdCLEdBQUdKLGFBQWEsQ0FBQ0MsS0FBckM7U0FFZTtBQUNkO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NJLElBQUFBLGlCQUFpQixFQUFFLFlBQVc7QUFDN0JELE1BQUFBLGdCQUFnQixHQUFHSixhQUFhLENBQUNHLEtBQWpDO0FBQ0EsS0FiYTs7QUFlZDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDRyxJQUFBQSxxQkFBcUIsRUFBRSxZQUFXO0FBQ2pDRixNQUFBQSxnQkFBZ0IsR0FBR0osYUFBYSxDQUFDRSxTQUFqQztBQUNBLEtBM0JhOztBQTZCZDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDSyxJQUFBQSxjQUFjLEVBQUUsWUFBVztBQUMxQkgsTUFBQUEsZ0JBQWdCLEdBQUdKLGFBQWEsQ0FBQ0MsS0FBakM7QUFDQSxLQXpDYTs7QUEyQ2Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQ08sSUFBQUEsZ0JBQWdCLEVBQUUsWUFBVztBQUM1QixhQUFPSixnQkFBZ0IsS0FBS0osYUFBYSxDQUFDQyxLQUExQztBQUNBLEtBeERhOztBQTBEZDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDUSxJQUFBQSx1QkFBdUIsRUFBRSxZQUFXO0FBQ25DLFVBQUlMLGdCQUFnQixLQUFLSixhQUFhLENBQUNFLFNBQXZDLEVBQWtEO0FBQ2pERSxRQUFBQSxnQkFBZ0IsR0FBR0osYUFBYSxDQUFDQyxLQUFqQztBQUNBO0FBQ0Q7QUF4RWEsRyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW51bUVkaXRTdGF0ZSA9IHtcblx0Q0xFQU46IDAsXG5cdFBST0NFU1NFRDogMSxcblx0RElSVFk6IDJcbn07XG5sZXQgY3VycmVudEVkaXRTdGF0ZSA9IGVudW1FZGl0U3RhdGUuQ0xFQU47XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0LyoqXG5cdCAqIFRoaXMgc2V0cyB0aGUgZWRpdCBzdGF0ZSBhcyBkaXJ0eSwgbWVhbmluZyBiaW5kaW5ncyBoYXZlIHRvIGJlIHJlZnJlc2hlZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLmhlbHBlcnMuRWRpdFN0YXRlI3NldEVkaXRTdGF0ZURpcnR5XG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5oZWxwZXJzLkVkaXRTdGF0ZVxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRzZXRFZGl0U3RhdGVEaXJ0eTogZnVuY3Rpb24oKSB7XG5cdFx0Y3VycmVudEVkaXRTdGF0ZSA9IGVudW1FZGl0U3RhdGUuRElSVFk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFRoaXMgc2V0cyB0aGUgZWRpdCBzdGF0ZSBhcyBwcm9jZXNzZWQsIG1lYW5pbmcgaXMgY2FuIGJlIHJlc2V0IHRvIGNsZWFuIGFmdGVyIGFsbCBiaW5kaW5ncyBhcmUgcmVmcmVzaGVkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGUjc2V0RWRpdFN0YXRlUHJvY2Vzc2VkXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5oZWxwZXJzLkVkaXRTdGF0ZVxuXHQgKlxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRzZXRFZGl0U3RhdGVQcm9jZXNzZWQ6IGZ1bmN0aW9uKCkge1xuXHRcdGN1cnJlbnRFZGl0U3RhdGUgPSBlbnVtRWRpdFN0YXRlLlBST0NFU1NFRDtcblx0fSxcblxuXHQvKipcblx0ICogUmVzZXRzIHRoZSBlZGl0IHN0YXRlIHRvIHRoZSBpbml0aWFsIHN0YXRlLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGUjcmVzZXRFZGl0U3RhdGVcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLmhlbHBlcnMuRWRpdFN0YXRlXG5cdCAqXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdHJlc2V0RWRpdFN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRjdXJyZW50RWRpdFN0YXRlID0gZW51bUVkaXRTdGF0ZS5DTEVBTjtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBlZGl0IHN0YXRlIGlzIG5vdCBjbGVhbiwgbWVhbmluZyBiaW5kaW5ncyBoYXZlIHRvIGJlIHJlZnJlc2hlZFxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGUjaXNFZGl0U3RhdGVEaXJ0eVxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGVcblx0ICpcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblxuXHRpc0VkaXRTdGF0ZURpcnR5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gY3VycmVudEVkaXRTdGF0ZSAhPT0gZW51bUVkaXRTdGF0ZS5DTEVBTjtcblx0fSxcblxuXHQvKipcblx0ICogQ2xlYW5zIHRoZSBlZGl0IHN0YXRlIGlmIGl0IGhhcyBiZWVuIHByb2Nlc3NlZCwgaS5lLiBiaW5kaW5ncyBoYXZlIGJlZW4gcHJvcGVybHkgcmVmcmVzaGVkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGUjY2xlYW5Qcm9jZXNzZWRFZGl0U3RhdGVcblx0ICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLmhlbHBlcnMuRWRpdFN0YXRlXG5cdCAqXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKiBAZmluYWxcblx0ICovXG5cdGNsZWFuUHJvY2Vzc2VkRWRpdFN0YXRlOiBmdW5jdGlvbigpIHtcblx0XHRpZiAoY3VycmVudEVkaXRTdGF0ZSA9PT0gZW51bUVkaXRTdGF0ZS5QUk9DRVNTRUQpIHtcblx0XHRcdGN1cnJlbnRFZGl0U3RhdGUgPSBlbnVtRWRpdFN0YXRlLkNMRUFOO1xuXHRcdH1cblx0fVxufTtcbiJdfQ==
|