@sapui5/sap.fe.core 1.141.2 → 1.143.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/package.json +1 -1
- package/src/sap/fe/core/.library +4 -1
- package/src/sap/fe/core/ActionRuntime.js +78 -23
- package/src/sap/fe/core/ActionRuntime.ts +91 -35
- package/src/sap/fe/core/AppComponent.js +76 -6
- package/src/sap/fe/core/AppComponent.ts +91 -8
- package/src/sap/fe/core/AppStateHandler.js +7 -7
- package/src/sap/fe/core/AppStateHandler.ts +9 -8
- package/src/sap/fe/core/BaseController.js +8 -5
- package/src/sap/fe/core/BaseController.ts +6 -1
- package/src/sap/fe/core/CommonUtils.js +4 -123
- package/src/sap/fe/core/CommonUtils.ts +3 -172
- package/src/sap/fe/core/ExtensionAPI.js +3 -11
- package/src/sap/fe/core/ExtensionAPI.ts +3 -16
- package/src/sap/fe/core/PageController.js +64 -43
- package/src/sap/fe/core/PageController.ts +62 -47
- package/src/sap/fe/core/TemplateComponent.js +12 -1
- package/src/sap/fe/core/TemplateComponent.ts +16 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +5 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +5 -2
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -44
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +92 -59
- package/src/sap/fe/core/controllerextensions/EditFlow.js +74 -48
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +87 -50
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
- package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +10 -9
- package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +4 -4
- package/src/sap/fe/core/controllerextensions/Routing.ts +3 -6
- package/src/sap/fe/core/controllerextensions/Share.js +5 -5
- package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +49 -21
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +64 -24
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +6 -7
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +5 -5
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.js +2 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationMessage.ts +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +21 -15
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +18 -15
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +7 -6
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +8 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +3 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
- package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
- package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
- package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +118 -39
- package/src/sap/fe/core/converters/controls/Common/Action.js +58 -21
- package/src/sap/fe/core/converters/controls/Common/Action.ts +72 -22
- package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
- package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
- package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js +87 -22
- package/src/sap/fe/core/converters/controls/Common/Table.ts +112 -21
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
- package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
- package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
- package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +174 -79
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
- package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +10 -5
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +13 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
- package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
- package/src/sap/fe/core/flexibility/AppComponent.flexibility.js +55 -0
- package/src/sap/fe/core/flexibility/AppComponent.flexibility.ts +65 -0
- package/src/sap/fe/core/flexibility/XMLTools.js +71 -0
- package/src/sap/fe/core/flexibility/XMLTools.ts +61 -0
- package/src/sap/fe/core/fpm/manifest.json +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +92 -32
- package/src/sap/fe/core/helpers/DeleteHelper.js +13 -13
- package/src/sap/fe/core/helpers/DeleteHelper.ts +17 -15
- package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
- package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
- package/src/sap/fe/core/helpers/ModelHelper.js +47 -11
- package/src/sap/fe/core/helpers/ModelHelper.ts +62 -15
- package/src/sap/fe/core/helpers/PasteHelper.js +6 -2
- package/src/sap/fe/core/helpers/PasteHelper.ts +5 -7
- package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
- package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
- package/src/sap/fe/core/helpers/WebSocket.js +6 -7
- package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
- package/src/sap/fe/core/library.js +33 -3
- package/src/sap/fe/core/library.ts +31 -1
- package/src/sap/fe/core/messagebundle.properties +8 -1
- package/src/sap/fe/core/messagebundle_ar.properties +8 -1
- package/src/sap/fe/core/messagebundle_bg.properties +10 -3
- package/src/sap/fe/core/messagebundle_ca.properties +7 -0
- package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
- package/src/sap/fe/core/messagebundle_cs.properties +7 -0
- package/src/sap/fe/core/messagebundle_cy.properties +8 -1
- package/src/sap/fe/core/messagebundle_da.properties +7 -0
- package/src/sap/fe/core/messagebundle_de.properties +7 -0
- package/src/sap/fe/core/messagebundle_el.properties +7 -0
- package/src/sap/fe/core/messagebundle_en.properties +8 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +8 -1
- package/src/sap/fe/core/messagebundle_es.properties +8 -1
- package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
- package/src/sap/fe/core/messagebundle_et.properties +7 -0
- package/src/sap/fe/core/messagebundle_fi.properties +7 -0
- package/src/sap/fe/core/messagebundle_fr.properties +16 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
- package/src/sap/fe/core/messagebundle_hi.properties +8 -1
- package/src/sap/fe/core/messagebundle_hr.properties +7 -0
- package/src/sap/fe/core/messagebundle_hu.properties +7 -0
- package/src/sap/fe/core/messagebundle_id.properties +7 -0
- package/src/sap/fe/core/messagebundle_it.properties +7 -0
- package/src/sap/fe/core/messagebundle_iw.properties +7 -0
- package/src/sap/fe/core/messagebundle_ja.properties +8 -1
- package/src/sap/fe/core/messagebundle_kk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ko.properties +7 -0
- package/src/sap/fe/core/messagebundle_lt.properties +7 -0
- package/src/sap/fe/core/messagebundle_lv.properties +7 -0
- package/src/sap/fe/core/messagebundle_mk.properties +7 -0
- package/src/sap/fe/core/messagebundle_ms.properties +7 -0
- package/src/sap/fe/core/messagebundle_nl.properties +7 -0
- package/src/sap/fe/core/messagebundle_no.properties +9 -2
- package/src/sap/fe/core/messagebundle_pl.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt.properties +7 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
- package/src/sap/fe/core/messagebundle_ro.properties +7 -0
- package/src/sap/fe/core/messagebundle_ru.properties +7 -0
- package/src/sap/fe/core/messagebundle_sh.properties +7 -0
- package/src/sap/fe/core/messagebundle_sk.properties +7 -0
- package/src/sap/fe/core/messagebundle_sl.properties +7 -0
- package/src/sap/fe/core/messagebundle_sr.properties +7 -0
- package/src/sap/fe/core/messagebundle_sv.properties +7 -0
- package/src/sap/fe/core/messagebundle_th.properties +7 -0
- package/src/sap/fe/core/messagebundle_tr.properties +7 -0
- package/src/sap/fe/core/messagebundle_uk.properties +7 -0
- package/src/sap/fe/core/messagebundle_vi.properties +7 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
- package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
- package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
- package/src/sap/fe/core/rootView/Fcl.controller.ts +22 -5
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +2 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.ts +9 -9
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
- package/src/sap/fe/core/services/RoutingServiceFactory.js +9 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -6
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +57 -5
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +69 -10
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
- package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
- package/src/sap/fe/core/templating/UIFormatters.js +17 -2
- package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
- package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
- package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
- package/ui5.yaml +2 -0
|
@@ -59,7 +59,13 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/fe/base/ClassSupport", "sap/fe/p
|
|
|
59
59
|
};
|
|
60
60
|
_proto.hideRootPlaceholder = function hideRootPlaceholder() {
|
|
61
61
|
this.oRootContainer = this.oAppComponent.getRootContainer();
|
|
62
|
-
this.oRootContainer.hidePlaceholder(
|
|
62
|
+
this.oRootContainer.hidePlaceholder({
|
|
63
|
+
aggregation: "beginColumnPages"
|
|
64
|
+
});
|
|
65
|
+
this.oRootContainer.hidePlaceholder({
|
|
66
|
+
aggregation: "midColumnPages"
|
|
67
|
+
});
|
|
68
|
+
this.oRootContainer.hidePlaceholder({});
|
|
63
69
|
};
|
|
64
70
|
_proto._init = function _init() {
|
|
65
71
|
this.oAppComponent = this.base.getAppComponent();
|
|
@@ -70,11 +76,13 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/fe/base/ClassSupport", "sap/fe/p
|
|
|
70
76
|
Placeholder.registerProvider(function (oConfig) {
|
|
71
77
|
switch (oConfig.name) {
|
|
72
78
|
case "sap.fe.templates.ListReport":
|
|
79
|
+
case "sap.fe.ariba.ListReport":
|
|
73
80
|
return {
|
|
74
81
|
html: "sap/fe/placeholder/view/PlaceholderLR.fragment.html",
|
|
75
82
|
autoClose: false
|
|
76
83
|
};
|
|
77
84
|
case "sap.fe.templates.ObjectPage":
|
|
85
|
+
case "sap.fe.ariba.ObjectPage":
|
|
78
86
|
return {
|
|
79
87
|
html: "sap/fe/placeholder/view/PlaceholderOP.fragment.html",
|
|
80
88
|
autoClose: false
|
|
@@ -134,4 +142,4 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/fe/base/ClassSupport", "sap/fe/p
|
|
|
134
142
|
}(ControllerExtension), _applyDecoratedDescriptor(_class2.prototype, "attachHideCallback", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "attachHideCallback"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "attachRouteMatchers", [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "attachRouteMatchers"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "initPlaceholderDebug", [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "initPlaceholderDebug"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isPlaceholderDebugEnabled", [_dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "isPlaceholderDebugEnabled"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "resetPlaceholderDebugStats", [_dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "resetPlaceholderDebugStats"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getPlaceholderDebugStats", [_dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "getPlaceholderDebugStats"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "isPlaceholderEnabled", [_dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "isPlaceholderEnabled"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "disableAnimation", [_dec9], Object.getOwnPropertyDescriptor(_class2.prototype, "disableAnimation"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "enableAnimation", [_dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "enableAnimation"), _class2.prototype), _class2)) || _class);
|
|
135
143
|
return PlaceholderControllerExtension;
|
|
136
144
|
}, false);
|
|
137
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQbGFjZWhvbGRlckNvbnRyb2xsZXJFeHRlbnNpb24iLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sbGVyRXh0ZW5zaW9uIiwiY2FsbCIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiYXR0YWNoSGlkZUNhbGxiYWNrIiwiaXNQbGFjZWhvbGRlckVuYWJsZWQiLCJvVmlldyIsImJhc2UiLCJnZXRWaWV3Iiwib1BhZ2UiLCJnZXRQYXJlbnQiLCJvQ29udGFpbmVyIiwib05hdkNvbnRhaW5lciIsIl9mbkNvbnRhaW5lckRlbGVnYXRlIiwib25BZnRlclNob3ciLCJvRXZlbnQiLCJpc0JhY2tUb1BhZ2UiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJyZXBsYWNlIiwiZ2V0IiwiaGlkZVBsYWNlaG9sZGVyIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9QYWdlUmVhZHkiLCJnZXRDb250cm9sbGVyIiwicGFnZVJlYWR5IiwiYUF0dGFjaEV2ZW50cyIsImdldENvbnRyb2xsZXJOYW1lIiwicHVzaCIsImZvckVhY2giLCJzRXZlbnQiLCJhdHRhY2hFdmVudCIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJfaW5pdCIsImhpZGVSb290UGxhY2Vob2xkZXIiLCJvUm9vdENvbnRhaW5lciIsIm9BcHBDb21wb25lbnQiLCJnZXRSb290Q29udGFpbmVyIiwiZ2V0QXBwQ29tcG9uZW50IiwiUGxhY2Vob2xkZXIiLCJyZWdpc3RlclByb3ZpZGVyIiwib0NvbmZpZyIsIm5hbWUiLCJodG1sIiwiYXV0b0Nsb3NlIiwiaXNQbGFjZWhvbGRlckRlYnVnRW5hYmxlZCIsImluaXRQbGFjZWhvbGRlckRlYnVnIiwicmVzZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMiLCJoYW5kbGVyIiwiYXBwbHkiLCJ0YXJnZXQiLCJfcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsImRlYnVnU3RhdHMiLCJpSGlkZVBsYWNlaG9sZGVyVGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImJpbmQiLCJwcm94eTEiLCJQcm94eSIsInNlYXJjaCIsImlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcCIsImlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXAiLCJnZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMiLCJiUGxhY2Vob2xkZXJFbmFibGVkSW5GTFAiLCJPYmplY3RQYXRoIiwiaXNFbmFibGVkIiwiZGlzYWJsZUFuaW1hdGlvbiIsImdldFJvb3RDb250cm9sIiwiYWRkU3R5bGVDbGFzcyIsImVuYWJsZUFuaW1hdGlvbiIsInJlbW92ZVN0eWxlQ2xhc3MiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGxhY2Vob2xkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9iamVjdFBhdGggZnJvbSBcInNhcC9iYXNlL3V0aWwvT2JqZWN0UGF0aFwiO1xuaW1wb3J0IHR5cGUgRmxleGlibGVDb2x1bW5MYXlvdXQgZnJvbSBcInNhcC9mL0ZsZXhpYmxlQ29sdW1uTGF5b3V0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IFwic2FwL2ZlL3BsYWNlaG9sZGVyL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE5hdkNvbnRhaW5lciBmcm9tIFwic2FwL20vTmF2Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBDb21wb25lbnRDb250YWluZXIgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudENvbnRhaW5lclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFBsYWNlaG9sZGVyIGZyb20gXCJzYXAvdWkvY29yZS9QbGFjZWhvbGRlclwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5cbnR5cGUgUGxhY2Vob2xkZXJEZWJ1Z1N0YXRzID0ge1xuXHRpSGlkZVBsYWNlaG9sZGVyVGltZXN0YW1wOiBudW1iZXI7XG5cdGlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcDogbnVtYmVyO1xuXHRpSGVyb2VzQmF0Y2hSZWNlaXZlZEV2ZW50VGltZXN0YW1wOiBudW1iZXI7XG59O1xudHlwZSBQbGFjZWhvbGRlclJvb3RDb250YWluZXIgPSAoTmF2Q29udGFpbmVyIHwgRmxleGlibGVDb2x1bW5MYXlvdXQpICYge1xuXHRfcGxhY2Vob2xkZXI6IHtcblx0XHRwbGFjZWhvbGRlcjogdW5rbm93bjtcblx0fTtcblx0aGlkZVBsYWNlaG9sZGVyOiBGdW5jdGlvbjtcbn07XG4vKipcbiAqIHtAbGluayBzYXAudWkuY29yZS5tdmMuQ29udHJvbGxlckV4dGVuc2lvbiBDb250cm9sbGVyIGV4dGVuc2lvbn0gZm9yIFBsYWNlaG9sZGVyXG4gKlxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5QbGFjZWhvbGRlclwiKVxuY2xhc3MgUGxhY2Vob2xkZXJDb250cm9sbGVyRXh0ZW5zaW9uIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByaXZhdGUgYmFzZSE6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByaXZhdGUgb0FwcENvbXBvbmVudCE6IEFwcENvbXBvbmVudDtcblxuXHRwcml2YXRlIG9Sb290Q29udGFpbmVyITogUGxhY2Vob2xkZXJSb290Q29udGFpbmVyO1xuXG5cdHByaXZhdGUgZGVidWdTdGF0cyE6IFBsYWNlaG9sZGVyRGVidWdTdGF0cztcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBhdHRhY2hIaWRlQ2FsbGJhY2soKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNQbGFjZWhvbGRlckVuYWJsZWQoKSkge1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSB0aGlzLmJhc2UuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3Qgb1BhZ2UgPSBvVmlldy5nZXRQYXJlbnQoKSAmJiAob1ZpZXcuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCAmIHsgb0NvbnRhaW5lcjogQ29tcG9uZW50Q29udGFpbmVyIH0pLm9Db250YWluZXI7XG5cdFx0XHRjb25zdCBvTmF2Q29udGFpbmVyID0gKG9QYWdlICYmIG9QYWdlLmdldFBhcmVudCgpKSBhcyBQbGFjZWhvbGRlclJvb3RDb250YWluZXI7XG5cblx0XHRcdGlmICghb05hdkNvbnRhaW5lciB8fCAhb1BhZ2UpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgX2ZuQ29udGFpbmVyRGVsZWdhdGUgPSB7XG5cdFx0XHRcdG9uQWZ0ZXJTaG93OiBmdW5jdGlvbiAob0V2ZW50OiB7IGlzQmFja1RvUGFnZT86IGJvb2xlYW4gfSk6IHZvaWQge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdG9FdmVudC5pc0JhY2tUb1BhZ2UgfHxcblx0XHRcdFx0XHRcdG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLmhhc2gucmVwbGFjZSgvIy4qXFw/LywgXCJcIikpLmdldChcInJlc3RvcmVIaXN0b3J5XCIpID09PSBcInRydWVcIlxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Ly8gaW4gY2FzZSB3ZSBuYXZpZ2F0ZSB0byB0aGUgbGlzdHJlcG9ydCB1c2luZyB0aGUgc2hlbGxcblx0XHRcdFx0XHRcdG9OYXZDb250YWluZXIuaGlkZVBsYWNlaG9sZGVyKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0b1BhZ2UuYWRkRXZlbnREZWxlZ2F0ZShfZm5Db250YWluZXJEZWxlZ2F0ZSk7XG5cblx0XHRcdGNvbnN0IG9QYWdlUmVhZHkgPSBvVmlldy5nZXRDb250cm9sbGVyKCkucGFnZVJlYWR5O1xuXHRcdFx0Ly9JbiBjYXNlIG9mIG9iamVjdFBhZ2UsIHRoZSBwbGFjZWhvbGRlciBzaG91bGQgYmUgaGlkZGVuIHdoZW4gaGVyb2VzIHJlcXVlc3RzIGFyZSByZWNlaXZlZFxuXHRcdFx0Ly8gQnV0IGZvciBzb21lIHNjZW5hcmlvIGxpa2UgXCJDcmVhdGUgaXRlbVwiLCBoZXJvZXMgcmVxdWVzdHMgYXJlIG5vdCBzZW50IC5cblx0XHRcdC8vIFRoZSBwYWdlUmVhZHkgZXZlbnQgaXMgdGhlbiB1c2VkIGFzIGZhbGxiYWNrXG5cblx0XHRcdGNvbnN0IGFBdHRhY2hFdmVudHMgPSBbXCJwYWdlUmVhZHlcIl07XG5cdFx0XHRpZiAob1ZpZXcuZ2V0Q29udHJvbGxlck5hbWUoKSA9PT0gXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuT2JqZWN0UGFnZUNvbnRyb2xsZXJcIikge1xuXHRcdFx0XHRhQXR0YWNoRXZlbnRzLnB1c2goXCJoZXJvZXNCYXRjaFJlY2VpdmVkXCIpO1xuXHRcdFx0fVxuXHRcdFx0YUF0dGFjaEV2ZW50cy5mb3JFYWNoKChzRXZlbnQ6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRvUGFnZVJlYWR5LmF0dGFjaEV2ZW50KFxuXHRcdFx0XHRcdHNFdmVudCxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdG9OYXZDb250YWluZXIuaGlkZVBsYWNlaG9sZGVyKCk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0YXR0YWNoUm91dGVNYXRjaGVycygpOiB2b2lkIHtcblx0XHR0aGlzLl9pbml0KCk7XG5cdH1cblxuXHRoaWRlUm9vdFBsYWNlaG9sZGVyKCk6IHZvaWQge1xuXHRcdHRoaXMub1Jvb3RDb250YWluZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRhaW5lcigpIGFzIFBsYWNlaG9sZGVyUm9vdENvbnRhaW5lcjtcblx0XHR0aGlzLm9Sb290Q29udGFpbmVyLmhpZGVQbGFjZWhvbGRlcigpO1xuXHR9XG5cblx0X2luaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5vQXBwQ29tcG9uZW50ID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdHRoaXMub1Jvb3RDb250YWluZXIgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRhaW5lcigpIGFzIFBsYWNlaG9sZGVyUm9vdENvbnRhaW5lcjtcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cblx0XHRpZiAodGhpcy5pc1BsYWNlaG9sZGVyRW5hYmxlZCgpKSB7XG5cdFx0XHRQbGFjZWhvbGRlci5yZWdpc3RlclByb3ZpZGVyKGZ1bmN0aW9uIChvQ29uZmlnOiB7IG5hbWU6IHN0cmluZyB9KSB7XG5cdFx0XHRcdHN3aXRjaCAob0NvbmZpZy5uYW1lKSB7XG5cdFx0XHRcdFx0Y2FzZSBcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydFwiOlxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0aHRtbDogXCJzYXAvZmUvcGxhY2Vob2xkZXIvdmlldy9QbGFjZWhvbGRlckxSLmZyYWdtZW50Lmh0bWxcIixcblx0XHRcdFx0XHRcdFx0YXV0b0Nsb3NlOiBmYWxzZVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRjYXNlIFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlXCI6XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRodG1sOiBcInNhcC9mZS9wbGFjZWhvbGRlci92aWV3L1BsYWNlaG9sZGVyT1AuZnJhZ21lbnQuaHRtbFwiLFxuXHRcdFx0XHRcdFx0XHRhdXRvQ2xvc2U6IGZhbHNlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAodGhpcy5pc1BsYWNlaG9sZGVyRGVidWdFbmFibGVkKCkpIHtcblx0XHRcdHRoaXMuaW5pdFBsYWNlaG9sZGVyRGVidWcoKTtcblx0XHR9XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0aW5pdFBsYWNlaG9sZGVyRGVidWcoKTogdm9pZCB7XG5cdFx0dGhpcy5yZXNldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpO1xuXHRcdGNvbnN0IGhhbmRsZXIgPSB7XG5cdFx0XHRhcHBseTogKHRhcmdldDogRnVuY3Rpb24pOiB1bmtub3duID0+IHtcblx0XHRcdFx0aWYgKHRoaXMub1Jvb3RDb250YWluZXIuX3BsYWNlaG9sZGVyICYmIHRoaXMub1Jvb3RDb250YWluZXIuX3BsYWNlaG9sZGVyLnBsYWNlaG9sZGVyKSB7XG5cdFx0XHRcdFx0dGhpcy5kZWJ1Z1N0YXRzLmlIaWRlUGxhY2Vob2xkZXJUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0YXJnZXQuYmluZCh0aGlzLm9Sb290Q29udGFpbmVyKSgpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG5cdFx0Y29uc3QgcHJveHkxID0gbmV3IFByb3h5KHRoaXMub1Jvb3RDb250YWluZXIuaGlkZVBsYWNlaG9sZGVyLCBoYW5kbGVyKTtcblx0XHR0aGlzLm9Sb290Q29udGFpbmVyLmhpZGVQbGFjZWhvbGRlciA9IHByb3h5MTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRpc1BsYWNlaG9sZGVyRGVidWdFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdGlmIChuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldChcInNhcC11aS14eC1wbGFjZWhvbGRlci1kZWJ1Z1wiKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cmVzZXRQbGFjZWhvbGRlckRlYnVnU3RhdHMoKTogdm9pZCB7XG5cdFx0dGhpcy5kZWJ1Z1N0YXRzID0ge1xuXHRcdFx0aUhpZGVQbGFjZWhvbGRlclRpbWVzdGFtcDogMCxcblx0XHRcdGlQYWdlUmVhZHlFdmVudFRpbWVzdGFtcDogMCxcblx0XHRcdGlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXA6IDBcblx0XHR9O1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGdldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpOiBQbGFjZWhvbGRlckRlYnVnU3RhdHMge1xuXHRcdHJldHVybiB0aGlzLmRlYnVnU3RhdHM7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0aXNQbGFjZWhvbGRlckVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgYlBsYWNlaG9sZGVyRW5hYmxlZEluRkxQID0gT2JqZWN0UGF0aC5nZXQoXCJzYXAtdXNoZWxsLWNvbmZpZy5hcHBzLnBsYWNlaG9sZGVyLmVuYWJsZWRcIik7XG5cdFx0aWYgKGJQbGFjZWhvbGRlckVuYWJsZWRJbkZMUCA9PT0gZmFsc2UpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gUGxhY2Vob2xkZXIuaXNFbmFibGVkKCk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0ZGlzYWJsZUFuaW1hdGlvbigpOiB2b2lkIHtcblx0XHR0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um9vdENvbnRyb2woKS5hZGRTdHlsZUNsYXNzKFwic2FwRmVOb0FuaW1hdGlvblwiKTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRlbmFibGVBbmltYXRpb24oKTogdm9pZCB7XG5cdFx0dGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldFJvb3RDb250cm9sKCkucmVtb3ZlU3R5bGVDbGFzcyhcInNhcEZlTm9BbmltYXRpb25cIik7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGxhY2Vob2xkZXJDb250cm9sbGVyRXh0ZW5zaW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0VBdUJBO0FBQ0E7QUFDQTtBQUNBO0VBSEEsSUFLTUEsOEJBQThCLElBQUFDLElBQUEsR0FEbkNDLGNBQWMsQ0FBQyw4Q0FBOEMsQ0FBQyxFQUFBQyxLQUFBLEdBYzdEQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBNkNqQkQsZUFBZSxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQXFDakJGLGVBQWUsQ0FBQyxDQUFDLEVBQUFHLEtBQUEsR0FnQmpCSCxlQUFlLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBUWpCSixlQUFlLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBU2pCTCxlQUFlLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBS2pCTixlQUFlLENBQUMsQ0FBQyxFQUFBTyxLQUFBLEdBVWpCUCxlQUFlLENBQUMsQ0FBQyxFQUFBUSxNQUFBLEdBS2pCUixlQUFlLENBQUMsQ0FBQyxFQUFBSCxJQUFBLENBQUFZLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsb0JBQUE7SUEzSWxCLFNBQUFmLCtCQUFBLEVBQWM7TUFBQSxPQUNiZSxvQkFBQSxDQUFBQyxJQUFBLEtBQU0sQ0FBQztJQUNSO0lBQUNDLGNBQUEsQ0FBQWpCLDhCQUFBLEVBQUFlLG9CQUFBO0lBQUEsSUFBQUcsTUFB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U0FBQSx5QkFBQWhCLEtBQUEsR0FBQXlGLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQS9FLE9BQUEsQ0FBQUssU0FBQSx5QkFBQUwsT0FBQSxDQUFBSyxTQUFBLEdBQUF3RSx5QkFBQSxDQUFBN0UsT0FBQSxDQUFBSyxTQUFBLDBCQUFBZCxLQUFBLEdBQUF1RixNQUFBLENBQUFDLHdCQUFBLENBQUEvRSxPQUFBLENBQUFLLFNBQUEsMEJBQUFMLE9BQUEsQ0FBQUssU0FBQSxHQUFBd0UseUJBQUEsQ0FBQTdFLE9BQUEsQ0FBQUssU0FBQSwyQkFBQWIsS0FBQSxHQUFBc0YsTUFBQSxDQUFBQyx3QkFBQSxDQUFBL0UsT0FBQSxDQUFBSyxTQUFBLDJCQUFBTCxPQUFBLENBQUFLLFNBQUEsR0FBQXdFLHlCQUFBLENBQUE3RSxPQUFBLENBQUFLLFNBQUEsZ0NBQUFaLEtBQUEsR0FBQXFGLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQS9FLE9BQUEsQ0FBQUssU0FBQSxnQ0FBQUwsT0FBQSxDQUFBSyxTQUFBLEdBQUF3RSx5QkFBQSxDQUFBN0UsT0FBQSxDQUFBSyxTQUFBLGlDQUFBWCxLQUFBLEdBQUFvRixNQUFBLENBQUFDLHdCQUFBLENBQUEvRSxPQUFBLENBQUFLLFNBQUEsaUNBQUFMLE9BQUEsQ0FBQUssU0FBQSxHQUFBd0UseUJBQUEsQ0FBQTdFLE9BQUEsQ0FBQUssU0FBQSwrQkFBQVYsS0FBQSxHQUFBbUYsTUFBQSxDQUFBQyx3QkFBQSxDQUFBL0UsT0FBQSxDQUFBSyxTQUFBLCtCQUFBTCxPQUFBLENBQUFLLFNBQUEsR0FBQXdFLHlCQUFBLENBQUE3RSxPQUFBLENBQUFLLFNBQUEsMkJBQUFULEtBQUEsR0FBQWtGLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQS9FLE9BQUEsQ0FBQUssU0FBQSwyQkFBQUwsT0FBQSxDQUFBSyxTQUFBLEdBQUF3RSx5QkFBQSxDQUFBN0UsT0FBQSxDQUFBSyxTQUFBLHVCQUFBUixLQUFBLEdBQUFpRixNQUFBLENBQUFDLHdCQUFBLENBQUEvRSxPQUFBLENBQUFLLFNBQUEsdUJBQUFMLE9BQUEsQ0FBQUssU0FBQSxHQUFBd0UseUJBQUEsQ0FBQTdFLE9BQUEsQ0FBQUssU0FBQSxzQkFBQVAsTUFBQSxHQUFBZ0YsTUFBQSxDQUFBQyx3QkFBQSxDQUFBL0UsT0FBQSxDQUFBSyxTQUFBLHNCQUFBTCxPQUFBLENBQUFLLFNBQUEsR0FBQUwsT0FBQSxNQUFBRCxNQUFBO0VBQUEsT0EwSmpEYiw4QkFBOEI7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQbGFjZWhvbGRlckNvbnRyb2xsZXJFeHRlbnNpb24iLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWMzIiwiX2RlYzQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sbGVyRXh0ZW5zaW9uIiwiY2FsbCIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiYXR0YWNoSGlkZUNhbGxiYWNrIiwiaXNQbGFjZWhvbGRlckVuYWJsZWQiLCJvVmlldyIsImJhc2UiLCJnZXRWaWV3Iiwib1BhZ2UiLCJnZXRQYXJlbnQiLCJvQ29udGFpbmVyIiwib05hdkNvbnRhaW5lciIsIl9mbkNvbnRhaW5lckRlbGVnYXRlIiwib25BZnRlclNob3ciLCJvRXZlbnQiLCJpc0JhY2tUb1BhZ2UiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJyZXBsYWNlIiwiZ2V0IiwiaGlkZVBsYWNlaG9sZGVyIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9QYWdlUmVhZHkiLCJnZXRDb250cm9sbGVyIiwicGFnZVJlYWR5IiwiYUF0dGFjaEV2ZW50cyIsImdldENvbnRyb2xsZXJOYW1lIiwicHVzaCIsImZvckVhY2giLCJzRXZlbnQiLCJhdHRhY2hFdmVudCIsImF0dGFjaFJvdXRlTWF0Y2hlcnMiLCJfaW5pdCIsImhpZGVSb290UGxhY2Vob2xkZXIiLCJvUm9vdENvbnRhaW5lciIsIm9BcHBDb21wb25lbnQiLCJnZXRSb290Q29udGFpbmVyIiwiYWdncmVnYXRpb24iLCJnZXRBcHBDb21wb25lbnQiLCJQbGFjZWhvbGRlciIsInJlZ2lzdGVyUHJvdmlkZXIiLCJvQ29uZmlnIiwibmFtZSIsImh0bWwiLCJhdXRvQ2xvc2UiLCJpc1BsYWNlaG9sZGVyRGVidWdFbmFibGVkIiwiaW5pdFBsYWNlaG9sZGVyRGVidWciLCJyZXNldFBsYWNlaG9sZGVyRGVidWdTdGF0cyIsImhhbmRsZXIiLCJhcHBseSIsInRhcmdldCIsIl9wbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiZGVidWdTdGF0cyIsImlIaWRlUGxhY2Vob2xkZXJUaW1lc3RhbXAiLCJEYXRlIiwibm93IiwiYmluZCIsInByb3h5MSIsIlByb3h5Iiwic2VhcmNoIiwiaVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wIiwiaUhlcm9lc0JhdGNoUmVjZWl2ZWRFdmVudFRpbWVzdGFtcCIsImdldFBsYWNlaG9sZGVyRGVidWdTdGF0cyIsImJQbGFjZWhvbGRlckVuYWJsZWRJbkZMUCIsIk9iamVjdFBhdGgiLCJpc0VuYWJsZWQiLCJkaXNhYmxlQW5pbWF0aW9uIiwiZ2V0Um9vdENvbnRyb2wiLCJhZGRTdHlsZUNsYXNzIiwiZW5hYmxlQW5pbWF0aW9uIiwicmVtb3ZlU3R5bGVDbGFzcyIsIkNvbnRyb2xsZXJFeHRlbnNpb24iLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJQbGFjZWhvbGRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgdHlwZSBGbGV4aWJsZUNvbHVtbkxheW91dCBmcm9tIFwic2FwL2YvRmxleGlibGVDb2x1bW5MYXlvdXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgXCJzYXAvZmUvcGxhY2Vob2xkZXIvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgTmF2Q29udGFpbmVyIGZyb20gXCJzYXAvbS9OYXZDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIENvbXBvbmVudENvbnRhaW5lciBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50Q29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgUGxhY2Vob2xkZXIgZnJvbSBcInNhcC91aS9jb3JlL1BsYWNlaG9sZGVyXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcblxudHlwZSBQbGFjZWhvbGRlckRlYnVnU3RhdHMgPSB7XG5cdGlIaWRlUGxhY2Vob2xkZXJUaW1lc3RhbXA6IG51bWJlcjtcblx0aVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wOiBudW1iZXI7XG5cdGlIZXJvZXNCYXRjaFJlY2VpdmVkRXZlbnRUaW1lc3RhbXA6IG51bWJlcjtcbn07XG50eXBlIFBsYWNlaG9sZGVyUm9vdENvbnRhaW5lciA9IChOYXZDb250YWluZXIgfCBGbGV4aWJsZUNvbHVtbkxheW91dCkgJiB7XG5cdF9wbGFjZWhvbGRlcjoge1xuXHRcdHBsYWNlaG9sZGVyOiB1bmtub3duO1xuXHR9O1xuXHRoaWRlUGxhY2Vob2xkZXI6IEZ1bmN0aW9uO1xufTtcbi8qKlxuICoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5Db250cm9sbGVyRXh0ZW5zaW9uIENvbnRyb2xsZXIgZXh0ZW5zaW9ufSBmb3IgUGxhY2Vob2xkZXJcbiAqXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlBsYWNlaG9sZGVyXCIpXG5jbGFzcyBQbGFjZWhvbGRlckNvbnRyb2xsZXJFeHRlbnNpb24gZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJpdmF0ZSBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJpdmF0ZSBvQXBwQ29tcG9uZW50ITogQXBwQ29tcG9uZW50O1xuXG5cdHByaXZhdGUgb1Jvb3RDb250YWluZXIhOiBQbGFjZWhvbGRlclJvb3RDb250YWluZXI7XG5cblx0cHJpdmF0ZSBkZWJ1Z1N0YXRzITogUGxhY2Vob2xkZXJEZWJ1Z1N0YXRzO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIGF0dGFjaEhpZGVDYWxsYmFjaygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc1BsYWNlaG9sZGVyRW5hYmxlZCgpKSB7XG5cdFx0XHRjb25zdCBvVmlldyA9IHRoaXMuYmFzZS5nZXRWaWV3KCk7XG5cdFx0XHRjb25zdCBvUGFnZSA9IG9WaWV3LmdldFBhcmVudCgpICYmIChvVmlldy5nZXRQYXJlbnQoKSBhcyBDb250cm9sICYgeyBvQ29udGFpbmVyOiBDb21wb25lbnRDb250YWluZXIgfSkub0NvbnRhaW5lcjtcblx0XHRcdGNvbnN0IG9OYXZDb250YWluZXIgPSAob1BhZ2UgJiYgb1BhZ2UuZ2V0UGFyZW50KCkpIGFzIFBsYWNlaG9sZGVyUm9vdENvbnRhaW5lcjtcblxuXHRcdFx0aWYgKCFvTmF2Q29udGFpbmVyIHx8ICFvUGFnZSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBfZm5Db250YWluZXJEZWxlZ2F0ZSA9IHtcblx0XHRcdFx0b25BZnRlclNob3c6IGZ1bmN0aW9uIChvRXZlbnQ6IHsgaXNCYWNrVG9QYWdlPzogYm9vbGVhbiB9KTogdm9pZCB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0b0V2ZW50LmlzQmFja1RvUGFnZSB8fFxuXHRcdFx0XHRcdFx0bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uaGFzaC5yZXBsYWNlKC8jLipcXD8vLCBcIlwiKSkuZ2V0KFwicmVzdG9yZUhpc3RvcnlcIikgPT09IFwidHJ1ZVwiXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHQvLyBpbiBjYXNlIHdlIG5hdmlnYXRlIHRvIHRoZSBsaXN0cmVwb3J0IHVzaW5nIHRoZSBzaGVsbFxuXHRcdFx0XHRcdFx0b05hdkNvbnRhaW5lci5oaWRlUGxhY2Vob2xkZXIoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRvUGFnZS5hZGRFdmVudERlbGVnYXRlKF9mbkNvbnRhaW5lckRlbGVnYXRlKTtcblxuXHRcdFx0Y29uc3Qgb1BhZ2VSZWFkeSA9IG9WaWV3LmdldENvbnRyb2xsZXIoKS5wYWdlUmVhZHk7XG5cdFx0XHQvL0luIGNhc2Ugb2Ygb2JqZWN0UGFnZSwgdGhlIHBsYWNlaG9sZGVyIHNob3VsZCBiZSBoaWRkZW4gd2hlbiBoZXJvZXMgcmVxdWVzdHMgYXJlIHJlY2VpdmVkXG5cdFx0XHQvLyBCdXQgZm9yIHNvbWUgc2NlbmFyaW8gbGlrZSBcIkNyZWF0ZSBpdGVtXCIsIGhlcm9lcyByZXF1ZXN0cyBhcmUgbm90IHNlbnQgLlxuXHRcdFx0Ly8gVGhlIHBhZ2VSZWFkeSBldmVudCBpcyB0aGVuIHVzZWQgYXMgZmFsbGJhY2tcblxuXHRcdFx0Y29uc3QgYUF0dGFjaEV2ZW50cyA9IFtcInBhZ2VSZWFkeVwiXTtcblx0XHRcdGlmIChvVmlldy5nZXRDb250cm9sbGVyTmFtZSgpID09PSBcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5PYmplY3RQYWdlQ29udHJvbGxlclwiKSB7XG5cdFx0XHRcdGFBdHRhY2hFdmVudHMucHVzaChcImhlcm9lc0JhdGNoUmVjZWl2ZWRcIik7XG5cdFx0XHR9XG5cdFx0XHRhQXR0YWNoRXZlbnRzLmZvckVhY2goKHNFdmVudDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdG9QYWdlUmVhZHkuYXR0YWNoRXZlbnQoXG5cdFx0XHRcdFx0c0V2ZW50LFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0b05hdkNvbnRhaW5lci5oaWRlUGxhY2Vob2xkZXIoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRhdHRhY2hSb3V0ZU1hdGNoZXJzKCk6IHZvaWQge1xuXHRcdHRoaXMuX2luaXQoKTtcblx0fVxuXG5cdGhpZGVSb290UGxhY2Vob2xkZXIoKTogdm9pZCB7XG5cdFx0dGhpcy5vUm9vdENvbnRhaW5lciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udGFpbmVyKCkgYXMgUGxhY2Vob2xkZXJSb290Q29udGFpbmVyO1xuXHRcdHRoaXMub1Jvb3RDb250YWluZXIuaGlkZVBsYWNlaG9sZGVyKHsgYWdncmVnYXRpb246IFwiYmVnaW5Db2x1bW5QYWdlc1wiIH0pO1xuXHRcdHRoaXMub1Jvb3RDb250YWluZXIuaGlkZVBsYWNlaG9sZGVyKHsgYWdncmVnYXRpb246IFwibWlkQ29sdW1uUGFnZXNcIiB9KTtcblx0XHR0aGlzLm9Sb290Q29udGFpbmVyLmhpZGVQbGFjZWhvbGRlcih7fSk7XG5cdH1cblxuXHRfaW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLm9BcHBDb21wb25lbnQgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0dGhpcy5vUm9vdENvbnRhaW5lciA9IHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udGFpbmVyKCkgYXMgUGxhY2Vob2xkZXJSb290Q29udGFpbmVyO1xuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuXHRcdGlmICh0aGlzLmlzUGxhY2Vob2xkZXJFbmFibGVkKCkpIHtcblx0XHRcdFBsYWNlaG9sZGVyLnJlZ2lzdGVyUHJvdmlkZXIoZnVuY3Rpb24gKG9Db25maWc6IHsgbmFtZTogc3RyaW5nIH0pIHtcblx0XHRcdFx0c3dpdGNoIChvQ29uZmlnLm5hbWUpIHtcblx0XHRcdFx0XHRjYXNlIFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0XCI6XG5cdFx0XHRcdFx0Y2FzZSBcInNhcC5mZS5hcmliYS5MaXN0UmVwb3J0XCI6XG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRodG1sOiBcInNhcC9mZS9wbGFjZWhvbGRlci92aWV3L1BsYWNlaG9sZGVyTFIuZnJhZ21lbnQuaHRtbFwiLFxuXHRcdFx0XHRcdFx0XHRhdXRvQ2xvc2U6IGZhbHNlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGNhc2UgXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2VcIjpcblx0XHRcdFx0XHRjYXNlIFwic2FwLmZlLmFyaWJhLk9iamVjdFBhZ2VcIjpcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdGh0bWw6IFwic2FwL2ZlL3BsYWNlaG9sZGVyL3ZpZXcvUGxhY2Vob2xkZXJPUC5mcmFnbWVudC5odG1sXCIsXG5cdFx0XHRcdFx0XHRcdGF1dG9DbG9zZTogZmFsc2Vcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQoKSkge1xuXHRcdFx0dGhpcy5pbml0UGxhY2Vob2xkZXJEZWJ1ZygpO1xuXHRcdH1cblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRpbml0UGxhY2Vob2xkZXJEZWJ1ZygpOiB2b2lkIHtcblx0XHR0aGlzLnJlc2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCk7XG5cdFx0Y29uc3QgaGFuZGxlciA9IHtcblx0XHRcdGFwcGx5OiAodGFyZ2V0OiBGdW5jdGlvbik6IHVua25vd24gPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5vUm9vdENvbnRhaW5lci5fcGxhY2Vob2xkZXIgJiYgdGhpcy5vUm9vdENvbnRhaW5lci5fcGxhY2Vob2xkZXIucGxhY2Vob2xkZXIpIHtcblx0XHRcdFx0XHR0aGlzLmRlYnVnU3RhdHMuaUhpZGVQbGFjZWhvbGRlclRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRhcmdldC5iaW5kKHRoaXMub1Jvb3RDb250YWluZXIpKCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcblx0XHRjb25zdCBwcm94eTEgPSBuZXcgUHJveHkodGhpcy5vUm9vdENvbnRhaW5lci5oaWRlUGxhY2Vob2xkZXIsIGhhbmRsZXIpO1xuXHRcdHRoaXMub1Jvb3RDb250YWluZXIuaGlkZVBsYWNlaG9sZGVyID0gcHJveHkxO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGlzUGxhY2Vob2xkZXJEZWJ1Z0VuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0aWYgKG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KFwic2FwLXVpLXh4LXBsYWNlaG9sZGVyLWRlYnVnXCIpID09PSBcInRydWVcIikge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRyZXNldFBsYWNlaG9sZGVyRGVidWdTdGF0cygpOiB2b2lkIHtcblx0XHR0aGlzLmRlYnVnU3RhdHMgPSB7XG5cdFx0XHRpSGlkZVBsYWNlaG9sZGVyVGltZXN0YW1wOiAwLFxuXHRcdFx0aVBhZ2VSZWFkeUV2ZW50VGltZXN0YW1wOiAwLFxuXHRcdFx0aUhlcm9lc0JhdGNoUmVjZWl2ZWRFdmVudFRpbWVzdGFtcDogMFxuXHRcdH07XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0Z2V0UGxhY2Vob2xkZXJEZWJ1Z1N0YXRzKCk6IFBsYWNlaG9sZGVyRGVidWdTdGF0cyB7XG5cdFx0cmV0dXJuIHRoaXMuZGVidWdTdGF0cztcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRpc1BsYWNlaG9sZGVyRW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBiUGxhY2Vob2xkZXJFbmFibGVkSW5GTFAgPSBPYmplY3RQYXRoLmdldChcInNhcC11c2hlbGwtY29uZmlnLmFwcHMucGxhY2Vob2xkZXIuZW5hYmxlZFwiKTtcblx0XHRpZiAoYlBsYWNlaG9sZGVyRW5hYmxlZEluRkxQID09PSBmYWxzZSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiBQbGFjZWhvbGRlci5pc0VuYWJsZWQoKTtcblx0fVxuXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRkaXNhYmxlQW5pbWF0aW9uKCk6IHZvaWQge1xuXHRcdHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRSb290Q29udHJvbCgpLmFkZFN0eWxlQ2xhc3MoXCJzYXBGZU5vQW5pbWF0aW9uXCIpO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdGVuYWJsZUFuaW1hdGlvbigpOiB2b2lkIHtcblx0XHR0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um9vdENvbnRyb2woKS5yZW1vdmVTdHlsZUNsYXNzKFwic2FwRmVOb0FuaW1hdGlvblwiKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBQbGFjZWhvbGRlckNvbnRyb2xsZXJFeHRlbnNpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7RUF1QkE7QUFDQTtBQUNBO0FBQ0E7RUFIQSxJQUtNQSw4QkFBOEIsSUFBQUMsSUFBQSxHQURuQ0MsY0FBYyxDQUFDLDhDQUE4QyxDQUFDLEVBQUFDLEtBQUEsR0FjN0RDLGVBQWUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0E2Q2pCRCxlQUFlLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBeUNqQkYsZUFBZSxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQWdCakJILGVBQWUsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FRakJKLGVBQWUsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FTakJMLGVBQWUsQ0FBQyxD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
|
|
@@ -91,7 +91,9 @@ class PlaceholderControllerExtension extends ControllerExtension {
|
|
|
91
91
|
|
|
92
92
|
hideRootPlaceholder(): void {
|
|
93
93
|
this.oRootContainer = this.oAppComponent.getRootContainer() as PlaceholderRootContainer;
|
|
94
|
-
this.oRootContainer.hidePlaceholder();
|
|
94
|
+
this.oRootContainer.hidePlaceholder({ aggregation: "beginColumnPages" });
|
|
95
|
+
this.oRootContainer.hidePlaceholder({ aggregation: "midColumnPages" });
|
|
96
|
+
this.oRootContainer.hidePlaceholder({});
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
_init(): void {
|
|
@@ -103,11 +105,13 @@ class PlaceholderControllerExtension extends ControllerExtension {
|
|
|
103
105
|
Placeholder.registerProvider(function (oConfig: { name: string }) {
|
|
104
106
|
switch (oConfig.name) {
|
|
105
107
|
case "sap.fe.templates.ListReport":
|
|
108
|
+
case "sap.fe.ariba.ListReport":
|
|
106
109
|
return {
|
|
107
110
|
html: "sap/fe/placeholder/view/PlaceholderLR.fragment.html",
|
|
108
111
|
autoClose: false
|
|
109
112
|
};
|
|
110
113
|
case "sap.fe.templates.ObjectPage":
|
|
114
|
+
case "sap.fe.ariba.ObjectPage":
|
|
111
115
|
return {
|
|
112
116
|
html: "sap/fe/placeholder/view/PlaceholderOP.fragment.html",
|
|
113
117
|
autoClose: false
|
|
@@ -509,10 +509,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/
|
|
|
509
509
|
* @param context The ODataV4 context for which rejected recommendations should be reset.
|
|
510
510
|
*/;
|
|
511
511
|
_proto.resetRejectedRecommendations = function resetRejectedRecommendations(context) {
|
|
512
|
-
const localAnnotationModel = context
|
|
512
|
+
const localAnnotationModel = context?.getModel()?.getLocalAnnotationModel();
|
|
513
513
|
const rejectedRecommendations = localAnnotationModel?.getProperty("/rejectedRecommendations");
|
|
514
514
|
Object.keys(rejectedRecommendations || {}).forEach(key => {
|
|
515
|
-
if (key.startsWith(context
|
|
515
|
+
if (key.startsWith(context?.getPath())) {
|
|
516
516
|
delete rejectedRecommendations[key];
|
|
517
517
|
}
|
|
518
518
|
});
|
|
@@ -523,4 +523,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/
|
|
|
523
523
|
_exports = Recommendations;
|
|
524
524
|
return _exports;
|
|
525
525
|
}, false);
|
|
526
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWNvbW1lbmRhdGlvbnMiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsIm1ldGhvZE92ZXJyaWRlIiwiX2RlYzMiLCJfZGVjNCIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWM1IiwiX2RlYzYiLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJJbnN0ZWFkIiwiX2RlYzciLCJfZGVjOCIsImZpbmFsRXh0ZW5zaW9uIiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJfdGhpcyIsImNhbGwiLCJkYXRhVG9CZUFjY2VwdGVkIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uSW5pdCIsInRlbGVtZXRyeSIsIlRlbGVtZXRyeSIsImFsbFJlY29tbWVuZGVkRmllbGRzIiwiaW50ZXJuYWxNb2RlbCIsImJhc2UiLCJnZXRWaWV3IiwiZ2V0TW9kZWwiLCJwcmV2aW91c0NvbnRleHQiLCJ1bmRlZmluZWQiLCJvbkFmdGVyQmluZGluZyIsImNvbnRleHQiLCJjdXJyZW50Q29udGV4dEJhc2VQYXRoIiwiZ2V0UGF0aCIsInNwbGl0IiwicHJldmlvdXNDb250ZXh0QmFzZVBhdGgiLCJyb290Q29udGV4dCIsImlzUmVjb21tZW5kYXRpb25FbmFibGVkIiwiZ2V0UHJvcGVydHkiLCJ2aWV3TGV2ZWwiLCJnZXRWaWV3RGF0YSIsIl9nZXRSb290Q29udGV4dCIsInJlY29tbWVuZGF0aW9ucyIsImlzRW5hYmxlZCIsInNldFByb3BlcnR5IiwiaXNGY2xFbmFibGVkIiwiZ2V0QXBwQ29tcG9uZW50IiwiX2lzRmNsRW5hYmxlZCIsImlzRnVsbFNjcmVlbiIsImdldFJvb3RWaWV3Q29udHJvbGxlciIsImdldEhlbHBlciIsImdldEN1cnJlbnRVSVN0YXRlIiwidHJ5UmVzZXRSZWNvbW1lbmRhdGlvbnMiLCJyZXNldERhdGEiLCJwcm9ncmFtbWluZ01vZGVsIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJnZXRQcm9ncmFtbWluZ01vZGVsIiwiQ29tbW9uVXRpbHMiLCJjcmVhdGVSb290Q29udGV4dCIsImNsZWFyUmVjb21tZW5kYXRpb25zIiwiYmluZGluZ0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsInJlY29tbWVuZGF0aW9uSGVscGVyIiwiX3Jvb3RDb250ZXh0IiwiZmV0Y2hSZWNvbW1lbmRhdGlvbnMiLCJfY29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyIsImN1cnJlbnRDb250ZXh0c0luZm8iLCJjb25zaWRlck9ubHlOZXdDb250ZXh0IiwiaXNTdWNjZXNzIiwic2lkZUVmZmVjdHMiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJyZWNvbW1lbmRhdGlvblJlZ2lzdHJ5IiwiZ2V0UmVjb21tZW5kYXRpb25zTWFwcGluZyIsImZpbHRlcmVkQ29udGV4dHNJbmZvIiwiZmlsdGVyIiwiY29udGV4dEluZm8iLCJzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIiwiY2hlY2tJZlJlY29tbWVuZGF0aW9uUm9sZUV4aXN0c0ZvckNvbnRleHQiLCJjb250ZXh0c0luZm8iLCJnZXRDb250ZXh0c1dpdGhOb1JlY29tbWVuZGF0aW9ucyIsImNvbnRleHRzIiwibWFwIiwibGVuZ3RoIiwic3RhcnRUaW1lIiwicGVyZm9ybWFuY2UiLCJub3ciLCJyZWNvbW1lbmRhdGlvbkRhdGEiLCJlbmRUaW1lIiwidXBkYXRlUmVzcG9uc2VUaW1lSW5mbyIsInVwZGF0ZUFsbFJlY29tbWVuZGVkRmllbGRzIiwidXBkYXRlRGF0YUZyb21SZWNvbW1lbmRhdGlvblJlc3BvbnNlIiwiaW5jcmVhc2VDb3VudCIsImFwcGx5UmVjb21tZW5kYXRpb24iLCJlIiwiTG9nIiwiZXJyb3IiLCJzdG9yZVJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZSIsImZpZWxkIiwiYXBwQ29tcG9uZW50IiwiaXNGaWVsZFJlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJjaGVja0lmRmllbGRJc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJ0YXJnZXRzIiwiZmV0Y2hUYXJnZXRzIiwiZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzIiwiZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJyZWNvbW1lbmRhdGlvbkNvbnRleHQiLCJmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dCIsImluY2x1ZGVzIiwiY2xlYXJJZ25vcmVkQ29udGV4dHMiLCJvbkJlZm9yZUFjY2VwdFJlY29tbWVuZGF0aW9ucyIsIl9wYXJhbXMiLCJhY2NlcHRSZWNvbW1lbmRhdGlvbnMiLCJwcm9taXNlcyIsInByb3BlcnR5UGF0aCIsInB1c2giLCJ2YWx1ZSIsImFsbCIsInJlY29tbWVuZGF0aW9uUmVzcG9uc2VzIiwic3RvcmVSZWNvbW1lbmRhdGlvbnMiLCJjb250ZXh0UGF0aHMiLCJyZWNvbW1lbmRhdGlvbkNvbnRleHRzIiwiZm9yRWFjaCIsImNvbnRleHRQYXRoIiwiaW5kZXgiLCJpbmRleE9mIiwiY29udGV4dElkZW50aWZpZXIiLCJrZXkiLCJjb250ZXh0UGF0aEZyb21LZXkiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImZldGNoRmlsdGVyZWRSZWNvbW1lbmRhdGlvbkRhdGEiLCJmaWx0ZXJlZFRhcmdldHMiLCJmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhIiwiT2JqZWN0Iiwia2V5cyIsImFzc2lnbiIsImNvbnNpZGVyUmVjb21tZW5kYXRpb25Db250ZXh0cyIsInZlcnNpb24iLCJpc1JlY29tbWVuZGF0aW9uQWNjZXB0YWJsZSIsInNwbGl0UGF0aEFuZENoZWNrSWZSZWNvbW1lbmRhdGlvbkFjY2VwdGFibGUiLCJjdHh0UGF0aCIsInBhdGhBcnJheSIsIm5ld1BhdGgiLCJuZXdQYXRoQXJyYXkiLCJzbGljZSIsInNvbWUiLCJyaWdodE1vc3RDb250ZXh0IiwiZ2V0UmlnaHRtb3N0Q29udGV4dCIsImRhdGFUb0JlRmlsdGVyZWQiLCJmZXRjaERhdGFUb0JlRmlsdGVyZWQiLCJhZGp1c3RBY2NlcHRBbGxQYXJhbXMiLCJmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGEiLCJmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzIiwicGFyYW1zIiwidGV4dCIsInByb3BlcnR5UGF0aEZyb21LZXkiLCJtYXRjaGluZ0NvbnRleHQiLCJpc1JlY29tbWVuZGF0aW9uRmllbGROdWxsIiwiZmV0Y2hBY2NlcHRBbGxQYXJhbXMiLCJnZXRDb250cm9sbGVyIiwiYWRkQ29udGV4dElkZW50aWZpZXJUZXh0IiwiY2hlY2tJZlJlY29tbWVuZGF0aW9uc0V4aXN0IiwiaWdub3JlUmVjb21tZW5kYXRpb25Gb3JDb250ZXh0cyIsInZpZXciLCJzZXRDdXJyZW50Um9vdENvbnRleHQiLCJyZXNldFJlY29tbWVuZGF0aW9ucyIsInN0b3JlRGF0YUZvclRlbGVtZXRyeSIsInJlY29tbWVuZGF0aW9uT3B0aW9uQ2hvb3NlbiIsIlJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24iLCJBY2NlcHQiLCJ1cGRhdGVEYXRhIiwiUmVqZWN0Iiwic3RvcmVEYXRhIiwiaW5jcmVhc2VUZWxlbWV0cnlEYXRhQ291bnQiLCJ1cGRhdGVUZWxlbWV0cnlEYXRhQmFzZWRPblVzZXJTZWxlY3Rpb24iLCJmaWVsZFBhdGgiLCJzZWxlY3RlZFZhbHVlIiwidmlld0JpbmRpbmdDb250ZXh0UGF0aCIsIm5ld1JlY29tbWVuZGF0aW9uc0ZvckN1cnJlbnRDb250ZXh0cyIsInJlc3BvbnNlIiwicmVzZXRSZWplY3RlZFJlY29tbWVuZGF0aW9ucyIsImxvY2FsQW5ub3RhdGlvbk1vZGVsIiwiZ2V0TG9jYWxBbm5vdGF0aW9uTW9kZWwiLCJyZWplY3RlZFJlY29tbWVuZGF0aW9ucyIsInN0YXJ0c1dpdGgiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUmVjb21tZW5kYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBtZXRob2RPdmVycmlkZSwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyByZWNvbW1lbmRhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1JlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvLFxuXHRSZWNvbW1lbmRhdGlvbkluZm8sXG5cdFN0YW5kYXJkUmVjb21tZW5kYXRpb25SZXNwb25zZVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT0RhdGFWNENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcIi4uL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBGY2xDb250cm9sbGVyIGZyb20gXCIuLi9yb290Vmlldy9GY2wuY29udHJvbGxlclwiO1xuaW1wb3J0IFRyYW5zYWN0aW9uSGVscGVyIGZyb20gXCIuL2VkaXRGbG93L1RyYW5zYWN0aW9uSGVscGVyXCI7XG5cbmltcG9ydCB7IFJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24gfSBmcm9tIFwiLi4vY29udHJvbHMvUmVjb21tZW5kYXRpb25zL0NvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1wiO1xuaW1wb3J0IHsgdHlwZSBCYXNlTWFuaWZlc3RTZXR0aW5ncyB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgUmVjb21tZW5kYXRpb25UZWxlbWV0cnkgfSBmcm9tIFwiLi4vc2VydmljZXMvVGVsZW1ldHJ5U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBUZWxlbWV0cnkgZnJvbSBcIi4vcmVjb21tZW5kYXRpb25zL1RlbGVtZXRyeVwiO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSBhY2NlcHRSZWNvbW1lbmRhdGlvbnMgYW5kIG9uQmVmb3JlQWNjZXB0UmVjb21tZW5kYXRpb25zIG1ldGhvZHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEFjY2VwdEFsbFBhcmFtcyA9IHtcblx0cmVjb21tZW5kYXRpb25EYXRhPzogUmVjb21tZW5kYXRpb25EYXRhW107XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgcmVjb21tZW5kYXRpb24gZW50cnkuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFJlY29tbWVuZGF0aW9uRGF0YSA9IHtcblx0LyoqXG5cdCAqIFRoZSBPRGF0YSBWNCBjb250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVjb21tZW5kYXRpb24uXG5cdCAqL1xuXHRjb250ZXh0PzogT0RhdGFWNENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIEFuIGFycmF5IG9mIGNvbnRleHQgaWRlbnRpZmllcnMgcmVsZXZhbnQgdG8gdGhlIHJlY29tbWVuZGF0aW9uLlxuXHQgKi9cblx0Y29udGV4dElkZW50aWZpZXI/OiBzdHJpbmdbXTtcblxuXHQvKipcblx0ICogQW4gYXJyYXkgb2YgY29udGV4dCBpZGVudGlmaWVyIHRleHRzIGZvciBkaXNwbGF5IHB1cnBvc2VzLlxuXHQgKi9cblx0Y29udGV4dElkZW50aWZpZXJUZXh0Pzogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIFRoZSBwcm9wZXJ0eSBwYXRoIHJlbGF0ZWQgdG8gdGhlIHJlY29tbWVuZGF0aW9uLlxuXHQgKi9cblx0cHJvcGVydHlQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWNvbW1lbmRhdGlvbi5cblx0ICovXG5cdHZhbHVlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgZGlzcGxheSB0ZXh0IGZvciB0aGUgcmVjb21tZW5kYXRpb24uXG5cdCAqL1xuXHR0ZXh0Pzogc3RyaW5nO1xufTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlJlY29tbWVuZGF0aW9uc1wiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjb21tZW5kYXRpb25zIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzITogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXTtcblxuXHRyb290Q29udGV4dCE6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0aW50ZXJuYWxNb2RlbCE6IEpTT05Nb2RlbDtcblxuXHR0ZWxlbWV0cnkhOiBUZWxlbWV0cnk7XG5cblx0YWxsUmVjb21tZW5kZWRGaWVsZHMhOiBzdHJpbmdbXTtcblxuXHQvLyB0aGUgZGF0YSBzaG93biBpbiBBY2NlcHQvSWdub3JlIGRpYWxvZyBvZiBSZWNvbW1lbmRhdGlvbnNcblx0ZGF0YVRvQmVBY2NlcHRlZDogUmVjb21tZW5kYXRpb25EYXRhW10gPSBbXTtcblxuXHRwcmV2aW91c0NvbnRleHQ6IENvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy50ZWxlbWV0cnkgPSBuZXcgVGVsZW1ldHJ5KCk7XG5cdFx0dGhpcy5hbGxSZWNvbW1lbmRlZEZpZWxkcyA9IFtdO1xuXHRcdHRoaXMuaW50ZXJuYWxNb2RlbCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHR0aGlzLnByZXZpb3VzQ29udGV4dCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdGFzeW5jIG9uQWZ0ZXJCaW5kaW5nKGNvbnRleHQ6IENvbnRleHQgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRDb250ZXh0QmFzZVBhdGggPSBjb250ZXh0LmdldFBhdGgoKS5zcGxpdChcIi9cIilbMV07XG5cdFx0XHRjb25zdCBwcmV2aW91c0NvbnRleHRCYXNlUGF0aCA9IHRoaXMucHJldmlvdXNDb250ZXh0Py5nZXRQYXRoKCkuc3BsaXQoXCIvXCIpWzFdO1xuXHRcdFx0Ly9cdGNvbnNvbGUubG9nKCdjdXJyZW50OjonLCBjdXJyZW50Q29udGV4dEJhc2VQYXRoKTtcblx0XHRcdC8vXHRjb25zb2xlLmxvZygncHJldmlvdXMnLCBwcmV2aW91c0NvbnRleHRCYXNlUGF0aCk7XG5cdFx0XHR0aGlzLnJvb3RDb250ZXh0ID0gdW5kZWZpbmVkO1xuXHRcdFx0Ly8gdXNlIGludGVybmFsIG1vZGVsIGJlY2F1c2Ugd2UgaGF2ZSB0byB1c2UgdGhpcyBpbmZvcm1hdGlvbiBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uIGZvciBkaWZmZXJlbnQgaW5zdGFuY2VzLlxuXHRcdFx0bGV0IGlzUmVjb21tZW5kYXRpb25FbmFibGVkID0gdGhpcy5pbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL2lzUmVjb21tZW5kYXRpb25FbmFibGVkXCIpO1xuXHRcdFx0Ly8gb25BZnRlciBiaW5kaW5nIGlzIGNhbGxlZCBmb3IgYWxsIGNvbnRleHRzXG5cdFx0XHQvLyBidXQgd2UgZG8gbm90IG5lZWQgdG8gY2FsbCB0aGUgaXNFbmFibGVkIGhvb2sgYWxsIHRoZSB0aW1lXG5cdFx0XHQvLyBzbyBjaGVjayBpZiByZWNvbW1lbmRhdGlvbiBlbmFibGVkIGlzIGFscmVhZHkgYXZhaWxhYmxlXG5cdFx0XHR0aGlzLnByZXZpb3VzQ29udGV4dCA9IGNvbnRleHQ7XG5cdFx0XHRjb25zdCB2aWV3TGV2ZWwgPSAodGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncyk/LnZpZXdMZXZlbDtcblx0XHRcdGNvbnN0IHJvb3RDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkID1cblx0XHRcdFx0dmlld0xldmVsICYmIHZpZXdMZXZlbCA+IDEgPyBhd2FpdCB0aGlzLl9nZXRSb290Q29udGV4dChjb250ZXh0IGFzIE9EYXRhVjRDb250ZXh0KSA6IGNvbnRleHQ7XG5cdFx0XHRpZiAocm9vdENvbnRleHQpIHtcblx0XHRcdFx0aWYgKGlzUmVjb21tZW5kYXRpb25FbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCA9IHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuaXNFbmFibGVkKHJvb3RDb250ZXh0KTtcblx0XHRcdFx0XHR0aGlzLmludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWRcIiwgaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vXHRpZighdGhpcy5wcmV2aW91c0NvbnRleHQpIHtcblxuXHRcdFx0XHQvL1x0fVxuXHRcdFx0XHRjb25zdCBpc0ZjbEVuYWJsZWQgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuX2lzRmNsRW5hYmxlZCgpO1xuXHRcdFx0XHRjb25zdCBpc0Z1bGxTY3JlZW4gPSBpc0ZjbEVuYWJsZWRcblx0XHRcdFx0XHQ/ICh0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcikuZ2V0SGVscGVyKCkuZ2V0Q3VycmVudFVJU3RhdGUoKS5pc0Z1bGxTY3JlZW5cblx0XHRcdFx0XHQ6IHRydWU7XG5cdFx0XHRcdGlmIChjdXJyZW50Q29udGV4dEJhc2VQYXRoICE9PSBwcmV2aW91c0NvbnRleHRCYXNlUGF0aCkge1xuXHRcdFx0XHRcdC8vIGRpZmZlcmVudCBjb250ZXh0cy8gT1Bcblx0XHRcdFx0XHQvL1x0Y29uc29sZS5sb2coXCJydW4gcmVzZXQgbG9naWNcIilcblx0XHRcdFx0XHR0aGlzLnRyeVJlc2V0UmVjb21tZW5kYXRpb25zKHJvb3RDb250ZXh0IGFzIE9EYXRhVjRDb250ZXh0KTtcblx0XHRcdFx0XHR0aGlzLnRlbGVtZXRyeS5yZXNldERhdGEoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaXNGY2xFbmFibGVkICYmICFpc0Z1bGxTY3JlZW4pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIF9nZXRSb290Q29udGV4dChjb250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IFByb21pc2U8Q29udGV4dCB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IHByb2dyYW1taW5nTW9kZWwgPSBUcmFuc2FjdGlvbkhlbHBlci5nZXRQcm9ncmFtbWluZ01vZGVsKGNvbnRleHQpO1xuXHRcdHJldHVybiBDb21tb25VdGlscy5jcmVhdGVSb290Q29udGV4dChwcm9ncmFtbWluZ01vZGVsLCB0aGlzLmJhc2UuZ2V0VmlldygpLCB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFyIGFsbCByZWNvbW1lbmRhdGlvbnMgY3VycmVudGx5IGF2YWlsYWJsZSBvbiB0aGUgVUkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRwdWJsaWMgY2xlYXJSZWNvbW1lbmRhdGlvbnMoKTogdm9pZCB7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGlmIChiaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0cmVjb21tZW5kYXRpb25IZWxwZXIuY2xlYXJSZWNvbW1lbmRhdGlvbnModGhpcy5iYXNlLmdldFZpZXcoKSwgYmluZGluZ0NvbnRleHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiByZWNvbW1lbmRhdGlvbnMgYXJlIGVuYWJsZWQgb3Igbm90LlxuXHQgKiBAcGFyYW0gX3Jvb3RDb250ZXh0IFRoZSByb290IGVudGl0eSBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRydWUgaWYgcmVjb21tZW5kYXRpb24gaXMgZW5hYmxlZC4gRmFsc2UgaWYgcmVjb21tZW5kYXRpb24gaXMgZGlzYWJsZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgaXNFbmFibGVkKF9yb290Q29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyByZWNvbW1lbmRhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC4gSW4gY2FzZSBjYWxsZWQgYmVmb3JlXG5cdCAqIHRoZSBlbmFibGVtZW50IGNoZWNrIGlzIGNvbXBsZXRlZCwgbWV0aG9kIHdpbGwgcmV0dXJuIGZhbHNlIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9uIGlzIGVuYWJsZWQgZWxzZSBmYWxzZS5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5pbnRlcm5hbE1vZGVsPy5nZXRQcm9wZXJ0eShcIi9pc1JlY29tbWVuZGF0aW9uRW5hYmxlZFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgcmVjb21tZW5kYXRpb24gZm9yIGEgc3BlY2lmaWMgY29udGV4dC5cblx0ICogQHBhcmFtIF9jb250ZXh0IFRoZSBjb250ZXh0IHRoYXQgc2hhbGwgYmUgY29uc2lkZXJlZCB3aGVuIGZldGNoaW5nIHJlY29tbWVuZGF0aW9uc1xuXHQgKiBAcGFyYW0gX3Jvb3RDb250ZXh0IFRoZSByb290IGVudGl0eSBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSByZWNvbW1lbmRhdGlvbiBlbnRyaWVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgYXN5bmMgZmV0Y2hSZWNvbW1lbmRhdGlvbnMoX2NvbnRleHQ6IE9EYXRhVjRDb250ZXh0W10sIF9yb290Q29udGV4dD86IENvbnRleHQpOiBQcm9taXNlPFN0YW5kYXJkUmVjb21tZW5kYXRpb25SZXNwb25zZVtdPiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2ggdGhlIHJlY29tbWVuZGF0aW9ucyBhbmQgYXBwbHkgdGhlbSBvbiB0aGUgVUkuXG5cdCAqIEBwYXJhbSBjdXJyZW50Q29udGV4dHNJbmZvIENvbnRleHRzIEluZm8gdGhhdCBjb250YWlucyB0aGUgY29udGV4dCB0aGF0IHNoYWxsIGJlIGNvbnNpZGVyZWQgd2hlbiBmZXRjaGluZyByZWNvbW1lbmRhdGlvbnMgYWxvbmcgd2l0aCBjb250ZXh0SWRlbnRpZmllclxuXHQgKiBAcGFyYW0gY29uc2lkZXJPbmx5TmV3Q29udGV4dCBCb29sZWFuIHByb3BlcnR5IGluZGljYXRpbmcgUmVjb21tZW5kYXRpb25cblx0ICogc2hvdWxkIGJlIGZldGNoZWQgb25seSBmb3IgbmV3IGNvbnRleHRzIHdpdGggbm8gcmVjb21tZW5kYXRpb24gZmV0Y2ggY2FsbFxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlY29tbWVuZGF0aW9ucyB3ZXJlIGZldGNoZWQgYW5kIGFwcGxpZWQgY29ycmVjdGx5XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIGFzeW5jIGZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMoXG5cdFx0Y3VycmVudENvbnRleHRzSW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSxcblx0XHRjb25zaWRlck9ubHlOZXdDb250ZXh0PzogYm9vbGVhblxuXHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRsZXQgaXNTdWNjZXNzID0gZmFsc2U7XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdHMgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgcmVjb21tZW5kYXRpb25SZWdpc3RyeSA9IHNpZGVFZmZlY3RzLmdldFJlY29tbWVuZGF0aW9uc01hcHBpbmcoKTtcblx0XHRjb25zdCBmaWx0ZXJlZENvbnRleHRzSW5mbyA9IGN1cnJlbnRDb250ZXh0c0luZm8uZmlsdGVyKChjb250ZXh0SW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdHJldHVybiBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmNoZWNrSWZSZWNvbW1lbmRhdGlvblJvbGVFeGlzdHNGb3JDb250ZXh0KGNvbnRleHRJbmZvLCByZWNvbW1lbmRhdGlvblJlZ2lzdHJ5KTtcblx0XHR9KTtcblx0XHRpZiAodGhpcy5pc1JlY29tbWVuZGF0aW9uRW5hYmxlZCgpKSB7XG5cdFx0XHRjb25zdCBjb250ZXh0c0luZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10gPSBjb25zaWRlck9ubHlOZXdDb250ZXh0XG5cdFx0XHRcdD8gc3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5nZXRDb250ZXh0c1dpdGhOb1JlY29tbWVuZGF0aW9ucyhmaWx0ZXJlZENvbnRleHRzSW5mbywgdGhpcy5pbnRlcm5hbE1vZGVsKVxuXHRcdFx0XHQ6IGZpbHRlcmVkQ29udGV4dHNJbmZvO1xuXHRcdFx0Y29uc3QgY29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10gPSBjb250ZXh0c0luZm8ubWFwKFxuXHRcdFx0XHQoY29udGV4dEluZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKSA9PiBjb250ZXh0SW5mby5jb250ZXh0XG5cdFx0XHQpIGFzIE9EYXRhVjRDb250ZXh0W107XG5cdFx0XHRpZiAoY29udGV4dHMgJiYgY29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHJvb3RDb250ZXh0ID0gYXdhaXQgdGhpcy5fZ2V0Um9vdENvbnRleHQoY29udGV4dHNbMF0pO1xuXHRcdFx0XHRcdGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXHRcdFx0XHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSA9IGF3YWl0IHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hSZWNvbW1lbmRhdGlvbnMoY29udGV4dHMsIHJvb3RDb250ZXh0KTtcblx0XHRcdFx0XHRjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cdFx0XHRcdFx0dGhpcy50ZWxlbWV0cnkudXBkYXRlUmVzcG9uc2VUaW1lSW5mbyhlbmRUaW1lIC0gc3RhcnRUaW1lKTtcblx0XHRcdFx0XHRpZiAocmVjb21tZW5kYXRpb25EYXRhPy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlQWxsUmVjb21tZW5kZWRGaWVsZHMocmVjb21tZW5kYXRpb25EYXRhKTtcblx0XHRcdFx0XHRcdHRoaXMudGVsZW1ldHJ5LnVwZGF0ZURhdGFGcm9tUmVjb21tZW5kYXRpb25SZXNwb25zZShyZWNvbW1lbmRhdGlvbkRhdGEpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBpZiBlbXB0eSByZWNvbW1lbmRhdGlvbnMsIHRoZW4gc3RvcmUgaXQgZm9yIHRlbGVtZXRyeSBwdXJwb3NlXG5cdFx0XHRcdFx0XHR0aGlzLnRlbGVtZXRyeS5pbmNyZWFzZUNvdW50KFwibnVtYmVyT2ZUaW1lc0VtcHR5UmVjb21tZW5kYXRpb25zXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBuZWVkIHRvIHZhbGlkYXRlIHRoYXQgdGhlIHJlc3BvbnNlIGlzIHByb3Blcmx5IGZvcm1hdHRlZFxuXHRcdFx0XHRcdGlzU3VjY2VzcyA9IHRoaXMuYXBwbHlSZWNvbW1lbmRhdGlvbihyZWNvbW1lbmRhdGlvbkRhdGEsIGNvbnRleHRzKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlRoZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgcmVjb21tZW5kYXRpb25zXCIsIGUgYXMgRXJyb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuc3RvcmVSZWNvbW1lbmRhdGlvbkNvbnRleHRzKGZpbHRlcmVkQ29udGV4dHNJbmZvKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaXNTdWNjZXNzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoIHRoZSByZWNvbW1lbmRhdGlvbnMgb24gZmllbGQgY2hhbmdlIGFuZCBhcHBseSB0aGVtIG9uIHRoZSBVSS5cblx0ICogQHBhcmFtIGZpZWxkIFRoZSBjaGFuZ2VkIGZpZWxkLlxuXHQgKiBAcGFyYW0gY29udGV4dEluZm8gQ29udGV4dEluZm8gd2hpY2ggY29udGFpbnMgdGhlIGNvbnRleHQgaXMgb25seSBjb25zaWRlcmVkIHdoZW4gZmV0Y2hpbmcgdGhlIHJlY29tbWVuZGF0aW9ucyBhbG9uZyB3aXRoIGNvbnRleHRJZGVudGlmaWVyXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVjb21tZW5kYXRpb24gd2VyZSBmZXRjaGVkIGFuZCBhcHBsaWVkIGNvcnJlY3RseVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBhc3luYyBmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZDogQ29udHJvbCwgY29udGV4dEluZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGlzRmllbGRSZWNvbW1lbmRhdGlvblJlbGV2YW50ID0gYXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLmNoZWNrSWZGaWVsZElzUmVjb21tZW5kYXRpb25SZWxldmFudChmaWVsZCk7XG5cdFx0aWYgKGlzRmllbGRSZWNvbW1lbmRhdGlvblJlbGV2YW50KSB7XG5cdFx0XHQvL2dldHRpbmcgdGhlIHZpc2libGUgdGFyZ2V0cyBvbiB0aGUgVUkgYW5kIHRoZWlyIHJlc3BlY3RpdmUgY29udGV4dHNcblx0XHRcdGNvbnN0IHRhcmdldHMgPSB0aGlzLmZldGNoVGFyZ2V0cyh0cnVlKTtcblx0XHRcdGNvbnN0IGZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cyA9IHRoaXMuZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHModGFyZ2V0cyk7XG5cdFx0XHQvL2ZpbHRlcmluZyB0aGUgY2hpbGQgY29udGV4dHMgZnJvbSB0aGUgYXZhaWxhYmxlIGNvbnRleHRzXG5cdFx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkNvbnRleHQgPSBmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHMuZmlsdGVyKGZ1bmN0aW9uIChmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dCkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KGZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0LmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpXG5cdFx0XHRcdFx0XHQuZ2V0UGF0aCgpXG5cdFx0XHRcdFx0XHQ/LmluY2x1ZGVzKChjb250ZXh0SW5mbz8uY29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCkuZ2V0UGF0aCgpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHQ7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5jbGVhcklnbm9yZWRDb250ZXh0cyh0aGlzLmludGVybmFsTW9kZWwsIChjb250ZXh0SW5mbz8uY29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCkuZ2V0UGF0aCgpKTtcblx0XHRcdHJldHVybiB0aGlzLmZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMocmVjb21tZW5kYXRpb25Db250ZXh0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBmaWx0ZXJlZCByZWNvbW1lbmRhdGlvbnMgZnJvbSBwYXNzZWQgcmVjb21tZW5kYXRpb25zIGFuZCB0aGVuIGJhc2VkIG9uIGl0IHdlIGVpdGhlciBzaG93IHRoZSBmaWx0ZXJlZCByZWNvbW1lbmRhdGlvbnMgb3Igbm90IHNob3cgdGhlIEFjY2VwdCBhbGwgRGlhbG9nIGlmIHRoZXJlIGFyZSBubyByZWNvbW1lbmRhdGlvbnMuXG5cdCAqIEBwYXJhbSBfcGFyYW1zIFBhcmFtcyBvYmplY3QgY29udGFpbmluZyByZWNvbW1lbmRhdGlvbkRhdGEgcHJvcGVydHkgd2hpY2ggaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGNvbnRleHQsIHByb3BlcnR5UGF0aCwgdmFsdWUgYW5kIHRleHQgZm9yIGEgcmVjb21tZW5kYXRpb25cblx0ICogQHBhcmFtIF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhIEFycmF5IG9mIHJlY29tbWVuZGF0aW9uIGRhdGEgb2JqZWN0cywgZWFjaCBjb250YWluaW5nOlxuXHQgKiBfcGFyYW1zLnJlY29tbWVuZGF0aW9uRGF0YVtdLmNvbnRleHQgVGhlIGNvbnRleHQgZm9yIHRoZSByZWNvbW1lbmRhdGlvbi5cblx0ICogX3BhcmFtcy5yZWNvbW1lbmRhdGlvbkRhdGFbXS5jb250ZXh0SWRlbnRpZmllciBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbnRleHQuXG5cdCAqIF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhW10ucHJvcGVydHlQYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIGZvciB0aGUgcmVjb21tZW5kZWQgZmllbGQuXG5cdCAqIF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhW10udmFsdWUgVGhlIHJlY29tbWVuZGVkIHZhbHVlLlxuXHQgKiBfcGFyYW1zLnJlY29tbWVuZGF0aW9uRGF0YVtdLnRleHQgVGhlIGRpc3BsYXkgdGV4dCBmb3IgdGhlIHJlY29tbWVuZGF0aW9uLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTM5LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShcIkFmdGVyQXN5bmNcIilcblx0cHVibGljIGFzeW5jIG9uQmVmb3JlQWNjZXB0UmVjb21tZW5kYXRpb25zKF9wYXJhbXM6IEFjY2VwdEFsbFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vZG8gbm90aGluZ1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhY2NlcHRpbmcgdGhlIHJlY29tbWVuZGF0aW9ucy5cblx0ICogQHBhcmFtIF9wYXJhbXMgUGFyYW1zIG9iamVjdCBjb250YWluaW5nIHJlY29tbWVuZGF0aW9uRGF0YSBwcm9wZXJ0eSB3aGljaCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIGNvbnRhaW5pbmcgY29udGV4dCwgcHJvcGVydHlQYXRoLCB2YWx1ZSBhbmQgdGV4dCBmb3IgYSByZWNvbW1lbmRhdGlvblxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIHJlc29sdmVkIHRvIGEgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB3aGV0aGVyIHJlY29tbWVuZGF0aW9ucyBhcmUgYWNjZXB0ZWQgb3Igbm90XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0cHVibGljIGFzeW5jIGFjY2VwdFJlY29tbWVuZGF0aW9ucyhfcGFyYW1zOiBBY2NlcHRBbGxQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHQvLyB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBiZSBleGVjdXRlZCBpZiB0aGVyZSBpcyBubyBob29rIGltcGxlbWVudGF0aW9uIGkuZS4gZm9yIHRoZSBuZXcgb3JjaGVzdHJhdGlvblxuXHRcdGNvbnN0IHByb21pc2VzID0gW107XG5cdFx0aWYgKF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSBvZiBfcGFyYW1zLnJlY29tbWVuZGF0aW9uRGF0YSkge1xuXHRcdFx0XHRpZiAocmVjb21tZW5kYXRpb25EYXRhLmNvbnRleHQgJiYgcmVjb21tZW5kYXRpb25EYXRhLnByb3BlcnR5UGF0aCkge1xuXHRcdFx0XHRcdHByb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEuY29udGV4dC5zZXRQcm9wZXJ0eShyZWNvbW1lbmRhdGlvbkRhdGEucHJvcGVydHlQYXRoLCByZWNvbW1lbmRhdGlvbkRhdGEudmFsdWUsIFwiJGF1dG8uYWJjXCIpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgYXBwbHlSZWNvbW1lbmRhdGlvbihyZWNvbW1lbmRhdGlvblJlc3BvbnNlczogU3RhbmRhcmRSZWNvbW1lbmRhdGlvblJlc3BvbnNlW10sIF9jb250ZXh0OiBPRGF0YVY0Q29udGV4dFtdKTogYm9vbGVhbiB7XG5cdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5zdG9yZVJlY29tbWVuZGF0aW9ucyhcblx0XHRcdHJlY29tbWVuZGF0aW9uUmVzcG9uc2VzLFxuXHRcdFx0dGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRfY29udGV4dFxuXHRcdCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogU3RvcmVzIHRoZSByZWNvbW1lbmRhdGlvbiBjb250ZXh0cy5cblx0ICogQHBhcmFtIGNvbnRleHRzSW5mb1xuXHQgKi9cblx0cHJpdmF0ZSBzdG9yZVJlY29tbWVuZGF0aW9uQ29udGV4dHMoY29udGV4dHNJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gdGhpcy5pbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIikgfHwgW107XG5cdFx0Y29udGV4dHNJbmZvLmZvckVhY2goKGNvbnRleHRJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbykgPT4ge1xuXHRcdFx0Y29udGV4dFBhdGhzLnB1c2goKGNvbnRleHRJbmZvLmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpLmdldFBhdGgoKSk7XG5cdFx0fSk7XG5cblx0XHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gcmVjb21tZW5kYXRpb25Db250ZXh0cz8uZmlsdGVyKChyZWNvbW1lbmRhdGlvbkNvbnRleHQ6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKSA9PiB7XG5cdFx0XHRjb25zdCBjb250ZXh0ID0gcmVjb21tZW5kYXRpb25Db250ZXh0Py5jb250ZXh0O1xuXHRcdFx0aWYgKGNvbnRleHQpIHtcblx0XHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBjb250ZXh0UGF0aHMuaW5kZXhPZihjb250ZXh0UGF0aCk7XG5cdFx0XHRcdGlmIChpbmRleCA8IDApIHtcblx0XHRcdFx0XHQvLyBFeGlzdGluZyBjb250ZXh0IHBhdGggaXMgbm90IGZvdW5kIGluIHRoZSBuZXdseSBmZXRjaGVkIHJlY29tbWVuZGF0aW9uICYgdGhlcmVmb3JlIGRvbid0IGRvIGFueXRoaW5nXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAocmVjb21tZW5kYXRpb25Db250ZXh0LmNvbnRleHRJZGVudGlmaWVyKSB7XG5cdFx0XHRcdFx0Ly8gRXhpc3RpbmcgY29udGV4dCBwYXRoIGlzIGZvdW5kLiB3ZSB0cnkgdG8gdXBkYXRlIHRoZSBjb250ZXh0SW5mbyB3aXRoIHRoZSBsYXRlc3QgY29udGV4dFxuXHRcdFx0XHRcdC8vIGluc3RlYWQgb2Ygb3V0ZGF0ZWQgb25lXG5cdFx0XHRcdFx0Y29udGV4dHNJbmZvW2luZGV4XS5jb250ZXh0SWRlbnRpZmllciA9IHJlY29tbWVuZGF0aW9uQ29udGV4dC5jb250ZXh0SWRlbnRpZmllcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5pbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIiwgWy4uLnJlY29tbWVuZGF0aW9uQ29udGV4dHMsIC4uLmNvbnRleHRzSW5mb10pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbHRlcnMgdGhlIGNvbnRleHRzIGFuZCBvbmx5IHJldHVybnMgdGhvc2UgdGhhdCBtYXRjaGVzIHRoZSBjb250ZXh0cy5cblx0ICogQHBhcmFtIHRhcmdldHNcblx0ICogQHJldHVybnMgUmV0dXJucyB0aGUgZmlsdGVyZWQgcmVjb21tZW5kYXRpb24gcmVsZXZhbnQgY29udGV4dHNcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHModGFyZ2V0czogc3RyaW5nW10pOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdIHtcblx0XHRjb25zdCBjb250ZXh0UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgdGFyZ2V0cykge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGhGcm9tS2V5ID0ga2V5LnN1YnN0cmluZygwLCBrZXkubGFzdEluZGV4T2YoXCIpXCIpICsgMSk7XG5cdFx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gKHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsKS5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbkNvbnRleHRzXCIpO1xuXHRcdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cy5mb3JFYWNoKChjb250ZXh0SW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdFx0Y29uc3QgY29udGV4dCA9IGNvbnRleHRJbmZvLmNvbnRleHQ7XG5cdFx0XHRcdGlmICgoY29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCkuZ2V0UGF0aCgpID09IGNvbnRleHRQYXRoRnJvbUtleSAmJiAhY29udGV4dFBhdGhzLmluY2x1ZGVzKGNvbnRleHRQYXRoRnJvbUtleSkpIHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aHMucHVzaChjb250ZXh0UGF0aEZyb21LZXkpO1xuXHRcdFx0XHRcdGZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cy5wdXNoKGNvbnRleHRJbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHM7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2hlcyBSZWNvbW1lbmRhdGlvbkRhdGEgYmFzZWQgb24gZmlsdGVyZWQgdGFyZ2V0cy5cblx0ICogQHBhcmFtIGZpbHRlcmVkVGFyZ2V0c1xuXHQgKiBAcmV0dXJucyBSZWNvbW1lbmRhdGlvbkRhdGFcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uRGF0YShmaWx0ZXJlZFRhcmdldHM6IHN0cmluZ1tdKTogUmVjb21tZW5kYXRpb25JbmZvIHtcblx0XHRjb25zdCBmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhOiBSZWNvbW1lbmRhdGlvbkluZm8gPSB7fTtcblx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbnNEYXRhXCIpO1xuXHRcdE9iamVjdC5rZXlzKHJlY29tbWVuZGF0aW9uRGF0YSkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRcdGlmIChmaWx0ZXJlZFRhcmdldHMuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhW2tleV0gPSBPYmplY3QuYXNzaWduKHJlY29tbWVuZGF0aW9uRGF0YVtrZXldLCB7fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlclJlY29tbWVuZGF0aW9uc0RhdGE7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2hlcyB0aGUgZmlsdGVyZWQgdGFyZ2V0cy5cblx0ICogQHBhcmFtIGNvbnNpZGVyUmVjb21tZW5kYXRpb25Db250ZXh0cyBQYXNzZWQgYXMgdHJ1ZSB3aGVuIHJlY29tbWVuZGF0aW9uIGNvbnRleHRzIHNob3VsZCBiZSBjb25zaWRlcmVkIGluc3RlYWQgb2YgZGF0YVxuXHQgKiBAcmV0dXJucyBBcnJheSBvZiBGaWx0ZXJlZCB0YXJnZXRzXG5cdCAqL1xuXHRwcml2YXRlIGZldGNoVGFyZ2V0cyhjb25zaWRlclJlY29tbWVuZGF0aW9uQ29udGV4dHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uc0RhdGFcIik7XG5cdFx0aWYgKHJlY29tbWVuZGF0aW9uRGF0YS52ZXJzaW9uID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGNvbnN0IGlzRmNsRW5hYmxlZCA9IHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5faXNGY2xFbmFibGVkKCk7XG5cdFx0Y29uc3QgaXNGdWxsU2NyZWVuID0gaXNGY2xFbmFibGVkXG5cdFx0XHQ/ICh0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcikuZ2V0SGVscGVyKCkuZ2V0Q3VycmVudFVJU3RhdGUoKS5pc0Z1bGxTY3JlZW5cblx0XHRcdDogdHJ1ZTtcblx0XHRjb25zdCBpc1JlY29tbWVuZGF0aW9uQWNjZXB0YWJsZSA9IChjb250ZXh0UGF0aDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0Y29uc3Qgc3BsaXRQYXRoQW5kQ2hlY2tJZlJlY29tbWVuZGF0aW9uQWNjZXB0YWJsZSA9IChjdHh0UGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhdGhBcnJheSA9IGtleS5zcGxpdChjdHh0UGF0aCk7XG5cdFx0XHRcdGNvbnN0IG5ld1BhdGggPSBwYXRoQXJyYXlbMV07XG5cdFx0XHRcdGxldCBuZXdQYXRoQXJyYXkgPSBuZXdQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdFx0Ly9oZXJlIHdlIGNoZWNrIHRoZSBwYXRoIGJ5IHNwbGl0dGluZyB0byBkZWNpZGUgd2hldGhlciB0byBpbmNsdWRlIHJlY29tbWVuZGF0aW9ucyBvciBub3QgaW4gZGlhbG9nXG5cdFx0XHRcdGlmIChuZXdQYXRoQXJyYXkubGVuZ3RoIDw9IDMpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRuZXdQYXRoQXJyYXkgPSBuZXdQYXRoQXJyYXkuc2xpY2UoMik7XG5cdFx0XHRcdFx0cmV0dXJuICFuZXdQYXRoQXJyYXkuc29tZSgodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuaW5jbHVkZXMoXCIoXCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGlmIChpc0ZjbEVuYWJsZWQgJiYgIWlzRnVsbFNjcmVlbikge1xuXHRcdFx0XHRjb25zdCByaWdodE1vc3RDb250ZXh0ID0gKHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBGY2xDb250cm9sbGVyKS5nZXRSaWdodG1vc3RDb250ZXh0KCk7XG5cdFx0XHRcdGlmIChrZXkuaW5jbHVkZXMocmlnaHRNb3N0Q29udGV4dD8uZ2V0UGF0aCgpIGFzIHN0cmluZykpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3BsaXRQYXRoQW5kQ2hlY2tJZlJlY29tbWVuZGF0aW9uQWNjZXB0YWJsZShyaWdodE1vc3RDb250ZXh0Py5nZXRQYXRoKCkgYXMgc3RyaW5nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gc3BsaXRQYXRoQW5kQ2hlY2tJZlJlY29tbWVuZGF0aW9uQWNjZXB0YWJsZShjb250ZXh0UGF0aCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBzcGxpdFBhdGhBbmRDaGVja0lmUmVjb21tZW5kYXRpb25BY2NlcHRhYmxlKGNvbnRleHRQYXRoKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgZGF0YVRvQmVGaWx0ZXJlZCA9IHRoaXMuZmV0Y2hEYXRhVG9CZUZpbHRlcmVkKHJlY29tbWVuZGF0aW9uRGF0YSwgY29uc2lkZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0ZGF0YVRvQmVGaWx0ZXJlZC5maWx0ZXIoKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0a2V5LmluY2x1ZGVzKHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKSBhcyBzdHJpbmcpICYmXG5cdFx0XHRcdFx0aXNSZWNvbW1lbmRhdGlvbkFjY2VwdGFibGUodGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpIGFzIHN0cmluZywga2V5KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSkgfHwgW11cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGRhdGEgdG8gYmUgZmlsdGVyZWQgZGVwZW5kaW5nIG9uIHRoZSByZWNvbW1lbmRhdGlvbkRhdGEuXG5cdCAqIEBwYXJhbSByZWNvbW1lbmRhdGlvbkRhdGFcblx0ICogQHBhcmFtIGNvbnNpZGVyUmVjb21tZW5kYXRpb25Db250ZXh0cyBQYXNzZWQgYXMgdHJ1ZSB3aGVuIHJlY29tbWVuZGF0aW9uIGNvbnRleHRzIHNob3VsZCBiZSBjb25zaWRlcmVkIGluc3RlYWQgb2YgZGF0YVxuXHQgKiBAcmV0dXJucyBBcnJheSBvZiBjb250ZXh0UGF0aHMgdG8gYmUgZmlsdGVyZWRcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hEYXRhVG9CZUZpbHRlcmVkKHJlY29tbWVuZGF0aW9uRGF0YTogUmVjb21tZW5kYXRpb25JbmZvLCBjb25zaWRlclJlY29tbWVuZGF0aW9uQ29udGV4dHM6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XG5cdFx0bGV0IGRhdGFUb0JlRmlsdGVyZWQ6IHN0cmluZ1tdID0gW107XG5cdFx0Ly8gY29uc2lkZXIgcmVjb21tZW5kYXRpb25Db250ZXh0cyBmb3IgZmV0Y2hpbmcgdGhlIHBhdGhzIGluIGNhc2Ugb2YgZmllbGQgY2hhbmdlIHNvIHRoYXQgY29udGV4dHMgZm9yIHdoaWNoIGVtcHR5IHJlY29tbWVuZGF0aW9uIGRhdGEgaXMgcmV0dXJuZWQgYXJlIGFsc28gY29uc2lkZXJlZFxuXHRcdGlmIChjb25zaWRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMpIHtcblx0XHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbkNvbnRleHRzXCIpO1xuXHRcdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cy5mb3JFYWNoKChyZWNvbW1lbmRhdGlvbkNvbnRleHQ6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKSA9PiB7XG5cdFx0XHRcdGRhdGFUb0JlRmlsdGVyZWQucHVzaCgocmVjb21tZW5kYXRpb25Db250ZXh0LmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpLmdldFBhdGgoKSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gY29uc2lkZXIgcmVjb21tZW5kYXRpb25EYXRhIGluIGNhc2Ugb2YgYWNjZXB0IGFsbCBkaWFsb2cgc2NlbmFyaW9zXG5cdFx0XHRkYXRhVG9CZUZpbHRlcmVkID0gT2JqZWN0LmtleXMocmVjb21tZW5kYXRpb25EYXRhKS5maWx0ZXIoKGtleSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ga2V5ICE9PSBcInZlcnNpb25cIiAmJiBrZXkgIT09IFwia2V5c1wiO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBkYXRhVG9CZUZpbHRlcmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJ3cml0ZXMgQWNjZXB0QWxsIFBhcmFtcyBiYXNlZCBvZiByZWNvbW1lbmRhdGlvbiBkYXRhIGFuZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YVxuXHQgKiBAcGFyYW0gZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0c1xuXHQgKiBAcGFyYW0gcGFyYW1zXG5cdCAqL1xuXHRwcml2YXRlIGFkanVzdEFjY2VwdEFsbFBhcmFtcyhcblx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGE6IFJlY29tbWVuZGF0aW9uSW5mbyxcblx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdLFxuXHRcdHBhcmFtczogQWNjZXB0QWxsUGFyYW1zXG5cdCk6IHZvaWQge1xuXHRcdHBhcmFtcy5yZWNvbW1lbmRhdGlvbkRhdGEgPSBbXTtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGEpIHtcblx0XHRcdGlmIChmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFba2V5XS52YWx1ZSB8fCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFba2V5XS50ZXh0KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgdGhlcmUgaXMgbm8gcGxhY2Vob2xkZXIgdmFsdWUgb3IgcGxhY2Vob2xkZXIgdGV4dCB0aGVuIHRoaXMgcmVjb21tZW5kYXRpb24gaXMgbm90IHJlbGV2YW50IGZvciBBY2NlcHQuXG5cdFx0XHRcdC8vIFVzZXIgbmVlZHMgdG8gbWFudWFsbHkgc2VsZWN0IHRoZSByZWNvbW1lbmRlZCB2YWx1ZSBpbiB0aGVzZSBjYXNlcyAmIHRoZXJlZm9yZSBmaWx0ZXIgdGhlIHNhbWUuXG5cdFx0XHRcdGNvbnN0IGNvbnRleHRQYXRoRnJvbUtleSA9IGtleS5zdWJzdHJpbmcoMCwga2V5Lmxhc3RJbmRleE9mKFwiKVwiKSArIDEpO1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eVBhdGhGcm9tS2V5ID0ga2V5LnN1YnN0cmluZyhrZXkubGFzdEluZGV4T2YoXCIpXCIpICsgMik7XG5cdFx0XHRcdGNvbnN0IG1hdGNoaW5nQ29udGV4dCA9IGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMuZmlsdGVyKGZ1bmN0aW9uIChjb250ZXh0SW5mbykge1xuXHRcdFx0XHRcdGlmICgoY29udGV4dEluZm8/LmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpLmdldFBhdGgoKSA9PT0gY29udGV4dFBhdGhGcm9tS2V5KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bWF0Y2hpbmdDb250ZXh0Py5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5pc1JlY29tbWVuZGF0aW9uRmllbGROdWxsKFxuXHRcdFx0XHRcdFx0bWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQsXG5cdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGhGcm9tS2V5XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRwYXJhbXMucmVjb21tZW5kYXRpb25EYXRhLnB1c2goe1xuXHRcdFx0XHRcdFx0Y29udGV4dDogbWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHQsXG5cdFx0XHRcdFx0XHRjb250ZXh0SWRlbnRpZmllcjogbWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHRJZGVudGlmaWVyLFxuXHRcdFx0XHRcdFx0cHJvcGVydHlQYXRoOiBwcm9wZXJ0eVBhdGhGcm9tS2V5LFxuXHRcdFx0XHRcdFx0dmFsdWU6IGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YVtrZXldLnZhbHVlLFxuXHRcdFx0XHRcdFx0dGV4dDogZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhW2tleV0udGV4dFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgUmVjb21tZW5kYXRpb25JbmZvIHRoYXQgY29udGFpbnMgdGFyZ2V0cywgZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhLCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGggQWNjZXB0YWxsUGFyYW1zXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgZmV0Y2hBY2NlcHRBbGxQYXJhbXMoKTogUHJvbWlzZTxBY2NlcHRBbGxQYXJhbXM+IHtcblx0XHRjb25zdCB0YXJnZXRzOiBzdHJpbmdbXSA9IHRoaXMuZmV0Y2hUYXJnZXRzKCk7XG5cdFx0Y29uc3QgZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhID0gdGhpcy5mZXRjaEZpbHRlcmVkUmVjb21tZW5kYXRpb25EYXRhKHRhcmdldHMpO1xuXHRcdGNvbnN0IGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSB0aGlzLmZldGNoRmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzKHRhcmdldHMpO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHt9O1xuXHRcdHRoaXMuYWRqdXN0QWNjZXB0QWxsUGFyYW1zKGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YSwgZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0cywgcGFyYW1zKTtcblx0XHRhd2FpdCAodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5yZWNvbW1lbmRhdGlvbnMub25CZWZvcmVBY2NlcHRSZWNvbW1lbmRhdGlvbnMocGFyYW1zKTtcblx0XHRzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmFkZENvbnRleHRJZGVudGlmaWVyVGV4dChwYXJhbXMsIHRoaXMuZ2V0VmlldygpPy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCkpO1xuXHRcdHRoaXMuZGF0YVRvQmVBY2NlcHRlZCA9IChwYXJhbXMgYXMgQWNjZXB0QWxsUGFyYW1zKS5yZWNvbW1lbmRhdGlvbkRhdGEgfHwgW107XG5cdFx0cmV0dXJuIHBhcmFtcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgcmVjb21tZW5kYXRpb25zIGV4aXN0IG9yIG5vdC5cblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB3aGV0aGVyIHJlY29tbWVuZGF0aW9ucyBhcmUgcHJlc2VudCBvciBub3Rcblx0ICovXG5cdHB1YmxpYyBjaGVja0lmUmVjb21tZW5kYXRpb25zRXhpc3QoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgcmVjb21tZW5kYXRpb25EYXRhID0gdGhpcy5pbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uc0RhdGFcIikgfHwge307XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHJlY29tbWVuZGF0aW9uRGF0YSkubGVuZ3RoICE9PSAwO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjbGVhciByZWNvbW1lbmRhdGlvbiBEYXRhIGZvciBhIGdpdmVuIGNvbnRleHQgYW5kIGFsbCBpdHMgY2hpbGRyZW4uXG5cdCAqIEBwYXJhbSBjb250ZXh0cyBDb250ZXh0IGZvciB3aGljaCByZWNvbW1lbmRhdGlvbiBoYXMgdG8gYmUgY2xlYXJlZFxuXHQgKi9cblx0cHVibGljIGlnbm9yZVJlY29tbWVuZGF0aW9uRm9yQ29udGV4dHMoY29udGV4dHM/OiBPRGF0YVY0Q29udGV4dFtdKTogdm9pZCB7XG5cdFx0aWYgKCFjb250ZXh0cyB8fCAhY29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dDtcblx0XHRcdGNvbnRleHRzID0gW2JpbmRpbmdDb250ZXh0XTtcblx0XHR9XG5cdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5pZ25vcmVSZWNvbW1lbmRhdGlvbkZvckNvbnRleHRzKGNvbnRleHRzLCB0aGlzLmludGVybmFsTW9kZWwpO1xuXHR9XG5cblx0cHJpdmF0ZSB0cnlSZXNldFJlY29tbWVuZGF0aW9ucyhyb290Q29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHRzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLnNldEN1cnJlbnRSb290Q29udGV4dChyb290Q29udGV4dCk7XG5cdFx0Ly8gVE9ETzogU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlciBzdG9yZXMgYWxsIHRoZSByZWNvbW1lbmRhdGlvbnMgZm9yIGFuIGluc3RhbmNlIG9mIGJ1c2luZXNzIG9iamVjdFxuXHRcdC8vIG1lYW5pbmcgZG9lc24ndCBtYXR0ZXIgdGhlIHJlY29tbWVuZGF0aW9ucyBhcmUgb24gdGhlIE9QL1N1Yk9QLiBCdXQgdGhlIHJlY29tbWVuZGF0aW9ucyBjb250ZXh0cyBoZXJlXG5cdFx0Ly8gaXMgc3BlY2lmaWMgdG8gdGhpcyBjb250cm9sbGVyLCBTdWJPUCBjb250cm9sbGVyIHdpbGwgaGF2ZSBpdHMgb3duIHJlY29tbWVuZGF0aW9uIGNvbnRleHRzLiBJZGVhbGx5IGl0XG5cdFx0Ly8gc2hvdWxkIGJlIGNsZWFyZWQgYnV0IHRoaXMgaXMgbm90IGRvbmUgaGVyZS4gVGhpcyBjb21wbGV0ZSB0aGluZyBuZWVkcyB0byBiZSByZWZhY3RvcmVkXG5cdFx0dGhpcy5pbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIiwgW10pO1xuXHRcdHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIucmVzZXRSZWNvbW1lbmRhdGlvbnModGhpcy5pbnRlcm5hbE1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc3RvcmUgdGhlIG51bWJlciBvZiBmaWVsZHMgQWNjZXB0ZWQvSWdub3JlZCB3aGVuIFNhdmUgYnV0dG9uIGlzIGNsaWNrZWQsIGRlcGVuZGluZyBvbiB3aGljaCByZWNvbW1lZGF0aW9uIG9wdGlvbiB3YXMgY2hvb3NlbiBBY2NlcHQvUmVqZWN0IGFuZCBTYXZlLlxuXHQgKiBAcGFyYW0gcmVjb21tZW5kYXRpb25PcHRpb25DaG9vc2VuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgc3RvcmVEYXRhRm9yVGVsZW1ldHJ5KHJlY29tbWVuZGF0aW9uT3B0aW9uQ2hvb3NlbjogdW5kZWZpbmVkIHwgUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHJvb3RDb250ZXh0ID0gYXdhaXQgdGhpcy5fZ2V0Um9vdENvbnRleHQodGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dCk7XG5cdFx0aWYgKHJvb3RDb250ZXh0ICYmIHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuaXNFbmFibGVkKHJvb3RDb250ZXh0KSkge1xuXHRcdFx0aWYgKHJlY29tbWVuZGF0aW9uT3B0aW9uQ2hvb3NlbiA9PT0gUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbi5BY2NlcHQpIHtcblx0XHRcdFx0Ly8gaW5jcmVhc2UgYWNjZXB0IGNvdW50XG5cdFx0XHRcdHRoaXMudGVsZW1ldHJ5LnVwZGF0ZURhdGEoXCJudW1iZXJPZkZpZWxkc0FjY2VwdGVkVGhyb3VnaEFjY2VwdEJ1dHRvblwiLCB0aGlzLmRhdGFUb0JlQWNjZXB0ZWQubGVuZ3RoKTtcblx0XHRcdH0gZWxzZSBpZiAocmVjb21tZW5kYXRpb25PcHRpb25DaG9vc2VuID09PSBSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uLlJlamVjdCkge1xuXHRcdFx0XHQvLyBpbmNyZWFzZSBpZ25vcmUgY291bnRcblx0XHRcdFx0dGhpcy50ZWxlbWV0cnkudXBkYXRlRGF0YShcIm51bWJlck9mRmllbGRzSWdub3JlZFRocm91Z2hJZ25vcmVCdXR0b25cIiwgdGhpcy5kYXRhVG9CZUFjY2VwdGVkLmxlbmd0aCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnRlbGVtZXRyeS5zdG9yZURhdGEodGhpcy5nZXRWaWV3KCkgYXMgRkVWaWV3KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgY291bnQgYnkgMSBpbiB0ZWxlbWV0cnkgZGF0YS5cblx0ICogQHBhcmFtIGtleVxuXHQgKi9cblx0cHVibGljIGluY3JlYXNlVGVsZW1ldHJ5RGF0YUNvdW50KGtleToga2V5b2YgUmVjb21tZW5kYXRpb25UZWxlbWV0cnkpOiB2b2lkIHtcblx0XHR0aGlzLnRlbGVtZXRyeS5pbmNyZWFzZUNvdW50KGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0ZWxlbWV0cnkgZGF0YSBmb3Igd2hpY2ggb3B0aW9uIHVzZXIgY2hvc2Ugd2hlbiBzZWxlY3RpbmcgYSBmaWVsZCB2YWx1ZSwgYXMgdG9wL25vbi10b3AgcmVjb21tZW5kYXRpb24gb3Igc29tZSBvdGhlciB2YWx1ZS5cblx0ICogQHBhcmFtIGZpZWxkUGF0aFxuXHQgKiBAcGFyYW0gc2VsZWN0ZWRWYWx1ZVxuXHQgKi9cblx0cHVibGljIHVwZGF0ZVRlbGVtZXRyeURhdGFCYXNlZE9uVXNlclNlbGVjdGlvbihmaWVsZFBhdGg6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy50ZWxlbWV0cnkudXBkYXRlVGVsZW1ldHJ5RGF0YUJhc2VkT25Vc2VyU2VsZWN0aW9uKHRoaXMuZ2V0VmlldygpLCBmaWVsZFBhdGgsIHNlbGVjdGVkVmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBmaWVsZHMgcmVjb21tZW5kZWQuIElmIHRoZSBmaWVsZCBpcyBhbHJlYWR5IGluY2x1ZGVkIGluIHRlbGVtZXRyeSBjb3VudCB0aGVuIHdlIGRvIG5vdCBpbmNsdWRlLlxuXHQgKiBUaGlzIHdheSB3ZSBrbm93IHRoZSB0b3RhbCBudW1iZXIgb2YgdW5pcXVlIGZpZWxkcyByZWNvbW1lbmRlZC5cblx0ICogQHBhcmFtIHJlY29tbWVuZGF0aW9uRGF0YVxuXHQgKi9cblx0dXBkYXRlQWxsUmVjb21tZW5kZWRGaWVsZHMocmVjb21tZW5kYXRpb25EYXRhOiBTdGFuZGFyZFJlY29tbWVuZGF0aW9uUmVzcG9uc2VbXSk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXdCaW5kaW5nQ29udGV4dFBhdGggPSAodGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KS5nZXRQYXRoKCk7XG5cdFx0Y29uc3QgbmV3UmVjb21tZW5kYXRpb25zRm9yQ3VycmVudENvbnRleHRzID0gcmVjb21tZW5kYXRpb25EYXRhLmZpbHRlcihcblx0XHRcdChyZXNwb25zZSkgPT4gcmVzcG9uc2VbXCJBSVJlY29tbWVuZGVkRmllbGRQYXRoXCJdPy5pbmNsdWRlcyh2aWV3QmluZGluZ0NvbnRleHRQYXRoKVxuXHRcdCk7XG5cdFx0aWYgKCF0aGlzLmFsbFJlY29tbWVuZGVkRmllbGRzKSB7XG5cdFx0XHR0aGlzLmFsbFJlY29tbWVuZGVkRmllbGRzID0gW107XG5cdFx0fVxuXHRcdG5ld1JlY29tbWVuZGF0aW9uc0ZvckN1cnJlbnRDb250ZXh0cy5mb3JFYWNoKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0Y29uc3QgZmllbGRQYXRoID0gcmVzcG9uc2VbXCJBSVJlY29tbWVuZGVkRmllbGRQYXRoXCJdO1xuXHRcdFx0aWYgKGZpZWxkUGF0aCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuYWxsUmVjb21tZW5kZWRGaWVsZHMuaW5jbHVkZXMoZmllbGRQYXRoKSkge1xuXHRcdFx0XHRcdHRoaXMuYWxsUmVjb21tZW5kZWRGaWVsZHMucHVzaChmaWVsZFBhdGgpO1xuXHRcdFx0XHRcdHRoaXMudGVsZW1ldHJ5LmluY3JlYXNlQ291bnQoXCJudW1iZXJPZlJlY29tbWVuZGVkRmllbGRzXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXJzIGFsbCByZWplY3RlZCByZWNvbW1lbmRhdGlvbnMgZnJvbSB0aGUgbG9jYWwgYW5ub3RhdGlvbiBtb2RlbCBmb3IgdGhlIGdpdmVuIGNvbnRleHQuXG5cdCAqIFRoaXMgcmVzZXRzIHRoZSBcIi9yZWplY3RlZFJlY29tbWVuZGF0aW9uc1wiIHByb3BlcnR5IHRvIGFuIGVtcHR5IG9iamVjdC5cblx0ICogQHBhcmFtIGNvbnRleHQgVGhlIE9EYXRhVjQgY29udGV4dCBmb3Igd2hpY2ggcmVqZWN0ZWQgcmVjb21tZW5kYXRpb25zIHNob3VsZCBiZSByZXNldC5cblx0ICovXG5cdHJlc2V0UmVqZWN0ZWRSZWNvbW1lbmRhdGlvbnMoY29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHRjb25zdCBsb2NhbEFubm90YXRpb25Nb2RlbCA9IGNvbnRleHQuZ2V0TW9kZWwoKT8uZ2V0TG9jYWxBbm5vdGF0aW9uTW9kZWwoKTtcblx0XHRjb25zdCByZWplY3RlZFJlY29tbWVuZGF0aW9ucyA9IGxvY2FsQW5ub3RhdGlvbk1vZGVsPy5nZXRQcm9wZXJ0eShcIi9yZWplY3RlZFJlY29tbWVuZGF0aW9uc1wiKTtcblx0XHRPYmplY3Qua2V5cyhyZWplY3RlZFJlY29tbWVuZGF0aW9ucyB8fCB7fSkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRpZiAoa2V5LnN0YXJ0c1dpdGgoY29udGV4dC5nZXRQYXRoKCkpKSB7XG5cdFx0XHRcdGRlbGV0ZSByZWplY3RlZFJlY29tbWVuZGF0aW9uc1trZXldO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGxvY2FsQW5ub3RhdGlvbk1vZGVsPy5zZXRQcm9wZXJ0eShcIi9yZWplY3RlZFJlY29tbWVuZGF0aW9uc1wiLCByZWplY3RlZFJlY29tbWVuZGF0aW9ucyk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7RUFLQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBb0NxQkEsZUFBZSxJQUFBQyxJQUFBLEdBRG5DQyxjQUFjLENBQUMsa0RBQWtELENBQUMsRUFBQUMsS0FBQSxHQXVCakVDLGNBQWMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FRaEJELGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBQUUsS0FBQSxHQW1EMUJDLGVBQWUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FjakJELGVBQWUsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FDakJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQU8sQ0FBQyxFQUFBQyxLQUFBLEdBVXJDTixlQUFlLENBQUMsQ0FBQyxFQUFBTyxLQUFBLEdBQ2pCQyxjQUFjLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBWWhCVCxlQUFlLENBQUMsQ0FBQyxFQUFBVSxNQUFBLEdBQ2pCUCxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxPQUFPLENBQUMsRUFBQU0sTUFBQSxHQVlyQ1gsZUFBZSxDQUFDLENBQUMsRUFBQVksTUFBQSxHQW1E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
|
|
526
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWNvbW1lbmRhdGlvbnMiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsIm1ldGhvZE92ZXJyaWRlIiwiX2RlYzMiLCJfZGVjNCIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWM1IiwiX2RlYzYiLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJJbnN0ZWFkIiwiX2RlYzciLCJfZGVjOCIsImZpbmFsRXh0ZW5zaW9uIiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJfdGhpcyIsImNhbGwiLCJkYXRhVG9CZUFjY2VwdGVkIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uSW5pdCIsInRlbGVtZXRyeSIsIlRlbGVtZXRyeSIsImFsbFJlY29tbWVuZGVkRmllbGRzIiwiaW50ZXJuYWxNb2RlbCIsImJhc2UiLCJnZXRWaWV3IiwiZ2V0TW9kZWwiLCJwcmV2aW91c0NvbnRleHQiLCJ1bmRlZmluZWQiLCJvbkFmdGVyQmluZGluZyIsImNvbnRleHQiLCJjdXJyZW50Q29udGV4dEJhc2VQYXRoIiwiZ2V0UGF0aCIsInNwbGl0IiwicHJldmlvdXNDb250ZXh0QmFzZVBhdGgiLCJyb290Q29udGV4dCIsImlzUmVjb21tZW5kYXRpb25FbmFibGVkIiwiZ2V0UHJvcGVydHkiLCJ2aWV3TGV2ZWwiLCJnZXRWaWV3RGF0YSIsIl9nZXRSb290Q29udGV4dCIsInJlY29tbWVuZGF0aW9ucyIsImlzRW5hYmxlZCIsInNldFByb3BlcnR5IiwiaXNGY2xFbmFibGVkIiwiZ2V0QXBwQ29tcG9uZW50IiwiX2lzRmNsRW5hYmxlZCIsImlzRnVsbFNjcmVlbiIsImdldFJvb3RWaWV3Q29udHJvbGxlciIsImdldEhlbHBlciIsImdldEN1cnJlbnRVSVN0YXRlIiwidHJ5UmVzZXRSZWNvbW1lbmRhdGlvbnMiLCJyZXNldERhdGEiLCJwcm9ncmFtbWluZ01vZGVsIiwiVHJhbnNhY3Rpb25IZWxwZXIiLCJnZXRQcm9ncmFtbWluZ01vZGVsIiwiQ29tbW9uVXRpbHMiLCJjcmVhdGVSb290Q29udGV4dCIsImNsZWFyUmVjb21tZW5kYXRpb25zIiwiYmluZGluZ0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsInJlY29tbWVuZGF0aW9uSGVscGVyIiwiX3Jvb3RDb250ZXh0IiwiZmV0Y2hSZWNvbW1lbmRhdGlvbnMiLCJfY29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9ucyIsImN1cnJlbnRDb250ZXh0c0luZm8iLCJjb25zaWRlck9ubHlOZXdDb250ZXh0IiwiaXNTdWNjZXNzIiwic2lkZUVmZmVjdHMiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJyZWNvbW1lbmRhdGlvblJlZ2lzdHJ5IiwiZ2V0UmVjb21tZW5kYXRpb25zTWFwcGluZyIsImZpbHRlcmVkQ29udGV4dHNJbmZvIiwiZmlsdGVyIiwiY29udGV4dEluZm8iLCJzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIiwiY2hlY2tJZlJlY29tbWVuZGF0aW9uUm9sZUV4aXN0c0ZvckNvbnRleHQiLCJjb250ZXh0c0luZm8iLCJnZXRDb250ZXh0c1dpdGhOb1JlY29tbWVuZGF0aW9ucyIsImNvbnRleHRzIiwibWFwIiwibGVuZ3RoIiwic3RhcnRUaW1lIiwicGVyZm9ybWFuY2UiLCJub3ciLCJyZWNvbW1lbmRhdGlvbkRhdGEiLCJlbmRUaW1lIiwidXBkYXRlUmVzcG9uc2VUaW1lSW5mbyIsInVwZGF0ZUFsbFJlY29tbWVuZGVkRmllbGRzIiwidXBkYXRlRGF0YUZyb21SZWNvbW1lbmRhdGlvblJlc3BvbnNlIiwiaW5jcmVhc2VDb3VudCIsImFwcGx5UmVjb21tZW5kYXRpb24iLCJlIiwiTG9nIiwiZXJyb3IiLCJzdG9yZVJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZSIsImZpZWxkIiwiYXBwQ29tcG9uZW50IiwiaXNGaWVsZFJlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJjaGVja0lmRmllbGRJc1JlY29tbWVuZGF0aW9uUmVsZXZhbnQiLCJ0YXJnZXRzIiwiZmV0Y2hUYXJnZXRzIiwiZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzIiwiZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHMiLCJyZWNvbW1lbmRhdGlvbkNvbnRleHQiLCJmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dCIsImluY2x1ZGVzIiwiY2xlYXJJZ25vcmVkQ29udGV4dHMiLCJvbkJlZm9yZUFjY2VwdFJlY29tbWVuZGF0aW9ucyIsIl9wYXJhbXMiLCJhY2NlcHRSZWNvbW1lbmRhdGlvbnMiLCJwcm9taXNlcyIsInByb3BlcnR5UGF0aCIsInB1c2giLCJ2YWx1ZSIsImFsbCIsInJlY29tbWVuZGF0aW9uUmVzcG9uc2VzIiwic3RvcmVSZWNvbW1lbmRhdGlvbnMiLCJjb250ZXh0UGF0aHMiLCJyZWNvbW1lbmRhdGlvbkNvbnRleHRzIiwiZm9yRWFjaCIsImNvbnRleHRQYXRoIiwiaW5kZXgiLCJpbmRleE9mIiwiY29udGV4dElkZW50aWZpZXIiLCJrZXkiLCJjb250ZXh0UGF0aEZyb21LZXkiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImZldGNoRmlsdGVyZWRSZWNvbW1lbmRhdGlvbkRhdGEiLCJmaWx0ZXJlZFRhcmdldHMiLCJmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhIiwiT2JqZWN0Iiwia2V5cyIsImFzc2lnbiIsImNvbnNpZGVyUmVjb21tZW5kYXRpb25Db250ZXh0cyIsInZlcnNpb24iLCJpc1JlY29tbWVuZGF0aW9uQWNjZXB0YWJsZSIsInNwbGl0UGF0aEFuZENoZWNrSWZSZWNvbW1lbmRhdGlvbkFjY2VwdGFibGUiLCJjdHh0UGF0aCIsInBhdGhBcnJheSIsIm5ld1BhdGgiLCJuZXdQYXRoQXJyYXkiLCJzbGljZSIsInNvbWUiLCJyaWdodE1vc3RDb250ZXh0IiwiZ2V0UmlnaHRtb3N0Q29udGV4dCIsImRhdGFUb0JlRmlsdGVyZWQiLCJmZXRjaERhdGFUb0JlRmlsdGVyZWQiLCJhZGp1c3RBY2NlcHRBbGxQYXJhbXMiLCJmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGEiLCJmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzIiwicGFyYW1zIiwidGV4dCIsInByb3BlcnR5UGF0aEZyb21LZXkiLCJtYXRjaGluZ0NvbnRleHQiLCJpc1JlY29tbWVuZGF0aW9uRmllbGROdWxsIiwiZmV0Y2hBY2NlcHRBbGxQYXJhbXMiLCJnZXRDb250cm9sbGVyIiwiYWRkQ29udGV4dElkZW50aWZpZXJUZXh0IiwiY2hlY2tJZlJlY29tbWVuZGF0aW9uc0V4aXN0IiwiaWdub3JlUmVjb21tZW5kYXRpb25Gb3JDb250ZXh0cyIsInZpZXciLCJzZXRDdXJyZW50Um9vdENvbnRleHQiLCJyZXNldFJlY29tbWVuZGF0aW9ucyIsInN0b3JlRGF0YUZvclRlbGVtZXRyeSIsInJlY29tbWVuZGF0aW9uT3B0aW9uQ2hvb3NlbiIsIlJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24iLCJBY2NlcHQiLCJ1cGRhdGVEYXRhIiwiUmVqZWN0Iiwic3RvcmVEYXRhIiwiaW5jcmVhc2VUZWxlbWV0cnlEYXRhQ291bnQiLCJ1cGRhdGVUZWxlbWV0cnlEYXRhQmFzZWRPblVzZXJTZWxlY3Rpb24iLCJmaWVsZFBhdGgiLCJzZWxlY3RlZFZhbHVlIiwidmlld0JpbmRpbmdDb250ZXh0UGF0aCIsIm5ld1JlY29tbWVuZGF0aW9uc0ZvckN1cnJlbnRDb250ZXh0cyIsInJlc3BvbnNlIiwicmVzZXRSZWplY3RlZFJlY29tbWVuZGF0aW9ucyIsImxvY2FsQW5ub3RhdGlvbk1vZGVsIiwiZ2V0TG9jYWxBbm5vdGF0aW9uTW9kZWwiLCJyZWplY3RlZFJlY29tbWVuZGF0aW9ucyIsInN0YXJ0c1dpdGgiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUmVjb21tZW5kYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIGV4dGVuc2libGUsIGZpbmFsRXh0ZW5zaW9uLCBtZXRob2RPdmVycmlkZSwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyByZWNvbW1lbmRhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1JlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvLFxuXHRSZWNvbW1lbmRhdGlvbkluZm8sXG5cdFN0YW5kYXJkUmVjb21tZW5kYXRpb25SZXNwb25zZVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT0RhdGFWNENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcIi4uL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcIi4uL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBGY2xDb250cm9sbGVyIGZyb20gXCIuLi9yb290Vmlldy9GY2wuY29udHJvbGxlclwiO1xuaW1wb3J0IFRyYW5zYWN0aW9uSGVscGVyIGZyb20gXCIuL2VkaXRGbG93L1RyYW5zYWN0aW9uSGVscGVyXCI7XG5cbmltcG9ydCB7IFJlY29tbWVuZGF0aW9uRGlhbG9nRGVjaXNpb24gfSBmcm9tIFwiLi4vY29udHJvbHMvUmVjb21tZW5kYXRpb25zL0NvbmZpcm1SZWNvbW1lbmRhdGlvbkRpYWxvZ1wiO1xuaW1wb3J0IHsgdHlwZSBCYXNlTWFuaWZlc3RTZXR0aW5ncyB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgUmVjb21tZW5kYXRpb25UZWxlbWV0cnkgfSBmcm9tIFwiLi4vc2VydmljZXMvVGVsZW1ldHJ5U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBUZWxlbWV0cnkgZnJvbSBcIi4vcmVjb21tZW5kYXRpb25zL1RlbGVtZXRyeVwiO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSBhY2NlcHRSZWNvbW1lbmRhdGlvbnMgYW5kIG9uQmVmb3JlQWNjZXB0UmVjb21tZW5kYXRpb25zIG1ldGhvZHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEFjY2VwdEFsbFBhcmFtcyA9IHtcblx0cmVjb21tZW5kYXRpb25EYXRhPzogUmVjb21tZW5kYXRpb25EYXRhW107XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgcmVjb21tZW5kYXRpb24gZW50cnkuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFJlY29tbWVuZGF0aW9uRGF0YSA9IHtcblx0LyoqXG5cdCAqIFRoZSBPRGF0YSBWNCBjb250ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVjb21tZW5kYXRpb24uXG5cdCAqL1xuXHRjb250ZXh0PzogT0RhdGFWNENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIEFuIGFycmF5IG9mIGNvbnRleHQgaWRlbnRpZmllcnMgcmVsZXZhbnQgdG8gdGhlIHJlY29tbWVuZGF0aW9uLlxuXHQgKi9cblx0Y29udGV4dElkZW50aWZpZXI/OiBzdHJpbmdbXTtcblxuXHQvKipcblx0ICogQW4gYXJyYXkgb2YgY29udGV4dCBpZGVudGlmaWVyIHRleHRzIGZvciBkaXNwbGF5IHB1cnBvc2VzLlxuXHQgKi9cblx0Y29udGV4dElkZW50aWZpZXJUZXh0Pzogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIFRoZSBwcm9wZXJ0eSBwYXRoIHJlbGF0ZWQgdG8gdGhlIHJlY29tbWVuZGF0aW9uLlxuXHQgKi9cblx0cHJvcGVydHlQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWNvbW1lbmRhdGlvbi5cblx0ICovXG5cdHZhbHVlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgZGlzcGxheSB0ZXh0IGZvciB0aGUgcmVjb21tZW5kYXRpb24uXG5cdCAqL1xuXHR0ZXh0Pzogc3RyaW5nO1xufTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlJlY29tbWVuZGF0aW9uc1wiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjb21tZW5kYXRpb25zIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzITogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXTtcblxuXHRyb290Q29udGV4dCE6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0aW50ZXJuYWxNb2RlbCE6IEpTT05Nb2RlbDtcblxuXHR0ZWxlbWV0cnkhOiBUZWxlbWV0cnk7XG5cblx0YWxsUmVjb21tZW5kZWRGaWVsZHMhOiBzdHJpbmdbXTtcblxuXHQvLyB0aGUgZGF0YSBzaG93biBpbiBBY2NlcHQvSWdub3JlIGRpYWxvZyBvZiBSZWNvbW1lbmRhdGlvbnNcblx0ZGF0YVRvQmVBY2NlcHRlZDogUmVjb21tZW5kYXRpb25EYXRhW10gPSBbXTtcblxuXHRwcmV2aW91c0NvbnRleHQ6IENvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cblxuXHRAbWV0aG9kT3ZlcnJpZGUoKVxuXHRvbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy50ZWxlbWV0cnkgPSBuZXcgVGVsZW1ldHJ5KCk7XG5cdFx0dGhpcy5hbGxSZWNvbW1lbmRlZEZpZWxkcyA9IFtdO1xuXHRcdHRoaXMuaW50ZXJuYWxNb2RlbCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHR0aGlzLnByZXZpb3VzQ29udGV4dCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdEBtZXRob2RPdmVycmlkZShcIl9yb3V0aW5nXCIpXG5cdGFzeW5jIG9uQWZ0ZXJCaW5kaW5nKGNvbnRleHQ6IENvbnRleHQgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKGNvbnRleHQpIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRDb250ZXh0QmFzZVBhdGggPSBjb250ZXh0LmdldFBhdGgoKS5zcGxpdChcIi9cIilbMV07XG5cdFx0XHRjb25zdCBwcmV2aW91c0NvbnRleHRCYXNlUGF0aCA9IHRoaXMucHJldmlvdXNDb250ZXh0Py5nZXRQYXRoKCkuc3BsaXQoXCIvXCIpWzFdO1xuXHRcdFx0Ly9cdGNvbnNvbGUubG9nKCdjdXJyZW50OjonLCBjdXJyZW50Q29udGV4dEJhc2VQYXRoKTtcblx0XHRcdC8vXHRjb25zb2xlLmxvZygncHJldmlvdXMnLCBwcmV2aW91c0NvbnRleHRCYXNlUGF0aCk7XG5cdFx0XHR0aGlzLnJvb3RDb250ZXh0ID0gdW5kZWZpbmVkO1xuXHRcdFx0Ly8gdXNlIGludGVybmFsIG1vZGVsIGJlY2F1c2Ugd2UgaGF2ZSB0byB1c2UgdGhpcyBpbmZvcm1hdGlvbiBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uIGZvciBkaWZmZXJlbnQgaW5zdGFuY2VzLlxuXHRcdFx0bGV0IGlzUmVjb21tZW5kYXRpb25FbmFibGVkID0gdGhpcy5pbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL2lzUmVjb21tZW5kYXRpb25FbmFibGVkXCIpO1xuXHRcdFx0Ly8gb25BZnRlciBiaW5kaW5nIGlzIGNhbGxlZCBmb3IgYWxsIGNvbnRleHRzXG5cdFx0XHQvLyBidXQgd2UgZG8gbm90IG5lZWQgdG8gY2FsbCB0aGUgaXNFbmFibGVkIGhvb2sgYWxsIHRoZSB0aW1lXG5cdFx0XHQvLyBzbyBjaGVjayBpZiByZWNvbW1lbmRhdGlvbiBlbmFibGVkIGlzIGFscmVhZHkgYXZhaWxhYmxlXG5cdFx0XHR0aGlzLnByZXZpb3VzQ29udGV4dCA9IGNvbnRleHQ7XG5cdFx0XHRjb25zdCB2aWV3TGV2ZWwgPSAodGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncyk/LnZpZXdMZXZlbDtcblx0XHRcdGNvbnN0IHJvb3RDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkID1cblx0XHRcdFx0dmlld0xldmVsICYmIHZpZXdMZXZlbCA+IDEgPyBhd2FpdCB0aGlzLl9nZXRSb290Q29udGV4dChjb250ZXh0IGFzIE9EYXRhVjRDb250ZXh0KSA6IGNvbnRleHQ7XG5cdFx0XHRpZiAocm9vdENvbnRleHQpIHtcblx0XHRcdFx0aWYgKGlzUmVjb21tZW5kYXRpb25FbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRpc1JlY29tbWVuZGF0aW9uRW5hYmxlZCA9IHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuaXNFbmFibGVkKHJvb3RDb250ZXh0KTtcblx0XHRcdFx0XHR0aGlzLmludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWRcIiwgaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vXHRpZighdGhpcy5wcmV2aW91c0NvbnRleHQpIHtcblxuXHRcdFx0XHQvL1x0fVxuXHRcdFx0XHRjb25zdCBpc0ZjbEVuYWJsZWQgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuX2lzRmNsRW5hYmxlZCgpO1xuXHRcdFx0XHRjb25zdCBpc0Z1bGxTY3JlZW4gPSBpc0ZjbEVuYWJsZWRcblx0XHRcdFx0XHQ/ICh0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcikuZ2V0SGVscGVyKCkuZ2V0Q3VycmVudFVJU3RhdGUoKS5pc0Z1bGxTY3JlZW5cblx0XHRcdFx0XHQ6IHRydWU7XG5cdFx0XHRcdGlmIChjdXJyZW50Q29udGV4dEJhc2VQYXRoICE9PSBwcmV2aW91c0NvbnRleHRCYXNlUGF0aCkge1xuXHRcdFx0XHRcdC8vIGRpZmZlcmVudCBjb250ZXh0cy8gT1Bcblx0XHRcdFx0XHQvL1x0Y29uc29sZS5sb2coXCJydW4gcmVzZXQgbG9naWNcIilcblx0XHRcdFx0XHR0aGlzLnRyeVJlc2V0UmVjb21tZW5kYXRpb25zKHJvb3RDb250ZXh0IGFzIE9EYXRhVjRDb250ZXh0KTtcblx0XHRcdFx0XHR0aGlzLnRlbGVtZXRyeS5yZXNldERhdGEoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaXNGY2xFbmFibGVkICYmICFpc0Z1bGxTY3JlZW4pIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIF9nZXRSb290Q29udGV4dChjb250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IFByb21pc2U8Q29udGV4dCB8IHVuZGVmaW5lZD4ge1xuXHRcdGNvbnN0IHByb2dyYW1taW5nTW9kZWwgPSBUcmFuc2FjdGlvbkhlbHBlci5nZXRQcm9ncmFtbWluZ01vZGVsKGNvbnRleHQpO1xuXHRcdHJldHVybiBDb21tb25VdGlscy5jcmVhdGVSb290Q29udGV4dChwcm9ncmFtbWluZ01vZGVsLCB0aGlzLmJhc2UuZ2V0VmlldygpLCB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFyIGFsbCByZWNvbW1lbmRhdGlvbnMgY3VycmVudGx5IGF2YWlsYWJsZSBvbiB0aGUgVUkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRwdWJsaWMgY2xlYXJSZWNvbW1lbmRhdGlvbnMoKTogdm9pZCB7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGlmIChiaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0cmVjb21tZW5kYXRpb25IZWxwZXIuY2xlYXJSZWNvbW1lbmRhdGlvbnModGhpcy5iYXNlLmdldFZpZXcoKSwgYmluZGluZ0NvbnRleHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiByZWNvbW1lbmRhdGlvbnMgYXJlIGVuYWJsZWQgb3Igbm90LlxuXHQgKiBAcGFyYW0gX3Jvb3RDb250ZXh0IFRoZSByb290IGVudGl0eSBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRydWUgaWYgcmVjb21tZW5kYXRpb24gaXMgZW5hYmxlZC4gRmFsc2UgaWYgcmVjb21tZW5kYXRpb24gaXMgZGlzYWJsZWQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgaXNFbmFibGVkKF9yb290Q29udGV4dDogQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyByZWNvbW1lbmRhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC4gSW4gY2FzZSBjYWxsZWQgYmVmb3JlXG5cdCAqIHRoZSBlbmFibGVtZW50IGNoZWNrIGlzIGNvbXBsZXRlZCwgbWV0aG9kIHdpbGwgcmV0dXJuIGZhbHNlIHdoaWNoIGlzIHRoZSBkZWZhdWx0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHJlY29tbWVuZGF0aW9uIGlzIGVuYWJsZWQgZWxzZSBmYWxzZS5cblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRwdWJsaWMgaXNSZWNvbW1lbmRhdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5pbnRlcm5hbE1vZGVsPy5nZXRQcm9wZXJ0eShcIi9pc1JlY29tbWVuZGF0aW9uRW5hYmxlZFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgcmVjb21tZW5kYXRpb24gZm9yIGEgc3BlY2lmaWMgY29udGV4dC5cblx0ICogQHBhcmFtIF9jb250ZXh0IFRoZSBjb250ZXh0IHRoYXQgc2hhbGwgYmUgY29uc2lkZXJlZCB3aGVuIGZldGNoaW5nIHJlY29tbWVuZGF0aW9uc1xuXHQgKiBAcGFyYW0gX3Jvb3RDb250ZXh0IFRoZSByb290IGVudGl0eSBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSByZWNvbW1lbmRhdGlvbiBlbnRyaWVzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRwdWJsaWMgYXN5bmMgZmV0Y2hSZWNvbW1lbmRhdGlvbnMoX2NvbnRleHQ6IE9EYXRhVjRDb250ZXh0W10sIF9yb290Q29udGV4dD86IENvbnRleHQpOiBQcm9taXNlPFN0YW5kYXJkUmVjb21tZW5kYXRpb25SZXNwb25zZVtdPiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2ggdGhlIHJlY29tbWVuZGF0aW9ucyBhbmQgYXBwbHkgdGhlbSBvbiB0aGUgVUkuXG5cdCAqIEBwYXJhbSBjdXJyZW50Q29udGV4dHNJbmZvIENvbnRleHRzIEluZm8gdGhhdCBjb250YWlucyB0aGUgY29udGV4dCB0aGF0IHNoYWxsIGJlIGNvbnNpZGVyZWQgd2hlbiBmZXRjaGluZyByZWNvbW1lbmRhdGlvbnMgYWxvbmcgd2l0aCBjb250ZXh0SWRlbnRpZmllclxuXHQgKiBAcGFyYW0gY29uc2lkZXJPbmx5TmV3Q29udGV4dCBCb29sZWFuIHByb3BlcnR5IGluZGljYXRpbmcgUmVjb21tZW5kYXRpb25cblx0ICogc2hvdWxkIGJlIGZldGNoZWQgb25seSBmb3IgbmV3IGNvbnRleHRzIHdpdGggbm8gcmVjb21tZW5kYXRpb24gZmV0Y2ggY2FsbFxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlY29tbWVuZGF0aW9ucyB3ZXJlIGZldGNoZWQgYW5kIGFwcGxpZWQgY29ycmVjdGx5XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIGFzeW5jIGZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMoXG5cdFx0Y3VycmVudENvbnRleHRzSW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm9bXSxcblx0XHRjb25zaWRlck9ubHlOZXdDb250ZXh0PzogYm9vbGVhblxuXHQpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHRsZXQgaXNTdWNjZXNzID0gZmFsc2U7XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdHMgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgcmVjb21tZW5kYXRpb25SZWdpc3RyeSA9IHNpZGVFZmZlY3RzLmdldFJlY29tbWVuZGF0aW9uc01hcHBpbmcoKTtcblx0XHRjb25zdCBmaWx0ZXJlZENvbnRleHRzSW5mbyA9IGN1cnJlbnRDb250ZXh0c0luZm8uZmlsdGVyKChjb250ZXh0SW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdHJldHVybiBzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmNoZWNrSWZSZWNvbW1lbmRhdGlvblJvbGVFeGlzdHNGb3JDb250ZXh0KGNvbnRleHRJbmZvLCByZWNvbW1lbmRhdGlvblJlZ2lzdHJ5KTtcblx0XHR9KTtcblx0XHRpZiAodGhpcy5pc1JlY29tbWVuZGF0aW9uRW5hYmxlZCgpKSB7XG5cdFx0XHRjb25zdCBjb250ZXh0c0luZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvW10gPSBjb25zaWRlck9ubHlOZXdDb250ZXh0XG5cdFx0XHRcdD8gc3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5nZXRDb250ZXh0c1dpdGhOb1JlY29tbWVuZGF0aW9ucyhmaWx0ZXJlZENvbnRleHRzSW5mbywgdGhpcy5pbnRlcm5hbE1vZGVsKVxuXHRcdFx0XHQ6IGZpbHRlcmVkQ29udGV4dHNJbmZvO1xuXHRcdFx0Y29uc3QgY29udGV4dHM6IE9EYXRhVjRDb250ZXh0W10gPSBjb250ZXh0c0luZm8ubWFwKFxuXHRcdFx0XHQoY29udGV4dEluZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKSA9PiBjb250ZXh0SW5mby5jb250ZXh0XG5cdFx0XHQpIGFzIE9EYXRhVjRDb250ZXh0W107XG5cdFx0XHRpZiAoY29udGV4dHMgJiYgY29udGV4dHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHJvb3RDb250ZXh0ID0gYXdhaXQgdGhpcy5fZ2V0Um9vdENvbnRleHQoY29udGV4dHNbMF0pO1xuXHRcdFx0XHRcdGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXHRcdFx0XHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSA9IGF3YWl0IHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hSZWNvbW1lbmRhdGlvbnMoY29udGV4dHMsIHJvb3RDb250ZXh0KTtcblx0XHRcdFx0XHRjb25zdCBlbmRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG5cdFx0XHRcdFx0dGhpcy50ZWxlbWV0cnkudXBkYXRlUmVzcG9uc2VUaW1lSW5mbyhlbmRUaW1lIC0gc3RhcnRUaW1lKTtcblx0XHRcdFx0XHRpZiAocmVjb21tZW5kYXRpb25EYXRhPy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlQWxsUmVjb21tZW5kZWRGaWVsZHMocmVjb21tZW5kYXRpb25EYXRhKTtcblx0XHRcdFx0XHRcdHRoaXMudGVsZW1ldHJ5LnVwZGF0ZURhdGFGcm9tUmVjb21tZW5kYXRpb25SZXNwb25zZShyZWNvbW1lbmRhdGlvbkRhdGEpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBpZiBlbXB0eSByZWNvbW1lbmRhdGlvbnMsIHRoZW4gc3RvcmUgaXQgZm9yIHRlbGVtZXRyeSBwdXJwb3NlXG5cdFx0XHRcdFx0XHR0aGlzLnRlbGVtZXRyeS5pbmNyZWFzZUNvdW50KFwibnVtYmVyT2ZUaW1lc0VtcHR5UmVjb21tZW5kYXRpb25zXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyBuZWVkIHRvIHZhbGlkYXRlIHRoYXQgdGhlIHJlc3BvbnNlIGlzIHByb3Blcmx5IGZvcm1hdHRlZFxuXHRcdFx0XHRcdGlzU3VjY2VzcyA9IHRoaXMuYXBwbHlSZWNvbW1lbmRhdGlvbihyZWNvbW1lbmRhdGlvbkRhdGEsIGNvbnRleHRzKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIlRoZXJlIHdhcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgcmVjb21tZW5kYXRpb25zXCIsIGUgYXMgRXJyb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuc3RvcmVSZWNvbW1lbmRhdGlvbkNvbnRleHRzKGZpbHRlcmVkQ29udGV4dHNJbmZvKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaXNTdWNjZXNzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoIHRoZSByZWNvbW1lbmRhdGlvbnMgb24gZmllbGQgY2hhbmdlIGFuZCBhcHBseSB0aGVtIG9uIHRoZSBVSS5cblx0ICogQHBhcmFtIGZpZWxkIFRoZSBjaGFuZ2VkIGZpZWxkLlxuXHQgKiBAcGFyYW0gY29udGV4dEluZm8gQ29udGV4dEluZm8gd2hpY2ggY29udGFpbnMgdGhlIGNvbnRleHQgaXMgb25seSBjb25zaWRlcmVkIHdoZW4gZmV0Y2hpbmcgdGhlIHJlY29tbWVuZGF0aW9ucyBhbG9uZyB3aXRoIGNvbnRleHRJZGVudGlmaWVyXG5cdCAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVjb21tZW5kYXRpb24gd2VyZSBmZXRjaGVkIGFuZCBhcHBsaWVkIGNvcnJlY3RseVxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHB1YmxpYyBhc3luYyBmZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZDogQ29udHJvbCwgY29udGV4dEluZm86IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGlzRmllbGRSZWNvbW1lbmRhdGlvblJlbGV2YW50ID0gYXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLmNoZWNrSWZGaWVsZElzUmVjb21tZW5kYXRpb25SZWxldmFudChmaWVsZCk7XG5cdFx0aWYgKGlzRmllbGRSZWNvbW1lbmRhdGlvblJlbGV2YW50KSB7XG5cdFx0XHQvL2dldHRpbmcgdGhlIHZpc2libGUgdGFyZ2V0cyBvbiB0aGUgVUkgYW5kIHRoZWlyIHJlc3BlY3RpdmUgY29udGV4dHNcblx0XHRcdGNvbnN0IHRhcmdldHMgPSB0aGlzLmZldGNoVGFyZ2V0cyh0cnVlKTtcblx0XHRcdGNvbnN0IGZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cyA9IHRoaXMuZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHModGFyZ2V0cyk7XG5cdFx0XHQvL2ZpbHRlcmluZyB0aGUgY2hpbGQgY29udGV4dHMgZnJvbSB0aGUgYXZhaWxhYmxlIGNvbnRleHRzXG5cdFx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkNvbnRleHQgPSBmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHMuZmlsdGVyKGZ1bmN0aW9uIChmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dCkge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0KGZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0LmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpXG5cdFx0XHRcdFx0XHQuZ2V0UGF0aCgpXG5cdFx0XHRcdFx0XHQ/LmluY2x1ZGVzKChjb250ZXh0SW5mbz8uY29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCkuZ2V0UGF0aCgpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHQ7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5jbGVhcklnbm9yZWRDb250ZXh0cyh0aGlzLmludGVybmFsTW9kZWwsIChjb250ZXh0SW5mbz8uY29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCkuZ2V0UGF0aCgpKTtcblx0XHRcdHJldHVybiB0aGlzLmZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnMocmVjb21tZW5kYXRpb25Db250ZXh0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBmaWx0ZXJlZCByZWNvbW1lbmRhdGlvbnMgZnJvbSBwYXNzZWQgcmVjb21tZW5kYXRpb25zIGFuZCB0aGVuIGJhc2VkIG9uIGl0IHdlIGVpdGhlciBzaG93IHRoZSBmaWx0ZXJlZCByZWNvbW1lbmRhdGlvbnMgb3Igbm90IHNob3cgdGhlIEFjY2VwdCBhbGwgRGlhbG9nIGlmIHRoZXJlIGFyZSBubyByZWNvbW1lbmRhdGlvbnMuXG5cdCAqIEBwYXJhbSBfcGFyYW1zIFBhcmFtcyBvYmplY3QgY29udGFpbmluZyByZWNvbW1lbmRhdGlvbkRhdGEgcHJvcGVydHkgd2hpY2ggaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGNvbnRleHQsIHByb3BlcnR5UGF0aCwgdmFsdWUgYW5kIHRleHQgZm9yIGEgcmVjb21tZW5kYXRpb25cblx0ICogQHBhcmFtIF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhIEFycmF5IG9mIHJlY29tbWVuZGF0aW9uIGRhdGEgb2JqZWN0cywgZWFjaCBjb250YWluaW5nOlxuXHQgKiBfcGFyYW1zLnJlY29tbWVuZGF0aW9uRGF0YVtdLmNvbnRleHQgVGhlIGNvbnRleHQgZm9yIHRoZSByZWNvbW1lbmRhdGlvbi5cblx0ICogX3BhcmFtcy5yZWNvbW1lbmRhdGlvbkRhdGFbXS5jb250ZXh0SWRlbnRpZmllciBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbnRleHQuXG5cdCAqIF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhW10ucHJvcGVydHlQYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIGZvciB0aGUgcmVjb21tZW5kZWQgZmllbGQuXG5cdCAqIF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhW10udmFsdWUgVGhlIHJlY29tbWVuZGVkIHZhbHVlLlxuXHQgKiBfcGFyYW1zLnJlY29tbWVuZGF0aW9uRGF0YVtdLnRleHQgVGhlIGRpc3BsYXkgdGV4dCBmb3IgdGhlIHJlY29tbWVuZGF0aW9uLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTM5LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShcIkFmdGVyQXN5bmNcIilcblx0cHVibGljIGFzeW5jIG9uQmVmb3JlQWNjZXB0UmVjb21tZW5kYXRpb25zKF9wYXJhbXM6IEFjY2VwdEFsbFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuXHRcdC8vZG8gbm90aGluZ1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhY2NlcHRpbmcgdGhlIHJlY29tbWVuZGF0aW9ucy5cblx0ICogQHBhcmFtIF9wYXJhbXMgUGFyYW1zIG9iamVjdCBjb250YWluaW5nIHJlY29tbWVuZGF0aW9uRGF0YSBwcm9wZXJ0eSB3aGljaCBpcyBhbiBhcnJheSBvZiBvYmplY3RzIGNvbnRhaW5pbmcgY29udGV4dCwgcHJvcGVydHlQYXRoLCB2YWx1ZSBhbmQgdGV4dCBmb3IgYSByZWNvbW1lbmRhdGlvblxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIHJlc29sdmVkIHRvIGEgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB3aGV0aGVyIHJlY29tbWVuZGF0aW9ucyBhcmUgYWNjZXB0ZWQgb3Igbm90XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0cHVibGljIGFzeW5jIGFjY2VwdFJlY29tbWVuZGF0aW9ucyhfcGFyYW1zOiBBY2NlcHRBbGxQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0XHQvLyB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBiZSBleGVjdXRlZCBpZiB0aGVyZSBpcyBubyBob29rIGltcGxlbWVudGF0aW9uIGkuZS4gZm9yIHRoZSBuZXcgb3JjaGVzdHJhdGlvblxuXHRcdGNvbnN0IHByb21pc2VzID0gW107XG5cdFx0aWYgKF9wYXJhbXMucmVjb21tZW5kYXRpb25EYXRhKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSBvZiBfcGFyYW1zLnJlY29tbWVuZGF0aW9uRGF0YSkge1xuXHRcdFx0XHRpZiAocmVjb21tZW5kYXRpb25EYXRhLmNvbnRleHQgJiYgcmVjb21tZW5kYXRpb25EYXRhLnByb3BlcnR5UGF0aCkge1xuXHRcdFx0XHRcdHByb21pc2VzLnB1c2goXG5cdFx0XHRcdFx0XHRyZWNvbW1lbmRhdGlvbkRhdGEuY29udGV4dC5zZXRQcm9wZXJ0eShyZWNvbW1lbmRhdGlvbkRhdGEucHJvcGVydHlQYXRoLCByZWNvbW1lbmRhdGlvbkRhdGEudmFsdWUsIFwiJGF1dG8uYWJjXCIpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgYXBwbHlSZWNvbW1lbmRhdGlvbihyZWNvbW1lbmRhdGlvblJlc3BvbnNlczogU3RhbmRhcmRSZWNvbW1lbmRhdGlvblJlc3BvbnNlW10sIF9jb250ZXh0OiBPRGF0YVY0Q29udGV4dFtdKTogYm9vbGVhbiB7XG5cdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5zdG9yZVJlY29tbWVuZGF0aW9ucyhcblx0XHRcdHJlY29tbWVuZGF0aW9uUmVzcG9uc2VzLFxuXHRcdFx0dGhpcy5nZXRWaWV3KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwsXG5cdFx0XHRfY29udGV4dFxuXHRcdCk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogU3RvcmVzIHRoZSByZWNvbW1lbmRhdGlvbiBjb250ZXh0cy5cblx0ICogQHBhcmFtIGNvbnRleHRzSW5mb1xuXHQgKi9cblx0cHJpdmF0ZSBzdG9yZVJlY29tbWVuZGF0aW9uQ29udGV4dHMoY29udGV4dHNJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gdGhpcy5pbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIikgfHwgW107XG5cdFx0Y29udGV4dHNJbmZvLmZvckVhY2goKGNvbnRleHRJbmZvOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mbykgPT4ge1xuXHRcdFx0Y29udGV4dFBhdGhzLnB1c2goKGNvbnRleHRJbmZvLmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpLmdldFBhdGgoKSk7XG5cdFx0fSk7XG5cblx0XHRyZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gcmVjb21tZW5kYXRpb25Db250ZXh0cz8uZmlsdGVyKChyZWNvbW1lbmRhdGlvbkNvbnRleHQ6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKSA9PiB7XG5cdFx0XHRjb25zdCBjb250ZXh0ID0gcmVjb21tZW5kYXRpb25Db250ZXh0Py5jb250ZXh0O1xuXHRcdFx0aWYgKGNvbnRleHQpIHtcblx0XHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBjb250ZXh0LmdldFBhdGgoKTtcblx0XHRcdFx0Y29uc3QgaW5kZXggPSBjb250ZXh0UGF0aHMuaW5kZXhPZihjb250ZXh0UGF0aCk7XG5cdFx0XHRcdGlmIChpbmRleCA8IDApIHtcblx0XHRcdFx0XHQvLyBFeGlzdGluZyBjb250ZXh0IHBhdGggaXMgbm90IGZvdW5kIGluIHRoZSBuZXdseSBmZXRjaGVkIHJlY29tbWVuZGF0aW9uICYgdGhlcmVmb3JlIGRvbid0IGRvIGFueXRoaW5nXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0gZWxzZSBpZiAocmVjb21tZW5kYXRpb25Db250ZXh0LmNvbnRleHRJZGVudGlmaWVyKSB7XG5cdFx0XHRcdFx0Ly8gRXhpc3RpbmcgY29udGV4dCBwYXRoIGlzIGZvdW5kLiB3ZSB0cnkgdG8gdXBkYXRlIHRoZSBjb250ZXh0SW5mbyB3aXRoIHRoZSBsYXRlc3QgY29udGV4dFxuXHRcdFx0XHRcdC8vIGluc3RlYWQgb2Ygb3V0ZGF0ZWQgb25lXG5cdFx0XHRcdFx0Y29udGV4dHNJbmZvW2luZGV4XS5jb250ZXh0SWRlbnRpZmllciA9IHJlY29tbWVuZGF0aW9uQ29udGV4dC5jb250ZXh0SWRlbnRpZmllcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5pbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIiwgWy4uLnJlY29tbWVuZGF0aW9uQ29udGV4dHMsIC4uLmNvbnRleHRzSW5mb10pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZpbHRlcnMgdGhlIGNvbnRleHRzIGFuZCBvbmx5IHJldHVybnMgdGhvc2UgdGhhdCBtYXRjaGVzIHRoZSBjb250ZXh0cy5cblx0ICogQHBhcmFtIHRhcmdldHNcblx0ICogQHJldHVybnMgUmV0dXJucyB0aGUgZmlsdGVyZWQgcmVjb21tZW5kYXRpb24gcmVsZXZhbnQgY29udGV4dHNcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHModGFyZ2V0czogc3RyaW5nW10pOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdIHtcblx0XHRjb25zdCBjb250ZXh0UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgZmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBrZXkgb2YgdGFyZ2V0cykge1xuXHRcdFx0Y29uc3QgY29udGV4dFBhdGhGcm9tS2V5ID0ga2V5LnN1YnN0cmluZygwLCBrZXkubGFzdEluZGV4T2YoXCIpXCIpICsgMSk7XG5cdFx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkNvbnRleHRzID0gKHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsKS5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbkNvbnRleHRzXCIpO1xuXHRcdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cy5mb3JFYWNoKChjb250ZXh0SW5mbzogUmVjb21tZW5kYXRpb25Db250ZXh0c0luZm8pID0+IHtcblx0XHRcdFx0Y29uc3QgY29udGV4dCA9IGNvbnRleHRJbmZvLmNvbnRleHQ7XG5cdFx0XHRcdGlmICgoY29udGV4dCBhcyBPRGF0YVY0Q29udGV4dCkuZ2V0UGF0aCgpID09IGNvbnRleHRQYXRoRnJvbUtleSAmJiAhY29udGV4dFBhdGhzLmluY2x1ZGVzKGNvbnRleHRQYXRoRnJvbUtleSkpIHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aHMucHVzaChjb250ZXh0UGF0aEZyb21LZXkpO1xuXHRcdFx0XHRcdGZpbHRlcmVkUmVjb21tZW5kYXRpb25Db250ZXh0cy5wdXNoKGNvbnRleHRJbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBmaWx0ZXJlZFJlY29tbWVuZGF0aW9uQ29udGV4dHM7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2hlcyBSZWNvbW1lbmRhdGlvbkRhdGEgYmFzZWQgb24gZmlsdGVyZWQgdGFyZ2V0cy5cblx0ICogQHBhcmFtIGZpbHRlcmVkVGFyZ2V0c1xuXHQgKiBAcmV0dXJucyBSZWNvbW1lbmRhdGlvbkRhdGFcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hGaWx0ZXJlZFJlY29tbWVuZGF0aW9uRGF0YShmaWx0ZXJlZFRhcmdldHM6IHN0cmluZ1tdKTogUmVjb21tZW5kYXRpb25JbmZvIHtcblx0XHRjb25zdCBmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhOiBSZWNvbW1lbmRhdGlvbkluZm8gPSB7fTtcblx0XHRjb25zdCByZWNvbW1lbmRhdGlvbkRhdGEgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbnNEYXRhXCIpO1xuXHRcdE9iamVjdC5rZXlzKHJlY29tbWVuZGF0aW9uRGF0YSkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRcdGlmIChmaWx0ZXJlZFRhcmdldHMuaW5jbHVkZXMoa2V5KSkge1xuXHRcdFx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbnNEYXRhW2tleV0gPSBPYmplY3QuYXNzaWduKHJlY29tbWVuZGF0aW9uRGF0YVtrZXldLCB7fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlclJlY29tbWVuZGF0aW9uc0RhdGE7XG5cdH1cblxuXHQvKipcblx0ICogRmV0Y2hlcyB0aGUgZmlsdGVyZWQgdGFyZ2V0cy5cblx0ICogQHBhcmFtIGNvbnNpZGVyUmVjb21tZW5kYXRpb25Db250ZXh0cyBQYXNzZWQgYXMgdHJ1ZSB3aGVuIHJlY29tbWVuZGF0aW9uIGNvbnRleHRzIHNob3VsZCBiZSBjb25zaWRlcmVkIGluc3RlYWQgb2YgZGF0YVxuXHQgKiBAcmV0dXJucyBBcnJheSBvZiBGaWx0ZXJlZCB0YXJnZXRzXG5cdCAqL1xuXHRwcml2YXRlIGZldGNoVGFyZ2V0cyhjb25zaWRlclJlY29tbWVuZGF0aW9uQ29udGV4dHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uRGF0YSA9IHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uc0RhdGFcIik7XG5cdFx0aWYgKHJlY29tbWVuZGF0aW9uRGF0YS52ZXJzaW9uID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXHRcdGNvbnN0IGlzRmNsRW5hYmxlZCA9IHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5faXNGY2xFbmFibGVkKCk7XG5cdFx0Y29uc3QgaXNGdWxsU2NyZWVuID0gaXNGY2xFbmFibGVkXG5cdFx0XHQ/ICh0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0Um9vdFZpZXdDb250cm9sbGVyKCkgYXMgRmNsQ29udHJvbGxlcikuZ2V0SGVscGVyKCkuZ2V0Q3VycmVudFVJU3RhdGUoKS5pc0Z1bGxTY3JlZW5cblx0XHRcdDogdHJ1ZTtcblx0XHRjb25zdCBpc1JlY29tbWVuZGF0aW9uQWNjZXB0YWJsZSA9IChjb250ZXh0UGF0aDogc3RyaW5nLCBrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0Y29uc3Qgc3BsaXRQYXRoQW5kQ2hlY2tJZlJlY29tbWVuZGF0aW9uQWNjZXB0YWJsZSA9IChjdHh0UGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhdGhBcnJheSA9IGtleS5zcGxpdChjdHh0UGF0aCk7XG5cdFx0XHRcdGNvbnN0IG5ld1BhdGggPSBwYXRoQXJyYXlbMV07XG5cdFx0XHRcdGxldCBuZXdQYXRoQXJyYXkgPSBuZXdQYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdFx0Ly9oZXJlIHdlIGNoZWNrIHRoZSBwYXRoIGJ5IHNwbGl0dGluZyB0byBkZWNpZGUgd2hldGhlciB0byBpbmNsdWRlIHJlY29tbWVuZGF0aW9ucyBvciBub3QgaW4gZGlhbG9nXG5cdFx0XHRcdGlmIChuZXdQYXRoQXJyYXkubGVuZ3RoIDw9IDMpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRuZXdQYXRoQXJyYXkgPSBuZXdQYXRoQXJyYXkuc2xpY2UoMik7XG5cdFx0XHRcdFx0cmV0dXJuICFuZXdQYXRoQXJyYXkuc29tZSgodmFsdWU6IHN0cmluZykgPT4gdmFsdWUuaW5jbHVkZXMoXCIoXCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGlmIChpc0ZjbEVuYWJsZWQgJiYgIWlzRnVsbFNjcmVlbikge1xuXHRcdFx0XHRjb25zdCByaWdodE1vc3RDb250ZXh0ID0gKHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRSb290Vmlld0NvbnRyb2xsZXIoKSBhcyBGY2xDb250cm9sbGVyKS5nZXRSaWdodG1vc3RDb250ZXh0KCk7XG5cdFx0XHRcdGlmIChrZXkuaW5jbHVkZXMocmlnaHRNb3N0Q29udGV4dD8uZ2V0UGF0aCgpIGFzIHN0cmluZykpIHtcblx0XHRcdFx0XHRyZXR1cm4gc3BsaXRQYXRoQW5kQ2hlY2tJZlJlY29tbWVuZGF0aW9uQWNjZXB0YWJsZShyaWdodE1vc3RDb250ZXh0Py5nZXRQYXRoKCkgYXMgc3RyaW5nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gc3BsaXRQYXRoQW5kQ2hlY2tJZlJlY29tbWVuZGF0aW9uQWNjZXB0YWJsZShjb250ZXh0UGF0aCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBzcGxpdFBhdGhBbmRDaGVja0lmUmVjb21tZW5kYXRpb25BY2NlcHRhYmxlKGNvbnRleHRQYXRoKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgZGF0YVRvQmVGaWx0ZXJlZCA9IHRoaXMuZmV0Y2hEYXRhVG9CZUZpbHRlcmVkKHJlY29tbWVuZGF0aW9uRGF0YSwgY29uc2lkZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzKTtcblx0XHRyZXR1cm4gKFxuXHRcdFx0ZGF0YVRvQmVGaWx0ZXJlZC5maWx0ZXIoKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0a2V5LmluY2x1ZGVzKHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKSBhcyBzdHJpbmcpICYmXG5cdFx0XHRcdFx0aXNSZWNvbW1lbmRhdGlvbkFjY2VwdGFibGUodGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpIGFzIHN0cmluZywga2V5KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSkgfHwgW11cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgdGhlIGRhdGEgdG8gYmUgZmlsdGVyZWQgZGVwZW5kaW5nIG9uIHRoZSByZWNvbW1lbmRhdGlvbkRhdGEuXG5cdCAqIEBwYXJhbSByZWNvbW1lbmRhdGlvbkRhdGFcblx0ICogQHBhcmFtIGNvbnNpZGVyUmVjb21tZW5kYXRpb25Db250ZXh0cyBQYXNzZWQgYXMgdHJ1ZSB3aGVuIHJlY29tbWVuZGF0aW9uIGNvbnRleHRzIHNob3VsZCBiZSBjb25zaWRlcmVkIGluc3RlYWQgb2YgZGF0YVxuXHQgKiBAcmV0dXJucyBBcnJheSBvZiBjb250ZXh0UGF0aHMgdG8gYmUgZmlsdGVyZWRcblx0ICovXG5cdHByaXZhdGUgZmV0Y2hEYXRhVG9CZUZpbHRlcmVkKHJlY29tbWVuZGF0aW9uRGF0YTogUmVjb21tZW5kYXRpb25JbmZvLCBjb25zaWRlclJlY29tbWVuZGF0aW9uQ29udGV4dHM6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XG5cdFx0bGV0IGRhdGFUb0JlRmlsdGVyZWQ6IHN0cmluZ1tdID0gW107XG5cdFx0Ly8gY29uc2lkZXIgcmVjb21tZW5kYXRpb25Db250ZXh0cyBmb3IgZmV0Y2hpbmcgdGhlIHBhdGhzIGluIGNhc2Ugb2YgZmllbGQgY2hhbmdlIHNvIHRoYXQgY29udGV4dHMgZm9yIHdoaWNoIGVtcHR5IHJlY29tbWVuZGF0aW9uIGRhdGEgaXMgcmV0dXJuZWQgYXJlIGFsc28gY29uc2lkZXJlZFxuXHRcdGlmIChjb25zaWRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMpIHtcblx0XHRcdGNvbnN0IHJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSB0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9yZWNvbW1lbmRhdGlvbkNvbnRleHRzXCIpO1xuXHRcdFx0cmVjb21tZW5kYXRpb25Db250ZXh0cy5mb3JFYWNoKChyZWNvbW1lbmRhdGlvbkNvbnRleHQ6IFJlY29tbWVuZGF0aW9uQ29udGV4dHNJbmZvKSA9PiB7XG5cdFx0XHRcdGRhdGFUb0JlRmlsdGVyZWQucHVzaCgocmVjb21tZW5kYXRpb25Db250ZXh0LmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpLmdldFBhdGgoKSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gY29uc2lkZXIgcmVjb21tZW5kYXRpb25EYXRhIGluIGNhc2Ugb2YgYWNjZXB0IGFsbCBkaWFsb2cgc2NlbmFyaW9zXG5cdFx0XHRkYXRhVG9CZUZpbHRlcmVkID0gT2JqZWN0LmtleXMocmVjb21tZW5kYXRpb25EYXRhKS5maWx0ZXIoKGtleSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ga2V5ICE9PSBcInZlcnNpb25cIiAmJiBrZXkgIT09IFwia2V5c1wiO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBkYXRhVG9CZUZpbHRlcmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIE92ZXJ3cml0ZXMgQWNjZXB0QWxsIFBhcmFtcyBiYXNlZCBvZiByZWNvbW1lbmRhdGlvbiBkYXRhIGFuZCBjb250ZXh0cy5cblx0ICogQHBhcmFtIGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YVxuXHQgKiBAcGFyYW0gZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0c1xuXHQgKiBAcGFyYW0gcGFyYW1zXG5cdCAqL1xuXHRwcml2YXRlIGFkanVzdEFjY2VwdEFsbFBhcmFtcyhcblx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGE6IFJlY29tbWVuZGF0aW9uSW5mbyxcblx0XHRmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzOiBSZWNvbW1lbmRhdGlvbkNvbnRleHRzSW5mb1tdLFxuXHRcdHBhcmFtczogQWNjZXB0QWxsUGFyYW1zXG5cdCk6IHZvaWQge1xuXHRcdHBhcmFtcy5yZWNvbW1lbmRhdGlvbkRhdGEgPSBbXTtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGEpIHtcblx0XHRcdGlmIChmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFba2V5XS52YWx1ZSB8fCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkRhdGFba2V5XS50ZXh0KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgdGhlcmUgaXMgbm8gcGxhY2Vob2xkZXIgdmFsdWUgb3IgcGxhY2Vob2xkZXIgdGV4dCB0aGVuIHRoaXMgcmVjb21tZW5kYXRpb24gaXMgbm90IHJlbGV2YW50IGZvciBBY2NlcHQuXG5cdFx0XHRcdC8vIFVzZXIgbmVlZHMgdG8gbWFudWFsbHkgc2VsZWN0IHRoZSByZWNvbW1lbmRlZCB2YWx1ZSBpbiB0aGVzZSBjYXNlcyAmIHRoZXJlZm9yZSBmaWx0ZXIgdGhlIHNhbWUuXG5cdFx0XHRcdGNvbnN0IGNvbnRleHRQYXRoRnJvbUtleSA9IGtleS5zdWJzdHJpbmcoMCwga2V5Lmxhc3RJbmRleE9mKFwiKVwiKSArIDEpO1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eVBhdGhGcm9tS2V5ID0ga2V5LnN1YnN0cmluZyhrZXkubGFzdEluZGV4T2YoXCIpXCIpICsgMik7XG5cdFx0XHRcdGNvbnN0IG1hdGNoaW5nQ29udGV4dCA9IGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMuZmlsdGVyKGZ1bmN0aW9uIChjb250ZXh0SW5mbykge1xuXHRcdFx0XHRcdGlmICgoY29udGV4dEluZm8/LmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQpLmdldFBhdGgoKSA9PT0gY29udGV4dFBhdGhGcm9tS2V5KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0bWF0Y2hpbmdDb250ZXh0Py5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5pc1JlY29tbWVuZGF0aW9uRmllbGROdWxsKFxuXHRcdFx0XHRcdFx0bWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHQgYXMgT0RhdGFWNENvbnRleHQsXG5cdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGhGcm9tS2V5XG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRwYXJhbXMucmVjb21tZW5kYXRpb25EYXRhLnB1c2goe1xuXHRcdFx0XHRcdFx0Y29udGV4dDogbWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHQsXG5cdFx0XHRcdFx0XHRjb250ZXh0SWRlbnRpZmllcjogbWF0Y2hpbmdDb250ZXh0WzBdLmNvbnRleHRJZGVudGlmaWVyLFxuXHRcdFx0XHRcdFx0cHJvcGVydHlQYXRoOiBwcm9wZXJ0eVBhdGhGcm9tS2V5LFxuXHRcdFx0XHRcdFx0dmFsdWU6IGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YVtrZXldLnZhbHVlLFxuXHRcdFx0XHRcdFx0dGV4dDogZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhW2tleV0udGV4dFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZldGNoZXMgUmVjb21tZW5kYXRpb25JbmZvIHRoYXQgY29udGFpbnMgdGFyZ2V0cywgZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhLCBmaWx0ZXJSZWNvbW1lbmRhdGlvbkNvbnRleHRzLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGggQWNjZXB0YWxsUGFyYW1zXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgZmV0Y2hBY2NlcHRBbGxQYXJhbXMoKTogUHJvbWlzZTxBY2NlcHRBbGxQYXJhbXM+IHtcblx0XHRjb25zdCB0YXJnZXRzOiBzdHJpbmdbXSA9IHRoaXMuZmV0Y2hUYXJnZXRzKCk7XG5cdFx0Y29uc3QgZmlsdGVyUmVjb21tZW5kYXRpb25EYXRhID0gdGhpcy5mZXRjaEZpbHRlcmVkUmVjb21tZW5kYXRpb25EYXRhKHRhcmdldHMpO1xuXHRcdGNvbnN0IGZpbHRlclJlY29tbWVuZGF0aW9uQ29udGV4dHMgPSB0aGlzLmZldGNoRmlsdGVyZWRSZWNvbW1lbmRhdGlvbkNvbnRleHRzKHRhcmdldHMpO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHt9O1xuXHRcdHRoaXMuYWRqdXN0QWNjZXB0QWxsUGFyYW1zKGZpbHRlclJlY29tbWVuZGF0aW9uRGF0YSwgZmlsdGVyUmVjb21tZW5kYXRpb25Db250ZXh0cywgcGFyYW1zKTtcblx0XHRhd2FpdCAodGhpcy5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyKS5yZWNvbW1lbmRhdGlvbnMub25CZWZvcmVBY2NlcHRSZWNvbW1lbmRhdGlvbnMocGFyYW1zKTtcblx0XHRzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLmFkZENvbnRleHRJZGVudGlmaWVyVGV4dChwYXJhbXMsIHRoaXMuZ2V0VmlldygpPy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCkpO1xuXHRcdHRoaXMuZGF0YVRvQmVBY2NlcHRlZCA9IChwYXJhbXMgYXMgQWNjZXB0QWxsUGFyYW1zKS5yZWNvbW1lbmRhdGlvbkRhdGEgfHwgW107XG5cdFx0cmV0dXJuIHBhcmFtcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgcmVjb21tZW5kYXRpb25zIGV4aXN0IG9yIG5vdC5cblx0ICogQHJldHVybnMgQm9vbGVhbiB2YWx1ZSBiYXNlZCBvbiB3aGV0aGVyIHJlY29tbWVuZGF0aW9ucyBhcmUgcHJlc2VudCBvciBub3Rcblx0ICovXG5cdHB1YmxpYyBjaGVja0lmUmVjb21tZW5kYXRpb25zRXhpc3QoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgcmVjb21tZW5kYXRpb25EYXRhID0gdGhpcy5pbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uc0RhdGFcIikgfHwge307XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHJlY29tbWVuZGF0aW9uRGF0YSkubGVuZ3RoICE9PSAwO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjbGVhciByZWNvbW1lbmRhdGlvbiBEYXRhIGZvciBhIGdpdmVuIGNvbnRleHQgYW5kIGFsbCBpdHMgY2hpbGRyZW4uXG5cdCAqIEBwYXJhbSBjb250ZXh0cyBDb250ZXh0IGZvciB3aGljaCByZWNvbW1lbmRhdGlvbiBoYXMgdG8gYmUgY2xlYXJlZFxuXHQgKi9cblx0cHVibGljIGlnbm9yZVJlY29tbWVuZGF0aW9uRm9yQ29udGV4dHMoY29udGV4dHM/OiBPRGF0YVY0Q29udGV4dFtdKTogdm9pZCB7XG5cdFx0aWYgKCFjb250ZXh0cyB8fCAhY29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRWaWV3KCk7XG5cdFx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dDtcblx0XHRcdGNvbnRleHRzID0gW2JpbmRpbmdDb250ZXh0XTtcblx0XHR9XG5cdFx0c3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlci5pZ25vcmVSZWNvbW1lbmRhdGlvbkZvckNvbnRleHRzKGNvbnRleHRzLCB0aGlzLmludGVybmFsTW9kZWwpO1xuXHR9XG5cblx0cHJpdmF0ZSB0cnlSZXNldFJlY29tbWVuZGF0aW9ucyhyb290Q29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHRzdGFuZGFyZFJlY29tbWVuZGF0aW9uSGVscGVyLnNldEN1cnJlbnRSb290Q29udGV4dChyb290Q29udGV4dCk7XG5cdFx0Ly8gVE9ETzogU3RhbmRhcmRSZWNvbW1lbmRhdGlvbkhlbHBlciBzdG9yZXMgYWxsIHRoZSByZWNvbW1lbmRhdGlvbnMgZm9yIGFuIGluc3RhbmNlIG9mIGJ1c2luZXNzIG9iamVjdFxuXHRcdC8vIG1lYW5pbmcgZG9lc24ndCBtYXR0ZXIgdGhlIHJlY29tbWVuZGF0aW9ucyBhcmUgb24gdGhlIE9QL1N1Yk9QLiBCdXQgdGhlIHJlY29tbWVuZGF0aW9ucyBjb250ZXh0cyBoZXJlXG5cdFx0Ly8gaXMgc3BlY2lmaWMgdG8gdGhpcyBjb250cm9sbGVyLCBTdWJPUCBjb250cm9sbGVyIHdpbGwgaGF2ZSBpdHMgb3duIHJlY29tbWVuZGF0aW9uIGNvbnRleHRzLiBJZGVhbGx5IGl0XG5cdFx0Ly8gc2hvdWxkIGJlIGNsZWFyZWQgYnV0IHRoaXMgaXMgbm90IGRvbmUgaGVyZS4gVGhpcyBjb21wbGV0ZSB0aGluZyBuZWVkcyB0byBiZSByZWZhY3RvcmVkXG5cdFx0dGhpcy5pbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3JlY29tbWVuZGF0aW9uQ29udGV4dHNcIiwgW10pO1xuXHRcdHN0YW5kYXJkUmVjb21tZW5kYXRpb25IZWxwZXIucmVzZXRSZWNvbW1lbmRhdGlvbnModGhpcy5pbnRlcm5hbE1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc3RvcmUgdGhlIG51bWJlciBvZiBmaWVsZHMgQWNjZXB0ZWQvSWdub3JlZCB3aGVuIFNhdmUgYnV0dG9uIGlzIGNsaWNrZWQsIGRlcGVuZGluZyBvbiB3aGljaCByZWNvbW1lZGF0aW9uIG9wdGlvbiB3YXMgY2hvb3NlbiBBY2NlcHQvUmVqZWN0IGFuZCBTYXZlLlxuXHQgKiBAcGFyYW0gcmVjb21tZW5kYXRpb25PcHRpb25DaG9vc2VuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgc3RvcmVEYXRhRm9yVGVsZW1ldHJ5KHJlY29tbWVuZGF0aW9uT3B0aW9uQ2hvb3NlbjogdW5kZWZpbmVkIHwgUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHJvb3RDb250ZXh0ID0gYXdhaXQgdGhpcy5fZ2V0Um9vdENvbnRleHQodGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBPRGF0YVY0Q29udGV4dCk7XG5cdFx0aWYgKHJvb3RDb250ZXh0ICYmIHRoaXMuYmFzZS5yZWNvbW1lbmRhdGlvbnMuaXNFbmFibGVkKHJvb3RDb250ZXh0KSkge1xuXHRcdFx0aWYgKHJlY29tbWVuZGF0aW9uT3B0aW9uQ2hvb3NlbiA9PT0gUmVjb21tZW5kYXRpb25EaWFsb2dEZWNpc2lvbi5BY2NlcHQpIHtcblx0XHRcdFx0Ly8gaW5jcmVhc2UgYWNjZXB0IGNvdW50XG5cdFx0XHRcdHRoaXMudGVsZW1ldHJ5LnVwZGF0ZURhdGEoXCJudW1iZXJPZkZpZWxkc0FjY2VwdGVkVGhyb3VnaEFjY2VwdEJ1dHRvblwiLCB0aGlzLmRhdGFUb0JlQWNjZXB0ZWQubGVuZ3RoKTtcblx0XHRcdH0gZWxzZSBpZiAocmVjb21tZW5kYXRpb25PcHRpb25DaG9vc2VuID09PSBSZWNvbW1lbmRhdGlvbkRpYWxvZ0RlY2lzaW9uLlJlamVjdCkge1xuXHRcdFx0XHQvLyBpbmNyZWFzZSBpZ25vcmUgY291bnRcblx0XHRcdFx0dGhpcy50ZWxlbWV0cnkudXBkYXRlRGF0YShcIm51bWJlck9mRmllbGRzSWdub3JlZFRocm91Z2hJZ25vcmVCdXR0b25cIiwgdGhpcy5kYXRhVG9CZUFjY2VwdGVkLmxlbmd0aCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnRlbGVtZXRyeS5zdG9yZURhdGEodGhpcy5nZXRWaWV3KCkgYXMgRkVWaWV3KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgY291bnQgYnkgMSBpbiB0ZWxlbWV0cnkgZGF0YS5cblx0ICogQHBhcmFtIGtleVxuXHQgKi9cblx0cHVibGljIGluY3JlYXNlVGVsZW1ldHJ5RGF0YUNvdW50KGtleToga2V5b2YgUmVjb21tZW5kYXRpb25UZWxlbWV0cnkpOiB2b2lkIHtcblx0XHR0aGlzLnRlbGVtZXRyeS5pbmNyZWFzZUNvdW50KGtleSk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0ZWxlbWV0cnkgZGF0YSBmb3Igd2hpY2ggb3B0aW9uIHVzZXIgY2hvc2Ugd2hlbiBzZWxlY3RpbmcgYSBmaWVsZCB2YWx1ZSwgYXMgdG9wL25vbi10b3AgcmVjb21tZW5kYXRpb24gb3Igc29tZSBvdGhlciB2YWx1ZS5cblx0ICogQHBhcmFtIGZpZWxkUGF0aFxuXHQgKiBAcGFyYW0gc2VsZWN0ZWRWYWx1ZVxuXHQgKi9cblx0cHVibGljIHVwZGF0ZVRlbGVtZXRyeURhdGFCYXNlZE9uVXNlclNlbGVjdGlvbihmaWVsZFBhdGg6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy50ZWxlbWV0cnkudXBkYXRlVGVsZW1ldHJ5RGF0YUJhc2VkT25Vc2VyU2VsZWN0aW9uKHRoaXMuZ2V0VmlldygpLCBmaWVsZFBhdGgsIHNlbGVjdGVkVmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBmaWVsZHMgcmVjb21tZW5kZWQuIElmIHRoZSBmaWVsZCBpcyBhbHJlYWR5IGluY2x1ZGVkIGluIHRlbGVtZXRyeSBjb3VudCB0aGVuIHdlIGRvIG5vdCBpbmNsdWRlLlxuXHQgKiBUaGlzIHdheSB3ZSBrbm93IHRoZSB0b3RhbCBudW1iZXIgb2YgdW5pcXVlIGZpZWxkcyByZWNvbW1lbmRlZC5cblx0ICogQHBhcmFtIHJlY29tbWVuZGF0aW9uRGF0YVxuXHQgKi9cblx0dXBkYXRlQWxsUmVjb21tZW5kZWRGaWVsZHMocmVjb21tZW5kYXRpb25EYXRhOiBTdGFuZGFyZFJlY29tbWVuZGF0aW9uUmVzcG9uc2VbXSk6IHZvaWQge1xuXHRcdGNvbnN0IHZpZXdCaW5kaW5nQ29udGV4dFBhdGggPSAodGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KS5nZXRQYXRoKCk7XG5cdFx0Y29uc3QgbmV3UmVjb21tZW5kYXRpb25zRm9yQ3VycmVudENvbnRleHRzID0gcmVjb21tZW5kYXRpb25EYXRhLmZpbHRlcihcblx0XHRcdChyZXNwb25zZSkgPT4gcmVzcG9uc2VbXCJBSVJlY29tbWVuZGVkRmllbGRQYXRoXCJdPy5pbmNsdWRlcyh2aWV3QmluZGluZ0NvbnRleHRQYXRoKVxuXHRcdCk7XG5cdFx0aWYgKCF0aGlzLmFsbFJlY29tbWVuZGVkRmllbGRzKSB7XG5cdFx0XHR0aGlzLmFsbFJlY29tbWVuZGVkRmllbGRzID0gW107XG5cdFx0fVxuXHRcdG5ld1JlY29tbWVuZGF0aW9uc0ZvckN1cnJlbnRDb250ZXh0cy5mb3JFYWNoKChyZXNwb25zZSkgPT4ge1xuXHRcdFx0Y29uc3QgZmllbGRQYXRoID0gcmVzcG9uc2VbXCJBSVJlY29tbWVuZGVkRmllbGRQYXRoXCJdO1xuXHRcdFx0aWYgKGZpZWxkUGF0aCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuYWxsUmVjb21tZW5kZWRGaWVsZHMuaW5jbHVkZXMoZmllbGRQYXRoKSkge1xuXHRcdFx0XHRcdHRoaXMuYWxsUmVjb21tZW5kZWRGaWVsZHMucHVzaChmaWVsZFBhdGgpO1xuXHRcdFx0XHRcdHRoaXMudGVsZW1ldHJ5LmluY3JlYXNlQ291bnQoXCJudW1iZXJPZlJlY29tbWVuZGVkRmllbGRzXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXJzIGFsbCByZWplY3RlZCByZWNvbW1lbmRhdGlvbnMgZnJvbSB0aGUgbG9jYWwgYW5ub3RhdGlvbiBtb2RlbCBmb3IgdGhlIGdpdmVuIGNvbnRleHQuXG5cdCAqIFRoaXMgcmVzZXRzIHRoZSBcIi9yZWplY3RlZFJlY29tbWVuZGF0aW9uc1wiIHByb3BlcnR5IHRvIGFuIGVtcHR5IG9iamVjdC5cblx0ICogQHBhcmFtIGNvbnRleHQgVGhlIE9EYXRhVjQgY29udGV4dCBmb3Igd2hpY2ggcmVqZWN0ZWQgcmVjb21tZW5kYXRpb25zIHNob3VsZCBiZSByZXNldC5cblx0ICovXG5cdHJlc2V0UmVqZWN0ZWRSZWNvbW1lbmRhdGlvbnMoY29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHRjb25zdCBsb2NhbEFubm90YXRpb25Nb2RlbCA9IGNvbnRleHQ/LmdldE1vZGVsKCk/LmdldExvY2FsQW5ub3RhdGlvbk1vZGVsKCk7XG5cdFx0Y29uc3QgcmVqZWN0ZWRSZWNvbW1lbmRhdGlvbnMgPSBsb2NhbEFubm90YXRpb25Nb2RlbD8uZ2V0UHJvcGVydHkoXCIvcmVqZWN0ZWRSZWNvbW1lbmRhdGlvbnNcIik7XG5cdFx0T2JqZWN0LmtleXMocmVqZWN0ZWRSZWNvbW1lbmRhdGlvbnMgfHwge30pLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0aWYgKGtleS5zdGFydHNXaXRoKGNvbnRleHQ/LmdldFBhdGgoKSkpIHtcblx0XHRcdFx0ZGVsZXRlIHJlamVjdGVkUmVjb21tZW5kYXRpb25zW2tleV07XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bG9jYWxBbm5vdGF0aW9uTW9kZWw/LnNldFByb3BlcnR5KFwiL3JlamVjdGVkUmVjb21tZW5kYXRpb25zXCIsIHJlamVjdGVkUmVjb21tZW5kYXRpb25zKTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTBCQTtBQUNBO0FBQ0E7QUFDQTtFQUtBO0FBQ0E7QUFDQTtBQUNBO0VBSEEsSUFvQ3FCQSxlQUFlLElBQUFDLElBQUEsR0FEbkNDLGNBQWMsQ0FBQyxrREFBa0QsQ0FBQyxFQUFBQyxLQUFBLEdBdUJqRUMsY0FBYyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQVFoQkQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFBRSxLQUFBLEdBbUQxQkMsZUFBZSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQWNqQkQsZUFBZSxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUNqQkMsVUFBVSxDQUFDQyxpQkFBaUIsQ0FBQ0MsT0FBTyxDQUFDLEVBQUFDLEtBQUEsR0FVckNOLGVBQWUsQ0FBQyxDQUFDLEVBQUFPLEtBQUEsR0FDakJDLGNBQWMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FZaEJULGVBQWUsQ0FBQyxDQUFDLEVBQUFVLE1BQUEsR0FDakJQLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLE9BQU8sQ0FBQyxFQUFBTSxNQUFBLEdBWXJDWCxlQUFlLENBQUMsQ0FBQyxFQUFBWSxNQUFBLEdB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
|
|
@@ -626,10 +626,10 @@ export default class Recommendations extends ControllerExtension {
|
|
|
626
626
|
* @param context The ODataV4 context for which rejected recommendations should be reset.
|
|
627
627
|
*/
|
|
628
628
|
resetRejectedRecommendations(context: ODataV4Context): void {
|
|
629
|
-
const localAnnotationModel = context
|
|
629
|
+
const localAnnotationModel = context?.getModel()?.getLocalAnnotationModel();
|
|
630
630
|
const rejectedRecommendations = localAnnotationModel?.getProperty("/rejectedRecommendations");
|
|
631
631
|
Object.keys(rejectedRecommendations || {}).forEach((key) => {
|
|
632
|
-
if (key.startsWith(context
|
|
632
|
+
if (key.startsWith(context?.getPath())) {
|
|
633
633
|
delete rejectedRecommendations[key];
|
|
634
634
|
}
|
|
635
635
|
});
|
|
@@ -28,12 +28,12 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/controllerextensions/Bas
|
|
|
28
28
|
/**
|
|
29
29
|
* This function can be used to intercept the routing event during the normal navigation process, such as when a table row is clicked to navigate, pagination buttons are used, the Apply button in an object page is clicked, or a sub-object page in a flexible column layout is closed.
|
|
30
30
|
*
|
|
31
|
-
* The function is
|
|
31
|
+
* The function is not called during other means of external outbound navigation such as a navigation configured using a link or by using navigation buttons.
|
|
32
32
|
*
|
|
33
33
|
* If declared as an extension, it allows you to intercept and change the normal navigation flow.
|
|
34
|
-
* If you decide to
|
|
34
|
+
* If you decide to implement your own navigation processing, you can return `true` to prevent the default routing behavior.
|
|
35
35
|
*
|
|
36
|
-
* This function is meant to be individually overridden by consuming controllers
|
|
36
|
+
* This function is meant to be individually overridden by consuming controllers and not called directly.
|
|
37
37
|
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
38
38
|
* @param mNavigationParameters Object containing row context and page context
|
|
39
39
|
* @param mNavigationParameters.bindingContext The target navigation context
|
|
@@ -118,4 +118,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/controllerextensions/Bas
|
|
|
118
118
|
}(BaseControllerExtension), _applyDecoratedDescriptor(_class2.prototype, "onBeforeNavigation", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeNavigation"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "navigate", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "navigate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeBinding", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeBinding"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterBinding", [_dec8, _dec9], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterBinding"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "navigateToRoute", [_dec10, _dec11], Object.getOwnPropertyDescriptor(_class2.prototype, "navigateToRoute"), _class2.prototype), _class2)) || _class);
|
|
119
119
|
return Routing;
|
|
120
120
|
}, false);
|
|
121
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSb3V0aW5nIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjMyIsImV4dGVuc2libGUiLCJfZGVjNCIsIl9kZWM1IiwiZmluYWxFeHRlbnNpb24iLCJfZGVjNiIsIl9kZWM3IiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VDb250cm9sbGVyRXh0ZW5zIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uQmVmb3JlTmF2aWdhdGlvbiIsIm1OYXZpZ2F0aW9uUGFyYW1ldGVycyIsIlByb21pc2UiLCJyZXNvbHZlIiwibmF2aWdhdGUiLCJvQ29udGV4dCIsInBhcmFtZXRlcnMiLCJpbnRlcm5hbE1vZGVsIiwiYmFzZSIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJfcm91dGluZyIsIm5hdmlnYXRlVG9Db250ZXh0Iiwib25CZWZvcmVCaW5kaW5nIiwib25BZnRlckJpbmRpbmciLCJuYXZpZ2F0ZVRvUm91dGUiLCJzVGFyZ2V0Um91dGVOYW1lIiwib1BhcmFtZXRlcnMiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiYklzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiQmFzZUNvbnRyb2xsZXJFeHRlbnNpb24iLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJSb3V0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBmaW5hbEV4dGVuc2lvbiwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0Jhc2VDb250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcblxuLyoqXG4gKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIHJvdXRpbmcgZmxvdyBvZiB0aGUgYXBwbGljYXRpb25cbiAqIEBoaWRlY29uc3RydWN0b3JcbiAqIEBwdWJsaWNcbiAqIEBzaW5jZSAxLjg2LjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuUm91dGluZ1wiKVxuY2xhc3MgUm91dGluZyBleHRlbmRzIEJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJpdmF0ZSBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW50ZXJjZXB0IHRoZSByb3V0aW5nIGV2ZW50IGR1cmluZyB0aGUgbm9ybWFsIG5hdmlnYXRpb24gcHJvY2Vzcywgc3VjaCBhcyB3aGVuIGEgdGFibGUgcm93IGlzIGNsaWNrZWQgdG8gbmF2aWdhdGUsIHBhZ2luYXRpb24gYnV0dG9ucyBhcmUgdXNlZCwgdGhlIEFwcGx5IGJ1dHRvbiBpbiBhbiBvYmplY3QgcGFnZSBpcyBjbGlja2VkLCBvciBhIHN1Yi1vYmplY3QgcGFnZSBpbiBhIGZsZXhpYmxlIGNvbHVtbiBsYXlvdXQgaXMgY2xvc2VkLlxuXHQgKlxuXHQgKiBUaGUgZnVuY3Rpb24gaXMgTk9UIGNhbGxlZCBkdXJpbmcgb3RoZXIgbWVhbnMgb2YgZXh0ZXJuYWwgb3V0Ym91bmQgbmF2aWdhdGlvbiAobGlrZSBhIG5hdmlnYXRpb24gY29uZmlndXJlZCB2aWEgYSBsaW5rLCBvciBieSB1c2luZyBuYXZpZ2F0aW9uIGJ1dHRvbnMpLlxuXHQgKlxuXHQgKiBJZiBkZWNsYXJlZCBhcyBhbiBleHRlbnNpb24sIGl0IGFsbG93cyB5b3UgdG8gaW50ZXJjZXB0IGFuZCBjaGFuZ2UgdGhlIG5vcm1hbCBuYXZpZ2F0aW9uIGZsb3cuXG5cdCAqIElmIHlvdSBkZWNpZGUgdG8gZG8geW91ciBvd24gbmF2aWdhdGlvbiBwcm9jZXNzaW5nLCB5b3UgY2FuIHJldHVybiBgdHJ1ZWAgdG8gcHJldmVudCB0aGUgZGVmYXVsdCByb3V0aW5nIGJlaGF2aW9yLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gbU5hdmlnYXRpb25QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHJvdyBjb250ZXh0IGFuZCBwYWdlIGNvbnRleHRcblx0ICogQHBhcmFtIG1OYXZpZ2F0aW9uUGFyYW1ldGVycy5iaW5kaW5nQ29udGV4dCBUaGUgdGFyZ2V0IG5hdmlnYXRpb24gY29udGV4dFxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBleGVjdXRpb24sIGZhbHNlIHRvIGtlZXAgdGhlIHN0YW5kYXJkIGJlaGF2aW9yXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuODYuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJBc3luY1wiKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGFzeW5jIG9uQmVmb3JlTmF2aWdhdGlvbihtTmF2aWdhdGlvblBhcmFtZXRlcnM6IHsgYmluZGluZ0NvbnRleHQ6IENvbnRleHQgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRlbiBieSB0aGUgYXBwbGljYXRpb25cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgbmF2aWdhdGlvbiB0byBhIHNwZWNpZmljIGNvbnRleHQuXG5cdCAqIEBwYXJhbSBvQ29udGV4dCBPYmplY3QgY29udGFpbmluZyB0aGUgY29udGV4dCB0byBiZSBuYXZpZ2F0ZWQgdG9cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBuYXZpZ2F0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnByZXNlcnZlSGlzdG9yeSAgQnkgZGVmYXVsdCwgdGhlIGludGVybmFsIGFsZ29yaXRobSBkZWNpZGVzIHdoZXRoZXIgdGhlIG5hdmlnYXRpb24gcHJlc2VydmVzIHRoZSBwcmV2aW91cyBlbnRyeS4gVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGlzIGJlaGF2aW9yLlxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjkwLjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRuYXZpZ2F0ZShvQ29udGV4dDogQ29udGV4dCwgcGFyYW1ldGVycz86IHsgcHJlc2VydmVIaXN0b3J5OiBib29sZWFuIH0pOiB2b2lkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5iYXNlLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdC8vIFdlIGhhdmUgdG8gZGVsZXRlIHRoZSBpbnRlcm5hbCBtb2RlbCB2YWx1ZSBmb3IgXCJwYWdpbmF0b3JDdXJyZW50Q29udGV4dFwiIHRvIGVuc3VyZSBpdCBpcyByZS1ldmFsdWF0ZWQgYnkgdGhlIG5hdmlnYXRlVG9Db250ZXh0IGZ1bmN0aW9uXG5cdFx0Ly8gQkNQOiAyMjcwMTIzODIwXG5cdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9wYWdpbmF0b3JDdXJyZW50Q29udGV4dFwiLCBudWxsKTtcblx0XHR0aGlzLmJhc2UuX3JvdXRpbmcubmF2aWdhdGVUb0NvbnRleHQob0NvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBpbnRlcmNlcHQgdGhlIHJvdXRpbmcgZXZlbnQgYmVmb3JlIGJpbmRpbmcgYSBwYWdlLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBkZWNsYXJlZCBhcyBhbiBleHRlbnNpb24sIGl0IGFsbG93cyB5b3UgdG8gaW50ZXJjZXB0IGFuZCBjaGFuZ2UgdGhlIG5vcm1hbCBmbG93IG9mIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgYnV0IG92ZXJyaWRkZW4gc2VwYXJhdGVseSBieSBjb25zdW1pbmcgY29udHJvbGxlcnMuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgZm9yIHRoZSBuYXZpZ2F0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQmVmb3JlQmluZGluZyhvQ29udGV4dDogb2JqZWN0IHwgbnVsbCk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRlbiBieSB0aGUgYXBwbGljYXRpb25cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW50ZXJjZXB0IHRoZSByb3V0aW5nIGV2ZW50IGFmdGVyIGJpbmRpbmcgYSBwYWdlLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBkZWNsYXJlZCBhcyBhbiBleHRlbnNpb24sIGl0IGFsbG93cyB5b3UgdG8gaW50ZXJjZXB0IGFuZCBjaGFuZ2UgdGhlIG5vcm1hbCBmbG93IG9mIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgYnV0IG92ZXJyaWRkZW4gc2VwYXJhdGVseSBieSBjb25zdW1pbmcgY29udHJvbGxlcnMuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgdG8gYmUgbmF2aWdhdGVkXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQWZ0ZXJCaW5kaW5nKG9Db250ZXh0OiBvYmplY3QgfCBudWxsKTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHR9XG5cblx0LyoqXG5cdCAqIE5hdmlnYXRlIHRvIGFub3RoZXIgdGFyZ2V0LlxuXHQgKiBAcGFyYW0gc1RhcmdldFJvdXRlTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgcm91dGVcblx0ICogQHBhcmFtIG9QYXJhbWV0ZXJzIFBhcmFtZXRlcnMgdG8gYmUgdXNlZCB3aXRoIHJvdXRlIHRvIGNyZWF0ZSB0aGUgdGFyZ2V0IGhhc2hcblx0ICogQHBhcmFtIG9QYXJhbWV0ZXJzLmJJc1N0aWNreU1vZGUgUFJJVkFURVxuXHQgKiBAcGFyYW0gb1BhcmFtZXRlcnMucHJlc2VydmVIaXN0b3J5IFBSSVZBVEVcblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIG5hdmlnYXRpb24gaXMgZmluYWxpemVkXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyBuYXZpZ2F0ZVRvUm91dGUoXG5cdFx0c1RhcmdldFJvdXRlTmFtZTogc3RyaW5nLFxuXHRcdG9QYXJhbWV0ZXJzPzogeyBiSXNTdGlja3lNb2RlPzogYm9vbGVhbjsgcHJlc2VydmVIaXN0b3J5PzogYm9vbGVhbiB9XG5cdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSB0aGlzLmJhc2UuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBiSXNTdGlja3lNb2RlID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpO1xuXHRcdGlmICghb1BhcmFtZXRlcnMpIHtcblx0XHRcdG9QYXJhbWV0ZXJzID0ge307XG5cdFx0fVxuXHRcdG9QYXJhbWV0ZXJzLmJJc1N0aWNreU1vZGUgPSBiSXNTdGlja3lNb2RlO1xuXHRcdHJldHVybiB0aGlzLmJhc2UuX3JvdXRpbmcubmF2aWdhdGVUb1JvdXRlKHNUYXJnZXRSb3V0ZU5hbWUsIG9QYXJhbWV0ZXJzKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBSb3V0aW5nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7RUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFMQSxJQU9NQSxPQUFPLElBQUFDLElBQUEsR0FEWkMsY0FBYyxDQUFDLDBDQUEwQyxDQUFDLEVBQUFDLEtBQUEsR0FvQnpEQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQ2pCQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUFDLEtBQUEsR0FleEJILGVBQWUsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FDakJDLGNBQWMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FvQmhCTixlQUFlLENBQUMsQ0FBQyxFQUFBTyxLQUFBLEdBQ2pCTCxVQUFVLENBQUNNLGlCQUFpQixDQUFDQyxLQUFLLENBQUMsRUFBQUMsS0FBQSxHQWlCbkNWLGVBQWUsQ0FBQyxDQUFDLEVBQUFXLEtBQUEsR0FDakJULFVBQVUsQ0FBQ00saUJBQWlCLENBQUNDLEtBQUssQ0FBQyxFQUFBRyxNQUFBLEdBZW5DWixlQUFlLENBQUMsQ0FBQyxFQUFBYSxNQUFBLEdBQ2pCUixjQUFjLENBQUMsQ0FBQyxFQUFBUixJQUFBLENBQUFpQixNQUFBLElBQUFDLE9BQUEsMEJBQUFDLHFCQUFBO0lBQUEsU0FBQXBCLFFBQUE7TUFBQSxPQUFBb0IscUJBQUEsQ0FBQUMsS0FBQSxPQUFBQyxTQUFBO0lBQUE7SUFBQUMsY0FBQSxDQUFBdkIsT0FBQSxFQUFBb0IscUJBQUE7SUFBQSxJQUFBSSxNQUFBLEdBQUF4QixPQUFBLENBQUF5QixTQUFBO0lBeEZqQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJ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
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSb3V0aW5nIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjMyIsImV4dGVuc2libGUiLCJfZGVjNCIsIl9kZWM1IiwiZmluYWxFeHRlbnNpb24iLCJfZGVjNiIsIl9kZWM3IiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VDb250cm9sbGVyRXh0ZW5zIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uQmVmb3JlTmF2aWdhdGlvbiIsIm1OYXZpZ2F0aW9uUGFyYW1ldGVycyIsIlByb21pc2UiLCJyZXNvbHZlIiwibmF2aWdhdGUiLCJvQ29udGV4dCIsInBhcmFtZXRlcnMiLCJpbnRlcm5hbE1vZGVsIiwiYmFzZSIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJfcm91dGluZyIsIm5hdmlnYXRlVG9Db250ZXh0Iiwib25CZWZvcmVCaW5kaW5nIiwib25BZnRlckJpbmRpbmciLCJuYXZpZ2F0ZVRvUm91dGUiLCJzVGFyZ2V0Um91dGVOYW1lIiwib1BhcmFtZXRlcnMiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiYklzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiQmFzZUNvbnRyb2xsZXJFeHRlbnNpb24iLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJSb3V0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBmaW5hbEV4dGVuc2lvbiwgcHVibGljRXh0ZW5zaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJhc2VDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9CYXNlQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbi8qKlxuICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBpbnRvIHRoZSByb3V0aW5nIGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44Ni4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlJvdXRpbmdcIilcbmNsYXNzIFJvdXRpbmcgZXh0ZW5kcyBCYXNlQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGludGVyY2VwdCB0aGUgcm91dGluZyBldmVudCBkdXJpbmcgdGhlIG5vcm1hbCBuYXZpZ2F0aW9uIHByb2Nlc3MsIHN1Y2ggYXMgd2hlbiBhIHRhYmxlIHJvdyBpcyBjbGlja2VkIHRvIG5hdmlnYXRlLCBwYWdpbmF0aW9uIGJ1dHRvbnMgYXJlIHVzZWQsIHRoZSBBcHBseSBidXR0b24gaW4gYW4gb2JqZWN0IHBhZ2UgaXMgY2xpY2tlZCwgb3IgYSBzdWItb2JqZWN0IHBhZ2UgaW4gYSBmbGV4aWJsZSBjb2x1bW4gbGF5b3V0IGlzIGNsb3NlZC5cblx0ICpcblx0ICogVGhlIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQgZHVyaW5nIG90aGVyIG1lYW5zIG9mIGV4dGVybmFsIG91dGJvdW5kIG5hdmlnYXRpb24gc3VjaCBhcyBhIG5hdmlnYXRpb24gY29uZmlndXJlZCB1c2luZyBhIGxpbmsgb3IgYnkgdXNpbmcgbmF2aWdhdGlvbiBidXR0b25zLlxuXHQgKlxuXHQgKiBJZiBkZWNsYXJlZCBhcyBhbiBleHRlbnNpb24sIGl0IGFsbG93cyB5b3UgdG8gaW50ZXJjZXB0IGFuZCBjaGFuZ2UgdGhlIG5vcm1hbCBuYXZpZ2F0aW9uIGZsb3cuXG5cdCAqIElmIHlvdSBkZWNpZGUgdG8gaW1wbGVtZW50IHlvdXIgb3duIG5hdmlnYXRpb24gcHJvY2Vzc2luZywgeW91IGNhbiByZXR1cm4gYHRydWVgIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgcm91dGluZyBiZWhhdmlvci5cblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMgYW5kIG5vdCBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gbU5hdmlnYXRpb25QYXJhbWV0ZXJzIE9iamVjdCBjb250YWluaW5nIHJvdyBjb250ZXh0IGFuZCBwYWdlIGNvbnRleHRcblx0ICogQHBhcmFtIG1OYXZpZ2F0aW9uUGFyYW1ldGVycy5iaW5kaW5nQ29udGV4dCBUaGUgdGFyZ2V0IG5hdmlnYXRpb24gY29udGV4dFxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBleGVjdXRpb24sIGZhbHNlIHRvIGtlZXAgdGhlIHN0YW5kYXJkIGJlaGF2aW9yXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuODYuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJBc3luY1wiKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGFzeW5jIG9uQmVmb3JlTmF2aWdhdGlvbihtTmF2aWdhdGlvblBhcmFtZXRlcnM6IHsgYmluZGluZ0NvbnRleHQ6IENvbnRleHQgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRlbiBieSB0aGUgYXBwbGljYXRpb25cblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgbmF2aWdhdGlvbiB0byBhIHNwZWNpZmljIGNvbnRleHQuXG5cdCAqIEBwYXJhbSBvQ29udGV4dCBPYmplY3QgY29udGFpbmluZyB0aGUgY29udGV4dCB0byBiZSBuYXZpZ2F0ZWQgdG9cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBuYXZpZ2F0aW9uXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLnByZXNlcnZlSGlzdG9yeSAgQnkgZGVmYXVsdCwgdGhlIGludGVybmFsIGFsZ29yaXRobSBkZWNpZGVzIHdoZXRoZXIgdGhlIG5hdmlnYXRpb24gcHJlc2VydmVzIHRoZSBwcmV2aW91cyBlbnRyeS4gVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGlzIGJlaGF2aW9yLlxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjkwLjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRuYXZpZ2F0ZShvQ29udGV4dDogQ29udGV4dCwgcGFyYW1ldGVycz86IHsgcHJlc2VydmVIaXN0b3J5OiBib29sZWFuIH0pOiB2b2lkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5iYXNlLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdC8vIFdlIGhhdmUgdG8gZGVsZXRlIHRoZSBpbnRlcm5hbCBtb2RlbCB2YWx1ZSBmb3IgXCJwYWdpbmF0b3JDdXJyZW50Q29udGV4dFwiIHRvIGVuc3VyZSBpdCBpcyByZS1ldmFsdWF0ZWQgYnkgdGhlIG5hdmlnYXRlVG9Db250ZXh0IGZ1bmN0aW9uXG5cdFx0Ly8gQkNQOiAyMjcwMTIzODIwXG5cdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9wYWdpbmF0b3JDdXJyZW50Q29udGV4dFwiLCBudWxsKTtcblx0XHR0aGlzLmJhc2UuX3JvdXRpbmcubmF2aWdhdGVUb0NvbnRleHQob0NvbnRleHQsIHBhcmFtZXRlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBpbnRlcmNlcHQgdGhlIHJvdXRpbmcgZXZlbnQgYmVmb3JlIGJpbmRpbmcgYSBwYWdlLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBkZWNsYXJlZCBhcyBhbiBleHRlbnNpb24sIGl0IGFsbG93cyB5b3UgdG8gaW50ZXJjZXB0IGFuZCBjaGFuZ2UgdGhlIG5vcm1hbCBmbG93IG9mIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgYnV0IG92ZXJyaWRkZW4gc2VwYXJhdGVseSBieSBjb25zdW1pbmcgY29udHJvbGxlcnMuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgZm9yIHRoZSBuYXZpZ2F0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQmVmb3JlQmluZGluZyhvQ29udGV4dDogb2JqZWN0IHwgbnVsbCk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRlbiBieSB0aGUgYXBwbGljYXRpb25cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW50ZXJjZXB0IHRoZSByb3V0aW5nIGV2ZW50IGFmdGVyIGJpbmRpbmcgYSBwYWdlLlxuXHQgKlxuXHQgKiBJZiBpdCBpcyBkZWNsYXJlZCBhcyBhbiBleHRlbnNpb24sIGl0IGFsbG93cyB5b3UgdG8gaW50ZXJjZXB0IGFuZCBjaGFuZ2UgdGhlIG5vcm1hbCBmbG93IG9mIGJpbmRpbmcuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgYnV0IG92ZXJyaWRkZW4gc2VwYXJhdGVseSBieSBjb25zdW1pbmcgY29udHJvbGxlcnMuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgdG8gYmUgbmF2aWdhdGVkXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQWZ0ZXJCaW5kaW5nKG9Db250ZXh0OiBvYmplY3QgfCBudWxsKTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHR9XG5cblx0LyoqXG5cdCAqIE5hdmlnYXRlIHRvIGFub3RoZXIgdGFyZ2V0LlxuXHQgKiBAcGFyYW0gc1RhcmdldFJvdXRlTmFtZSBOYW1lIG9mIHRoZSB0YXJnZXQgcm91dGVcblx0ICogQHBhcmFtIG9QYXJhbWV0ZXJzIFBhcmFtZXRlcnMgdG8gYmUgdXNlZCB3aXRoIHJvdXRlIHRvIGNyZWF0ZSB0aGUgdGFyZ2V0IGhhc2hcblx0ICogQHBhcmFtIG9QYXJhbWV0ZXJzLmJJc1N0aWNreU1vZGUgUFJJVkFURVxuXHQgKiBAcGFyYW0gb1BhcmFtZXRlcnMucHJlc2VydmVIaXN0b3J5IFBSSVZBVEVcblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdGhlIG5hdmlnYXRpb24gaXMgZmluYWxpemVkXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyBuYXZpZ2F0ZVRvUm91dGUoXG5cdFx0c1RhcmdldFJvdXRlTmFtZTogc3RyaW5nLFxuXHRcdG9QYXJhbWV0ZXJzPzogeyBiSXNTdGlja3lNb2RlPzogYm9vbGVhbjsgcHJlc2VydmVIaXN0b3J5PzogYm9vbGVhbiB9XG5cdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSB0aGlzLmJhc2UuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBiSXNTdGlja3lNb2RlID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpO1xuXHRcdGlmICghb1BhcmFtZXRlcnMpIHtcblx0XHRcdG9QYXJhbWV0ZXJzID0ge307XG5cdFx0fVxuXHRcdG9QYXJhbWV0ZXJzLmJJc1N0aWNreU1vZGUgPSBiSXNTdGlja3lNb2RlO1xuXHRcdHJldHVybiB0aGlzLmJhc2UuX3JvdXRpbmcubmF2aWdhdGVUb1JvdXRlKHNUYXJnZXRSb3V0ZU5hbWUsIG9QYXJhbWV0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
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defineUI5Class, extensible, finalExtension, publicExtension } from "sap/fe/base/ClassSupport";
|
|
2
|
-
import type PageController from "sap/fe/core/PageController";
|
|
3
2
|
import BaseControllerExtension from "sap/fe/core/controllerextensions/BaseControllerExtension";
|
|
4
3
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
5
4
|
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
@@ -14,17 +13,15 @@ import type Context from "sap/ui/model/odata/v4/Context";
|
|
|
14
13
|
*/
|
|
15
14
|
@defineUI5Class("sap.fe.core.controllerextensions.Routing")
|
|
16
15
|
class Routing extends BaseControllerExtension {
|
|
17
|
-
private base!: PageController;
|
|
18
|
-
|
|
19
16
|
/**
|
|
20
17
|
* This function can be used to intercept the routing event during the normal navigation process, such as when a table row is clicked to navigate, pagination buttons are used, the Apply button in an object page is clicked, or a sub-object page in a flexible column layout is closed.
|
|
21
18
|
*
|
|
22
|
-
* The function is
|
|
19
|
+
* The function is not called during other means of external outbound navigation such as a navigation configured using a link or by using navigation buttons.
|
|
23
20
|
*
|
|
24
21
|
* If declared as an extension, it allows you to intercept and change the normal navigation flow.
|
|
25
|
-
* If you decide to
|
|
22
|
+
* If you decide to implement your own navigation processing, you can return `true` to prevent the default routing behavior.
|
|
26
23
|
*
|
|
27
|
-
* This function is meant to be individually overridden by consuming controllers
|
|
24
|
+
* This function is meant to be individually overridden by consuming controllers and not called directly.
|
|
28
25
|
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.After}.
|
|
29
26
|
* @param mNavigationParameters Object containing row context and page context
|
|
30
27
|
* @param mNavigationParameters.bindingContext The target navigation context
|