@sapui5/sap.fe.core 1.130.1 → 1.131.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 +1 -1
- package/src/sap/fe/core/ActionRuntime.js +3 -3
- package/src/sap/fe/core/ActionRuntime.ts +1 -1
- package/src/sap/fe/core/AppComponent.js +4 -11
- package/src/sap/fe/core/AppComponent.ts +3 -12
- package/src/sap/fe/core/CommonUtils.js +13 -13
- package/src/sap/fe/core/CommonUtils.ts +16 -16
- package/src/sap/fe/core/TemplateComponent.js +4 -1
- package/src/sap/fe/core/TemplateComponent.ts +2 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +248 -0
- package/src/sap/fe/core/buildingBlocks/{BuildingBlockBase.ts → BuildingBlock.ts} +73 -132
- package/src/sap/fe/core/controllerextensions/EditFlow.js +17 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +17 -6
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +5 -2
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +4 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +47 -19
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +57 -19
- package/src/sap/fe/core/controllerextensions/PageReady.js +20 -18
- package/src/sap/fe/core/controllerextensions/PageReady.ts +19 -18
- package/src/sap/fe/core/controllerextensions/Placeholder.js +5 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +3 -2
- package/src/sap/fe/core/controllerextensions/Share.ts +2 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js +5 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +4 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -2
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +0 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +4 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +3 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +3 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +16 -19
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +29 -28
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +5 -5
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +4 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +77 -35
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +88 -43
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +3 -7
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +0 -4
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.js +70 -0
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributorMixin.ts +99 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +1 -1
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +14 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +20 -6
- package/src/sap/fe/core/converters/ConverterContext.js +10 -3
- package/src/sap/fe/core/converters/ConverterContext.ts +8 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +2 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js +2 -2
- package/src/sap/fe/core/converters/controls/Common/Action.ts +5 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +10 -5
- package/src/sap/fe/core/converters/controls/Common/KPI.js +26 -9
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +48 -5
- package/src/sap/fe/core/converters/controls/Common/Table.js +43 -46
- package/src/sap/fe/core/converters/controls/Common/Table.ts +68 -57
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +2 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +1 -0
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +2 -3
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +2 -2
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +10 -6
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +7 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +6 -13
- package/src/sap/fe/core/helpers/BindingHelper.js +2 -2
- package/src/sap/fe/core/helpers/BindingHelper.ts +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js +3 -2
- package/src/sap/fe/core/helpers/DeleteHelper.ts +2 -1
- package/src/sap/fe/core/helpers/MetaPath.js +16 -2
- package/src/sap/fe/core/helpers/MetaPath.ts +19 -1
- package/src/sap/fe/core/helpers/RecommendationHelper.js +2 -2
- package/src/sap/fe/core/helpers/RecommendationHelper.ts +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +8 -3
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +9 -2
- package/src/sap/fe/core/library.js +5 -2
- package/src/sap/fe/core/library.support.js +3 -3
- package/src/sap/fe/core/library.support.ts +2 -1
- package/src/sap/fe/core/library.ts +4 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +17 -8
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +16 -14
- package/src/sap/fe/core/messagebundle.properties +6 -0
- package/src/sap/fe/core/messagebundle_ar.properties +11 -3
- package/src/sap/fe/core/messagebundle_bg.properties +14 -6
- package/src/sap/fe/core/messagebundle_ca.properties +10 -2
- package/src/sap/fe/core/messagebundle_cnr.properties +10 -2
- package/src/sap/fe/core/messagebundle_cs.properties +10 -2
- package/src/sap/fe/core/messagebundle_cy.properties +10 -2
- package/src/sap/fe/core/messagebundle_da.properties +10 -2
- package/src/sap/fe/core/messagebundle_de.properties +12 -4
- package/src/sap/fe/core/messagebundle_el.properties +10 -2
- package/src/sap/fe/core/messagebundle_en.properties +9 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +10 -2
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +10 -2
- package/src/sap/fe/core/messagebundle_es.properties +12 -4
- package/src/sap/fe/core/messagebundle_es_MX.properties +10 -2
- package/src/sap/fe/core/messagebundle_et.properties +10 -2
- package/src/sap/fe/core/messagebundle_fi.properties +10 -2
- package/src/sap/fe/core/messagebundle_fr.properties +10 -2
- package/src/sap/fe/core/messagebundle_fr_CA.properties +11 -3
- package/src/sap/fe/core/messagebundle_hi.properties +10 -2
- package/src/sap/fe/core/messagebundle_hr.properties +11 -3
- package/src/sap/fe/core/messagebundle_hu.properties +11 -3
- package/src/sap/fe/core/messagebundle_id.properties +10 -2
- package/src/sap/fe/core/messagebundle_it.properties +10 -2
- package/src/sap/fe/core/messagebundle_iw.properties +11 -3
- package/src/sap/fe/core/messagebundle_ja.properties +10 -2
- package/src/sap/fe/core/messagebundle_kk.properties +10 -2
- package/src/sap/fe/core/messagebundle_ko.properties +10 -2
- package/src/sap/fe/core/messagebundle_lt.properties +10 -2
- package/src/sap/fe/core/messagebundle_lv.properties +10 -2
- package/src/sap/fe/core/messagebundle_mk.properties +10 -2
- package/src/sap/fe/core/messagebundle_ms.properties +10 -2
- package/src/sap/fe/core/messagebundle_nl.properties +12 -4
- package/src/sap/fe/core/messagebundle_no.properties +11 -3
- package/src/sap/fe/core/messagebundle_pl.properties +10 -2
- package/src/sap/fe/core/messagebundle_pt.properties +10 -2
- package/src/sap/fe/core/messagebundle_pt_PT.properties +10 -2
- package/src/sap/fe/core/messagebundle_ro.properties +10 -2
- package/src/sap/fe/core/messagebundle_ru.properties +10 -2
- package/src/sap/fe/core/messagebundle_sh.properties +10 -2
- package/src/sap/fe/core/messagebundle_sk.properties +10 -2
- package/src/sap/fe/core/messagebundle_sl.properties +10 -2
- package/src/sap/fe/core/messagebundle_sr.properties +10 -2
- package/src/sap/fe/core/messagebundle_sv.properties +10 -2
- package/src/sap/fe/core/messagebundle_th.properties +12 -4
- package/src/sap/fe/core/messagebundle_tr.properties +12 -4
- package/src/sap/fe/core/messagebundle_uk.properties +10 -2
- package/src/sap/fe/core/messagebundle_vi.properties +11 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +10 -2
- package/src/sap/fe/core/messagebundle_zh_TW.properties +10 -2
- package/src/sap/fe/core/operationsHelper.js +4 -4
- package/src/sap/fe/core/operationsHelper.ts +4 -4
- package/src/sap/fe/core/rootView/Fcl.controller.js +2 -2
- package/src/sap/fe/core/rootView/Fcl.controller.ts +4 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -5
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -3
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -28
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -35
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +1 -3
- package/src/sap/fe/core/services/ShellServicesFactory.js +2 -13
- package/src/sap/fe/core/services/ShellServicesFactory.ts +1 -17
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +5 -3
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +3 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js +13 -6
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -6
- package/src/sap/fe/core/templating/UIFormatters.js +3 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +4 -3
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +0 -326
|
@@ -779,6 +779,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
779
779
|
* @param stateContributor The ViewStateContributor to register
|
|
780
780
|
*/;
|
|
781
781
|
_proto.registerStateContributor = function registerStateContributor(stateContributor) {
|
|
782
|
+
if (this.stateContributors.includes(stateContributor)) {
|
|
783
|
+
// no need to register the same control again
|
|
784
|
+
return;
|
|
785
|
+
}
|
|
782
786
|
this.stateContributors.push(stateContributor);
|
|
783
787
|
if (this._currentViewState) {
|
|
784
788
|
var _this$configOfStateAp, _this$configOfStateAp2, _this$configOfStateAp3, _this$configOfStateAp4, _this$configOfStateAp5;
|
|
@@ -874,4 +878,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/fe/base/ClassSupport"
|
|
|
874
878
|
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "refreshViewBindings", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "refreshViewBindings"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "adaptBindingRefreshControls", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "adaptBindingRefreshControls"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "refreshControlBinding", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "refreshControlBinding"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getControlRefreshBindingHandler", [_dec8, _dec9], Object.getOwnPropertyDescriptor(_class2.prototype, "getControlRefreshBindingHandler"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "adaptBindingRefreshHandler", [_dec10, _dec11], Object.getOwnPropertyDescriptor(_class2.prototype, "adaptBindingRefreshHandler"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onSuspend", [_dec12, _dec13], Object.getOwnPropertyDescriptor(_class2.prototype, "onSuspend"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onRestore", [_dec14, _dec15], Object.getOwnPropertyDescriptor(_class2.prototype, "onRestore"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "collectResults", [_dec16, _dec17], Object.getOwnPropertyDescriptor(_class2.prototype, "collectResults"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "adaptControlStateHandler", [_dec18, _dec19], Object.getOwnPropertyDescriptor(_class2.prototype, "adaptControlStateHandler"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getControlStateHandler", [_dec20, _dec21], Object.getOwnPropertyDescriptor(_class2.prototype, "getControlStateHandler"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "adaptStateControls", [_dec22, _dec23], Object.getOwnPropertyDescriptor(_class2.prototype, "adaptStateControls"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getStateKey", [_dec24, _dec25], Object.getOwnPropertyDescriptor(_class2.prototype, "getStateKey"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "retrieveViewState", [_dec26, _dec27], Object.getOwnPropertyDescriptor(_class2.prototype, "retrieveViewState"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "retrieveAdditionalStates", [_dec28, _dec29], Object.getOwnPropertyDescriptor(_class2.prototype, "retrieveAdditionalStates"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "retrieveControlState", [_dec30, _dec31], Object.getOwnPropertyDescriptor(_class2.prototype, "retrieveControlState"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "applyInitialStateOnly", [_dec32, _dec33], Object.getOwnPropertyDescriptor(_class2.prototype, "applyInitialStateOnly"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "applyViewState", [_dec34, _dec35], Object.getOwnPropertyDescriptor(_class2.prototype, "applyViewState"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "_checkIfVariantIdIsAvailable", [_dec36], Object.getOwnPropertyDescriptor(_class2.prototype, "_checkIfVariantIdIsAvailable"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeStateApplied", [_dec37, _dec38], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeStateApplied"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterStateApplied", [_dec39, _dec40], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterStateApplied"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "applyAdditionalStates", [_dec41, _dec42], Object.getOwnPropertyDescriptor(_class2.prototype, "applyAdditionalStates"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "_applyNavigationParametersToFilterbar", [_dec43], Object.getOwnPropertyDescriptor(_class2.prototype, "_applyNavigationParametersToFilterbar"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "applyNavigationParameters", [_dec44, _dec45], Object.getOwnPropertyDescriptor(_class2.prototype, "applyNavigationParameters"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "applyControlState", [_dec46, _dec47], Object.getOwnPropertyDescriptor(_class2.prototype, "applyControlState"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "updateAppStateDebounced", [_dec48], Object.getOwnPropertyDescriptor(_class2.prototype, "updateAppStateDebounced"), _class2.prototype)), _class2)) || _class);
|
|
875
879
|
return ViewState;
|
|
876
880
|
}, false);
|
|
877
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIkFERElUSU9OQUxfU1RBVEVTX0tFWSIsImdldFN0YXRlVXRpbCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwiX21Db250cm9sU3RhdGVIYW5kbGVyTWFwIiwicmV0cmlldmUiLCJvVk0iLCJ2YXJpYW50SWQiLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImFwcGx5IiwiY29udHJvbFN0YXRlIiwidW5kZWZpbmVkIiwiaXNWYXJpYW50SWRBdmFpbGFibGUiLCJfY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlIiwic1ZhcmlhbnRSZWZlcmVuY2UiLCJnZXRTdGFuZGFyZFZhcmlhbnRLZXkiLCJjb250cm9sc1ZhcmlhbnRJZFVuYXZhaWxhYmxlIiwicHVzaCIsImdldEZvciIsIkNvbnRyb2xWYXJpYW50QXBwbHlBUEkiLCJhY3RpdmF0ZVZhcmlhbnQiLCJlbGVtZW50IiwidmFyaWFudFJlZmVyZW5jZSIsIl9zZXRJbml0aWFsU3RhdGVzRm9yRGVsdGFDb21wdXRlIiwiZXJyb3IiLCJMb2ciLCJpbnZhbGlkYXRlSW5pdGlhbFN0YXRlRm9yQXBwbHkiLCJtdWx0aXBsZU1vZGVDb250cm9sIiwic2VsZWN0ZWRLZXkiLCJjb250ZW50IiwiZ2V0U2VsZWN0ZWRLZXkiLCJ0YWJCYXIiLCJnZXRJdGVtcyIsImZpbmQiLCJpdGVtIiwiZ2V0S2V5Iiwic2V0U2VsZWN0ZWRLZXkiLCJyZWZyZXNoQmluZGluZyIsIm9UYWJsZSIsIm9UYWJsZUJpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwib1Jvb3RCaW5kaW5nIiwiZ2V0Um9vdEJpbmRpbmciLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwiaGllcmFyY2h5UXVhbGlmaWVyIiwicmVmcmVzaCIsIm9IZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsInNHcm91cElkIiwiZ2V0R3JvdXBJZCIsInJlcXVlc3RTaWRlRWZmZWN0cyIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiaW5mbyIsImdldElkIiwib1NlZ21lbnRlZEJ1dHRvbiIsIm9Db250cm9sU3RhdGUiLCJfb1NlZ21lbnRlZEJ1dHRvbiRnZXQiLCJnZXRQYXJlbnQiLCJpc0EiLCJmaXJlRXZlbnQiLCJvU2VsZWN0IiwiX29TZWxlY3QkZ2V0UGFyZW50Iiwib0R5bmFtaWNQYWdlIiwiaGVhZGVyRXhwYW5kZWQiLCJnZXRIZWFkZXJFeHBhbmRlZCIsInNldEhlYWRlckV4cGFuZGVkIiwib1ZpZXciLCJvQ29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsIm9OYXZQYXJhbWV0ZXJzIiwic2tpcE1lcmdlIiwiYXBwbHlWaWV3U3RhdGUiLCJyZWZyZXNoVmlld0JpbmRpbmdzIiwib0NvbXBvbmVudENvbnRhaW5lciIsIm9Db21wb25lbnQiLCJnZXRDb21wb25lbnRJbnN0YW5jZSIsInJldHJpZXZlQ29udHJvbFN0YXRlIiwiZ2V0Um9vdENvbnRyb2wiLCJhcHBseUNvbnRyb2xTdGF0ZSIsIlZpZXdTdGF0ZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHVibGljRXh0ZW5zaW9uIiwiX2RlYzMiLCJmaW5hbEV4dGVuc2lvbiIsIl9kZWM0IiwiX2RlYzUiLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsIl9kZWM2IiwicHJpdmF0ZUV4dGVuc2lvbiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIkluc3RlYWQiLCJfZGVjMzQiLCJfZGVjMzUiLCJfZGVjMzYiLCJfZGVjMzciLCJfZGVjMzgiLCJfZGVjMzkiLCJfZGVjNDAiLCJfZGVjNDEiLCJfZGVjNDIiLCJfZGVjNDMiLCJfZGVjNDQiLCJfZGVjNDUiLCJfZGVjNDYiLCJfZGVjNDciLCJfZGVjNDgiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJfaW5oZXJpdHNMb29zZSIsIl90aGlzIiwiY2FsbCIsImluaXRpYWxDb250cm9sU3RhdGVzTWFwcGVyIiwidmlld1N0YXRlQ29udHJvbHMiLCJzdGF0ZUNvbnRyaWJ1dG9ycyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiYWRhcHRDb250cm9scyIsImV4dGVybmFsU3RhdGVQcm9taXNlcyIsImNvbnRyb2xTdGF0ZUtleSIsImluaXRpYWxDb250cm9sU3RhdGVzIiwidmFyaWFudENvbnRyb2xzIiwidXBkYXRlSW5pdGlhbFN0YXRlIiwiUHJvbWlzZSIsImFsbCIsImZpbHRlciIsImNvbnRyb2wiLCJpbmNsdWRlcyIsIm1hcCIsIl9hZGRFdmVudExpc3RlbmVyc1RvVmFyaWFudE1hbmFnZW1lbnQiLCJleHRlcm5hbFN0YXRlUHJvbWlzZSIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsImdldFN0YXRlS2V5IiwiZm9yRWFjaCIsImluaXRpYWxDb250cm9sU3RhdGUiLCJpIiwiZSIsIl9pUmV0cmlldmluZ1N0YXRlQ291bnRlciIsIl9wSW5pdGlhbFN0YXRlQXBwbGllZCIsInJlc29sdmUiLCJfcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiYUNvbnRyb2xzIiwiY29sbGVjdFJlc3VsdHMiLCJiYXNlIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwib1Byb21pc2VDaGFpbiIsIm9Db250cm9sIiwidGhlbiIsInJlZnJlc2hDb250cm9sQmluZGluZyIsImJpbmQiLCJhQ29sbGVjdGVkQ29udHJvbHMiLCJvQ29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlciIsImdldENvbnRyb2xSZWZyZXNoQmluZGluZ0hhbmRsZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJvUmVmcmVzaEJpbmRpbmdIYW5kbGVyIiwic1R5cGUiLCJhZGFwdEJpbmRpbmdSZWZyZXNoSGFuZGxlciIsIl9vQ29udHJvbCIsIl9vQ29udHJvbEhhbmRsZXIiLCJvblN1c3BlbmQiLCJvblJlc3RvcmUiLCJkZXN0cm95IiwiZm5DYWxsIiwiYVJlc3VsdHMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImFkYXB0Q29udHJvbFN0YXRlSGFuZGxlciIsImFDb250cm9sSGFuZGxlciIsImdldENvbnRyb2xTdGF0ZUhhbmRsZXIiLCJhSW50ZXJuYWxDb250cm9sU3RhdGVIYW5kbGVyIiwiYUN1c3RvbUNvbnRyb2xTdGF0ZUhhbmRsZXIiLCJyZXRyaWV2ZVN0YXRlIiwiYXBwbHlTdGF0ZSIsIl9jb250cm9sIiwic2hvdWxkQXBwbHlEaWZmU3RhdGUiLCJuYXZpZ2F0aW9uVHlwZSIsImh5YnJpZCIsImFwcGx5TGVnYWN5U3RhdGUiLCJnZXRDb250cm9sU3RhdGUiLCJPYmplY3QiLCJhc3NpZ24iLCJjb25jYXQiLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJfYUNvbGxlY3RlZENvbnRyb2xzIiwiZ2V0VmlldyIsImdldExvY2FsSWQiLCJvVmlld1N0YXRlIiwiYVJlc29sdmVkU3RhdGVzIiwidlJlc3VsdCIsImtleSIsInZhbHVlIiwicmVkdWNlIiwib1N0YXRlcyIsIm1TdGF0ZSIsIm9DdXJyZW50U3RhdGUiLCJtZXJnZU9iamVjdHMiLCJwcmV2U3RhdGUiLCJfY3VycmVudFZpZXdTdGF0ZSIsImtleXMiLCJfYWRkTWlzc2luZ1N0YXRlIiwibUFkZGl0aW9uYWxTdGF0ZXMiLCJfcmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzIiwicmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzIiwiYUNvbnRyb2xTdGF0ZUhhbmRsZXJzIiwibUNvbnRyb2xTdGF0ZUhhbmRsZXIiLCJFcnJvciIsImFTdGF0ZXMiLCJvRmluYWxTdGF0ZSIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsImNvbnRyb2xLZXkiLCJvTmF2UGFyYW1ldGVyIiwiX2dldEluaXRpYWxTdGF0ZUFwcGxpZWQiLCJfaXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZSIsIl9faXNSb290Vmlld0NvbnRyb2xsZXIiLCJvbkJlZm9yZVN0YXRlQXBwbGllZCIsImhhc1ZhcmlhbnRNYW5hZ2VtZW50IiwiY29uZmlnT2ZTdGF0ZUFwcGx5IiwibmF2VHlwZVBhcmFtZXRlcnMiLCJzdGF0ZSIsInNvcnRlZEFkYXB0U3RhdGVDb250cm9scyIsIm1vZGlmaWVkQ29udHJvbHMiLCJpc1ZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbCIsInNLZXkiLCJpQXBwU3RhdGUiLCJhcHBseUFkZGl0aW9uYWxTdGF0ZXMiLCJhcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiX2FwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnNUb0ZpbHRlcmJhciIsIm9uQWZ0ZXJTdGF0ZUFwcGxpZWQiLCJfc2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsInNWYXJpYW50SWQiLCJhVmFyaWFudHMiLCJnZXRWYXJpYW50cyIsImJJc0NvbnRyb2xTdGF0ZVZhcmlhbnRBdmFpbGFibGUiLCJvVmFyaWFudCIsInBJbml0aWFsU3RhdGVBcHBsaWVkUmVzb2x2ZSIsIm5hdlR5cGUiLCJyb290Vmlld0NvbnRyb2xsZXIiLCJhUHJvbWlzZXMiLCJfb05hdlBhcmFtZXRlciIsIl9hUHJvbWlzZXMiLCJ1cGRhdGVBcHBTdGF0ZURlYm91bmNlZCIsInVwZGF0ZUFwcFN0YXRlVGltZXIiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJzdGF0ZUNvbnRyaWJ1dG9yIiwiX3RoaXMkY29uZmlnT2ZTdGF0ZUFwIiwiX3RoaXMkY29uZmlnT2ZTdGF0ZUFwMiIsIl90aGlzJGNvbmZpZ09mU3RhdGVBcDMiLCJfdGhpcyRjb25maWdPZlN0YXRlQXA0IiwiX3RoaXMkY29uZmlnT2ZTdGF0ZUFwNSIsImRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yIiwidGFyZ2V0SW5kZXgiLCJmaW5kSW5kZXgiLCJjb250cmlidXRvciIsInNwbGljZSIsImdldEludGVyZmFjZSIsIl9nZXRDb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJvUGF5bG9hZCIsInZhcmlhbnRNYW5hZ2VkQ29udHJvbHMiLCJmbkV2ZW50IiwiX3VwZGF0ZUluaXRpYWxTdGF0ZXNPblZhcmlhbnRDaGFuZ2UiLCJhdHRhY2hTYXZlIiwiYXR0YWNoU2VsZWN0Iiwidm1Bc3NvY2lhdGVkQ29udHJvbHNUb1Jlc2V0Iiwidm1Bc3NvY2lhdGVkY29udHJvbEtleSIsInZpZXdDb250cm9scyIsImNvbnRyb2xJZCIsInNldEluaXRpYWxTdGF0ZSIsIl9pc0luaXRpYWxTdGF0ZXNBcHBsaWNhYmxlIiwiaXNOYXZIeWJyaWQiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlld1N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IG1lcmdlT2JqZWN0cyBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgRHluYW1pY1BhZ2UgZnJvbSBcInNhcC9mL0R5bmFtaWNQYWdlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIElWaWV3U3RhdGVDb250cmlidXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvdmlld1N0YXRlL0lWaWV3U3RhdGVDb250cmlidXRvclwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IE5hdkxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE11bHRpcGxlTW9kZUNvbnRyb2wgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9jb250cm9scy9NdWx0aXBsZU1vZGVDb250cm9sXCI7XG5pbXBvcnQgdHlwZSBJY29uVGFiRmlsdGVyIGZyb20gXCJzYXAvbS9JY29uVGFiRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0IGZyb20gXCJzYXAvbS9TZWxlY3RcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29tcG9uZW50Q29udGFpbmVyIGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIFZhcmlhbnRNYW5hZ2VtZW50IGZyb20gXCJzYXAvdWkvZmwvdmFyaWFudHMvVmFyaWFudE1hbmFnZW1lbnRcIjtcbmltcG9ydCB0eXBlIE1EQ0NvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcblxuaW1wb3J0IHR5cGUgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBGY2xDb250cm9sbGVyIGZyb20gXCIuLi9yb290Vmlldy9GY2wuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgTmF2Q29udGFpbmVyQ29udHJvbGxlciBmcm9tIFwiLi4vcm9vdFZpZXcvTmF2Q29udGFpbmVyLmNvbnRyb2xsZXJcIjtcblxuLy8gYWRkaXRpb25hbFN0YXRlcyBhcmUgc3RvcmVkIG5leHQgdG8gY29udHJvbCBJRHMsIHNvIG5hbWUgY2xhc2ggYXZvaWRhbmNlIG5lZWRlZC4gRm9ydHVuYXRlbHkgSURzIGhhdmUgcmVzdHJpY3Rpb25zOlxuLy8gXCJBbGxvd2VkIGlzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyAoY2FwaXRhbC9sb3dlcmNhc2UpLCBkaWdpdHMsIHVuZGVyc2NvcmVzLCBkYXNoZXMsIHBvaW50cyBhbmQvb3IgY29sb25zLlwiXG4vLyBUaGVyZWZvcmUgYWRkaW5nIGEgc3ltYm9sIGxpa2UgIyBvciBAXG5jb25zdCBOYXZUeXBlID0gTmF2TGlicmFyeS5OYXZUeXBlO1xuXG4vKipcbiAqIERlZmluaXRpb24gb2YgYSBuYXZpZ2F0aW9uIHBhcmFtZXRlclxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uUGFyYW1ldGVyID0ge1xuXHQvKipcblx0ICogIFRoZSBhY3R1YWwgbmF2aWdhdGlvbiB0eXBlLlxuXHQgKiAgQHB1YmxpY1xuXHQgKi9cblx0bmF2aWdhdGlvblR5cGU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBzZWxlY3Rpb25WYXJpYW50IGZyb20gdGhlIG5hdmlnYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNlbGVjdGlvblZhcmlhbnQ/OiBTZWxlY3Rpb25WYXJpYW50O1xuXHQvKipcblx0ICogVGhlIHNlbGVjdGlvblZhcmlhbnQgZGVmYXVsdHMgZnJvbSB0aGUgbmF2aWdhdGlvblxuXHQgKiAgQHB1YmxpY1xuXHQgKi9cblx0c2VsZWN0aW9uVmFyaWFudERlZmF1bHRzPzogU2VsZWN0aW9uVmFyaWFudDtcblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciB0aGUgc3RhbmRhcmQgdmFyaWFudCBtdXN0IGJlIHVzZWQgaW4gdmFyaWFudCBtYW5hZ2VtZW50XG5cdCAqICBAcHVibGljXG5cdCAqL1xuXHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBBRERJVElPTkFMX1NUQVRFU19LRVkgPSBcIiNhZGRpdGlvbmFsU3RhdGVzXCI7XG5cbmV4cG9ydCB0eXBlIENvbnRyb2xTdGF0ZSA9XG5cdHwgKHtcblx0XHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdFx0c3VwcGxlbWVudGFyeUNvbmZpZz86IG9iamVjdDtcblx0XHRcdH07XG5cdFx0XHRmdWxsU3RhdGU/OiB7XG5cdFx0XHRcdGZpbHRlcj86IG9iamVjdDtcblx0XHRcdH07XG5cdCAgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuXHR8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgTmF2UGFyYW1ldGVycyA9IHtcblx0bmF2aWdhdGlvblR5cGU/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgTGVnYWN5RmlsdGVyQmFyU3RhdGUgPSB7XG5cdGZpbHRlcj86IFJlY29yZDxzdHJpbmcsIEFycmF5PG9iamVjdD4+O1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBtZXRob2RzIHRvIHJldHJpZXZlICYgYXBwbHkgc3RhdGVzIGZvciB0aGUgZGlmZmVyZW50IGNvbnRyb2xzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgdHlwZSBDb250cm9sU3RhdGVIYW5kbGVyPFQgZXh0ZW5kcyBNYW5hZ2VkT2JqZWN0LCBLIGV4dGVuZHMgdW5rbm93biB8IHVuZGVmaW5lZD4gPSB7XG5cdHJldHJpZXZlPzogKG9Db250cm9sOiBUKSA9PiBLIHwgUHJvbWlzZTxLPjtcblx0YXBwbHk/OiAob0NvbnRyb2w6IFQsIGNvbnRyb2xTdGF0ZTogSywgbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsIHNraXBNZXJnZT86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXHRyZWZyZXNoQmluZGluZz86IChvQ29udHJvbDogVCkgPT4gdm9pZDtcbn07XG50eXBlIENvbnRyb2xTdGF0ZU1hcCA9IHtcblx0XCJzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnRcIjogQ29udHJvbFN0YXRlSGFuZGxlcjxWYXJpYW50TWFuYWdlbWVudCwgeyB2YXJpYW50SWQ6IHN0cmluZyB8IG51bGwgfT47XG5cdFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIjogQ29udHJvbFN0YXRlSGFuZGxlcjxNdWx0aXBsZU1vZGVDb250cm9sLCB7IHNlbGVjdGVkS2V5OiBzdHJpbmcgfT47XG5cdFwic2FwLnVpLm1kYy5UYWJsZVwiOiBDb250cm9sU3RhdGVIYW5kbGVyPE1EQ1RhYmxlLCBDb250cm9sU3RhdGU+O1xuXHRcInNhcC5tLlNlZ21lbnRlZEJ1dHRvblwiOiBDb250cm9sU3RhdGVIYW5kbGVyPFNlZ21lbnRlZEJ1dHRvbiwgeyBzZWxlY3RlZEtleTogc3RyaW5nIH0+O1xuXHRcInNhcC5tLlNlbGVjdFwiOiBDb250cm9sU3RhdGVIYW5kbGVyPFNlbGVjdCwgeyBzZWxlY3RlZEtleTogc3RyaW5nIH0+O1xuXHRcInNhcC5mLkR5bmFtaWNQYWdlXCI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8RHluYW1pY1BhZ2UsIHsgaGVhZGVyRXhwYW5kZWQ6IGJvb2xlYW4gfT47XG5cdFwic2FwLnVpLmNvcmUuQ29tcG9uZW50Q29udGFpbmVyXCI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8Q29tcG9uZW50Q29udGFpbmVyLCBvYmplY3Q+O1xuXHRcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8RkVWaWV3LCBDb250cm9sU3RhdGU+O1xufTtcbmNvbnN0IGdldFN0YXRlVXRpbCA9IGFzeW5jIGZ1bmN0aW9uICgpOiBQcm9taXNlPHR5cGVvZiBTdGF0ZVV0aWw+IHtcblx0cmV0dXJuIChhd2FpdCBpbXBvcnQoXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCIpKS5kZWZhdWx0O1xufTtcbmNvbnN0IF9tQ29udHJvbFN0YXRlSGFuZGxlck1hcDogQ29udHJvbFN0YXRlTWFwID0ge1xuXHRcInNhcC51aS5mbC52YXJpYW50cy5WYXJpYW50TWFuYWdlbWVudFwiOiB7XG5cdFx0cmV0cmlldmU6IGZ1bmN0aW9uIChvVk06IFZhcmlhbnRNYW5hZ2VtZW50KTogeyB2YXJpYW50SWQ6IHN0cmluZyB8IG51bGwgfSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR2YXJpYW50SWQ6IG9WTS5nZXRDdXJyZW50VmFyaWFudEtleSgpXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0YXBwbHk6IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIG9WTTogVmFyaWFudE1hbmFnZW1lbnQsIGNvbnRyb2xTdGF0ZT86IHsgdmFyaWFudElkPzogc3RyaW5nIHwgbnVsbCB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoY29udHJvbFN0YXRlICYmIGNvbnRyb2xTdGF0ZS52YXJpYW50SWQgIT09IHVuZGVmaW5lZCAmJiBjb250cm9sU3RhdGUudmFyaWFudElkICE9PSBvVk0uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKSkge1xuXHRcdFx0XHRcdGNvbnN0IGlzVmFyaWFudElkQXZhaWxhYmxlID0gdGhpcy5fY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlKG9WTSwgY29udHJvbFN0YXRlLnZhcmlhbnRJZCk7XG5cdFx0XHRcdFx0bGV0IHNWYXJpYW50UmVmZXJlbmNlO1xuXHRcdFx0XHRcdGlmIChpc1ZhcmlhbnRJZEF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdFx0c1ZhcmlhbnRSZWZlcmVuY2UgPSBjb250cm9sU3RhdGUudmFyaWFudElkO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzVmFyaWFudFJlZmVyZW5jZSA9IG9WTS5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdFx0XHRcdHRoaXMuY29udHJvbHNWYXJpYW50SWRVbmF2YWlsYWJsZS5wdXNoKC4uLm9WTS5nZXRGb3IoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBDb250cm9sVmFyaWFudEFwcGx5QVBJID0gKGF3YWl0IGltcG9ydChcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiKSkuZGVmYXVsdDtcblx0XHRcdFx0XHRcdGF3YWl0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0XHRcdFx0ZWxlbWVudDogb1ZNLFxuXHRcdFx0XHRcdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBzVmFyaWFudFJlZmVyZW5jZSBhcyBzdHJpbmdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5fc2V0SW5pdGlhbFN0YXRlc0ZvckRlbHRhQ29tcHV0ZShvVk0pO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdFx0XHRcdHRoaXMuaW52YWxpZGF0ZUluaXRpYWxTdGF0ZUZvckFwcGx5LnB1c2goLi4ub1ZNLmdldEZvcigpKTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMuX3NldEluaXRpYWxTdGF0ZXNGb3JEZWx0YUNvbXB1dGUob1ZNKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0SW5pdGlhbFN0YXRlc0ZvckRlbHRhQ29tcHV0ZShvVk0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIjoge1xuXHRcdHJldHJpZXZlOiBmdW5jdGlvbiAobXVsdGlwbGVNb2RlQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCk6IHsgc2VsZWN0ZWRLZXk6IHN0cmluZyB9IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNlbGVjdGVkS2V5OiBtdWx0aXBsZU1vZGVDb250cm9sLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKVxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdGFwcGx5OiBmdW5jdGlvbiAobXVsdGlwbGVNb2RlQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCwgY29udHJvbFN0YXRlPzogeyBzZWxlY3RlZEtleTogc3RyaW5nIH0pIHtcblx0XHRcdGlmIChjb250cm9sU3RhdGU/LnNlbGVjdGVkS2V5KSB7XG5cdFx0XHRcdGNvbnN0IHRhYkJhciA9IG11bHRpcGxlTW9kZUNvbnRyb2wuY29udGVudDtcblx0XHRcdFx0aWYgKHRhYkJhci5nZXRJdGVtcygpLmZpbmQoKGl0ZW0pID0+IChpdGVtIGFzIEljb25UYWJGaWx0ZXIpLmdldEtleSgpID09PSBjb250cm9sU3RhdGUuc2VsZWN0ZWRLZXkpKSB7XG5cdFx0XHRcdFx0dGFiQmFyLnNldFNlbGVjdGVkS2V5KGNvbnRyb2xTdGF0ZS5zZWxlY3RlZEtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdFwic2FwLnVpLm1kYy5UYWJsZVwiOiB7XG5cdFx0cmVmcmVzaEJpbmRpbmc6IGZ1bmN0aW9uIChvVGFibGU6IE1EQ1RhYmxlKSB7XG5cdFx0XHRjb25zdCBvVGFibGVCaW5kaW5nID0gb1RhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGlmIChvVGFibGVCaW5kaW5nKSB7XG5cdFx0XHRcdGNvbnN0IG9Sb290QmluZGluZyA9IG9UYWJsZUJpbmRpbmcuZ2V0Um9vdEJpbmRpbmcoKTtcblx0XHRcdFx0Y29uc3QgYWdncmVnYXRpb24gPSBvVGFibGVCaW5kaW5nLmdldEFnZ3JlZ2F0aW9uKCkgYXMgeyBoaWVyYXJjaHlRdWFsaWZpZXI/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKG9Sb290QmluZGluZyA9PT0gb1RhYmxlQmluZGluZyAmJiBhZ2dyZWdhdGlvbj8uaGllcmFyY2h5UXVhbGlmaWVyID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHQvLyBhYnNvbHV0ZSBiaW5kaW5nIChleGNlcHQgVHJlZVRhYmxlLCB3aGVyZSB3ZSB3YW50IHRvIGtlZXAgZXhwYW5zaW9uIHN0YXRlcylcblx0XHRcdFx0XHRvVGFibGVCaW5kaW5nLnJlZnJlc2goKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyByZWxhdGl2ZSBiaW5kaW5nIG9yIFRyZWVUYWJsZVxuXHRcdFx0XHRcdGNvbnN0IG9IZWFkZXJDb250ZXh0ID0gb1RhYmxlQmluZGluZy5nZXRIZWFkZXJDb250ZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3Qgc0dyb3VwSWQgPSBvVGFibGVCaW5kaW5nLmdldEdyb3VwSWQoKTtcblxuXHRcdFx0XHRcdGlmIChvSGVhZGVyQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0b0hlYWRlckNvbnRleHQucmVxdWVzdFNpZGVFZmZlY3RzKFt7ICROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBcIlwiIH1dLCBzR3JvdXBJZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRMb2cuaW5mbyhgVGFibGU6ICR7b1RhYmxlLmdldElkKCl9IHdhcyBub3QgcmVmcmVzaGVkLiBObyBiaW5kaW5nIGZvdW5kIWApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0XCJzYXAubS5TZWdtZW50ZWRCdXR0b25cIjoge1xuXHRcdHJldHJpZXZlOiBmdW5jdGlvbiAob1NlZ21lbnRlZEJ1dHRvbjogU2VnbWVudGVkQnV0dG9uKTogeyBzZWxlY3RlZEtleTogc3RyaW5nIH0ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c2VsZWN0ZWRLZXk6IG9TZWdtZW50ZWRCdXR0b24uZ2V0U2VsZWN0ZWRLZXkoKVxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdGFwcGx5OiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBvU2VnbWVudGVkQnV0dG9uOiBTZWdtZW50ZWRCdXR0b24sIG9Db250cm9sU3RhdGU/OiB7IHNlbGVjdGVkS2V5OiBzdHJpbmcgfSk6IHZvaWQge1xuXHRcdFx0aWYgKG9Db250cm9sU3RhdGU/LnNlbGVjdGVkS2V5ICYmIG9Db250cm9sU3RhdGUuc2VsZWN0ZWRLZXkgIT09IG9TZWdtZW50ZWRCdXR0b24uZ2V0U2VsZWN0ZWRLZXkoKSkge1xuXHRcdFx0XHRvU2VnbWVudGVkQnV0dG9uLnNldFNlbGVjdGVkS2V5KG9Db250cm9sU3RhdGUuc2VsZWN0ZWRLZXkpO1xuXHRcdFx0XHRpZiAob1NlZ21lbnRlZEJ1dHRvbi5nZXRQYXJlbnQoKT8uaXNBKFwic2FwLnVpLm1kYy5BY3Rpb25Ub29sYmFyXCIpKSB7XG5cdFx0XHRcdFx0b1NlZ21lbnRlZEJ1dHRvbi5maXJlRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdFwic2FwLm0uU2VsZWN0XCI6IHtcblx0XHRyZXRyaWV2ZTogZnVuY3Rpb24gKG9TZWxlY3Q6IFNlbGVjdCk6IHsgc2VsZWN0ZWRLZXk6IHN0cmluZyB9IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNlbGVjdGVkS2V5OiBvU2VsZWN0LmdldFNlbGVjdGVkS2V5KClcblx0XHRcdH07XG5cdFx0fSxcblx0XHRhcHBseTogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgb1NlbGVjdDogU2VsZWN0LCBvQ29udHJvbFN0YXRlPzogeyBzZWxlY3RlZEtleTogc3RyaW5nIH0pOiB2b2lkIHtcblx0XHRcdGlmIChvQ29udHJvbFN0YXRlPy5zZWxlY3RlZEtleSAmJiBvQ29udHJvbFN0YXRlLnNlbGVjdGVkS2V5ICE9PSBvU2VsZWN0LmdldFNlbGVjdGVkS2V5KCkpIHtcblx0XHRcdFx0b1NlbGVjdC5zZXRTZWxlY3RlZEtleShvQ29udHJvbFN0YXRlLnNlbGVjdGVkS2V5KTtcblx0XHRcdFx0aWYgKG9TZWxlY3QuZ2V0UGFyZW50KCk/LmlzQShcInNhcC51aS5tZGMuQWN0aW9uVG9vbGJhclwiKSkge1xuXHRcdFx0XHRcdG9TZWxlY3QuZmlyZUV2ZW50KFwiY2hhbmdlXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRcInNhcC5mLkR5bmFtaWNQYWdlXCI6IHtcblx0XHRyZXRyaWV2ZTogZnVuY3Rpb24gKG9EeW5hbWljUGFnZTogRHluYW1pY1BhZ2UpOiB7IGhlYWRlckV4cGFuZGVkOiBib29sZWFuIH0ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aGVhZGVyRXhwYW5kZWQ6IG9EeW5hbWljUGFnZS5nZXRIZWFkZXJFeHBhbmRlZCgpXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0YXBwbHk6IGZ1bmN0aW9uIChvRHluYW1pY1BhZ2U6IER5bmFtaWNQYWdlLCBvQ29udHJvbFN0YXRlPzogeyBoZWFkZXJFeHBhbmRlZDogYm9vbGVhbiB9KTogdm9pZCB7XG5cdFx0XHRpZiAob0NvbnRyb2xTdGF0ZSkge1xuXHRcdFx0XHRvRHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQob0NvbnRyb2xTdGF0ZS5oZWFkZXJFeHBhbmRlZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI6IHtcblx0XHRyZXRyaWV2ZTogZnVuY3Rpb24gKG9WaWV3OiBGRVZpZXcpIHtcblx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0aWYgKG9Db250cm9sbGVyICYmIG9Db250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRyZXR1cm4gb0NvbnRyb2xsZXIudmlld1N0YXRlLnJldHJpZXZlVmlld1N0YXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge307XG5cdFx0fSxcblx0XHRhcHBseTogYXN5bmMgZnVuY3Rpb24gKG9WaWV3OiBGRVZpZXcsIG9Db250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSwgb05hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLCBza2lwTWVyZ2U/OiBib29sZWFuKSB7XG5cdFx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKTtcblx0XHRcdGlmIChvQ29udHJvbGxlciAmJiBvQ29udHJvbGxlci52aWV3U3RhdGUgJiYgb05hdlBhcmFtZXRlcnMpIHtcblx0XHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLnZpZXdTdGF0ZS5hcHBseVZpZXdTdGF0ZShvQ29udHJvbFN0YXRlLCBvTmF2UGFyYW1ldGVycywgc2tpcE1lcmdlKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlZnJlc2hCaW5kaW5nOiBhc3luYyBmdW5jdGlvbiAob1ZpZXc6IEZFVmlldykge1xuXHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCk7XG5cdFx0XHRpZiAob0NvbnRyb2xsZXIgJiYgb0NvbnRyb2xsZXIudmlld1N0YXRlKSB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbGxlci52aWV3U3RhdGUucmVmcmVzaFZpZXdCaW5kaW5ncygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0XCJzYXAudWkuY29yZS5Db21wb25lbnRDb250YWluZXJcIjoge1xuXHRcdHJldHJpZXZlOiBhc3luYyBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBvQ29tcG9uZW50Q29udGFpbmVyOiBDb21wb25lbnRDb250YWluZXIpOiBQcm9taXNlPG9iamVjdD4ge1xuXHRcdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db21wb25lbnRDb250YWluZXIuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTtcblx0XHRcdGlmIChvQ29tcG9uZW50KSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnJldHJpZXZlQ29udHJvbFN0YXRlKG9Db21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge30gYXMgb2JqZWN0O1xuXHRcdH0sXG5cdFx0YXBwbHk6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHRcdHRoaXM6IFZpZXdTdGF0ZSxcblx0XHRcdG9Db21wb25lbnRDb250YWluZXI6IENvbXBvbmVudENvbnRhaW5lcixcblx0XHRcdG9Db250cm9sU3RhdGU6IG9iamVjdCxcblx0XHRcdG9OYXZQYXJhbWV0ZXJzPzogTmF2aWdhdGlvblBhcmFtZXRlclxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db21wb25lbnRDb250YWluZXIuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTtcblx0XHRcdGlmIChvQ29tcG9uZW50KSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmFwcGx5Q29udHJvbFN0YXRlKG9Db21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSwgb0NvbnRyb2xTdGF0ZSwgb05hdlBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcbi8qKlxuICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBmb3Igc3RhdGUgaGFuZGxpbmdcbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBtYWludGFpbiBhIHNwZWNpZmljIHN0YXRlIGZvciB5b3VyIGFwcGxpY2F0aW9uLCB5b3UgY2FuIHVzZSB0aGUgY29udHJvbGxlciBleHRlbnNpb24uXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44NS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlZpZXdTdGF0ZVwiKVxuY2xhc3MgVmlld1N0YXRlIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByaXZhdGUgX2lSZXRyaWV2aW5nU3RhdGVDb3VudGVyOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBfcEluaXRpYWxTdGF0ZUFwcGxpZWQ6IFByb21pc2U8dW5rbm93bj47XG5cblx0cHJpdmF0ZSBfcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlPzogRnVuY3Rpb247XG5cblx0cHVibGljIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRjb250cm9sc1ZhcmlhbnRJZFVuYXZhaWxhYmxlOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGludmFsaWRhdGVJbml0aWFsU3RhdGVGb3JBcHBseTogc3RyaW5nW10gPSBbXTtcblxuXHR2aWV3U3RhdGVDb250cm9sczogTWFuYWdlZE9iamVjdFtdID0gW107XG5cblx0c3RhdGVDb250cmlidXRvcnM6IChNYW5hZ2VkT2JqZWN0ICYgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+KVtdID0gW107XG5cblx0X2N1cnJlbnRWaWV3U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRjb25maWdPZlN0YXRlQXBwbHk/OiB7XG5cdFx0c2tpcE1lcmdlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0XHRuYXZUeXBlUGFyYW1ldGVycz86IE5hdlBhcmFtZXRlcnM7XG5cdFx0c3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0fTtcblxuXHRwcml2YXRlIHVwZGF0ZUFwcFN0YXRlVGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogQ29uc3RydWN0b3IuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2lSZXRyaWV2aW5nU3RhdGVDb3VudGVyID0gMDtcblx0XHR0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHR0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmUgPSByZXNvbHZlO1xuXHRcdH0pO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHJlZnJlc2hWaWV3QmluZGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYUNvbnRyb2xzID0gYXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyh0aGlzLmJhc2Uudmlld1N0YXRlLmFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9scyk7XG5cdFx0bGV0IG9Qcm9taXNlQ2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRhQ29udHJvbHNcblx0XHRcdC5maWx0ZXIoKG9Db250cm9sKSA9PiB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbCAmJiBvQ29udHJvbC5pc0EgJiYgb0NvbnRyb2wuaXNBPE1hbmFnZWRPYmplY3Q+KFwic2FwLnVpLmJhc2UuTWFuYWdlZE9iamVjdFwiKTtcblx0XHRcdH0pXG5cdFx0XHQuZm9yRWFjaCgob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IHtcblx0XHRcdFx0b1Byb21pc2VDaGFpbiA9IG9Qcm9taXNlQ2hhaW4udGhlbih0aGlzLnJlZnJlc2hDb250cm9sQmluZGluZy5iaW5kKHRoaXMsIG9Db250cm9sKSk7XG5cdFx0XHR9KTtcblx0XHRyZXR1cm4gb1Byb21pc2VDaGFpbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhZGQgYWxsIGNvbnRyb2xzIHJlbGV2YW50IGZvciByZWZyZXNoaW5nIHRvIHRoZSBwcm92aWRlZCBjb250cm9sIGFycmF5LlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gYUNvbGxlY3RlZENvbnRyb2xzIFRoZSBjb2xsZWN0ZWQgY29udHJvbHNcblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9scyhhQ29sbGVjdGVkQ29udHJvbHM6IE1hbmFnZWRPYmplY3RbXSk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRlblxuXHR9XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyByZWZyZXNoQ29udHJvbEJpbmRpbmcob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvQ29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlciA9IHRoaXMuZ2V0Q29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlcihvQ29udHJvbCk7XG5cdFx0bGV0IG9Qcm9taXNlQ2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRpZiAodHlwZW9mIG9Db250cm9sUmVmcmVzaEJpbmRpbmdIYW5kbGVyLnJlZnJlc2hCaW5kaW5nICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdExvZy5pbmZvKGByZWZyZXNoQmluZGluZyBoYW5kbGVyIGZvciBjb250cm9sOiAke29Db250cm9sLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfSBpcyBub3QgcHJvdmlkZWRgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1Byb21pc2VDaGFpbiA9IG9Qcm9taXNlQ2hhaW4udGhlbihvQ29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlci5yZWZyZXNoQmluZGluZy5iaW5kKHRoaXMsIG9Db250cm9sKSk7XG5cdFx0fVxuXHRcdHJldHVybiBvUHJvbWlzZUNoYWluO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBtYXAgb2YgPGNvZGU+cmVmcmVzaEJpbmRpbmc8L2NvZGU+IGZ1bmN0aW9uIGZvciBhIGNlcnRhaW4gY29udHJvbC5cblx0ICogQHBhcmFtIG9Db250cm9sIFRoZSBjb250cm9sIHRvIGdldCBzdGF0ZSBoYW5kbGVyIGZvclxuXHQgKiBAcmV0dXJucyBBIHBsYWluIG9iamVjdCB3aXRoIG9uZSBmdW5jdGlvbjogPGNvZGU+cmVmcmVzaEJpbmRpbmc8L2NvZGU+XG5cdCAqL1xuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0Q29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlcihvQ29udHJvbDogTWFuYWdlZE9iamVjdCk6IHtcblx0XHRyZWZyZXNoQmluZGluZz86IChvQ29udHJvbDogTWFuYWdlZE9iamVjdCkgPT4gdm9pZDtcblx0fSB7XG5cdFx0Y29uc3Qgb1JlZnJlc2hCaW5kaW5nSGFuZGxlcjoge1xuXHRcdFx0cmVmcmVzaEJpbmRpbmc/OiAob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IHZvaWQ7XG5cdFx0fSA9IHt9O1xuXHRcdGlmIChvQ29udHJvbCkge1xuXHRcdFx0Zm9yIChjb25zdCBzVHlwZSBpbiBfbUNvbnRyb2xTdGF0ZUhhbmRsZXJNYXApIHtcblx0XHRcdFx0aWYgKG9Db250cm9sLmlzQShzVHlwZSkpIHtcblx0XHRcdFx0XHQvLyBwYXNzIG9ubHkgdGhlIHJlZnJlc2hCaW5kaW5nIGhhbmRsZXIgaW4gYW4gb2JqZWN0IHNvIHRoYXQgOlxuXHRcdFx0XHRcdC8vIDEuIEFwcGxpY2F0aW9uIGhhcyBhY2Nlc3Mgb25seSB0byByZWZyZXNoQmluZGluZyBhbmQgbm90IGFwcGx5IGFuZCByZXRlcml2ZSBhdCB0aGlzIHN0YWdlXG5cdFx0XHRcdFx0Ly8gMi4gQXBwbGljYXRpb24gbW9kaWZpY2F0aW9ucyB0byB0aGUgb2JqZWN0IHdpbGwgYmUgcmVmbGVjdGVkIGhlcmUgKGFzIHdlIHBhc3MgYnkgcmVmZXJlbmNlKVxuXHRcdFx0XHRcdG9SZWZyZXNoQmluZGluZ0hhbmRsZXJbXCJyZWZyZXNoQmluZGluZ1wiXSA9XG5cdFx0XHRcdFx0XHQoX21Db250cm9sU3RhdGVIYW5kbGVyTWFwW3NUeXBlIGFzIGtleW9mIENvbnRyb2xTdGF0ZU1hcF0ucmVmcmVzaEJpbmRpbmcgYXMgKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KSA9PiB2b2lkKSB8fFxuXHRcdFx0XHRcdFx0e307XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5iYXNlLnZpZXdTdGF0ZS5hZGFwdEJpbmRpbmdSZWZyZXNoSGFuZGxlcihvQ29udHJvbCwgb1JlZnJlc2hCaW5kaW5nSGFuZGxlcik7XG5cdFx0cmV0dXJuIG9SZWZyZXNoQmluZGluZ0hhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogQ3VzdG9taXplIHRoZSA8Y29kZT5yZWZyZXNoQmluZGluZzwvY29kZT4gZnVuY3Rpb24gZm9yIGEgY2VydGFpbiBjb250cm9sLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gX29Db250cm9sIFRoZSBjb250cm9sIGZvciB3aGljaCB0aGUgcmVmcmVzaCBoYW5kbGVyIGlzIGFkYXB0ZWQuXG5cdCAqIEBwYXJhbSBfb0NvbnRyb2xIYW5kbGVyIEEgcGxhaW4gb2JqZWN0IHdoaWNoIGNhbiBoYXZlIG9uZSBmdW5jdGlvbjogPGNvZGU+cmVmcmVzaEJpbmRpbmc8L2NvZGU+XG5cdCAqIEBwYXJhbSBfb0NvbnRyb2xIYW5kbGVyLnJlZnJlc2hCaW5kaW5nXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0YWRhcHRCaW5kaW5nUmVmcmVzaEhhbmRsZXIoXG5cdFx0X29Db250cm9sOiBNYW5hZ2VkT2JqZWN0LFxuXHRcdF9vQ29udHJvbEhhbmRsZXI6IHtcblx0XHRcdHJlZnJlc2hCaW5kaW5nPzogKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KSA9PiB2b2lkO1xuXHRcdH1cblx0KTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGVuXG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHN1c3BlbmRlZCBkdWUgdG8ga2VlcC1hbGl2ZSBtb2RlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uU3VzcGVuZCgpOiB2b2lkIHtcblx0XHQvLyB0byBiZSBvdmVycmlkZW5cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgcmVzdG9yZWQgZHVlIHRvIGtlZXAtYWxpdmUgbW9kZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRvblJlc3RvcmUoKTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGVuXG5cdH1cblxuXHQvKipcblx0ICogRGVzdHJ1Y3RvciBtZXRob2QgZm9yIG9iamVjdHMuXG5cdCAqL1xuXHRkZXN0cm95KCk6IHZvaWQge1xuXHRcdGRlbGV0ZSB0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmU7XG5cdFx0c3VwZXIuZGVzdHJveSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhlbHBlciBmdW5jdGlvbiB0byBlbmFibGUgbXVsdGkgb3ZlcnJpZGUuIEl0IGlzIGFkZGluZyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciAoYXJyYXkpIHRvIHRoZSBwcm92aWRlZFxuXHQgKiBmdW5jdGlvbiAoYW5kIGl0cyBwYXJhbWV0ZXJzKSwgdGhhdCB3aWxsIGJlIGV2YWx1YXRlZCB2aWEgPGNvZGU+UHJvbWlzZS5hbGw8L2NvZGU+LlxuXHQgKiBAcGFyYW0gZm5DYWxsIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWRcblx0ICogQHBhcmFtIGFyZ3Ncblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRvIGJlIHJlc29sdmVkIHdpdGggdGhlIHJlc3VsdCBvZiBhbGwgb3ZlcnJpZGVzXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIGNvbGxlY3RSZXN1bHRzKGZuQ2FsbDogRnVuY3Rpb24sIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8Q29udHJvbFtdPiB7XG5cdFx0Y29uc3QgYVJlc3VsdHM6IENvbnRyb2xbXSA9IFtdO1xuXHRcdGFyZ3MucHVzaChhUmVzdWx0cyk7XG5cdFx0Zm5DYWxsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUmVzdWx0cyk7XG5cdH1cblxuXHQvKipcblx0ICogQ3VzdG9taXplIHRoZSA8Y29kZT5yZXRyaWV2ZTwvY29kZT4gYW5kIDxjb2RlPmFwcGx5PC9jb2RlPiBmdW5jdGlvbnMgZm9yIGEgY2VydGFpbiBjb250cm9sLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIGNvbnRyb2wgdG8gZ2V0IHN0YXRlIGhhbmRsZXIgZm9yXG5cdCAqIEBwYXJhbSBhQ29udHJvbEhhbmRsZXIgQSBsaXN0IG9mIHBsYWluIG9iamVjdHMgd2l0aCB0d28gZnVuY3Rpb25zOiA8Y29kZT5yZXRyaWV2ZTwvY29kZT4gYW5kIDxjb2RlPmFwcGx5PC9jb2RlPlxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0YWRhcHRDb250cm9sU3RhdGVIYW5kbGVyKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LCBhQ29udHJvbEhhbmRsZXI6IG9iamVjdFtdKTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWVkZWRcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbWFwIG9mIDxjb2RlPnJldHJpZXZlPC9jb2RlPiBhbmQgPGNvZGU+YXBwbHk8L2NvZGU+IGZ1bmN0aW9ucyBmb3IgYSBjZXJ0YWluIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBUaGUgY29udHJvbCB0byBnZXQgc3RhdGUgaGFuZGxlciBmb3Jcblx0ICogQHJldHVybnMgQSBwbGFpbiBvYmplY3Qgd2l0aCB0d28gZnVuY3Rpb25zOiA8Y29kZT5yZXRyaWV2ZTwvY29kZT4gYW5kIDxjb2RlPmFwcGx5PC9jb2RlPlxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRDb250cm9sU3RhdGVIYW5kbGVyKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KTogQ29udHJvbFN0YXRlSGFuZGxlcjxNYW5hZ2VkT2JqZWN0LCBvYmplY3Q+W10ge1xuXHRcdGNvbnN0IGFJbnRlcm5hbENvbnRyb2xTdGF0ZUhhbmRsZXI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8TWFuYWdlZE9iamVjdCwgb2JqZWN0PltdID0gW10sXG5cdFx0XHRhQ3VzdG9tQ29udHJvbFN0YXRlSGFuZGxlcjogQ29udHJvbFN0YXRlSGFuZGxlcjxNYW5hZ2VkT2JqZWN0LCBvYmplY3Q+W10gPSBbXTtcblx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0b0NvbnRyb2wuaXNBPElWaWV3U3RhdGVDb250cmlidXRvcjxvYmplY3Q+PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIikgJiZcblx0XHRcdFx0b0NvbnRyb2wucmV0cmlldmVTdGF0ZSAmJlxuXHRcdFx0XHRvQ29udHJvbC5hcHBseVN0YXRlXG5cdFx0XHQpIHtcblx0XHRcdFx0YUludGVybmFsQ29udHJvbFN0YXRlSGFuZGxlci5wdXNoKHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcblx0XHRcdFx0XHRyZXRyaWV2ZTogYXN5bmMgKF9jb250cm9sKSA9PiBvQ29udHJvbC5yZXRyaWV2ZVN0YXRlLmJpbmQob0NvbnRyb2wpKCksXG5cblx0XHRcdFx0XHRhcHBseTogYXN5bmMgKFxuXHRcdFx0XHRcdFx0X2NvbnRyb2w6IE1hbmFnZWRPYmplY3QsXG5cdFx0XHRcdFx0XHRjb250cm9sU3RhdGU/OiBvYmplY3QsXG5cdFx0XHRcdFx0XHRvTmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0XHRcdFx0XHRza2lwTWVyZ2U/OiBib29sZWFuXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcblx0XHRcdFx0XHQpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHNob3VsZEFwcGx5RGlmZlN0YXRlID1cblx0XHRcdFx0XHRcdFx0IXRoaXMuaW52YWxpZGF0ZUluaXRpYWxTdGF0ZUZvckFwcGx5LmluY2x1ZGVzKG9Db250cm9sLmdldElkKCkpICYmXG5cdFx0XHRcdFx0XHRcdCF0aGlzLmNvbnRyb2xzVmFyaWFudElkVW5hdmFpbGFibGUuaW5jbHVkZXMob0NvbnRyb2wuZ2V0SWQoKSkgJiZcblx0XHRcdFx0XHRcdFx0b05hdlBhcmFtZXRlcnM/Lm5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmh5YnJpZCAmJlxuXHRcdFx0XHRcdFx0XHRza2lwTWVyZ2UgIT09IHRydWU7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnRyb2xTdGF0ZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAob0NvbnRyb2wuYXBwbHlMZWdhY3lTdGF0ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IG9Db250cm9sLmFwcGx5TGVnYWN5U3RhdGUuYmluZChvQ29udHJvbCkoXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldENvbnRyb2xTdGF0ZS5iaW5kKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0b05hdlBhcmFtZXRlcnMsXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG91bGRBcHBseURpZmZTdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IG9Db250cm9sLmFwcGx5U3RhdGUuYmluZChvQ29udHJvbCkoY29udHJvbFN0YXRlLCBvTmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUsIHNraXBNZXJnZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgc1R5cGUgaW4gX21Db250cm9sU3RhdGVIYW5kbGVyTWFwKSB7XG5cdFx0XHRcdFx0aWYgKG9Db250cm9sLmlzQShzVHlwZSkpIHtcblx0XHRcdFx0XHRcdC8vIGF2b2lkIGRpcmVjdCBtYW5pcHVsYXRpb24gb2YgaW50ZXJuYWwgX21Db250cm9sU3RhdGVIYW5kbGVyTWFwXG5cdFx0XHRcdFx0XHRhSW50ZXJuYWxDb250cm9sU3RhdGVIYW5kbGVyLnB1c2goXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24oe30sIF9tQ29udHJvbFN0YXRlSGFuZGxlck1hcFtzVHlwZSBhcyBrZXlvZiBDb250cm9sU3RhdGVNYXBdKSBhcyBDb250cm9sU3RhdGVIYW5kbGVyPFxuXHRcdFx0XHRcdFx0XHRcdE1hbmFnZWRPYmplY3QsXG5cdFx0XHRcdFx0XHRcdFx0b2JqZWN0XG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5iYXNlLnZpZXdTdGF0ZS5hZGFwdENvbnRyb2xTdGF0ZUhhbmRsZXIob0NvbnRyb2wsIGFDdXN0b21Db250cm9sU3RhdGVIYW5kbGVyKTtcblx0XHRyZXR1cm4gYUludGVybmFsQ29udHJvbFN0YXRlSGFuZGxlci5jb25jYXQoYUN1c3RvbUNvbnRyb2xTdGF0ZUhhbmRsZXIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFkZCBhbGwgY29udHJvbHMgZm9yIGdpdmVuIHZpZXcgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgdGhlIHN0YXRlIGhhbmRsaW5nIHRvIHRoZSBwcm92aWRlZCBjb250cm9sIGFycmF5LlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gX2FDb2xsZWN0ZWRDb250cm9scyBUaGUgY29sbGVjdGVkIGNvbnRyb2xzXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0YWRhcHRTdGF0ZUNvbnRyb2xzKF9hQ29sbGVjdGVkQ29udHJvbHM6IE1hbmFnZWRPYmplY3RbXSk6IHZvaWQge1xuXHRcdF9hQ29sbGVjdGVkQ29udHJvbHMucHVzaCguLi50aGlzLnN0YXRlQ29udHJpYnV0b3JzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBrZXkgdG8gYmUgdXNlZCBmb3IgZ2l2ZW4gY29udHJvbC5cblx0ICogQHBhcmFtIG9Db250cm9sIFRoZSBjb250cm9sIHRvIGdldCBzdGF0ZSBrZXkgZm9yXG5cdCAqIEByZXR1cm5zIFRoZSBrZXkgdG8gYmUgdXNlZCBmb3Igc3RvcmluZyB0aGUgY29udHJvbHMgc3RhdGVcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRTdGF0ZUtleShvQ29udHJvbDogTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmdldExvY2FsSWQob0NvbnRyb2wuZ2V0SWQoKSkgfHwgb0NvbnRyb2wuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgdmlldyBzdGF0ZSBvZiB0aGlzIGV4dGVuc2lvbnMgdmlldy5cblx0ICogV2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBiZWZvcmUgZmluaXNoaW5nLCBhbGwgYnV0IHRoZSBmaW5hbCByZXNwb25zZSB3aWxsIHJlc29sdmUgdG8gPGNvZGU+dW5kZWZpbmVkPC9jb2RlPi5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgdmlldyBzdGF0ZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0YXN5bmMgcmV0cmlldmVWaWV3U3RhdGUoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZD4ge1xuXHRcdCsrdGhpcy5faVJldHJpZXZpbmdTdGF0ZUNvdW50ZXI7XG5cdFx0bGV0IG9WaWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHRoaXMuX3BJbml0aWFsU3RhdGVBcHBsaWVkO1xuXHRcdFx0Y29uc3QgYUNvbnRyb2xzOiAoTWFuYWdlZE9iamVjdCB8IHVuZGVmaW5lZClbXSA9IGF3YWl0IHRoaXMuY29sbGVjdFJlc3VsdHModGhpcy5iYXNlLnZpZXdTdGF0ZS5hZGFwdFN0YXRlQ29udHJvbHMpO1xuXHRcdFx0Y29uc3QgYVJlc29sdmVkU3RhdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdChcblx0XHRcdFx0XHRhQ29udHJvbHMuZmlsdGVyKGZ1bmN0aW9uIChvQ29udHJvbCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sICYmIG9Db250cm9sLmlzQSAmJiBvQ29udHJvbC5pc0E8TWFuYWdlZE9iamVjdD4oXCJzYXAudWkuYmFzZS5NYW5hZ2VkT2JqZWN0XCIpO1xuXHRcdFx0XHRcdH0pIGFzIE1hbmFnZWRPYmplY3RbXVxuXHRcdFx0XHQpLm1hcChhc3luYyAob0NvbnRyb2wpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXRyaWV2ZUNvbnRyb2xTdGF0ZShvQ29udHJvbCkudGhlbigodlJlc3VsdDogdW5rbm93bikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0a2V5OiB0aGlzLmdldFN0YXRlS2V5KG9Db250cm9sKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHZSZXN1bHRcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdFx0b1ZpZXdTdGF0ZSA9IGFSZXNvbHZlZFN0YXRlcy5yZWR1Y2UoZnVuY3Rpb24gKG9TdGF0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBtU3RhdGU6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pIHtcblx0XHRcdFx0Y29uc3Qgb0N1cnJlbnRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFx0b0N1cnJlbnRTdGF0ZVttU3RhdGUua2V5XSA9IG1TdGF0ZS52YWx1ZTtcblx0XHRcdFx0cmV0dXJuIG1lcmdlT2JqZWN0cyhvU3RhdGVzLCBvQ3VycmVudFN0YXRlKTtcblx0XHRcdH0sIHt9KTtcblx0XHRcdGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuX2N1cnJlbnRWaWV3U3RhdGU7XG5cdFx0XHRpZiAocHJldlN0YXRlICYmIE9iamVjdC5rZXlzKHByZXZTdGF0ZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLl9hZGRNaXNzaW5nU3RhdGUob1ZpZXdTdGF0ZSwgcHJldlN0YXRlKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG1BZGRpdGlvbmFsU3RhdGVzID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3JldHJpZXZlQWRkaXRpb25hbFN0YXRlcygpKTtcblx0XHRcdGlmIChtQWRkaXRpb25hbFN0YXRlcyAmJiBPYmplY3Qua2V5cyhtQWRkaXRpb25hbFN0YXRlcykubGVuZ3RoKSB7XG5cdFx0XHRcdG9WaWV3U3RhdGVbQURESVRJT05BTF9TVEFURVNfS0VZXSA9IG1BZGRpdGlvbmFsU3RhdGVzO1xuXHRcdFx0fVxuXHRcdH0gZmluYWxseSB7XG5cdFx0XHQtLXRoaXMuX2lSZXRyaWV2aW5nU3RhdGVDb3VudGVyO1xuXHRcdH1cblx0XHR0aGlzLl9jdXJyZW50Vmlld1N0YXRlID0gb1ZpZXdTdGF0ZTtcblx0XHRyZXR1cm4gdGhpcy5faVJldHJpZXZpbmdTdGF0ZUNvdW50ZXIgPT09IDAgPyBvVmlld1N0YXRlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gVG8gY2FycnkgZm9yd2FyZCB1bmFwcGxpZWQgc3RhdGUgbG9zdCBkdWUgdG8gbGF6eSBsb2FkaW5nIG9mIGNvbnRyb2xzLlxuXHQvL1xuXHQvLyBJZiB1c2VyIDEgY2hhbmdlcyBhIGNvbnRyb2wncyBzdGF0ZSBpbiBhIGxhenktbG9hZGVkIHNlY3Rpb24gYW5kIG5hdmlnYXRlcyBhd2F5LCB0aGVuIHNoYXJlcyB0aGUgVVJMIHdpdGggdXNlciAyLFxuXHQvLyB3aG8gZG9lc24ndCB2aXNpdCB0aGUgbGF6eS1sb2FkZWQgc2VjdGlvbiwgdGhlIGNvbnRyb2wncyBzdGF0ZSBpcyBtaXNzZWQgaW4gdGhlIG5ldyBhcHAgc3RhdGUuXG5cdC8vIFRoaXMgZW5zdXJlcyB0aGUgZnVsbCBzdGF0ZSBmcm9tIHVzZXIgMSBpcyBwcmVzZXJ2ZWQgYW5kIHRyYW5zZmVycmVkIHRvIHVzZXIgMyB3aGVuIHRoZSBVUkwgaXMgc2hhcmVkLlxuXHRfYWRkTWlzc2luZ1N0YXRlKG9WaWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcmV2U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gcHJldlN0YXRlKSB7XG5cdFx0XHRpZiAoIShrZXkgaW4gb1ZpZXdTdGF0ZSkpIHtcblx0XHRcdFx0b1ZpZXdTdGF0ZVtrZXldID0gcHJldlN0YXRlW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV4dGVuZCB0aGUgbWFwIG9mIGFkZGl0aW9uYWwgc3RhdGVzIChub3QgY29udHJvbCBib3VuZCkgdG8gYmUgYWRkZWQgdG8gdGhlIGN1cnJlbnQgdmlldyBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdmlldy5cblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0ICogQHBhcmFtIG1BZGRpdGlvbmFsU3RhdGVzIFRoZSBhZGRpdGlvbmFsIHN0YXRlXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMobUFkZGl0aW9uYWxTdGF0ZXM6IG9iamVjdCk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVlZGVkXG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIG1hcCBvZiBhZGRpdGlvbmFsIHN0YXRlcyAobm90IGNvbnRyb2wgYm91bmQpIHRvIGJlIGFkZGVkIHRvIHRoZSBjdXJyZW50IHZpZXcgc3RhdGUgb2YgdGhlIGdpdmVuIHZpZXcuXG5cdCAqIEByZXR1cm5zIEFkZGl0aW9uYWwgdmlldyBzdGF0ZXNcblx0ICovXG5cdF9yZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMoKTogdW5rbm93biB7XG5cdFx0Y29uc3QgbUFkZGl0aW9uYWxTdGF0ZXMgPSB7fTtcblx0XHR0aGlzLmJhc2Uudmlld1N0YXRlLnJldHJpZXZlQWRkaXRpb25hbFN0YXRlcyhtQWRkaXRpb25hbFN0YXRlcyk7XG5cdFx0cmV0dXJuIG1BZGRpdGlvbmFsU3RhdGVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIHRoZSBnaXZlbiBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIG9iamVjdCB0byBnZXQgdGhlIHN0YXRlIGZvclxuXHQgKiBAcmV0dXJucyBUaGUgc3RhdGUgZm9yIHRoZSBnaXZlbiBjb250cm9sXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHJldHJpZXZlQ29udHJvbFN0YXRlKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTxvYmplY3Q+IHtcblx0XHRjb25zdCBhQ29udHJvbFN0YXRlSGFuZGxlcnMgPSB0aGlzLmdldENvbnRyb2xTdGF0ZUhhbmRsZXIob0NvbnRyb2wpO1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdGFDb250cm9sU3RhdGVIYW5kbGVycy5tYXAoYXN5bmMgKG1Db250cm9sU3RhdGVIYW5kbGVyKSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgbUNvbnRyb2xTdGF0ZUhhbmRsZXIucmV0cmlldmUgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgY29udHJvbFN0YXRlSGFuZGxlci5yZXRyaWV2ZSBpcyBub3QgYSBmdW5jdGlvbiBmb3IgY29udHJvbDogJHtvQ29udHJvbC5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbUNvbnRyb2xTdGF0ZUhhbmRsZXIucmV0cmlldmUuY2FsbCh0aGlzLCBvQ29udHJvbCk7XG5cdFx0XHR9KVxuXHRcdCkudGhlbigoYVN0YXRlczogb2JqZWN0W10pID0+IHtcblx0XHRcdHJldHVybiBhU3RhdGVzLnJlZHVjZShmdW5jdGlvbiAob0ZpbmFsU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBvQ3VycmVudFN0YXRlOiBvYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuIG1lcmdlT2JqZWN0cyhvRmluYWxTdGF0ZSwgb0N1cnJlbnRTdGF0ZSk7XG5cdFx0XHR9LCB7fSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRoZSB2aWV3IHN0YXRlIHNob3VsZCBvbmx5IGJlIGFwcGxpZWQgb25jZSBpbml0aWFsbHkuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSW1wb3J0YW50OlxuXHQgKiBZb3Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgZm9yIGN1c3RvbSBwYWdlcyBhbmQgbm90IGZvciB0aGUgc3RhbmRhcmQgTGlzdFJlcG9ydFBhZ2UgYW5kIE9iamVjdFBhZ2UhXG5cdCAqIEByZXR1cm5zIElmIDxjb2RlPnRydWU8L2NvZGU+LCBvbmx5IHRoZSBpbml0aWFsIHZpZXcgc3RhdGUgaXMgYXBwbGllZCBvbmNlLFxuXHQgKiBlbHNlIGFueSBuZXcgdmlldyBzdGF0ZSBpcyBhbHNvIGFwcGxpZWQgb24gZm9sbG93LXVwIGNhbGxzIChkZWZhdWx0KVxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0YXBwbHlJbml0aWFsU3RhdGVPbmx5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgc3RhdGUgb2YgYSBzcGVjaWZpYyBjb250cm9sLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGUgbWFuYWdlZCBjb250cm9sIG9iamVjdCB3aG9zZSBzdGF0ZSBpcyB0byBiZSByZXRyaWV2ZWQuXG5cdCAqIEByZXR1cm5zIC0gVGhlIHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgY29udHJvbC5cblx0ICovXG5cdGdldENvbnRyb2xTdGF0ZShjb250cm9sOiBNYW5hZ2VkT2JqZWN0KTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBvVmlld1N0YXRlID0gdGhpcy5fY3VycmVudFZpZXdTdGF0ZTtcblx0XHRsZXQgY29udHJvbFN0YXRlOiBDb250cm9sU3RhdGUgPSB7fTtcblx0XHRpZiAob1ZpZXdTdGF0ZSkge1xuXHRcdFx0Y29uc3QgY29udHJvbEtleSA9IHRoaXMuZ2V0U3RhdGVLZXkoY29udHJvbCk7XG5cdFx0XHRjb250cm9sU3RhdGUgPSBvVmlld1N0YXRlW2NvbnRyb2xLZXldIGFzIFJlY29yZDxzdHJpbmcsIENvbnRyb2xTdGF0ZT47XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyB0aGUgZ2l2ZW4gdmlldyBzdGF0ZSB0byB0aGlzIGV4dGVuc2lvbnMgdmlldy5cblx0ICogQHBhcmFtIG9WaWV3U3RhdGUgVGhlIHZpZXcgc3RhdGUgdG8gYXBwbHkgKGNhbiBiZSB1bmRlZmluZWQpXG5cdCAqIEBwYXJhbSBvTmF2UGFyYW1ldGVyIFRoZSBjdXJyZW50IG5hdmlnYXRpb24gcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSBvTmF2UGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlIFRoZSBhY3R1YWwgbmF2aWdhdGlvbiB0eXBlXG5cdCAqIEBwYXJhbSBvTmF2UGFyYW1ldGVyLnNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvblZhcmlhbnQgZnJvbSB0aGUgbmF2aWdhdGlvblxuXHQgKiBAcGFyYW0gb05hdlBhcmFtZXRlci5zZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMgVGhlIHNlbGVjdGlvblZhcmlhbnQgZGVmYXVsdHMgZnJvbSB0aGUgbmF2aWdhdGlvblxuXHQgKiBAcGFyYW0gb05hdlBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudCBEZWZpbmVzIHdoZXRoZXIgdGhlIHN0YW5kYXJkIHZhcmlhbnQgbXVzdCBiZSB1c2VkIGluIHZhcmlhbnQgbWFuYWdlbWVudFxuXHQgKiBAcGFyYW0gc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEByZXR1cm5zIFByb21pc2UgZm9yIGFzeW5jIHN0YXRlIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyBhcHBseVZpZXdTdGF0ZShcblx0XHRvVmlld1N0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcblx0XHRvTmF2UGFyYW1ldGVyOiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdHNraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMuYmFzZS52aWV3U3RhdGUuYXBwbHlJbml0aWFsU3RhdGVPbmx5KCkgJiYgdGhpcy5fZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHQvL1NOT1c6IENTMjAyMzAwMDY3NjU4OTcgRm9yIHRyYW5zaWVudCBBcHBTdGF0ZSwgd2UgcmV0dXJuIHdpdGhvdXQgYXBwbHlpbmcgdGhlIHN0YXRlIHRvIGNvbnRyb2xzIGluIFJvb3RDb250YWluZXIncyBjaGlsZHJlbiB2aWV3cyBhcyB0aGVyZSBpcyBubyBzdGF0ZSB0byBhcHBseVxuXHRcdFx0Ly9Pbmx5IG5lZWQgaXMgdG8gcmVzb2x2ZSB0aGUgX3BJbml0aWFsU3RhdGVBcHBsaWVkIHNvIHRoYXQgdXBkYXRlIG9mIEFwcFN0YXRlIGNhbiBzdGlsbCBoYXBwZW5cblx0XHRcdGlmICh0aGlzLl9pc1N0YXRlRW1wdHlGb3JJQXBwU3RhdGVOYXZUeXBlKG9WaWV3U3RhdGUsIG9OYXZQYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpICYmICF0aGlzLl9faXNSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCB0aGlzLmNvbGxlY3RSZXN1bHRzKHRoaXMuYmFzZS52aWV3U3RhdGUub25CZWZvcmVTdGF0ZUFwcGxpZWQsIFtdLCBvTmF2UGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlKTtcblx0XHRcdGNvbnN0IGFDb250cm9sczogTWFuYWdlZE9iamVjdFtdID0gYXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyh0aGlzLmJhc2Uudmlld1N0YXRlLmFkYXB0U3RhdGVDb250cm9scyk7XG5cdFx0XHR0aGlzLnZpZXdTdGF0ZUNvbnRyb2xzID0gYUNvbnRyb2xzO1xuXHRcdFx0bGV0IG9Qcm9taXNlQ2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdGxldCBoYXNWYXJpYW50TWFuYWdlbWVudCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5fY3VycmVudFZpZXdTdGF0ZSA9IG9WaWV3U3RhdGU7XG5cblx0XHRcdHRoaXMuY29uZmlnT2ZTdGF0ZUFwcGx5ID0gdGhpcy5jb25maWdPZlN0YXRlQXBwbHkgPz8ge307XG5cdFx0XHR0aGlzLmNvbmZpZ09mU3RhdGVBcHBseS5za2lwTWVyZ2UgPSBza2lwTWVyZ2U7XG5cdFx0XHR0aGlzLmNvbmZpZ09mU3RhdGVBcHBseS5uYXZUeXBlUGFyYW1ldGVycyA9IG9OYXZQYXJhbWV0ZXI7XG5cdFx0XHR0aGlzLmNvbmZpZ09mU3RhdGVBcHBseS5zdGF0ZSA9IG9WaWV3U3RhdGU7XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogVGhpcyBlbnN1cmVzIHRoYXQgdmFyaWFudE1hbmFnZW1lbnQgY29udHJvbCBpcyBhcHBsaWVkIGZpcnN0IHRvIGNhbGN1bGF0ZSB0aGUgaW5pdGlhbCBzdGF0ZSBmb3IgZGVsdGEgbG9naWNcblx0XHRcdCAqL1xuXHRcdFx0Y29uc3Qgc29ydGVkQWRhcHRTdGF0ZUNvbnRyb2xzID0gYUNvbnRyb2xzLnJlZHVjZSgobW9kaWZpZWRDb250cm9sczogTWFuYWdlZE9iamVjdFtdLCBjb250cm9sKSA9PiB7XG5cdFx0XHRcdGlmICghY29udHJvbCkge1xuXHRcdFx0XHRcdHJldHVybiBtb2RpZmllZENvbnRyb2xzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGlzVmFyaWFudE1hbmFnZW1lbnRDb250cm9sID0gY29udHJvbC5pc0EoXCJzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRcdGlmICghaGFzVmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdFx0XHRoYXNWYXJpYW50TWFuYWdlbWVudCA9IGlzVmFyaWFudE1hbmFnZW1lbnRDb250cm9sO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1vZGlmaWVkQ29udHJvbHMgPSBpc1ZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbCA/IFtjb250cm9sLCAuLi5tb2RpZmllZENvbnRyb2xzXSA6IFsuLi5tb2RpZmllZENvbnRyb2xzLCBjb250cm9sXTtcblx0XHRcdFx0cmV0dXJuIG1vZGlmaWVkQ29udHJvbHM7XG5cdFx0XHR9LCBbXSk7XG5cblx0XHRcdC8vIEluIGNhc2Ugb2Ygbm8gVmFyaWFudCBNYW5hZ2VtZW50LCB0aGlzIGVuc3VyZXMgdGhhdCBpbml0aWFsIHN0YXRlcyBpcyBzZXRcblx0XHRcdGlmICghaGFzVmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdFx0dGhpcy5fc2V0SW5pdGlhbFN0YXRlc0ZvckRlbHRhQ29tcHV0ZSgpO1xuXHRcdFx0fVxuXHRcdFx0c29ydGVkQWRhcHRTdGF0ZUNvbnRyb2xzXG5cdFx0XHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Db250cm9sKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sLmlzQShcInNhcC51aS5iYXNlLk1hbmFnZWRPYmplY3RcIik7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKChvQ29udHJvbCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHNLZXkgPSB0aGlzLmdldFN0YXRlS2V5KG9Db250cm9sKTtcblx0XHRcdFx0XHRvUHJvbWlzZUNoYWluID0gb1Byb21pc2VDaGFpbi50aGVuKFxuXHRcdFx0XHRcdFx0dGhpcy5hcHBseUNvbnRyb2xTdGF0ZS5iaW5kKFxuXHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRvQ29udHJvbCxcblx0XHRcdFx0XHRcdFx0KG9WaWV3U3RhdGUgPyBvVmlld1N0YXRlW3NLZXldIDogdW5kZWZpbmVkKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0XHRcdFx0b05hdlBhcmFtZXRlcixcblx0XHRcdFx0XHRcdFx0c2tpcE1lcmdlID8/IGZhbHNlXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdGF3YWl0IG9Qcm9taXNlQ2hhaW47XG5cdFx0XHRpZiAob05hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSA9PT0gTmF2VHlwZS5pQXBwU3RhdGUgfHwgb05hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSA9PT0gTmF2VHlwZS5oeWJyaWQpIHtcblx0XHRcdFx0YXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyhcblx0XHRcdFx0XHR0aGlzLmJhc2Uudmlld1N0YXRlLmFwcGx5QWRkaXRpb25hbFN0YXRlcyxcblx0XHRcdFx0XHRvVmlld1N0YXRlID8gb1ZpZXdTdGF0ZVtBRERJVElPTkFMX1NUQVRFU19LRVldIDogdW5kZWZpbmVkXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhd2FpdCB0aGlzLmNvbGxlY3RSZXN1bHRzKHRoaXMuYmFzZS52aWV3U3RhdGUuYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycywgb05hdlBhcmFtZXRlcik7XG5cdFx0XHRcdGF3YWl0IHRoaXMuY29sbGVjdFJlc3VsdHModGhpcy5iYXNlLnZpZXdTdGF0ZS5fYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyLCBvTmF2UGFyYW1ldGVyKTtcblx0XHRcdH1cblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCF0aGlzLl9pc1N0YXRlRW1wdHlGb3JJQXBwU3RhdGVOYXZUeXBlKG9WaWV3U3RhdGUsIG9OYXZQYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpKSB7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyh0aGlzLmJhc2Uudmlld1N0YXRlLm9uQWZ0ZXJTdGF0ZUFwcGxpZWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdF9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUob1ZNOiBWYXJpYW50TWFuYWdlbWVudCwgc1ZhcmlhbnRJZDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGFWYXJpYW50cyA9IG9WTS5nZXRWYXJpYW50cygpO1xuXHRcdGxldCBiSXNDb250cm9sU3RhdGVWYXJpYW50QXZhaWxhYmxlID0gZmFsc2U7XG5cdFx0YVZhcmlhbnRzLmZvckVhY2goZnVuY3Rpb24gKG9WYXJpYW50KSB7XG5cdFx0XHRpZiAob1ZhcmlhbnQuZ2V0S2V5KCkgPT09IHNWYXJpYW50SWQpIHtcblx0XHRcdFx0YklzQ29udHJvbFN0YXRlVmFyaWFudEF2YWlsYWJsZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGJJc0NvbnRyb2xTdGF0ZVZhcmlhbnRBdmFpbGFibGU7XG5cdH1cblxuXHRfc2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlKSB7XG5cdFx0XHRjb25zdCBwSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmUgPSB0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmU7XG5cdFx0XHRkZWxldGUgdGhpcy5fcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlO1xuXHRcdFx0cEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0X2dldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICF0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmU7XG5cdH1cblxuXHRfaXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZSh2aWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkLCBuYXZUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKCF2aWV3U3RhdGUgfHwgT2JqZWN0LmtleXModmlld1N0YXRlKS5sZW5ndGggPT09IDApICYmIG5hdlR5cGUgPT0gTmF2VHlwZS5pQXBwU3RhdGU7XG5cdH1cblxuXHRfX2lzUm9vdFZpZXdDb250cm9sbGVyKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHJvb3RWaWV3Q29udHJvbGxlciA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRyb290Vmlld0NvbnRyb2xsZXIuaXNBPE5hdkNvbnRhaW5lckNvbnRyb2xsZXI+KFwic2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyXCIpIHx8XG5cdFx0XHRyb290Vmlld0NvbnRyb2xsZXIuaXNBPEZjbENvbnRyb2xsZXI+KFwic2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsXCIpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIb29rIHRvIHJlYWN0IGJlZm9yZSBhIHN0YXRlIGZvciBnaXZlbiB2aWV3IGlzIGFwcGxpZWQuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgRXh0ZW5zaWJsZSBhcnJheSBvZiBwcm9taXNlcyB0byBiZSByZXNvbHZlZCBiZWZvcmUgY29udGludWluZ1xuXHQgKiBAcGFyYW0gbmF2aWdhdGlvblR5cGUgTmF2aWdhdGlvbiB0eXBlIHJlc3BvbnNpYmxlIGZvciB0aGUgYXBwbHlpbmcgdGhlIHN0YXRlXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkJlZm9yZVN0YXRlQXBwbGllZChhUHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSwgbmF2aWdhdGlvblR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHQvLyB0byBiZSBvdmVycmlkZW5cblx0fVxuXG5cdC8qKlxuXHQgKiBIb29rIHRvIHJlYWN0IHdoZW4gc3RhdGUgZm9yIGdpdmVuIHZpZXcgd2FzIGFwcGxpZWQuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgRXh0ZW5zaWJsZSBhcnJheSBvZiBwcm9taXNlcyB0byBiZSByZXNvbHZlZCBiZWZvcmUgY29udGludWluZ1xuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0b25BZnRlclN0YXRlQXBwbGllZChhUHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkIHtcblx0XHQvLyB0byBiZSBvdmVycmlkZW5cblx0fVxuXG5cdC8qKlxuXHQgKiBBcHBseWluZyBhZGRpdGlvbmFsLCBub3QgY29udHJvbCByZWxhdGVkLCBzdGF0ZXMgLSBpcyBjYWxsZWQgb25seSBpZiBuYXZpZ2F0aW9uIHR5cGUgaXMgaUFwcFN0YXRlLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb1ZpZXdTdGF0ZSBUaGUgY3VycmVudCB2aWV3IHN0YXRlXG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgRXh0ZW5zaWJsZSBhcnJheSBvZiBwcm9taXNlcyB0byBiZSByZXNvbHZlZCBiZWZvcmUgY29udGludWluZ1xuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzKG9WaWV3U3RhdGU6IG9iamVjdCwgYVByb21pc2VzOiBQcm9taXNlPHVua25vd24+KTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWVkZWRcblx0fVxuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0X2FwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnNUb0ZpbHRlcmJhcihfb05hdlBhcmFtZXRlcjogTmF2aWdhdGlvblBhcmFtZXRlciwgX2FQcm9taXNlczogUHJvbWlzZTx1bmtub3duPik6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVlZGVkXG5cdH1cblxuXHQvKipcblx0ICogQXBwbHkgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzIGlzIG5vdCBjYWxsZWQgaWYgdGhlIG5hdmlnYXRpb24gdHlwZSBpcyBpQXBwU3RhdGVcblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0ICogQHBhcmFtIG9OYXZQYXJhbWV0ZXIgVGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBwYXJhbWV0ZXJcblx0ICogQHBhcmFtIGFQcm9taXNlcyBFeHRlbnNpYmxlIGFycmF5IG9mIHByb21pc2VzIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBjb250aW51aW5nXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0YXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyhcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdFx0b05hdlBhcmFtZXRlcjogTmF2aWdhdGlvblBhcmFtZXRlcixcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdFx0YVByb21pc2VzOiBQcm9taXNlPHVua25vd24+XG5cdCk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVlZGVkXG5cdH1cblxuXHQvKipcblx0ICogQXBwbHlpbmcgdGhlIGdpdmVuIHN0YXRlIHRvIHRoZSBnaXZlbiBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIG9iamVjdCB0byBhcHBseSB0aGUgZ2l2ZW4gc3RhdGVcblx0ICogQHBhcmFtIG9Db250cm9sU3RhdGUgVGhlIHN0YXRlIGZvciB0aGUgZ2l2ZW4gY29udHJvbFxuXHQgKiBAcGFyYW0gW29OYXZQYXJhbWV0ZXJzXSBUaGUgY3VycmVudCBuYXZpZ2F0aW9uIHBhcmFtZXRlcnNcblx0ICogQHBhcmFtIFtza2lwTWVyZ2VdIFdoZXRoZXIgbWVyZ2Ugc2hvdWxkIGJlIHNraXBwZWQgb3Igbm90XG5cdCAqIEByZXR1cm5zIFJldHVybiBhIHByb21pc2UgZm9yIGFzeW5jIHN0YXRlIGhhbmRsaW5nXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIGFwcGx5Q29udHJvbFN0YXRlKFxuXHRcdG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LFxuXHRcdG9Db250cm9sU3RhdGU6IG9iamVjdCxcblx0XHRvTmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2tpcE1lcmdlPzogYm9vbGVhblxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBhQ29udHJvbFN0YXRlSGFuZGxlcnMgPSB0aGlzLmdldENvbnRyb2xTdGF0ZUhhbmRsZXIob0NvbnRyb2wpO1xuXHRcdGxldCBvUHJvbWlzZUNoYWluID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0YUNvbnRyb2xTdGF0ZUhhbmRsZXJzLmZvckVhY2goKG1Db250cm9sU3RhdGVIYW5kbGVyKSA9PiB7XG5cdFx0XHRpZiAodHlwZW9mIG1Db250cm9sU3RhdGVIYW5kbGVyLmFwcGx5ICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBjb250cm9sU3RhdGVIYW5kbGVyLmFwcGx5IGlzIG5vdCBhIGZ1bmN0aW9uIGZvciBjb250cm9sOiAke29Db250cm9sLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdFx0fVxuXHRcdFx0b1Byb21pc2VDaGFpbiA9IG9Qcm9taXNlQ2hhaW4udGhlbihtQ29udHJvbFN0YXRlSGFuZGxlci5hcHBseS5iaW5kKHRoaXMsIG9Db250cm9sLCBvQ29udHJvbFN0YXRlLCBvTmF2UGFyYW1ldGVycywgc2tpcE1lcmdlKSk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9Qcm9taXNlQ2hhaW47XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIHVwZGF0ZUFwcFN0YXRlRGVib3VuY2VkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnVwZGF0ZUFwcFN0YXRlVGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnVwZGF0ZUFwcFN0YXRlVGltZXIpO1xuXHRcdH1cblx0XHR0aGlzLnVwZGF0ZUFwcFN0YXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuYmFzZS5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdH0sIDIwMCkgYXMgdW5rbm93biBhcyBudW1iZXI7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgYSBkZWRpY2F0ZWQgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGludG8gdGhlIHdob2xlIHZpZXcgc3RhdGUgaGFuZGxpbmcuXG5cdCAqIEBwYXJhbSBzdGF0ZUNvbnRyaWJ1dG9yIFRoZSBWaWV3U3RhdGVDb250cmlidXRvciB0byByZWdpc3RlclxuXHQgKi9cblx0cmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHN0YXRlQ29udHJpYnV0b3I6IE1hbmFnZWRPYmplY3QgJiBJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4pOiB2b2lkIHtcblx0XHR0aGlzLnN0YXRlQ29udHJpYnV0b3JzLnB1c2goc3RhdGVDb250cmlidXRvcik7XG5cdFx0aWYgKHRoaXMuX2N1cnJlbnRWaWV3U3RhdGUpIHtcblx0XHRcdGNvbnN0IGNvbnRyb2xLZXkgPSB0aGlzLmdldFN0YXRlS2V5KHN0YXRlQ29udHJpYnV0b3IpO1xuXHRcdFx0Y29uc3QgY29udHJvbFN0YXRlID0gdGhpcy5fY3VycmVudFZpZXdTdGF0ZVtjb250cm9sS2V5XTtcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25UeXBlID0gdGhpcy5jb25maWdPZlN0YXRlQXBwbHk/Lm5hdlR5cGVQYXJhbWV0ZXJzPy5uYXZpZ2F0aW9uVHlwZTtcblx0XHRcdGNvbnN0IHNraXBNZXJnZSA9IHRoaXMuY29uZmlnT2ZTdGF0ZUFwcGx5Py5za2lwTWVyZ2U7XG5cdFx0XHRpZiAoY29udHJvbFN0YXRlICYmIGNvbnRyb2xTdGF0ZSA9PT0gdGhpcy5jb25maWdPZlN0YXRlQXBwbHk/LnN0YXRlPy5bY29udHJvbEtleV0pIHtcblx0XHRcdFx0Ly8gVG8gY2hlY2sgd2hldGhlciBkaWZmc3RhdGUgc2h1b2xkIGJlIGNhbGxlZCBvciBub3QgdG8gYXBwbHlFeHRlcm5hbFN0YXRlXG5cdFx0XHRcdGNvbnN0IHNob3VsZEFwcGx5RGlmZlN0YXRlID1cblx0XHRcdFx0XHQhdGhpcy5pbnZhbGlkYXRlSW5pdGlhbFN0YXRlRm9yQXBwbHkuaW5jbHVkZXMoc3RhdGVDb250cmlidXRvci5nZXRJZCgpKSAmJlxuXHRcdFx0XHRcdCF0aGlzLmNvbnRyb2xzVmFyaWFudElkVW5hdmFpbGFibGUuaW5jbHVkZXMoc3RhdGVDb250cmlidXRvci5nZXRJZCgpKSAmJlxuXHRcdFx0XHRcdG5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmh5YnJpZCAmJlxuXHRcdFx0XHRcdHNraXBNZXJnZSAhPT0gdHJ1ZTtcblxuXHRcdFx0XHRzdGF0ZUNvbnRyaWJ1dG9yLmFwcGx5U3RhdGUoY29udHJvbFN0YXRlLCB1bmRlZmluZWQsIHNob3VsZEFwcGx5RGlmZlN0YXRlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudXBkYXRlQXBwU3RhdGVEZWJvdW5jZWQoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRGVyZWdpc3RlciBhIGRlZGljYXRlZCBJVmlld1N0YXRlQ29udHJpYnV0b3IgZnJvbSB0aGUgd2hvbGUgdmlldyBzdGF0ZSBoYW5kbGluZy5cblx0ICogQHBhcmFtIHN0YXRlQ29udHJpYnV0b3IgVGhlIFZpZXdTdGF0ZUNvbnRyaWJ1dG9yIHRvIGRlcmVnaXN0ZXJcblx0ICovXG5cdGRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHN0YXRlQ29udHJpYnV0b3I6IE1hbmFnZWRPYmplY3QgJiBJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4pOiB2b2lkIHtcblx0XHRjb25zdCB0YXJnZXRJbmRleCA9IHRoaXMuc3RhdGVDb250cmlidXRvcnMuZmluZEluZGV4KChjb250cmlidXRvcikgPT4gY29udHJpYnV0b3IgPT0gc3RhdGVDb250cmlidXRvcik7XG5cdFx0aWYgKHRhcmdldEluZGV4ICE9PSAtMSkge1xuXHRcdFx0dGhpcy5zdGF0ZUNvbnRyaWJ1dG9ycy5zcGxpY2UodGFyZ2V0SW5kZXgsIDEpO1xuXHRcdH1cblx0fVxuXG5cdGdldEludGVyZmFjZSgpOiB0aGlzIHtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8vIG1ldGhvZCB0byBnZXQgdGhlIGNvbnRyb2wgc3RhdGUgZm9yIG1kYyBjb250cm9scyBhcHBseWluZyB0aGUgZGVsdGEgbG9naWNcblx0X2dldENvbnRyb2xTdGF0ZShjb250cm9sU3RhdGVLZXk6IHN0cmluZywgY29udHJvbFN0YXRlOiBDb250cm9sU3RhdGUpOiBDb250cm9sU3RhdGUge1xuXHRcdGNvbnN0IGluaXRpYWxDb250cm9sU3RhdGVzTWFwcGVyID0gdGhpcy5pbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcjtcblx0XHRpZiAoT2JqZWN0LmtleXMoaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXIpLmxlbmd0aCA+IDAgJiYgaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXJbY29udHJvbFN0YXRlS2V5XSkge1xuXHRcdFx0aWYgKE9iamVjdC5rZXlzKGluaXRpYWxDb250cm9sU3RhdGVzTWFwcGVyW2NvbnRyb2xTdGF0ZUtleV0gYXMgb2JqZWN0KS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0aW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXJbY29udHJvbFN0YXRlS2V5XSA9IHsgLi4uY29udHJvbFN0YXRlIH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4geyBmdWxsU3RhdGU6IGNvbnRyb2xTdGF0ZSBhcyBvYmplY3QsIGluaXRpYWxTdGF0ZTogaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXJbY29udHJvbFN0YXRlS2V5XSBhcyBvYmplY3QgfTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRyb2xTdGF0ZTtcblx0fVxuXG5cdC8vbWV0aG9kIHRvIHN0b3JlIHRoZSBpbml0aWFsIHN0YXRlcyBmb3IgZGVsdGEgY29tcHV0YXRpb24gb2YgbWRjIGNvbnRyb2xzXG5cdF9zZXRJbml0aWFsU3RhdGVzRm9yRGVsdGFDb21wdXRlID0gYXN5bmMgKHZhcmlhbnRNYW5hZ2VtZW50PzogVmFyaWFudE1hbmFnZW1lbnQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgYWRhcHRDb250cm9scyA9IHRoaXMudmlld1N0YXRlQ29udHJvbHM7XG5cblx0XHRcdGNvbnN0IGV4dGVybmFsU3RhdGVQcm9taXNlczogUHJvbWlzZTxvYmplY3Q+W10gPSBbXTtcblx0XHRcdGNvbnN0IGNvbnRyb2xTdGF0ZUtleTogc3RyaW5nW10gPSBbXTtcblx0XHRcdGxldCBpbml0aWFsQ29udHJvbFN0YXRlczogb2JqZWN0W10gPSBbXTtcblx0XHRcdGNvbnN0IHZhcmlhbnRDb250cm9sczogc3RyaW5nW10gPSB2YXJpYW50TWFuYWdlbWVudD8uZ2V0Rm9yKCkgPz8gW107XG5cblx0XHRcdHRoaXMudXBkYXRlSW5pdGlhbFN0YXRlKHZhcmlhbnRDb250cm9scyk7XG5cblx0XHRcdGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0XHRhZGFwdENvbnRyb2xzXG5cdFx0XHRcdFx0LmZpbHRlcihmdW5jdGlvbiAoY29udHJvbCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0Y29udHJvbCAmJlxuXHRcdFx0XHRcdFx0XHQoIXZhcmlhbnRNYW5hZ2VtZW50IHx8IHZhcmlhbnRDb250cm9scy5pbmNsdWRlcygoY29udHJvbCBhcyBDb250cm9sKS5nZXRJZCgpKSkgJiZcblx0XHRcdFx0XHRcdFx0KChjb250cm9sIGFzIEJhc2VPYmplY3QpLmlzQShcInNhcC51aS5tZGMuVGFibGVcIikgfHxcblx0XHRcdFx0XHRcdFx0XHQoY29udHJvbCBhcyBCYXNlT2JqZWN0KS5pc0EoXCJzYXAudWkubWRjLkZpbHRlckJhclwiKSB8fFxuXHRcdFx0XHRcdFx0XHRcdChjb250cm9sIGFzIEJhc2VPYmplY3QpLmlzQShcInNhcC51aS5tZGMuQ2hhcnRcIikpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0Lm1hcChhc3luYyAoY29udHJvbCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHZhcmlhbnRNYW5hZ2VtZW50KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzVG9WYXJpYW50TWFuYWdlbWVudCh2YXJpYW50TWFuYWdlbWVudCwgdmFyaWFudENvbnRyb2xzKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3QgZXh0ZXJuYWxTdGF0ZVByb21pc2UgPSAoYXdhaXQgZ2V0U3RhdGVVdGlsKCkpLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShjb250cm9sIGFzIE1EQ0NvbnRyb2wpO1xuXHRcdFx0XHRcdFx0ZXh0ZXJuYWxTdGF0ZVByb21pc2VzLnB1c2goZXh0ZXJuYWxTdGF0ZVByb21pc2UpO1xuXHRcdFx0XHRcdFx0Y29udHJvbFN0YXRlS2V5LnB1c2godGhpcy5nZXRTdGF0ZUtleShjb250cm9sKSk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdCk7XG5cblx0XHRcdGluaXRpYWxDb250cm9sU3RhdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoZXh0ZXJuYWxTdGF0ZVByb21pc2VzKTtcblx0XHRcdGluaXRpYWxDb250cm9sU3RhdGVzLmZvckVhY2goKGluaXRpYWxDb250cm9sU3RhdGU6IG9iamVjdCwgaTogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXJbY29udHJvbFN0YXRlS2V5W2ldXSA9IGluaXRpYWxDb250cm9sU3RhdGU7XG5cdFx0XHR9KTtcblx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fTtcblxuXHQvLyBBdHRhY2ggZXZlbnQgdG8gc2F2ZSBhbmQgc2VsZWN0IG9mIFZhcmlhbnQgTWFuYWdlbWVudCB0byB1cGRhdGUgdGhlIGluaXRpYWwgQ29udHJvbCBTdGF0ZXMgb24gdmFyaWFudCBjaGFuZ2Vcblx0X2FkZEV2ZW50TGlzdGVuZXJzVG9WYXJpYW50TWFuYWdlbWVudCh2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnQsIHZhcmlhbnRDb250cm9sczogc3RyaW5nW10pOiB2b2lkIHtcblx0XHRjb25zdCBvUGF5bG9hZCA9IHsgdmFyaWFudE1hbmFnZWRDb250cm9sczogdmFyaWFudENvbnRyb2xzIH07XG5cdFx0Y29uc3QgZm5FdmVudCA9ICgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuX3VwZGF0ZUluaXRpYWxTdGF0ZXNPblZhcmlhbnRDaGFuZ2UodmFyaWFudENvbnRyb2xzKTtcblx0XHR9O1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LmF0dGFjaFNhdmUob1BheWxvYWQsIGZuRXZlbnQsIHt9KTtcblx0XHR2YXJpYW50TWFuYWdlbWVudC5hdHRhY2hTZWxlY3Qob1BheWxvYWQsIGZuRXZlbnQsIHt9KTtcblx0fVxuXG5cdF91cGRhdGVJbml0aWFsU3RhdGVzT25WYXJpYW50Q2hhbmdlKHZtQXNzb2NpYXRlZENvbnRyb2xzVG9SZXNldDogc3RyaW5nW10pOiB2b2lkIHtcblx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlciA9IHRoaXMuaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXI7XG5cdFx0T2JqZWN0LmtleXMoaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXIpLmZvckVhY2goKGNvbnRyb2xLZXkpID0+IHtcblx0XHRcdGZvciAoY29uc3Qgdm1Bc3NvY2lhdGVkY29udHJvbEtleSBvZiB2bUFzc29jaWF0ZWRDb250cm9sc1RvUmVzZXQpIHtcblx0XHRcdFx0aWYgKHZtQXNzb2NpYXRlZGNvbnRyb2xLZXkuaW5jbHVkZXMoY29udHJvbEtleSkpIHtcblx0XHRcdFx0XHRpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcltjb250cm9sS2V5XSA9IHt9O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy51cGRhdGVJbml0aWFsU3RhdGUodm1Bc3NvY2lhdGVkQ29udHJvbHNUb1Jlc2V0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgdmFyaWFudCBjb250cm9scy5cblx0ICogQHBhcmFtIHZhcmlhbnRDb250cm9scyBBbiBhcnJheSBvZiBjb250cm9sIElEcyBmb3Igd2hpY2ggdGhlIGluaXRpYWwgc3RhdGUgbmVlZHMgdG8gYmUgdXBkYXRlZC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgaW5pdGlhbCBzdGF0ZSB1cGRhdGUgaXMgY29tcGxldGUuXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVJbml0aWFsU3RhdGUodmFyaWFudENvbnRyb2xzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHZpZXdDb250cm9sczogKE1hbmFnZWRPYmplY3QgfCB1bmRlZmluZWQpW10gPSB0aGlzLnN0YXRlQ29udHJpYnV0b3JzO1xuXHRcdGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0dmlld0NvbnRyb2xzLm1hcChhc3luYyAoY29udHJvbCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjb250cm9sSWQ6IHN0cmluZyA9IGNvbnRyb2w/LmdldElkKCkgYXMgc3RyaW5nO1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0dmFyaWFudENvbnRyb2xzLmluY2x1ZGVzKGNvbnRyb2xJZCkgJiZcblx0XHRcdFx0XHRjb250cm9sPy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPG9iamVjdD4+KFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMudmlld1N0YXRlLklWaWV3U3RhdGVDb250cmlidXRvclwiKSAmJlxuXHRcdFx0XHRcdGNvbnRyb2wuc2V0SW5pdGlhbFN0YXRlXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGF3YWl0IGNvbnRyb2wuc2V0SW5pdGlhbFN0YXRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdF9pc0luaXRpYWxTdGF0ZXNBcHBsaWNhYmxlKFxuXHRcdGluaXRpYWxTdGF0ZTogb2JqZWN0IHwgdW5kZWZpbmVkLFxuXHRcdGNvbnRyb2w6IEZpbHRlckJhciB8IE1EQ1RhYmxlLFxuXHRcdHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCxcblx0XHRpc05hdkh5YnJpZD86IGJvb2xlYW5cblx0KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCEhaW5pdGlhbFN0YXRlICYmXG5cdFx0XHQhdGhpcy5pbnZhbGlkYXRlSW5pdGlhbFN0YXRlRm9yQXBwbHkuaW5jbHVkZXMoY29udHJvbC5nZXRJZCgpKSAmJlxuXHRcdFx0IXRoaXMuY29udHJvbHNWYXJpYW50SWRVbmF2YWlsYWJsZS5pbmNsdWRlcyhjb250cm9sLmdldElkKCkpICYmXG5cdFx0XHQoaXNOYXZIeWJyaWQgPz8gdHJ1ZSkgJiZcblx0XHRcdHNraXBNZXJnZSAhPT0gdHJ1ZVxuXHRcdCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlld1N0YXRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE0QkE7RUFDQTtFQUNBO0VBQ0EsTUFBTUEsT0FBTyxHQUFHQyxVQUFVLENBQUNELE9BQU87O0VBRWxDO0FBQ0E7QUFDQTtBQUNBOztFQXdCQSxNQUFNRSxxQkFBcUIsR0FBRyxtQkFBbUI7O0VBb0JqRDtFQUNBO0VBQ0E7O0VBZ0JBLE1BQU1DLFlBQVksR0FBRyxlQUFBQSxDQUFBLEVBQTZDO0lBQ2pFLE9BQU8sQ0FBQyxNQUFNQyxtQkFBQSxDQUFPLDJCQUEyQixDQUFDLEVBQUVDLE9B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
|
|
881
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwiTmF2TGlicmFyeSIsIkFERElUSU9OQUxfU1RBVEVTX0tFWSIsImdldFN0YXRlVXRpbCIsIl9fdWk1X3JlcXVpcmVfYXN5bmMiLCJkZWZhdWx0IiwiX21Db250cm9sU3RhdGVIYW5kbGVyTWFwIiwicmV0cmlldmUiLCJvVk0iLCJ2YXJpYW50SWQiLCJnZXRDdXJyZW50VmFyaWFudEtleSIsImFwcGx5IiwiY29udHJvbFN0YXRlIiwidW5kZWZpbmVkIiwiaXNWYXJpYW50SWRBdmFpbGFibGUiLCJfY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlIiwic1ZhcmlhbnRSZWZlcmVuY2UiLCJnZXRTdGFuZGFyZFZhcmlhbnRLZXkiLCJjb250cm9sc1ZhcmlhbnRJZFVuYXZhaWxhYmxlIiwicHVzaCIsImdldEZvciIsIkNvbnRyb2xWYXJpYW50QXBwbHlBUEkiLCJhY3RpdmF0ZVZhcmlhbnQiLCJlbGVtZW50IiwidmFyaWFudFJlZmVyZW5jZSIsIl9zZXRJbml0aWFsU3RhdGVzRm9yRGVsdGFDb21wdXRlIiwiZXJyb3IiLCJMb2ciLCJpbnZhbGlkYXRlSW5pdGlhbFN0YXRlRm9yQXBwbHkiLCJtdWx0aXBsZU1vZGVDb250cm9sIiwic2VsZWN0ZWRLZXkiLCJjb250ZW50IiwiZ2V0U2VsZWN0ZWRLZXkiLCJ0YWJCYXIiLCJnZXRJdGVtcyIsImZpbmQiLCJpdGVtIiwiZ2V0S2V5Iiwic2V0U2VsZWN0ZWRLZXkiLCJyZWZyZXNoQmluZGluZyIsIm9UYWJsZSIsIm9UYWJsZUJpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwib1Jvb3RCaW5kaW5nIiwiZ2V0Um9vdEJpbmRpbmciLCJhZ2dyZWdhdGlvbiIsImdldEFnZ3JlZ2F0aW9uIiwiaGllcmFyY2h5UXVhbGlmaWVyIiwicmVmcmVzaCIsIm9IZWFkZXJDb250ZXh0IiwiZ2V0SGVhZGVyQ29udGV4dCIsInNHcm91cElkIiwiZ2V0R3JvdXBJZCIsInJlcXVlc3RTaWRlRWZmZWN0cyIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiaW5mbyIsImdldElkIiwib1NlZ21lbnRlZEJ1dHRvbiIsIm9Db250cm9sU3RhdGUiLCJfb1NlZ21lbnRlZEJ1dHRvbiRnZXQiLCJnZXRQYXJlbnQiLCJpc0EiLCJmaXJlRXZlbnQiLCJvU2VsZWN0IiwiX29TZWxlY3QkZ2V0UGFyZW50Iiwib0R5bmFtaWNQYWdlIiwiaGVhZGVyRXhwYW5kZWQiLCJnZXRIZWFkZXJFeHBhbmRlZCIsInNldEhlYWRlckV4cGFuZGVkIiwib1ZpZXciLCJvQ29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJyZXRyaWV2ZVZpZXdTdGF0ZSIsIm9OYXZQYXJhbWV0ZXJzIiwic2tpcE1lcmdlIiwiYXBwbHlWaWV3U3RhdGUiLCJyZWZyZXNoVmlld0JpbmRpbmdzIiwib0NvbXBvbmVudENvbnRhaW5lciIsIm9Db21wb25lbnQiLCJnZXRDb21wb25lbnRJbnN0YW5jZSIsInJldHJpZXZlQ29udHJvbFN0YXRlIiwiZ2V0Um9vdENvbnRyb2wiLCJhcHBseUNvbnRyb2xTdGF0ZSIsIlZpZXdTdGF0ZSIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHVibGljRXh0ZW5zaW9uIiwiX2RlYzMiLCJmaW5hbEV4dGVuc2lvbiIsIl9kZWM0IiwiX2RlYzUiLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsIl9kZWM2IiwicHJpdmF0ZUV4dGVuc2lvbiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIl9kZWMxMCIsIl9kZWMxMSIsIl9kZWMxMiIsIl9kZWMxMyIsIl9kZWMxNCIsIl9kZWMxNSIsIl9kZWMxNiIsIl9kZWMxNyIsIl9kZWMxOCIsIl9kZWMxOSIsIl9kZWMyMCIsIl9kZWMyMSIsIl9kZWMyMiIsIl9kZWMyMyIsIl9kZWMyNCIsIl9kZWMyNSIsIl9kZWMyNiIsIl9kZWMyNyIsIl9kZWMyOCIsIl9kZWMyOSIsIl9kZWMzMCIsIl9kZWMzMSIsIl9kZWMzMiIsIl9kZWMzMyIsIkluc3RlYWQiLCJfZGVjMzQiLCJfZGVjMzUiLCJfZGVjMzYiLCJfZGVjMzciLCJfZGVjMzgiLCJfZGVjMzkiLCJfZGVjNDAiLCJfZGVjNDEiLCJfZGVjNDIiLCJfZGVjNDMiLCJfZGVjNDQiLCJfZGVjNDUiLCJfZGVjNDYiLCJfZGVjNDciLCJfZGVjNDgiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJfaW5oZXJpdHNMb29zZSIsIl90aGlzIiwiY2FsbCIsImluaXRpYWxDb250cm9sU3RhdGVzTWFwcGVyIiwidmlld1N0YXRlQ29udHJvbHMiLCJzdGF0ZUNvbnRyaWJ1dG9ycyIsInZhcmlhbnRNYW5hZ2VtZW50IiwiYWRhcHRDb250cm9scyIsImV4dGVybmFsU3RhdGVQcm9taXNlcyIsImNvbnRyb2xTdGF0ZUtleSIsImluaXRpYWxDb250cm9sU3RhdGVzIiwidmFyaWFudENvbnRyb2xzIiwidXBkYXRlSW5pdGlhbFN0YXRlIiwiUHJvbWlzZSIsImFsbCIsImZpbHRlciIsImNvbnRyb2wiLCJpbmNsdWRlcyIsIm1hcCIsIl9hZGRFdmVudExpc3RlbmVyc1RvVmFyaWFudE1hbmFnZW1lbnQiLCJleHRlcm5hbFN0YXRlUHJvbWlzZSIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsImdldFN0YXRlS2V5IiwiZm9yRWFjaCIsImluaXRpYWxDb250cm9sU3RhdGUiLCJpIiwiZSIsIl9pUmV0cmlldmluZ1N0YXRlQ291bnRlciIsIl9wSW5pdGlhbFN0YXRlQXBwbGllZCIsInJlc29sdmUiLCJfcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiYUNvbnRyb2xzIiwiY29sbGVjdFJlc3VsdHMiLCJiYXNlIiwiYWRhcHRCaW5kaW5nUmVmcmVzaENvbnRyb2xzIiwib1Byb21pc2VDaGFpbiIsIm9Db250cm9sIiwidGhlbiIsInJlZnJlc2hDb250cm9sQmluZGluZyIsImJpbmQiLCJhQ29sbGVjdGVkQ29udHJvbHMiLCJvQ29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlciIsImdldENvbnRyb2xSZWZyZXNoQmluZGluZ0hhbmRsZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJvUmVmcmVzaEJpbmRpbmdIYW5kbGVyIiwic1R5cGUiLCJhZGFwdEJpbmRpbmdSZWZyZXNoSGFuZGxlciIsIl9vQ29udHJvbCIsIl9vQ29udHJvbEhhbmRsZXIiLCJvblN1c3BlbmQiLCJvblJlc3RvcmUiLCJkZXN0cm95IiwiZm5DYWxsIiwiYVJlc3VsdHMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImFkYXB0Q29udHJvbFN0YXRlSGFuZGxlciIsImFDb250cm9sSGFuZGxlciIsImdldENvbnRyb2xTdGF0ZUhhbmRsZXIiLCJhSW50ZXJuYWxDb250cm9sU3RhdGVIYW5kbGVyIiwiYUN1c3RvbUNvbnRyb2xTdGF0ZUhhbmRsZXIiLCJyZXRyaWV2ZVN0YXRlIiwiYXBwbHlTdGF0ZSIsIl9jb250cm9sIiwic2hvdWxkQXBwbHlEaWZmU3RhdGUiLCJuYXZpZ2F0aW9uVHlwZSIsImh5YnJpZCIsImFwcGx5TGVnYWN5U3RhdGUiLCJnZXRDb250cm9sU3RhdGUiLCJPYmplY3QiLCJhc3NpZ24iLCJjb25jYXQiLCJhZGFwdFN0YXRlQ29udHJvbHMiLCJfYUNvbGxlY3RlZENvbnRyb2xzIiwiZ2V0VmlldyIsImdldExvY2FsSWQiLCJvVmlld1N0YXRlIiwiYVJlc29sdmVkU3RhdGVzIiwidlJlc3VsdCIsImtleSIsInZhbHVlIiwicmVkdWNlIiwib1N0YXRlcyIsIm1TdGF0ZSIsIm9DdXJyZW50U3RhdGUiLCJtZXJnZU9iamVjdHMiLCJwcmV2U3RhdGUiLCJfY3VycmVudFZpZXdTdGF0ZSIsImtleXMiLCJfYWRkTWlzc2luZ1N0YXRlIiwibUFkZGl0aW9uYWxTdGF0ZXMiLCJfcmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzIiwicmV0cmlldmVBZGRpdGlvbmFsU3RhdGVzIiwiYUNvbnRyb2xTdGF0ZUhhbmRsZXJzIiwibUNvbnRyb2xTdGF0ZUhhbmRsZXIiLCJFcnJvciIsImFTdGF0ZXMiLCJvRmluYWxTdGF0ZSIsImFwcGx5SW5pdGlhbFN0YXRlT25seSIsImNvbnRyb2xLZXkiLCJvTmF2UGFyYW1ldGVyIiwiX2dldEluaXRpYWxTdGF0ZUFwcGxpZWQiLCJfaXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZSIsIl9faXNSb290Vmlld0NvbnRyb2xsZXIiLCJvbkJlZm9yZVN0YXRlQXBwbGllZCIsImhhc1ZhcmlhbnRNYW5hZ2VtZW50IiwiY29uZmlnT2ZTdGF0ZUFwcGx5IiwibmF2VHlwZVBhcmFtZXRlcnMiLCJzdGF0ZSIsInNvcnRlZEFkYXB0U3RhdGVDb250cm9scyIsIm1vZGlmaWVkQ29udHJvbHMiLCJpc1ZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbCIsInNLZXkiLCJpQXBwU3RhdGUiLCJhcHBseUFkZGl0aW9uYWxTdGF0ZXMiLCJhcHBseU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiX2FwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnNUb0ZpbHRlcmJhciIsIm9uQWZ0ZXJTdGF0ZUFwcGxpZWQiLCJfc2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsInNWYXJpYW50SWQiLCJhVmFyaWFudHMiLCJnZXRWYXJpYW50cyIsImJJc0NvbnRyb2xTdGF0ZVZhcmlhbnRBdmFpbGFibGUiLCJvVmFyaWFudCIsInBJbml0aWFsU3RhdGVBcHBsaWVkUmVzb2x2ZSIsIm5hdlR5cGUiLCJyb290Vmlld0NvbnRyb2xsZXIiLCJhUHJvbWlzZXMiLCJfb05hdlBhcmFtZXRlciIsIl9hUHJvbWlzZXMiLCJ1cGRhdGVBcHBTdGF0ZURlYm91bmNlZCIsInVwZGF0ZUFwcFN0YXRlVGltZXIiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJzdGF0ZUNvbnRyaWJ1dG9yIiwiX3RoaXMkY29uZmlnT2ZTdGF0ZUFwIiwiX3RoaXMkY29uZmlnT2ZTdGF0ZUFwMiIsIl90aGlzJGNvbmZpZ09mU3RhdGVBcDMiLCJfdGhpcyRjb25maWdPZlN0YXRlQXA0IiwiX3RoaXMkY29uZmlnT2ZTdGF0ZUFwNSIsImRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yIiwidGFyZ2V0SW5kZXgiLCJmaW5kSW5kZXgiLCJjb250cmlidXRvciIsInNwbGljZSIsImdldEludGVyZmFjZSIsIl9nZXRDb250cm9sU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJvUGF5bG9hZCIsInZhcmlhbnRNYW5hZ2VkQ29udHJvbHMiLCJmbkV2ZW50IiwiX3VwZGF0ZUluaXRpYWxTdGF0ZXNPblZhcmlhbnRDaGFuZ2UiLCJhdHRhY2hTYXZlIiwiYXR0YWNoU2VsZWN0Iiwidm1Bc3NvY2lhdGVkQ29udHJvbHNUb1Jlc2V0Iiwidm1Bc3NvY2lhdGVkY29udHJvbEtleSIsInZpZXdDb250cm9scyIsImNvbnRyb2xJZCIsInNldEluaXRpYWxTdGF0ZSIsIl9pc0luaXRpYWxTdGF0ZXNBcHBsaWNhYmxlIiwiaXNOYXZIeWJyaWQiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlld1N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IG1lcmdlT2JqZWN0cyBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgRHluYW1pY1BhZ2UgZnJvbSBcInNhcC9mL0R5bmFtaWNQYWdlXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIElWaWV3U3RhdGVDb250cmlidXRvciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvdmlld1N0YXRlL0lWaWV3U3RhdGVDb250cmlidXRvclwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IE5hdkxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIE11bHRpcGxlTW9kZUNvbnRyb2wgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC9jb250cm9scy9NdWx0aXBsZU1vZGVDb250cm9sXCI7XG5pbXBvcnQgdHlwZSBJY29uVGFiRmlsdGVyIGZyb20gXCJzYXAvbS9JY29uVGFiRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0IGZyb20gXCJzYXAvbS9TZWxlY3RcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29tcG9uZW50Q29udGFpbmVyIGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRDb250YWluZXJcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb250cm9sbGVyRXh0ZW5zaW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlckV4dGVuc2lvblwiO1xuaW1wb3J0IE92ZXJyaWRlRXhlY3V0aW9uIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvT3ZlcnJpZGVFeGVjdXRpb25cIjtcbmltcG9ydCB0eXBlIFZhcmlhbnRNYW5hZ2VtZW50IGZyb20gXCJzYXAvdWkvZmwvdmFyaWFudHMvVmFyaWFudE1hbmFnZW1lbnRcIjtcbmltcG9ydCB0eXBlIE1EQ0NvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcblxuaW1wb3J0IHR5cGUgU3RhdGVVdGlsIGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgdHlwZSBGY2xDb250cm9sbGVyIGZyb20gXCIuLi9yb290Vmlldy9GY2wuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgTmF2Q29udGFpbmVyQ29udHJvbGxlciBmcm9tIFwiLi4vcm9vdFZpZXcvTmF2Q29udGFpbmVyLmNvbnRyb2xsZXJcIjtcblxuLy8gYWRkaXRpb25hbFN0YXRlcyBhcmUgc3RvcmVkIG5leHQgdG8gY29udHJvbCBJRHMsIHNvIG5hbWUgY2xhc2ggYXZvaWRhbmNlIG5lZWRlZC4gRm9ydHVuYXRlbHkgSURzIGhhdmUgcmVzdHJpY3Rpb25zOlxuLy8gXCJBbGxvd2VkIGlzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyAoY2FwaXRhbC9sb3dlcmNhc2UpLCBkaWdpdHMsIHVuZGVyc2NvcmVzLCBkYXNoZXMsIHBvaW50cyBhbmQvb3IgY29sb25zLlwiXG4vLyBUaGVyZWZvcmUgYWRkaW5nIGEgc3ltYm9sIGxpa2UgIyBvciBAXG5jb25zdCBOYXZUeXBlID0gTmF2TGlicmFyeS5OYXZUeXBlO1xuXG4vKipcbiAqIERlZmluaXRpb24gb2YgYSBuYXZpZ2F0aW9uIHBhcmFtZXRlclxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uUGFyYW1ldGVyID0ge1xuXHQvKipcblx0ICogIFRoZSBhY3R1YWwgbmF2aWdhdGlvbiB0eXBlLlxuXHQgKiAgQHB1YmxpY1xuXHQgKi9cblx0bmF2aWdhdGlvblR5cGU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBzZWxlY3Rpb25WYXJpYW50IGZyb20gdGhlIG5hdmlnYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHNlbGVjdGlvblZhcmlhbnQ/OiBTZWxlY3Rpb25WYXJpYW50O1xuXHQvKipcblx0ICogVGhlIHNlbGVjdGlvblZhcmlhbnQgZGVmYXVsdHMgZnJvbSB0aGUgbmF2aWdhdGlvblxuXHQgKiAgQHB1YmxpY1xuXHQgKi9cblx0c2VsZWN0aW9uVmFyaWFudERlZmF1bHRzPzogU2VsZWN0aW9uVmFyaWFudDtcblx0LyoqXG5cdCAqIERlZmluZXMgd2hldGhlciB0aGUgc3RhbmRhcmQgdmFyaWFudCBtdXN0IGJlIHVzZWQgaW4gdmFyaWFudCBtYW5hZ2VtZW50XG5cdCAqICBAcHVibGljXG5cdCAqL1xuXHRyZXF1aXJlc1N0YW5kYXJkVmFyaWFudD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBBRERJVElPTkFMX1NUQVRFU19LRVkgPSBcIiNhZGRpdGlvbmFsU3RhdGVzXCI7XG5cbmV4cG9ydCB0eXBlIENvbnRyb2xTdGF0ZSA9XG5cdHwgKHtcblx0XHRcdGluaXRpYWxTdGF0ZT86IHtcblx0XHRcdFx0c3VwcGxlbWVudGFyeUNvbmZpZz86IG9iamVjdDtcblx0XHRcdH07XG5cdFx0XHRmdWxsU3RhdGU/OiB7XG5cdFx0XHRcdGZpbHRlcj86IG9iamVjdDtcblx0XHRcdH07XG5cdCAgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuXHR8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgTmF2UGFyYW1ldGVycyA9IHtcblx0bmF2aWdhdGlvblR5cGU/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgTGVnYWN5RmlsdGVyQmFyU3RhdGUgPSB7XG5cdGZpbHRlcj86IFJlY29yZDxzdHJpbmcsIEFycmF5PG9iamVjdD4+O1xufSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBtZXRob2RzIHRvIHJldHJpZXZlICYgYXBwbHkgc3RhdGVzIGZvciB0aGUgZGlmZmVyZW50IGNvbnRyb2xzIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgdHlwZSBDb250cm9sU3RhdGVIYW5kbGVyPFQgZXh0ZW5kcyBNYW5hZ2VkT2JqZWN0LCBLIGV4dGVuZHMgdW5rbm93biB8IHVuZGVmaW5lZD4gPSB7XG5cdHJldHJpZXZlPzogKG9Db250cm9sOiBUKSA9PiBLIHwgUHJvbWlzZTxLPjtcblx0YXBwbHk/OiAob0NvbnRyb2w6IFQsIGNvbnRyb2xTdGF0ZTogSywgbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsIHNraXBNZXJnZT86IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXHRyZWZyZXNoQmluZGluZz86IChvQ29udHJvbDogVCkgPT4gdm9pZDtcbn07XG50eXBlIENvbnRyb2xTdGF0ZU1hcCA9IHtcblx0XCJzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnRcIjogQ29udHJvbFN0YXRlSGFuZGxlcjxWYXJpYW50TWFuYWdlbWVudCwgeyB2YXJpYW50SWQ6IHN0cmluZyB8IG51bGwgfT47XG5cdFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIjogQ29udHJvbFN0YXRlSGFuZGxlcjxNdWx0aXBsZU1vZGVDb250cm9sLCB7IHNlbGVjdGVkS2V5OiBzdHJpbmcgfT47XG5cdFwic2FwLnVpLm1kYy5UYWJsZVwiOiBDb250cm9sU3RhdGVIYW5kbGVyPE1EQ1RhYmxlLCBDb250cm9sU3RhdGU+O1xuXHRcInNhcC5tLlNlZ21lbnRlZEJ1dHRvblwiOiBDb250cm9sU3RhdGVIYW5kbGVyPFNlZ21lbnRlZEJ1dHRvbiwgeyBzZWxlY3RlZEtleTogc3RyaW5nIH0+O1xuXHRcInNhcC5tLlNlbGVjdFwiOiBDb250cm9sU3RhdGVIYW5kbGVyPFNlbGVjdCwgeyBzZWxlY3RlZEtleTogc3RyaW5nIH0+O1xuXHRcInNhcC5mLkR5bmFtaWNQYWdlXCI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8RHluYW1pY1BhZ2UsIHsgaGVhZGVyRXhwYW5kZWQ6IGJvb2xlYW4gfT47XG5cdFwic2FwLnVpLmNvcmUuQ29tcG9uZW50Q29udGFpbmVyXCI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8Q29tcG9uZW50Q29udGFpbmVyLCBvYmplY3Q+O1xuXHRcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8RkVWaWV3LCBDb250cm9sU3RhdGU+O1xufTtcbmNvbnN0IGdldFN0YXRlVXRpbCA9IGFzeW5jIGZ1bmN0aW9uICgpOiBQcm9taXNlPHR5cGVvZiBTdGF0ZVV0aWw+IHtcblx0cmV0dXJuIChhd2FpdCBpbXBvcnQoXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCIpKS5kZWZhdWx0O1xufTtcbmNvbnN0IF9tQ29udHJvbFN0YXRlSGFuZGxlck1hcDogQ29udHJvbFN0YXRlTWFwID0ge1xuXHRcInNhcC51aS5mbC52YXJpYW50cy5WYXJpYW50TWFuYWdlbWVudFwiOiB7XG5cdFx0cmV0cmlldmU6IGZ1bmN0aW9uIChvVk06IFZhcmlhbnRNYW5hZ2VtZW50KTogeyB2YXJpYW50SWQ6IHN0cmluZyB8IG51bGwgfSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR2YXJpYW50SWQ6IG9WTS5nZXRDdXJyZW50VmFyaWFudEtleSgpXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0YXBwbHk6IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBWaWV3U3RhdGUsIG9WTTogVmFyaWFudE1hbmFnZW1lbnQsIGNvbnRyb2xTdGF0ZT86IHsgdmFyaWFudElkPzogc3RyaW5nIHwgbnVsbCB9KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoY29udHJvbFN0YXRlICYmIGNvbnRyb2xTdGF0ZS52YXJpYW50SWQgIT09IHVuZGVmaW5lZCAmJiBjb250cm9sU3RhdGUudmFyaWFudElkICE9PSBvVk0uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKSkge1xuXHRcdFx0XHRcdGNvbnN0IGlzVmFyaWFudElkQXZhaWxhYmxlID0gdGhpcy5fY2hlY2tJZlZhcmlhbnRJZElzQXZhaWxhYmxlKG9WTSwgY29udHJvbFN0YXRlLnZhcmlhbnRJZCk7XG5cdFx0XHRcdFx0bGV0IHNWYXJpYW50UmVmZXJlbmNlO1xuXHRcdFx0XHRcdGlmIChpc1ZhcmlhbnRJZEF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdFx0c1ZhcmlhbnRSZWZlcmVuY2UgPSBjb250cm9sU3RhdGUudmFyaWFudElkO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzVmFyaWFudFJlZmVyZW5jZSA9IG9WTS5nZXRTdGFuZGFyZFZhcmlhbnRLZXkoKTtcblx0XHRcdFx0XHRcdHRoaXMuY29udHJvbHNWYXJpYW50SWRVbmF2YWlsYWJsZS5wdXNoKC4uLm9WTS5nZXRGb3IoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBDb250cm9sVmFyaWFudEFwcGx5QVBJID0gKGF3YWl0IGltcG9ydChcInNhcC91aS9mbC9hcHBseS9hcGkvQ29udHJvbFZhcmlhbnRBcHBseUFQSVwiKSkuZGVmYXVsdDtcblx0XHRcdFx0XHRcdGF3YWl0IENvbnRyb2xWYXJpYW50QXBwbHlBUEkuYWN0aXZhdGVWYXJpYW50KHtcblx0XHRcdFx0XHRcdFx0ZWxlbWVudDogb1ZNLFxuXHRcdFx0XHRcdFx0XHR2YXJpYW50UmVmZXJlbmNlOiBzVmFyaWFudFJlZmVyZW5jZSBhcyBzdHJpbmdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0YXdhaXQgdGhpcy5fc2V0SW5pdGlhbFN0YXRlc0ZvckRlbHRhQ29tcHV0ZShvVk0pO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdFx0XHRcdHRoaXMuaW52YWxpZGF0ZUluaXRpYWxTdGF0ZUZvckFwcGx5LnB1c2goLi4ub1ZNLmdldEZvcigpKTtcblx0XHRcdFx0XHRcdGF3YWl0IHRoaXMuX3NldEluaXRpYWxTdGF0ZXNGb3JEZWx0YUNvbXB1dGUob1ZNKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0SW5pdGlhbFN0YXRlc0ZvckRlbHRhQ29tcHV0ZShvVk0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIjoge1xuXHRcdHJldHJpZXZlOiBmdW5jdGlvbiAobXVsdGlwbGVNb2RlQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCk6IHsgc2VsZWN0ZWRLZXk6IHN0cmluZyB9IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNlbGVjdGVkS2V5OiBtdWx0aXBsZU1vZGVDb250cm9sLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKVxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdGFwcGx5OiBmdW5jdGlvbiAobXVsdGlwbGVNb2RlQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCwgY29udHJvbFN0YXRlPzogeyBzZWxlY3RlZEtleTogc3RyaW5nIH0pIHtcblx0XHRcdGlmIChjb250cm9sU3RhdGU/LnNlbGVjdGVkS2V5KSB7XG5cdFx0XHRcdGNvbnN0IHRhYkJhciA9IG11bHRpcGxlTW9kZUNvbnRyb2wuY29udGVudDtcblx0XHRcdFx0aWYgKHRhYkJhci5nZXRJdGVtcygpLmZpbmQoKGl0ZW0pID0+IChpdGVtIGFzIEljb25UYWJGaWx0ZXIpLmdldEtleSgpID09PSBjb250cm9sU3RhdGUuc2VsZWN0ZWRLZXkpKSB7XG5cdFx0XHRcdFx0dGFiQmFyLnNldFNlbGVjdGVkS2V5KGNvbnRyb2xTdGF0ZS5zZWxlY3RlZEtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdFwic2FwLnVpLm1kYy5UYWJsZVwiOiB7XG5cdFx0cmVmcmVzaEJpbmRpbmc6IGZ1bmN0aW9uIChvVGFibGU6IE1EQ1RhYmxlKSB7XG5cdFx0XHRjb25zdCBvVGFibGVCaW5kaW5nID0gb1RhYmxlLmdldFJvd0JpbmRpbmcoKTtcblx0XHRcdGlmIChvVGFibGVCaW5kaW5nKSB7XG5cdFx0XHRcdGNvbnN0IG9Sb290QmluZGluZyA9IG9UYWJsZUJpbmRpbmcuZ2V0Um9vdEJpbmRpbmcoKTtcblx0XHRcdFx0Y29uc3QgYWdncmVnYXRpb24gPSBvVGFibGVCaW5kaW5nLmdldEFnZ3JlZ2F0aW9uKCkgYXMgeyBoaWVyYXJjaHlRdWFsaWZpZXI/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKG9Sb290QmluZGluZyA9PT0gb1RhYmxlQmluZGluZyAmJiBhZ2dyZWdhdGlvbj8uaGllcmFyY2h5UXVhbGlmaWVyID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHQvLyBhYnNvbHV0ZSBiaW5kaW5nIChleGNlcHQgVHJlZVRhYmxlLCB3aGVyZSB3ZSB3YW50IHRvIGtlZXAgZXhwYW5zaW9uIHN0YXRlcylcblx0XHRcdFx0XHRvVGFibGVCaW5kaW5nLnJlZnJlc2goKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyByZWxhdGl2ZSBiaW5kaW5nIG9yIFRyZWVUYWJsZVxuXHRcdFx0XHRcdGNvbnN0IG9IZWFkZXJDb250ZXh0ID0gb1RhYmxlQmluZGluZy5nZXRIZWFkZXJDb250ZXh0KCk7XG5cdFx0XHRcdFx0Y29uc3Qgc0dyb3VwSWQgPSBvVGFibGVCaW5kaW5nLmdldEdyb3VwSWQoKTtcblxuXHRcdFx0XHRcdGlmIChvSGVhZGVyQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0b0hlYWRlckNvbnRleHQucmVxdWVzdFNpZGVFZmZlY3RzKFt7ICROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBcIlwiIH1dLCBzR3JvdXBJZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRMb2cuaW5mbyhgVGFibGU6ICR7b1RhYmxlLmdldElkKCl9IHdhcyBub3QgcmVmcmVzaGVkLiBObyBiaW5kaW5nIGZvdW5kIWApO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0XCJzYXAubS5TZWdtZW50ZWRCdXR0b25cIjoge1xuXHRcdHJldHJpZXZlOiBmdW5jdGlvbiAob1NlZ21lbnRlZEJ1dHRvbjogU2VnbWVudGVkQnV0dG9uKTogeyBzZWxlY3RlZEtleTogc3RyaW5nIH0ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c2VsZWN0ZWRLZXk6IG9TZWdtZW50ZWRCdXR0b24uZ2V0U2VsZWN0ZWRLZXkoKVxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdGFwcGx5OiBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBvU2VnbWVudGVkQnV0dG9uOiBTZWdtZW50ZWRCdXR0b24sIG9Db250cm9sU3RhdGU/OiB7IHNlbGVjdGVkS2V5OiBzdHJpbmcgfSk6IHZvaWQge1xuXHRcdFx0aWYgKG9Db250cm9sU3RhdGU/LnNlbGVjdGVkS2V5ICYmIG9Db250cm9sU3RhdGUuc2VsZWN0ZWRLZXkgIT09IG9TZWdtZW50ZWRCdXR0b24uZ2V0U2VsZWN0ZWRLZXkoKSkge1xuXHRcdFx0XHRvU2VnbWVudGVkQnV0dG9uLnNldFNlbGVjdGVkS2V5KG9Db250cm9sU3RhdGUuc2VsZWN0ZWRLZXkpO1xuXHRcdFx0XHRpZiAob1NlZ21lbnRlZEJ1dHRvbi5nZXRQYXJlbnQoKT8uaXNBKFwic2FwLnVpLm1kYy5BY3Rpb25Ub29sYmFyXCIpKSB7XG5cdFx0XHRcdFx0b1NlZ21lbnRlZEJ1dHRvbi5maXJlRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdFwic2FwLm0uU2VsZWN0XCI6IHtcblx0XHRyZXRyaWV2ZTogZnVuY3Rpb24gKG9TZWxlY3Q6IFNlbGVjdCk6IHsgc2VsZWN0ZWRLZXk6IHN0cmluZyB9IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNlbGVjdGVkS2V5OiBvU2VsZWN0LmdldFNlbGVjdGVkS2V5KClcblx0XHRcdH07XG5cdFx0fSxcblx0XHRhcHBseTogZnVuY3Rpb24gKHRoaXM6IFZpZXdTdGF0ZSwgb1NlbGVjdDogU2VsZWN0LCBvQ29udHJvbFN0YXRlPzogeyBzZWxlY3RlZEtleTogc3RyaW5nIH0pOiB2b2lkIHtcblx0XHRcdGlmIChvQ29udHJvbFN0YXRlPy5zZWxlY3RlZEtleSAmJiBvQ29udHJvbFN0YXRlLnNlbGVjdGVkS2V5ICE9PSBvU2VsZWN0LmdldFNlbGVjdGVkS2V5KCkpIHtcblx0XHRcdFx0b1NlbGVjdC5zZXRTZWxlY3RlZEtleShvQ29udHJvbFN0YXRlLnNlbGVjdGVkS2V5KTtcblx0XHRcdFx0aWYgKG9TZWxlY3QuZ2V0UGFyZW50KCk/LmlzQShcInNhcC51aS5tZGMuQWN0aW9uVG9vbGJhclwiKSkge1xuXHRcdFx0XHRcdG9TZWxlY3QuZmlyZUV2ZW50KFwiY2hhbmdlXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRcInNhcC5mLkR5bmFtaWNQYWdlXCI6IHtcblx0XHRyZXRyaWV2ZTogZnVuY3Rpb24gKG9EeW5hbWljUGFnZTogRHluYW1pY1BhZ2UpOiB7IGhlYWRlckV4cGFuZGVkOiBib29sZWFuIH0ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aGVhZGVyRXhwYW5kZWQ6IG9EeW5hbWljUGFnZS5nZXRIZWFkZXJFeHBhbmRlZCgpXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0YXBwbHk6IGZ1bmN0aW9uIChvRHluYW1pY1BhZ2U6IER5bmFtaWNQYWdlLCBvQ29udHJvbFN0YXRlPzogeyBoZWFkZXJFeHBhbmRlZDogYm9vbGVhbiB9KTogdm9pZCB7XG5cdFx0XHRpZiAob0NvbnRyb2xTdGF0ZSkge1xuXHRcdFx0XHRvRHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQob0NvbnRyb2xTdGF0ZS5oZWFkZXJFeHBhbmRlZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI6IHtcblx0XHRyZXRyaWV2ZTogZnVuY3Rpb24gKG9WaWV3OiBGRVZpZXcpIHtcblx0XHRcdGNvbnN0IG9Db250cm9sbGVyID0gb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0aWYgKG9Db250cm9sbGVyICYmIG9Db250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRyZXR1cm4gb0NvbnRyb2xsZXIudmlld1N0YXRlLnJldHJpZXZlVmlld1N0YXRlKCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge307XG5cdFx0fSxcblx0XHRhcHBseTogYXN5bmMgZnVuY3Rpb24gKG9WaWV3OiBGRVZpZXcsIG9Db250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSwgb05hdlBhcmFtZXRlcnM/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLCBza2lwTWVyZ2U/OiBib29sZWFuKSB7XG5cdFx0XHRjb25zdCBvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKTtcblx0XHRcdGlmIChvQ29udHJvbGxlciAmJiBvQ29udHJvbGxlci52aWV3U3RhdGUgJiYgb05hdlBhcmFtZXRlcnMpIHtcblx0XHRcdFx0cmV0dXJuIG9Db250cm9sbGVyLnZpZXdTdGF0ZS5hcHBseVZpZXdTdGF0ZShvQ29udHJvbFN0YXRlLCBvTmF2UGFyYW1ldGVycywgc2tpcE1lcmdlKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlZnJlc2hCaW5kaW5nOiBhc3luYyBmdW5jdGlvbiAob1ZpZXc6IEZFVmlldykge1xuXHRcdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCk7XG5cdFx0XHRpZiAob0NvbnRyb2xsZXIgJiYgb0NvbnRyb2xsZXIudmlld1N0YXRlKSB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbGxlci52aWV3U3RhdGUucmVmcmVzaFZpZXdCaW5kaW5ncygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0XCJzYXAudWkuY29yZS5Db21wb25lbnRDb250YWluZXJcIjoge1xuXHRcdHJldHJpZXZlOiBhc3luYyBmdW5jdGlvbiAodGhpczogVmlld1N0YXRlLCBvQ29tcG9uZW50Q29udGFpbmVyOiBDb21wb25lbnRDb250YWluZXIpOiBQcm9taXNlPG9iamVjdD4ge1xuXHRcdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db21wb25lbnRDb250YWluZXIuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTtcblx0XHRcdGlmIChvQ29tcG9uZW50KSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLnJldHJpZXZlQ29udHJvbFN0YXRlKG9Db21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge30gYXMgb2JqZWN0O1xuXHRcdH0sXG5cdFx0YXBwbHk6IGFzeW5jIGZ1bmN0aW9uIChcblx0XHRcdHRoaXM6IFZpZXdTdGF0ZSxcblx0XHRcdG9Db21wb25lbnRDb250YWluZXI6IENvbXBvbmVudENvbnRhaW5lcixcblx0XHRcdG9Db250cm9sU3RhdGU6IG9iamVjdCxcblx0XHRcdG9OYXZQYXJhbWV0ZXJzPzogTmF2aWdhdGlvblBhcmFtZXRlclxuXHRcdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0Y29uc3Qgb0NvbXBvbmVudCA9IG9Db21wb25lbnRDb250YWluZXIuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKTtcblx0XHRcdGlmIChvQ29tcG9uZW50KSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmFwcGx5Q29udHJvbFN0YXRlKG9Db21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSwgb0NvbnRyb2xTdGF0ZSwgb05hdlBhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcbi8qKlxuICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBmb3Igc3RhdGUgaGFuZGxpbmdcbiAqXG4gKiBJZiB5b3UgbmVlZCB0byBtYWludGFpbiBhIHNwZWNpZmljIHN0YXRlIGZvciB5b3VyIGFwcGxpY2F0aW9uLCB5b3UgY2FuIHVzZSB0aGUgY29udHJvbGxlciBleHRlbnNpb24uXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS44NS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlZpZXdTdGF0ZVwiKVxuY2xhc3MgVmlld1N0YXRlIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByaXZhdGUgX2lSZXRyaWV2aW5nU3RhdGVDb3VudGVyOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBfcEluaXRpYWxTdGF0ZUFwcGxpZWQ6IFByb21pc2U8dW5rbm93bj47XG5cblx0cHJpdmF0ZSBfcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlPzogRnVuY3Rpb247XG5cblx0cHVibGljIGJhc2UhOiBQYWdlQ29udHJvbGxlcjtcblxuXHRpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuXHRjb250cm9sc1ZhcmlhbnRJZFVuYXZhaWxhYmxlOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGludmFsaWRhdGVJbml0aWFsU3RhdGVGb3JBcHBseTogc3RyaW5nW10gPSBbXTtcblxuXHR2aWV3U3RhdGVDb250cm9sczogTWFuYWdlZE9iamVjdFtdID0gW107XG5cblx0c3RhdGVDb250cmlidXRvcnM6IChNYW5hZ2VkT2JqZWN0ICYgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+KVtdID0gW107XG5cblx0X2N1cnJlbnRWaWV3U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRjb25maWdPZlN0YXRlQXBwbHk/OiB7XG5cdFx0c2tpcE1lcmdlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0XHRuYXZUeXBlUGFyYW1ldGVycz86IE5hdlBhcmFtZXRlcnM7XG5cdFx0c3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0fTtcblxuXHRwcml2YXRlIHVwZGF0ZUFwcFN0YXRlVGltZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogQ29uc3RydWN0b3IuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2lSZXRyaWV2aW5nU3RhdGVDb3VudGVyID0gMDtcblx0XHR0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHR0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmUgPSByZXNvbHZlO1xuXHRcdH0pO1xuXHR9XG5cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHJlZnJlc2hWaWV3QmluZGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYUNvbnRyb2xzID0gYXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyh0aGlzLmJhc2Uudmlld1N0YXRlLmFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9scyk7XG5cdFx0bGV0IG9Qcm9taXNlQ2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRhQ29udHJvbHNcblx0XHRcdC5maWx0ZXIoKG9Db250cm9sKSA9PiB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbCAmJiBvQ29udHJvbC5pc0EgJiYgb0NvbnRyb2wuaXNBPE1hbmFnZWRPYmplY3Q+KFwic2FwLnVpLmJhc2UuTWFuYWdlZE9iamVjdFwiKTtcblx0XHRcdH0pXG5cdFx0XHQuZm9yRWFjaCgob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IHtcblx0XHRcdFx0b1Byb21pc2VDaGFpbiA9IG9Qcm9taXNlQ2hhaW4udGhlbih0aGlzLnJlZnJlc2hDb250cm9sQmluZGluZy5iaW5kKHRoaXMsIG9Db250cm9sKSk7XG5cdFx0XHR9KTtcblx0XHRyZXR1cm4gb1Byb21pc2VDaGFpbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhZGQgYWxsIGNvbnRyb2xzIHJlbGV2YW50IGZvciByZWZyZXNoaW5nIHRvIHRoZSBwcm92aWRlZCBjb250cm9sIGFycmF5LlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gYUNvbGxlY3RlZENvbnRyb2xzIFRoZSBjb2xsZWN0ZWQgY29udHJvbHNcblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGFkYXB0QmluZGluZ1JlZnJlc2hDb250cm9scyhhQ29sbGVjdGVkQ29udHJvbHM6IE1hbmFnZWRPYmplY3RbXSk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRlblxuXHR9XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyByZWZyZXNoQ29udHJvbEJpbmRpbmcob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvQ29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlciA9IHRoaXMuZ2V0Q29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlcihvQ29udHJvbCk7XG5cdFx0bGV0IG9Qcm9taXNlQ2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRpZiAodHlwZW9mIG9Db250cm9sUmVmcmVzaEJpbmRpbmdIYW5kbGVyLnJlZnJlc2hCaW5kaW5nICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdExvZy5pbmZvKGByZWZyZXNoQmluZGluZyBoYW5kbGVyIGZvciBjb250cm9sOiAke29Db250cm9sLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfSBpcyBub3QgcHJvdmlkZWRgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1Byb21pc2VDaGFpbiA9IG9Qcm9taXNlQ2hhaW4udGhlbihvQ29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlci5yZWZyZXNoQmluZGluZy5iaW5kKHRoaXMsIG9Db250cm9sKSk7XG5cdFx0fVxuXHRcdHJldHVybiBvUHJvbWlzZUNoYWluO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBtYXAgb2YgPGNvZGU+cmVmcmVzaEJpbmRpbmc8L2NvZGU+IGZ1bmN0aW9uIGZvciBhIGNlcnRhaW4gY29udHJvbC5cblx0ICogQHBhcmFtIG9Db250cm9sIFRoZSBjb250cm9sIHRvIGdldCBzdGF0ZSBoYW5kbGVyIGZvclxuXHQgKiBAcmV0dXJucyBBIHBsYWluIG9iamVjdCB3aXRoIG9uZSBmdW5jdGlvbjogPGNvZGU+cmVmcmVzaEJpbmRpbmc8L2NvZGU+XG5cdCAqL1xuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0Z2V0Q29udHJvbFJlZnJlc2hCaW5kaW5nSGFuZGxlcihvQ29udHJvbDogTWFuYWdlZE9iamVjdCk6IHtcblx0XHRyZWZyZXNoQmluZGluZz86IChvQ29udHJvbDogTWFuYWdlZE9iamVjdCkgPT4gdm9pZDtcblx0fSB7XG5cdFx0Y29uc3Qgb1JlZnJlc2hCaW5kaW5nSGFuZGxlcjoge1xuXHRcdFx0cmVmcmVzaEJpbmRpbmc/OiAob0NvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IHZvaWQ7XG5cdFx0fSA9IHt9O1xuXHRcdGlmIChvQ29udHJvbCkge1xuXHRcdFx0Zm9yIChjb25zdCBzVHlwZSBpbiBfbUNvbnRyb2xTdGF0ZUhhbmRsZXJNYXApIHtcblx0XHRcdFx0aWYgKG9Db250cm9sLmlzQShzVHlwZSkpIHtcblx0XHRcdFx0XHQvLyBwYXNzIG9ubHkgdGhlIHJlZnJlc2hCaW5kaW5nIGhhbmRsZXIgaW4gYW4gb2JqZWN0IHNvIHRoYXQgOlxuXHRcdFx0XHRcdC8vIDEuIEFwcGxpY2F0aW9uIGhhcyBhY2Nlc3Mgb25seSB0byByZWZyZXNoQmluZGluZyBhbmQgbm90IGFwcGx5IGFuZCByZXRlcml2ZSBhdCB0aGlzIHN0YWdlXG5cdFx0XHRcdFx0Ly8gMi4gQXBwbGljYXRpb24gbW9kaWZpY2F0aW9ucyB0byB0aGUgb2JqZWN0IHdpbGwgYmUgcmVmbGVjdGVkIGhlcmUgKGFzIHdlIHBhc3MgYnkgcmVmZXJlbmNlKVxuXHRcdFx0XHRcdG9SZWZyZXNoQmluZGluZ0hhbmRsZXJbXCJyZWZyZXNoQmluZGluZ1wiXSA9XG5cdFx0XHRcdFx0XHQoX21Db250cm9sU3RhdGVIYW5kbGVyTWFwW3NUeXBlIGFzIGtleW9mIENvbnRyb2xTdGF0ZU1hcF0ucmVmcmVzaEJpbmRpbmcgYXMgKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KSA9PiB2b2lkKSB8fFxuXHRcdFx0XHRcdFx0e307XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5iYXNlLnZpZXdTdGF0ZS5hZGFwdEJpbmRpbmdSZWZyZXNoSGFuZGxlcihvQ29udHJvbCwgb1JlZnJlc2hCaW5kaW5nSGFuZGxlcik7XG5cdFx0cmV0dXJuIG9SZWZyZXNoQmluZGluZ0hhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogQ3VzdG9taXplIHRoZSA8Y29kZT5yZWZyZXNoQmluZGluZzwvY29kZT4gZnVuY3Rpb24gZm9yIGEgY2VydGFpbiBjb250cm9sLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gX29Db250cm9sIFRoZSBjb250cm9sIGZvciB3aGljaCB0aGUgcmVmcmVzaCBoYW5kbGVyIGlzIGFkYXB0ZWQuXG5cdCAqIEBwYXJhbSBfb0NvbnRyb2xIYW5kbGVyIEEgcGxhaW4gb2JqZWN0IHdoaWNoIGNhbiBoYXZlIG9uZSBmdW5jdGlvbjogPGNvZGU+cmVmcmVzaEJpbmRpbmc8L2NvZGU+XG5cdCAqIEBwYXJhbSBfb0NvbnRyb2xIYW5kbGVyLnJlZnJlc2hCaW5kaW5nXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0YWRhcHRCaW5kaW5nUmVmcmVzaEhhbmRsZXIoXG5cdFx0X29Db250cm9sOiBNYW5hZ2VkT2JqZWN0LFxuXHRcdF9vQ29udHJvbEhhbmRsZXI6IHtcblx0XHRcdHJlZnJlc2hCaW5kaW5nPzogKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KSA9PiB2b2lkO1xuXHRcdH1cblx0KTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGVuXG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHN1c3BlbmRlZCBkdWUgdG8ga2VlcC1hbGl2ZSBtb2RlLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uU3VzcGVuZCgpOiB2b2lkIHtcblx0XHQvLyB0byBiZSBvdmVycmlkZW5cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgcmVzdG9yZWQgZHVlIHRvIGtlZXAtYWxpdmUgbW9kZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRvblJlc3RvcmUoKTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGVuXG5cdH1cblxuXHQvKipcblx0ICogRGVzdHJ1Y3RvciBtZXRob2QgZm9yIG9iamVjdHMuXG5cdCAqL1xuXHRkZXN0cm95KCk6IHZvaWQge1xuXHRcdGRlbGV0ZSB0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmU7XG5cdFx0c3VwZXIuZGVzdHJveSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhlbHBlciBmdW5jdGlvbiB0byBlbmFibGUgbXVsdGkgb3ZlcnJpZGUuIEl0IGlzIGFkZGluZyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciAoYXJyYXkpIHRvIHRoZSBwcm92aWRlZFxuXHQgKiBmdW5jdGlvbiAoYW5kIGl0cyBwYXJhbWV0ZXJzKSwgdGhhdCB3aWxsIGJlIGV2YWx1YXRlZCB2aWEgPGNvZGU+UHJvbWlzZS5hbGw8L2NvZGU+LlxuXHQgKiBAcGFyYW0gZm5DYWxsIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWRcblx0ICogQHBhcmFtIGFyZ3Ncblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRvIGJlIHJlc29sdmVkIHdpdGggdGhlIHJlc3VsdCBvZiBhbGwgb3ZlcnJpZGVzXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIGNvbGxlY3RSZXN1bHRzKGZuQ2FsbDogRnVuY3Rpb24sIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8Q29udHJvbFtdPiB7XG5cdFx0Y29uc3QgYVJlc3VsdHM6IENvbnRyb2xbXSA9IFtdO1xuXHRcdGFyZ3MucHVzaChhUmVzdWx0cyk7XG5cdFx0Zm5DYWxsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChhUmVzdWx0cyk7XG5cdH1cblxuXHQvKipcblx0ICogQ3VzdG9taXplIHRoZSA8Y29kZT5yZXRyaWV2ZTwvY29kZT4gYW5kIDxjb2RlPmFwcGx5PC9jb2RlPiBmdW5jdGlvbnMgZm9yIGEgY2VydGFpbiBjb250cm9sLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIGNvbnRyb2wgdG8gZ2V0IHN0YXRlIGhhbmRsZXIgZm9yXG5cdCAqIEBwYXJhbSBhQ29udHJvbEhhbmRsZXIgQSBsaXN0IG9mIHBsYWluIG9iamVjdHMgd2l0aCB0d28gZnVuY3Rpb25zOiA8Y29kZT5yZXRyaWV2ZTwvY29kZT4gYW5kIDxjb2RlPmFwcGx5PC9jb2RlPlxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0YWRhcHRDb250cm9sU3RhdGVIYW5kbGVyKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LCBhQ29udHJvbEhhbmRsZXI6IG9iamVjdFtdKTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWVkZWRcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgbWFwIG9mIDxjb2RlPnJldHJpZXZlPC9jb2RlPiBhbmQgPGNvZGU+YXBwbHk8L2NvZGU+IGZ1bmN0aW9ucyBmb3IgYSBjZXJ0YWluIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBUaGUgY29udHJvbCB0byBnZXQgc3RhdGUgaGFuZGxlciBmb3Jcblx0ICogQHJldHVybnMgQSBwbGFpbiBvYmplY3Qgd2l0aCB0d28gZnVuY3Rpb25zOiA8Y29kZT5yZXRyaWV2ZTwvY29kZT4gYW5kIDxjb2RlPmFwcGx5PC9jb2RlPlxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRDb250cm9sU3RhdGVIYW5kbGVyKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KTogQ29udHJvbFN0YXRlSGFuZGxlcjxNYW5hZ2VkT2JqZWN0LCBvYmplY3Q+W10ge1xuXHRcdGNvbnN0IGFJbnRlcm5hbENvbnRyb2xTdGF0ZUhhbmRsZXI6IENvbnRyb2xTdGF0ZUhhbmRsZXI8TWFuYWdlZE9iamVjdCwgb2JqZWN0PltdID0gW10sXG5cdFx0XHRhQ3VzdG9tQ29udHJvbFN0YXRlSGFuZGxlcjogQ29udHJvbFN0YXRlSGFuZGxlcjxNYW5hZ2VkT2JqZWN0LCBvYmplY3Q+W10gPSBbXTtcblx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0b0NvbnRyb2wuaXNBPElWaWV3U3RhdGVDb250cmlidXRvcjxvYmplY3Q+PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIikgJiZcblx0XHRcdFx0b0NvbnRyb2wucmV0cmlldmVTdGF0ZSAmJlxuXHRcdFx0XHRvQ29udHJvbC5hcHBseVN0YXRlXG5cdFx0XHQpIHtcblx0XHRcdFx0YUludGVybmFsQ29udHJvbFN0YXRlSGFuZGxlci5wdXNoKHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcblx0XHRcdFx0XHRyZXRyaWV2ZTogYXN5bmMgKF9jb250cm9sKSA9PiBvQ29udHJvbC5yZXRyaWV2ZVN0YXRlLmJpbmQob0NvbnRyb2wpKCksXG5cblx0XHRcdFx0XHRhcHBseTogYXN5bmMgKFxuXHRcdFx0XHRcdFx0X2NvbnRyb2w6IE1hbmFnZWRPYmplY3QsXG5cdFx0XHRcdFx0XHRjb250cm9sU3RhdGU/OiBvYmplY3QsXG5cdFx0XHRcdFx0XHRvTmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0XHRcdFx0XHRza2lwTWVyZ2U/OiBib29sZWFuXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcblx0XHRcdFx0XHQpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IHNob3VsZEFwcGx5RGlmZlN0YXRlID1cblx0XHRcdFx0XHRcdFx0IXRoaXMuaW52YWxpZGF0ZUluaXRpYWxTdGF0ZUZvckFwcGx5LmluY2x1ZGVzKG9Db250cm9sLmdldElkKCkpICYmXG5cdFx0XHRcdFx0XHRcdCF0aGlzLmNvbnRyb2xzVmFyaWFudElkVW5hdmFpbGFibGUuaW5jbHVkZXMob0NvbnRyb2wuZ2V0SWQoKSkgJiZcblx0XHRcdFx0XHRcdFx0b05hdlBhcmFtZXRlcnM/Lm5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmh5YnJpZCAmJlxuXHRcdFx0XHRcdFx0XHRza2lwTWVyZ2UgIT09IHRydWU7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnRyb2xTdGF0ZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAob0NvbnRyb2wuYXBwbHlMZWdhY3lTdGF0ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGF3YWl0IG9Db250cm9sLmFwcGx5TGVnYWN5U3RhdGUuYmluZChvQ29udHJvbCkoXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldENvbnRyb2xTdGF0ZS5iaW5kKHRoaXMpLFxuXHRcdFx0XHRcdFx0XHRcdFx0b05hdlBhcmFtZXRlcnMsXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG91bGRBcHBseURpZmZTdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGF3YWl0IG9Db250cm9sLmFwcGx5U3RhdGUuYmluZChvQ29udHJvbCkoY29udHJvbFN0YXRlLCBvTmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUsIHNraXBNZXJnZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoY29uc3Qgc1R5cGUgaW4gX21Db250cm9sU3RhdGVIYW5kbGVyTWFwKSB7XG5cdFx0XHRcdFx0aWYgKG9Db250cm9sLmlzQShzVHlwZSkpIHtcblx0XHRcdFx0XHRcdC8vIGF2b2lkIGRpcmVjdCBtYW5pcHVsYXRpb24gb2YgaW50ZXJuYWwgX21Db250cm9sU3RhdGVIYW5kbGVyTWFwXG5cdFx0XHRcdFx0XHRhSW50ZXJuYWxDb250cm9sU3RhdGVIYW5kbGVyLnB1c2goXG5cdFx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24oe30sIF9tQ29udHJvbFN0YXRlSGFuZGxlck1hcFtzVHlwZSBhcyBrZXlvZiBDb250cm9sU3RhdGVNYXBdKSBhcyBDb250cm9sU3RhdGVIYW5kbGVyPFxuXHRcdFx0XHRcdFx0XHRcdE1hbmFnZWRPYmplY3QsXG5cdFx0XHRcdFx0XHRcdFx0b2JqZWN0XG5cdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0dGhpcy5iYXNlLnZpZXdTdGF0ZS5hZGFwdENvbnRyb2xTdGF0ZUhhbmRsZXIob0NvbnRyb2wsIGFDdXN0b21Db250cm9sU3RhdGVIYW5kbGVyKTtcblx0XHRyZXR1cm4gYUludGVybmFsQ29udHJvbFN0YXRlSGFuZGxlci5jb25jYXQoYUN1c3RvbUNvbnRyb2xTdGF0ZUhhbmRsZXIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFkZCBhbGwgY29udHJvbHMgZm9yIGdpdmVuIHZpZXcgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBmb3IgdGhlIHN0YXRlIGhhbmRsaW5nIHRvIHRoZSBwcm92aWRlZCBjb250cm9sIGFycmF5LlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gX2FDb2xsZWN0ZWRDb250cm9scyBUaGUgY29sbGVjdGVkIGNvbnRyb2xzXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0YWRhcHRTdGF0ZUNvbnRyb2xzKF9hQ29sbGVjdGVkQ29udHJvbHM6IE1hbmFnZWRPYmplY3RbXSk6IHZvaWQge1xuXHRcdF9hQ29sbGVjdGVkQ29udHJvbHMucHVzaCguLi50aGlzLnN0YXRlQ29udHJpYnV0b3JzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBrZXkgdG8gYmUgdXNlZCBmb3IgZ2l2ZW4gY29udHJvbC5cblx0ICogQHBhcmFtIG9Db250cm9sIFRoZSBjb250cm9sIHRvIGdldCBzdGF0ZSBrZXkgZm9yXG5cdCAqIEByZXR1cm5zIFRoZSBrZXkgdG8gYmUgdXNlZCBmb3Igc3RvcmluZyB0aGUgY29udHJvbHMgc3RhdGVcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRnZXRTdGF0ZUtleShvQ29udHJvbDogTWFuYWdlZE9iamVjdCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmdldExvY2FsSWQob0NvbnRyb2wuZ2V0SWQoKSkgfHwgb0NvbnRyb2wuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSB0aGUgdmlldyBzdGF0ZSBvZiB0aGlzIGV4dGVuc2lvbnMgdmlldy5cblx0ICogV2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBiZWZvcmUgZmluaXNoaW5nLCBhbGwgYnV0IHRoZSBmaW5hbCByZXNwb25zZSB3aWxsIHJlc29sdmUgdG8gPGNvZGU+dW5kZWZpbmVkPC9jb2RlPi5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgdmlldyBzdGF0ZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0YXN5bmMgcmV0cmlldmVWaWV3U3RhdGUoKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZD4ge1xuXHRcdCsrdGhpcy5faVJldHJpZXZpbmdTdGF0ZUNvdW50ZXI7XG5cdFx0bGV0IG9WaWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHRoaXMuX3BJbml0aWFsU3RhdGVBcHBsaWVkO1xuXHRcdFx0Y29uc3QgYUNvbnRyb2xzOiAoTWFuYWdlZE9iamVjdCB8IHVuZGVmaW5lZClbXSA9IGF3YWl0IHRoaXMuY29sbGVjdFJlc3VsdHModGhpcy5iYXNlLnZpZXdTdGF0ZS5hZGFwdFN0YXRlQ29udHJvbHMpO1xuXHRcdFx0Y29uc3QgYVJlc29sdmVkU3RhdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdChcblx0XHRcdFx0XHRhQ29udHJvbHMuZmlsdGVyKGZ1bmN0aW9uIChvQ29udHJvbCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sICYmIG9Db250cm9sLmlzQSAmJiBvQ29udHJvbC5pc0E8TWFuYWdlZE9iamVjdD4oXCJzYXAudWkuYmFzZS5NYW5hZ2VkT2JqZWN0XCIpO1xuXHRcdFx0XHRcdH0pIGFzIE1hbmFnZWRPYmplY3RbXVxuXHRcdFx0XHQpLm1hcChhc3luYyAob0NvbnRyb2wpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5yZXRyaWV2ZUNvbnRyb2xTdGF0ZShvQ29udHJvbCkudGhlbigodlJlc3VsdDogdW5rbm93bikgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0a2V5OiB0aGlzLmdldFN0YXRlS2V5KG9Db250cm9sKSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHZSZXN1bHRcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pXG5cdFx0XHQpO1xuXHRcdFx0b1ZpZXdTdGF0ZSA9IGFSZXNvbHZlZFN0YXRlcy5yZWR1Y2UoZnVuY3Rpb24gKG9TdGF0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBtU3RhdGU6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pIHtcblx0XHRcdFx0Y29uc3Qgb0N1cnJlbnRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFx0b0N1cnJlbnRTdGF0ZVttU3RhdGUua2V5XSA9IG1TdGF0ZS52YWx1ZTtcblx0XHRcdFx0cmV0dXJuIG1lcmdlT2JqZWN0cyhvU3RhdGVzLCBvQ3VycmVudFN0YXRlKTtcblx0XHRcdH0sIHt9KTtcblx0XHRcdGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuX2N1cnJlbnRWaWV3U3RhdGU7XG5cdFx0XHRpZiAocHJldlN0YXRlICYmIE9iamVjdC5rZXlzKHByZXZTdGF0ZSkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLl9hZGRNaXNzaW5nU3RhdGUob1ZpZXdTdGF0ZSwgcHJldlN0YXRlKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IG1BZGRpdGlvbmFsU3RhdGVzID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3JldHJpZXZlQWRkaXRpb25hbFN0YXRlcygpKTtcblx0XHRcdGlmIChtQWRkaXRpb25hbFN0YXRlcyAmJiBPYmplY3Qua2V5cyhtQWRkaXRpb25hbFN0YXRlcykubGVuZ3RoKSB7XG5cdFx0XHRcdG9WaWV3U3RhdGVbQURESVRJT05BTF9TVEFURVNfS0VZXSA9IG1BZGRpdGlvbmFsU3RhdGVzO1xuXHRcdFx0fVxuXHRcdH0gZmluYWxseSB7XG5cdFx0XHQtLXRoaXMuX2lSZXRyaWV2aW5nU3RhdGVDb3VudGVyO1xuXHRcdH1cblx0XHR0aGlzLl9jdXJyZW50Vmlld1N0YXRlID0gb1ZpZXdTdGF0ZTtcblx0XHRyZXR1cm4gdGhpcy5faVJldHJpZXZpbmdTdGF0ZUNvdW50ZXIgPT09IDAgPyBvVmlld1N0YXRlIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0Ly8gVG8gY2FycnkgZm9yd2FyZCB1bmFwcGxpZWQgc3RhdGUgbG9zdCBkdWUgdG8gbGF6eSBsb2FkaW5nIG9mIGNvbnRyb2xzLlxuXHQvL1xuXHQvLyBJZiB1c2VyIDEgY2hhbmdlcyBhIGNvbnRyb2wncyBzdGF0ZSBpbiBhIGxhenktbG9hZGVkIHNlY3Rpb24gYW5kIG5hdmlnYXRlcyBhd2F5LCB0aGVuIHNoYXJlcyB0aGUgVVJMIHdpdGggdXNlciAyLFxuXHQvLyB3aG8gZG9lc24ndCB2aXNpdCB0aGUgbGF6eS1sb2FkZWQgc2VjdGlvbiwgdGhlIGNvbnRyb2wncyBzdGF0ZSBpcyBtaXNzZWQgaW4gdGhlIG5ldyBhcHAgc3RhdGUuXG5cdC8vIFRoaXMgZW5zdXJlcyB0aGUgZnVsbCBzdGF0ZSBmcm9tIHVzZXIgMSBpcyBwcmVzZXJ2ZWQgYW5kIHRyYW5zZmVycmVkIHRvIHVzZXIgMyB3aGVuIHRoZSBVUkwgaXMgc2hhcmVkLlxuXHRfYWRkTWlzc2luZ1N0YXRlKG9WaWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcmV2U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gcHJldlN0YXRlKSB7XG5cdFx0XHRpZiAoIShrZXkgaW4gb1ZpZXdTdGF0ZSkpIHtcblx0XHRcdFx0b1ZpZXdTdGF0ZVtrZXldID0gcHJldlN0YXRlW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEV4dGVuZCB0aGUgbWFwIG9mIGFkZGl0aW9uYWwgc3RhdGVzIChub3QgY29udHJvbCBib3VuZCkgdG8gYmUgYWRkZWQgdG8gdGhlIGN1cnJlbnQgdmlldyBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdmlldy5cblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0ICogQHBhcmFtIG1BZGRpdGlvbmFsU3RhdGVzIFRoZSBhZGRpdGlvbmFsIHN0YXRlXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRyZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMobUFkZGl0aW9uYWxTdGF0ZXM6IG9iamVjdCk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVlZGVkXG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIG1hcCBvZiBhZGRpdGlvbmFsIHN0YXRlcyAobm90IGNvbnRyb2wgYm91bmQpIHRvIGJlIGFkZGVkIHRvIHRoZSBjdXJyZW50IHZpZXcgc3RhdGUgb2YgdGhlIGdpdmVuIHZpZXcuXG5cdCAqIEByZXR1cm5zIEFkZGl0aW9uYWwgdmlldyBzdGF0ZXNcblx0ICovXG5cdF9yZXRyaWV2ZUFkZGl0aW9uYWxTdGF0ZXMoKTogdW5rbm93biB7XG5cdFx0Y29uc3QgbUFkZGl0aW9uYWxTdGF0ZXMgPSB7fTtcblx0XHR0aGlzLmJhc2Uudmlld1N0YXRlLnJldHJpZXZlQWRkaXRpb25hbFN0YXRlcyhtQWRkaXRpb25hbFN0YXRlcyk7XG5cdFx0cmV0dXJuIG1BZGRpdGlvbmFsU3RhdGVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIHRoZSBnaXZlbiBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIG9iamVjdCB0byBnZXQgdGhlIHN0YXRlIGZvclxuXHQgKiBAcmV0dXJucyBUaGUgc3RhdGUgZm9yIHRoZSBnaXZlbiBjb250cm9sXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHJldHJpZXZlQ29udHJvbFN0YXRlKG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTxvYmplY3Q+IHtcblx0XHRjb25zdCBhQ29udHJvbFN0YXRlSGFuZGxlcnMgPSB0aGlzLmdldENvbnRyb2xTdGF0ZUhhbmRsZXIob0NvbnRyb2wpO1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChcblx0XHRcdGFDb250cm9sU3RhdGVIYW5kbGVycy5tYXAoYXN5bmMgKG1Db250cm9sU3RhdGVIYW5kbGVyKSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgbUNvbnRyb2xTdGF0ZUhhbmRsZXIucmV0cmlldmUgIT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgY29udHJvbFN0YXRlSGFuZGxlci5yZXRyaWV2ZSBpcyBub3QgYSBmdW5jdGlvbiBmb3IgY29udHJvbDogJHtvQ29udHJvbC5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbUNvbnRyb2xTdGF0ZUhhbmRsZXIucmV0cmlldmUuY2FsbCh0aGlzLCBvQ29udHJvbCk7XG5cdFx0XHR9KVxuXHRcdCkudGhlbigoYVN0YXRlczogb2JqZWN0W10pID0+IHtcblx0XHRcdHJldHVybiBhU3RhdGVzLnJlZHVjZShmdW5jdGlvbiAob0ZpbmFsU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBvQ3VycmVudFN0YXRlOiBvYmplY3QpIHtcblx0XHRcdFx0cmV0dXJuIG1lcmdlT2JqZWN0cyhvRmluYWxTdGF0ZSwgb0N1cnJlbnRTdGF0ZSk7XG5cdFx0XHR9LCB7fSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIHRoZSB2aWV3IHN0YXRlIHNob3VsZCBvbmx5IGJlIGFwcGxpZWQgb25jZSBpbml0aWFsbHkuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSW1wb3J0YW50OlxuXHQgKiBZb3Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgZm9yIGN1c3RvbSBwYWdlcyBhbmQgbm90IGZvciB0aGUgc3RhbmRhcmQgTGlzdFJlcG9ydFBhZ2UgYW5kIE9iamVjdFBhZ2UhXG5cdCAqIEByZXR1cm5zIElmIDxjb2RlPnRydWU8L2NvZGU+LCBvbmx5IHRoZSBpbml0aWFsIHZpZXcgc3RhdGUgaXMgYXBwbGllZCBvbmNlLFxuXHQgKiBlbHNlIGFueSBuZXcgdmlldyBzdGF0ZSBpcyBhbHNvIGFwcGxpZWQgb24gZm9sbG93LXVwIGNhbGxzIChkZWZhdWx0KVxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uSW5zdGVhZClcblx0YXBwbHlJbml0aWFsU3RhdGVPbmx5KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgc3RhdGUgb2YgYSBzcGVjaWZpYyBjb250cm9sLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGUgbWFuYWdlZCBjb250cm9sIG9iamVjdCB3aG9zZSBzdGF0ZSBpcyB0byBiZSByZXRyaWV2ZWQuXG5cdCAqIEByZXR1cm5zIC0gVGhlIHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgY29udHJvbC5cblx0ICovXG5cdGdldENvbnRyb2xTdGF0ZShjb250cm9sOiBNYW5hZ2VkT2JqZWN0KTogQ29udHJvbFN0YXRlIHtcblx0XHRjb25zdCBvVmlld1N0YXRlID0gdGhpcy5fY3VycmVudFZpZXdTdGF0ZTtcblx0XHRsZXQgY29udHJvbFN0YXRlOiBDb250cm9sU3RhdGUgPSB7fTtcblx0XHRpZiAob1ZpZXdTdGF0ZSkge1xuXHRcdFx0Y29uc3QgY29udHJvbEtleSA9IHRoaXMuZ2V0U3RhdGVLZXkoY29udHJvbCk7XG5cdFx0XHRjb250cm9sU3RhdGUgPSBvVmlld1N0YXRlW2NvbnRyb2xLZXldIGFzIFJlY29yZDxzdHJpbmcsIENvbnRyb2xTdGF0ZT47XG5cdFx0fVxuXHRcdHJldHVybiBjb250cm9sU3RhdGU7XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyB0aGUgZ2l2ZW4gdmlldyBzdGF0ZSB0byB0aGlzIGV4dGVuc2lvbnMgdmlldy5cblx0ICogQHBhcmFtIG9WaWV3U3RhdGUgVGhlIHZpZXcgc3RhdGUgdG8gYXBwbHkgKGNhbiBiZSB1bmRlZmluZWQpXG5cdCAqIEBwYXJhbSBvTmF2UGFyYW1ldGVyIFRoZSBjdXJyZW50IG5hdmlnYXRpb24gcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSBvTmF2UGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlIFRoZSBhY3R1YWwgbmF2aWdhdGlvbiB0eXBlXG5cdCAqIEBwYXJhbSBvTmF2UGFyYW1ldGVyLnNlbGVjdGlvblZhcmlhbnQgVGhlIHNlbGVjdGlvblZhcmlhbnQgZnJvbSB0aGUgbmF2aWdhdGlvblxuXHQgKiBAcGFyYW0gb05hdlBhcmFtZXRlci5zZWxlY3Rpb25WYXJpYW50RGVmYXVsdHMgVGhlIHNlbGVjdGlvblZhcmlhbnQgZGVmYXVsdHMgZnJvbSB0aGUgbmF2aWdhdGlvblxuXHQgKiBAcGFyYW0gb05hdlBhcmFtZXRlci5yZXF1aXJlc1N0YW5kYXJkVmFyaWFudCBEZWZpbmVzIHdoZXRoZXIgdGhlIHN0YW5kYXJkIHZhcmlhbnQgbXVzdCBiZSB1c2VkIGluIHZhcmlhbnQgbWFuYWdlbWVudFxuXHQgKiBAcGFyYW0gc2tpcE1lcmdlIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyB0byBza2lwIHRoZSBrZXkgdXNlciBzaGluZSB0aHJvdWdoXG5cdCAqIEByZXR1cm5zIFByb21pc2UgZm9yIGFzeW5jIHN0YXRlIGhhbmRsaW5nXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyBhcHBseVZpZXdTdGF0ZShcblx0XHRvVmlld1N0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcblx0XHRvTmF2UGFyYW1ldGVyOiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdHNraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMuYmFzZS52aWV3U3RhdGUuYXBwbHlJbml0aWFsU3RhdGVPbmx5KCkgJiYgdGhpcy5fZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHQvL1NOT1c6IENTMjAyMzAwMDY3NjU4OTcgRm9yIHRyYW5zaWVudCBBcHBTdGF0ZSwgd2UgcmV0dXJuIHdpdGhvdXQgYXBwbHlpbmcgdGhlIHN0YXRlIHRvIGNvbnRyb2xzIGluIFJvb3RDb250YWluZXIncyBjaGlsZHJlbiB2aWV3cyBhcyB0aGVyZSBpcyBubyBzdGF0ZSB0byBhcHBseVxuXHRcdFx0Ly9Pbmx5IG5lZWQgaXMgdG8gcmVzb2x2ZSB0aGUgX3BJbml0aWFsU3RhdGVBcHBsaWVkIHNvIHRoYXQgdXBkYXRlIG9mIEFwcFN0YXRlIGNhbiBzdGlsbCBoYXBwZW5cblx0XHRcdGlmICh0aGlzLl9pc1N0YXRlRW1wdHlGb3JJQXBwU3RhdGVOYXZUeXBlKG9WaWV3U3RhdGUsIG9OYXZQYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpICYmICF0aGlzLl9faXNSb290Vmlld0NvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRhd2FpdCB0aGlzLmNvbGxlY3RSZXN1bHRzKHRoaXMuYmFzZS52aWV3U3RhdGUub25CZWZvcmVTdGF0ZUFwcGxpZWQsIFtdLCBvTmF2UGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlKTtcblx0XHRcdGNvbnN0IGFDb250cm9sczogTWFuYWdlZE9iamVjdFtdID0gYXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyh0aGlzLmJhc2Uudmlld1N0YXRlLmFkYXB0U3RhdGVDb250cm9scyk7XG5cdFx0XHR0aGlzLnZpZXdTdGF0ZUNvbnRyb2xzID0gYUNvbnRyb2xzO1xuXHRcdFx0bGV0IG9Qcm9taXNlQ2hhaW4gPSBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdGxldCBoYXNWYXJpYW50TWFuYWdlbWVudCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5fY3VycmVudFZpZXdTdGF0ZSA9IG9WaWV3U3RhdGU7XG5cblx0XHRcdHRoaXMuY29uZmlnT2ZTdGF0ZUFwcGx5ID0gdGhpcy5jb25maWdPZlN0YXRlQXBwbHkgPz8ge307XG5cdFx0XHR0aGlzLmNvbmZpZ09mU3RhdGVBcHBseS5za2lwTWVyZ2UgPSBza2lwTWVyZ2U7XG5cdFx0XHR0aGlzLmNvbmZpZ09mU3RhdGVBcHBseS5uYXZUeXBlUGFyYW1ldGVycyA9IG9OYXZQYXJhbWV0ZXI7XG5cdFx0XHR0aGlzLmNvbmZpZ09mU3RhdGVBcHBseS5zdGF0ZSA9IG9WaWV3U3RhdGU7XG5cblx0XHRcdC8qKlxuXHRcdFx0ICogVGhpcyBlbnN1cmVzIHRoYXQgdmFyaWFudE1hbmFnZW1lbnQgY29udHJvbCBpcyBhcHBsaWVkIGZpcnN0IHRvIGNhbGN1bGF0ZSB0aGUgaW5pdGlhbCBzdGF0ZSBmb3IgZGVsdGEgbG9naWNcblx0XHRcdCAqL1xuXHRcdFx0Y29uc3Qgc29ydGVkQWRhcHRTdGF0ZUNvbnRyb2xzID0gYUNvbnRyb2xzLnJlZHVjZSgobW9kaWZpZWRDb250cm9sczogTWFuYWdlZE9iamVjdFtdLCBjb250cm9sKSA9PiB7XG5cdFx0XHRcdGlmICghY29udHJvbCkge1xuXHRcdFx0XHRcdHJldHVybiBtb2RpZmllZENvbnRyb2xzO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGlzVmFyaWFudE1hbmFnZW1lbnRDb250cm9sID0gY29udHJvbC5pc0EoXCJzYXAudWkuZmwudmFyaWFudHMuVmFyaWFudE1hbmFnZW1lbnRcIik7XG5cdFx0XHRcdGlmICghaGFzVmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdFx0XHRoYXNWYXJpYW50TWFuYWdlbWVudCA9IGlzVmFyaWFudE1hbmFnZW1lbnRDb250cm9sO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1vZGlmaWVkQ29udHJvbHMgPSBpc1ZhcmlhbnRNYW5hZ2VtZW50Q29udHJvbCA/IFtjb250cm9sLCAuLi5tb2RpZmllZENvbnRyb2xzXSA6IFsuLi5tb2RpZmllZENvbnRyb2xzLCBjb250cm9sXTtcblx0XHRcdFx0cmV0dXJuIG1vZGlmaWVkQ29udHJvbHM7XG5cdFx0XHR9LCBbXSk7XG5cblx0XHRcdC8vIEluIGNhc2Ugb2Ygbm8gVmFyaWFudCBNYW5hZ2VtZW50LCB0aGlzIGVuc3VyZXMgdGhhdCBpbml0aWFsIHN0YXRlcyBpcyBzZXRcblx0XHRcdGlmICghaGFzVmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdFx0dGhpcy5fc2V0SW5pdGlhbFN0YXRlc0ZvckRlbHRhQ29tcHV0ZSgpO1xuXHRcdFx0fVxuXHRcdFx0c29ydGVkQWRhcHRTdGF0ZUNvbnRyb2xzXG5cdFx0XHRcdC5maWx0ZXIoZnVuY3Rpb24gKG9Db250cm9sKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sLmlzQShcInNhcC51aS5iYXNlLk1hbmFnZWRPYmplY3RcIik7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5mb3JFYWNoKChvQ29udHJvbCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHNLZXkgPSB0aGlzLmdldFN0YXRlS2V5KG9Db250cm9sKTtcblx0XHRcdFx0XHRvUHJvbWlzZUNoYWluID0gb1Byb21pc2VDaGFpbi50aGVuKFxuXHRcdFx0XHRcdFx0dGhpcy5hcHBseUNvbnRyb2xTdGF0ZS5iaW5kKFxuXHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRvQ29udHJvbCxcblx0XHRcdFx0XHRcdFx0KG9WaWV3U3RhdGUgPyBvVmlld1N0YXRlW3NLZXldIDogdW5kZWZpbmVkKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0XHRcdFx0b05hdlBhcmFtZXRlcixcblx0XHRcdFx0XHRcdFx0c2tpcE1lcmdlID8/IGZhbHNlXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdGF3YWl0IG9Qcm9taXNlQ2hhaW47XG5cdFx0XHRpZiAob05hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSA9PT0gTmF2VHlwZS5pQXBwU3RhdGUgfHwgb05hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZSA9PT0gTmF2VHlwZS5oeWJyaWQpIHtcblx0XHRcdFx0YXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyhcblx0XHRcdFx0XHR0aGlzLmJhc2Uudmlld1N0YXRlLmFwcGx5QWRkaXRpb25hbFN0YXRlcyxcblx0XHRcdFx0XHRvVmlld1N0YXRlID8gb1ZpZXdTdGF0ZVtBRERJVElPTkFMX1NUQVRFU19LRVldIDogdW5kZWZpbmVkXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhd2FpdCB0aGlzLmNvbGxlY3RSZXN1bHRzKHRoaXMuYmFzZS52aWV3U3RhdGUuYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycywgb05hdlBhcmFtZXRlcik7XG5cdFx0XHRcdGF3YWl0IHRoaXMuY29sbGVjdFJlc3VsdHModGhpcy5iYXNlLnZpZXdTdGF0ZS5fYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVyc1RvRmlsdGVyYmFyLCBvTmF2UGFyYW1ldGVyKTtcblx0XHRcdH1cblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCF0aGlzLl9pc1N0YXRlRW1wdHlGb3JJQXBwU3RhdGVOYXZUeXBlKG9WaWV3U3RhdGUsIG9OYXZQYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpKSB7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5jb2xsZWN0UmVzdWx0cyh0aGlzLmJhc2Uudmlld1N0YXRlLm9uQWZ0ZXJTdGF0ZUFwcGxpZWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKGUgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdF9jaGVja0lmVmFyaWFudElkSXNBdmFpbGFibGUob1ZNOiBWYXJpYW50TWFuYWdlbWVudCwgc1ZhcmlhbnRJZDogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGFWYXJpYW50cyA9IG9WTS5nZXRWYXJpYW50cygpO1xuXHRcdGxldCBiSXNDb250cm9sU3RhdGVWYXJpYW50QXZhaWxhYmxlID0gZmFsc2U7XG5cdFx0YVZhcmlhbnRzLmZvckVhY2goZnVuY3Rpb24gKG9WYXJpYW50KSB7XG5cdFx0XHRpZiAob1ZhcmlhbnQuZ2V0S2V5KCkgPT09IHNWYXJpYW50SWQpIHtcblx0XHRcdFx0YklzQ29udHJvbFN0YXRlVmFyaWFudEF2YWlsYWJsZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGJJc0NvbnRyb2xTdGF0ZVZhcmlhbnRBdmFpbGFibGU7XG5cdH1cblxuXHRfc2V0SW5pdGlhbFN0YXRlQXBwbGllZCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlKSB7XG5cdFx0XHRjb25zdCBwSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmUgPSB0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmU7XG5cdFx0XHRkZWxldGUgdGhpcy5fcEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlO1xuXHRcdFx0cEluaXRpYWxTdGF0ZUFwcGxpZWRSZXNvbHZlKCk7XG5cdFx0fVxuXHR9XG5cblx0X2dldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICF0aGlzLl9wSW5pdGlhbFN0YXRlQXBwbGllZFJlc29sdmU7XG5cdH1cblxuXHRfaXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZSh2aWV3U3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkLCBuYXZUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKCF2aWV3U3RhdGUgfHwgT2JqZWN0LmtleXModmlld1N0YXRlKS5sZW5ndGggPT09IDApICYmIG5hdlR5cGUgPT0gTmF2VHlwZS5pQXBwU3RhdGU7XG5cdH1cblxuXHRfX2lzUm9vdFZpZXdDb250cm9sbGVyKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHJvb3RWaWV3Q29udHJvbGxlciA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdHJldHVybiAoXG5cdFx0XHRyb290Vmlld0NvbnRyb2xsZXIuaXNBPE5hdkNvbnRhaW5lckNvbnRyb2xsZXI+KFwic2FwLmZlLmNvcmUucm9vdFZpZXcuTmF2Q29udGFpbmVyXCIpIHx8XG5cdFx0XHRyb290Vmlld0NvbnRyb2xsZXIuaXNBPEZjbENvbnRyb2xsZXI+KFwic2FwLmZlLmNvcmUucm9vdFZpZXcuRmNsXCIpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIb29rIHRvIHJlYWN0IGJlZm9yZSBhIHN0YXRlIGZvciBnaXZlbiB2aWV3IGlzIGFwcGxpZWQuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgRXh0ZW5zaWJsZSBhcnJheSBvZiBwcm9taXNlcyB0byBiZSByZXNvbHZlZCBiZWZvcmUgY29udGludWluZ1xuXHQgKiBAcGFyYW0gbmF2aWdhdGlvblR5cGUgTmF2aWdhdGlvbiB0eXBlIHJlc3BvbnNpYmxlIGZvciB0aGUgYXBwbHlpbmcgdGhlIHN0YXRlXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkJlZm9yZVN0YXRlQXBwbGllZChhUHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSwgbmF2aWdhdGlvblR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHQvLyB0byBiZSBvdmVycmlkZW5cblx0fVxuXG5cdC8qKlxuXHQgKiBIb29rIHRvIHJlYWN0IHdoZW4gc3RhdGUgZm9yIGdpdmVuIHZpZXcgd2FzIGFwcGxpZWQuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5BZnRlcn0uXG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgRXh0ZW5zaWJsZSBhcnJheSBvZiBwcm9taXNlcyB0byBiZSByZXNvbHZlZCBiZWZvcmUgY29udGludWluZ1xuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0b25BZnRlclN0YXRlQXBwbGllZChhUHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj4pOiB2b2lkIHtcblx0XHQvLyB0byBiZSBvdmVycmlkZW5cblx0fVxuXG5cdC8qKlxuXHQgKiBBcHBseWluZyBhZGRpdGlvbmFsLCBub3QgY29udHJvbCByZWxhdGVkLCBzdGF0ZXMgLSBpcyBjYWxsZWQgb25seSBpZiBuYXZpZ2F0aW9uIHR5cGUgaXMgaUFwcFN0YXRlLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIGluZGl2aWR1YWxseSBvdmVycmlkZGVuIGJ5IGNvbnN1bWluZyBjb250cm9sbGVycywgYnV0IG5vdCB0byBiZSBjYWxsZWQgZGlyZWN0bHkuXG5cdCAqIFRoZSBvdmVycmlkZSBleGVjdXRpb24gaXM6IHtAbGluayBzYXAudWkuY29yZS5tdmMuT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXJ9LlxuXHQgKiBAcGFyYW0gb1ZpZXdTdGF0ZSBUaGUgY3VycmVudCB2aWV3IHN0YXRlXG5cdCAqIEBwYXJhbSBhUHJvbWlzZXMgRXh0ZW5zaWJsZSBhcnJheSBvZiBwcm9taXNlcyB0byBiZSByZXNvbHZlZCBiZWZvcmUgY29udGludWluZ1xuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0YXBwbHlBZGRpdGlvbmFsU3RhdGVzKG9WaWV3U3RhdGU6IG9iamVjdCwgYVByb21pc2VzOiBQcm9taXNlPHVua25vd24+KTogdm9pZCB7XG5cdFx0Ly8gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWVkZWRcblx0fVxuXG5cdEBwcml2YXRlRXh0ZW5zaW9uKClcblx0X2FwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnNUb0ZpbHRlcmJhcihfb05hdlBhcmFtZXRlcjogTmF2aWdhdGlvblBhcmFtZXRlciwgX2FQcm9taXNlczogUHJvbWlzZTx1bmtub3duPik6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVlZGVkXG5cdH1cblxuXHQvKipcblx0ICogQXBwbHkgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzIGlzIG5vdCBjYWxsZWQgaWYgdGhlIG5hdmlnYXRpb24gdHlwZSBpcyBpQXBwU3RhdGVcblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBpbmRpdmlkdWFsbHkgb3ZlcnJpZGRlbiBieSBjb25zdW1pbmcgY29udHJvbGxlcnMsIGJ1dCBub3QgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LlxuXHQgKiBUaGUgb3ZlcnJpZGUgZXhlY3V0aW9uIGlzOiB7QGxpbmsgc2FwLnVpLmNvcmUubXZjLk92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyfS5cblx0ICogQHBhcmFtIG9OYXZQYXJhbWV0ZXIgVGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBwYXJhbWV0ZXJcblx0ICogQHBhcmFtIGFQcm9taXNlcyBFeHRlbnNpYmxlIGFycmF5IG9mIHByb21pc2VzIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBjb250aW51aW5nXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0YXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyhcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdFx0b05hdlBhcmFtZXRlcjogTmF2aWdhdGlvblBhcmFtZXRlcixcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdFx0YVByb21pc2VzOiBQcm9taXNlPHVua25vd24+XG5cdCk6IHZvaWQge1xuXHRcdC8vIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVlZGVkXG5cdH1cblxuXHQvKipcblx0ICogQXBwbHlpbmcgdGhlIGdpdmVuIHN0YXRlIHRvIHRoZSBnaXZlbiBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgVGhlIG9iamVjdCB0byBhcHBseSB0aGUgZ2l2ZW4gc3RhdGVcblx0ICogQHBhcmFtIG9Db250cm9sU3RhdGUgVGhlIHN0YXRlIGZvciB0aGUgZ2l2ZW4gY29udHJvbFxuXHQgKiBAcGFyYW0gW29OYXZQYXJhbWV0ZXJzXSBUaGUgY3VycmVudCBuYXZpZ2F0aW9uIHBhcmFtZXRlcnNcblx0ICogQHBhcmFtIFtza2lwTWVyZ2VdIFdoZXRoZXIgbWVyZ2Ugc2hvdWxkIGJlIHNraXBwZWQgb3Igbm90XG5cdCAqIEByZXR1cm5zIFJldHVybiBhIHByb21pc2UgZm9yIGFzeW5jIHN0YXRlIGhhbmRsaW5nXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIGFwcGx5Q29udHJvbFN0YXRlKFxuXHRcdG9Db250cm9sOiBNYW5hZ2VkT2JqZWN0LFxuXHRcdG9Db250cm9sU3RhdGU6IG9iamVjdCxcblx0XHRvTmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2tpcE1lcmdlPzogYm9vbGVhblxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBhQ29udHJvbFN0YXRlSGFuZGxlcnMgPSB0aGlzLmdldENvbnRyb2xTdGF0ZUhhbmRsZXIob0NvbnRyb2wpO1xuXHRcdGxldCBvUHJvbWlzZUNoYWluID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0YUNvbnRyb2xTdGF0ZUhhbmRsZXJzLmZvckVhY2goKG1Db250cm9sU3RhdGVIYW5kbGVyKSA9PiB7XG5cdFx0XHRpZiAodHlwZW9mIG1Db250cm9sU3RhdGVIYW5kbGVyLmFwcGx5ICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBjb250cm9sU3RhdGVIYW5kbGVyLmFwcGx5IGlzIG5vdCBhIGZ1bmN0aW9uIGZvciBjb250cm9sOiAke29Db250cm9sLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfWApO1xuXHRcdFx0fVxuXHRcdFx0b1Byb21pc2VDaGFpbiA9IG9Qcm9taXNlQ2hhaW4udGhlbihtQ29udHJvbFN0YXRlSGFuZGxlci5hcHBseS5iaW5kKHRoaXMsIG9Db250cm9sLCBvQ29udHJvbFN0YXRlLCBvTmF2UGFyYW1ldGVycywgc2tpcE1lcmdlKSk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9Qcm9taXNlQ2hhaW47XG5cdH1cblxuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cHVibGljIHVwZGF0ZUFwcFN0YXRlRGVib3VuY2VkKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnVwZGF0ZUFwcFN0YXRlVGltZXIpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnVwZGF0ZUFwcFN0YXRlVGltZXIpO1xuXHRcdH1cblx0XHR0aGlzLnVwZGF0ZUFwcFN0YXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuYmFzZS5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdH0sIDIwMCkgYXMgdW5rbm93biBhcyBudW1iZXI7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgYSBkZWRpY2F0ZWQgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGludG8gdGhlIHdob2xlIHZpZXcgc3RhdGUgaGFuZGxpbmcuXG5cdCAqIEBwYXJhbSBzdGF0ZUNvbnRyaWJ1dG9yIFRoZSBWaWV3U3RhdGVDb250cmlidXRvciB0byByZWdpc3RlclxuXHQgKi9cblx0cmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHN0YXRlQ29udHJpYnV0b3I6IE1hbmFnZWRPYmplY3QgJiBJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5zdGF0ZUNvbnRyaWJ1dG9ycy5pbmNsdWRlcyhzdGF0ZUNvbnRyaWJ1dG9yKSkge1xuXHRcdFx0Ly8gbm8gbmVlZCB0byByZWdpc3RlciB0aGUgc2FtZSBjb250cm9sIGFnYWluXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuc3RhdGVDb250cmlidXRvcnMucHVzaChzdGF0ZUNvbnRyaWJ1dG9yKTtcblx0XHRpZiAodGhpcy5fY3VycmVudFZpZXdTdGF0ZSkge1xuXHRcdFx0Y29uc3QgY29udHJvbEtleSA9IHRoaXMuZ2V0U3RhdGVLZXkoc3RhdGVDb250cmlidXRvcik7XG5cdFx0XHRjb25zdCBjb250cm9sU3RhdGUgPSB0aGlzLl9jdXJyZW50Vmlld1N0YXRlW2NvbnRyb2xLZXldO1xuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblR5cGUgPSB0aGlzLmNvbmZpZ09mU3RhdGVBcHBseT8ubmF2VHlwZVBhcmFtZXRlcnM/Lm5hdmlnYXRpb25UeXBlO1xuXHRcdFx0Y29uc3Qgc2tpcE1lcmdlID0gdGhpcy5jb25maWdPZlN0YXRlQXBwbHk/LnNraXBNZXJnZTtcblx0XHRcdGlmIChjb250cm9sU3RhdGUgJiYgY29udHJvbFN0YXRlID09PSB0aGlzLmNvbmZpZ09mU3RhdGVBcHBseT8uc3RhdGU/Lltjb250cm9sS2V5XSkge1xuXHRcdFx0XHQvLyBUbyBjaGVjayB3aGV0aGVyIGRpZmZzdGF0ZSBzaHVvbGQgYmUgY2FsbGVkIG9yIG5vdCB0byBhcHBseUV4dGVybmFsU3RhdGVcblx0XHRcdFx0Y29uc3Qgc2hvdWxkQXBwbHlEaWZmU3RhdGUgPVxuXHRcdFx0XHRcdCF0aGlzLmludmFsaWRhdGVJbml0aWFsU3RhdGVGb3JBcHBseS5pbmNsdWRlcyhzdGF0ZUNvbnRyaWJ1dG9yLmdldElkKCkpICYmXG5cdFx0XHRcdFx0IXRoaXMuY29udHJvbHNWYXJpYW50SWRVbmF2YWlsYWJsZS5pbmNsdWRlcyhzdGF0ZUNvbnRyaWJ1dG9yLmdldElkKCkpICYmXG5cdFx0XHRcdFx0bmF2aWdhdGlvblR5cGUgIT09IE5hdlR5cGUuaHlicmlkICYmXG5cdFx0XHRcdFx0c2tpcE1lcmdlICE9PSB0cnVlO1xuXG5cdFx0XHRcdHN0YXRlQ29udHJpYnV0b3IuYXBwbHlTdGF0ZShjb250cm9sU3RhdGUsIHVuZGVmaW5lZCwgc2hvdWxkQXBwbHlEaWZmU3RhdGUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51cGRhdGVBcHBTdGF0ZURlYm91bmNlZCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZXJlZ2lzdGVyIGEgZGVkaWNhdGVkIElWaWV3U3RhdGVDb250cmlidXRvciBmcm9tIHRoZSB3aG9sZSB2aWV3IHN0YXRlIGhhbmRsaW5nLlxuXHQgKiBAcGFyYW0gc3RhdGVDb250cmlidXRvciBUaGUgVmlld1N0YXRlQ29udHJpYnV0b3IgdG8gZGVyZWdpc3RlclxuXHQgKi9cblx0ZGVyZWdpc3RlclN0YXRlQ29udHJpYnV0b3Ioc3RhdGVDb250cmlidXRvcjogTWFuYWdlZE9iamVjdCAmIElWaWV3U3RhdGVDb250cmlidXRvcjx1bmtub3duPik6IHZvaWQge1xuXHRcdGNvbnN0IHRhcmdldEluZGV4ID0gdGhpcy5zdGF0ZUNvbnRyaWJ1dG9ycy5maW5kSW5kZXgoKGNvbnRyaWJ1dG9yKSA9PiBjb250cmlidXRvciA9PSBzdGF0ZUNvbnRyaWJ1dG9yKTtcblx0XHRpZiAodGFyZ2V0SW5kZXggIT09IC0xKSB7XG5cdFx0XHR0aGlzLnN0YXRlQ29udHJpYnV0b3JzLnNwbGljZSh0YXJnZXRJbmRleCwgMSk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0SW50ZXJmYWNlKCk6IHRoaXMge1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Ly8gbWV0aG9kIHRvIGdldCB0aGUgY29udHJvbCBzdGF0ZSBmb3IgbWRjIGNvbnRyb2xzIGFwcGx5aW5nIHRoZSBkZWx0YSBsb2dpY1xuXHRfZ2V0Q29udHJvbFN0YXRlKGNvbnRyb2xTdGF0ZUtleTogc3RyaW5nLCBjb250cm9sU3RhdGU6IENvbnRyb2xTdGF0ZSk6IENvbnRyb2xTdGF0ZSB7XG5cdFx0Y29uc3QgaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXIgPSB0aGlzLmluaXRpYWxDb250cm9sU3RhdGVzTWFwcGVyO1xuXHRcdGlmIChPYmplY3Qua2V5cyhpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcikubGVuZ3RoID4gMCAmJiBpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcltjb250cm9sU3RhdGVLZXldKSB7XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMoaW5pdGlhbENvbnRyb2xTdGF0ZXNNYXBwZXJbY29udHJvbFN0YXRlS2V5XSBhcyBvYmplY3QpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcltjb250cm9sU3RhdGVLZXldID0geyAuLi5jb250cm9sU3RhdGUgfTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7IGZ1bGxTdGF0ZTogY29udHJvbFN0YXRlIGFzIG9iamVjdCwgaW5pdGlhbFN0YXRlOiBpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcltjb250cm9sU3RhdGVLZXldIGFzIG9iamVjdCB9O1xuXHRcdH1cblx0XHRyZXR1cm4gY29udHJvbFN0YXRlO1xuXHR9XG5cblx0Ly9tZXRob2QgdG8gc3RvcmUgdGhlIGluaXRpYWwgc3RhdGVzIGZvciBkZWx0YSBjb21wdXRhdGlvbiBvZiBtZGMgY29udHJvbHNcblx0X3NldEluaXRpYWxTdGF0ZXNGb3JEZWx0YUNvbXB1dGUgPSBhc3luYyAodmFyaWFudE1hbmFnZW1lbnQ/OiBWYXJpYW50TWFuYWdlbWVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBhZGFwdENvbnRyb2xzID0gdGhpcy52aWV3U3RhdGVDb250cm9scztcblxuXHRcdFx0Y29uc3QgZXh0ZXJuYWxTdGF0ZVByb21pc2VzOiBQcm9taXNlPG9iamVjdD5bXSA9IFtdO1xuXHRcdFx0Y29uc3QgY29udHJvbFN0YXRlS2V5OiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0bGV0IGluaXRpYWxDb250cm9sU3RhdGVzOiBvYmplY3RbXSA9IFtdO1xuXHRcdFx0Y29uc3QgdmFyaWFudENvbnRyb2xzOiBzdHJpbmdbXSA9IHZhcmlhbnRNYW5hZ2VtZW50Py5nZXRGb3IoKSA/PyBbXTtcblxuXHRcdFx0dGhpcy51cGRhdGVJbml0aWFsU3RhdGUodmFyaWFudENvbnRyb2xzKTtcblxuXHRcdFx0YXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdGFkYXB0Q29udHJvbHNcblx0XHRcdFx0XHQuZmlsdGVyKGZ1bmN0aW9uIChjb250cm9sKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRjb250cm9sICYmXG5cdFx0XHRcdFx0XHRcdCghdmFyaWFudE1hbmFnZW1lbnQgfHwgdmFyaWFudENvbnRyb2xzLmluY2x1ZGVzKChjb250cm9sIGFzIENvbnRyb2wpLmdldElkKCkpKSAmJlxuXHRcdFx0XHRcdFx0XHQoKGNvbnRyb2wgYXMgQmFzZU9iamVjdCkuaXNBKFwic2FwLnVpLm1kYy5UYWJsZVwiKSB8fFxuXHRcdFx0XHRcdFx0XHRcdChjb250cm9sIGFzIEJhc2VPYmplY3QpLmlzQShcInNhcC51aS5tZGMuRmlsdGVyQmFyXCIpIHx8XG5cdFx0XHRcdFx0XHRcdFx0KGNvbnRyb2wgYXMgQmFzZU9iamVjdCkuaXNBKFwic2FwLnVpLm1kYy5DaGFydFwiKSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQubWFwKGFzeW5jIChjb250cm9sKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAodmFyaWFudE1hbmFnZW1lbnQpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnNUb1ZhcmlhbnRNYW5hZ2VtZW50KHZhcmlhbnRNYW5hZ2VtZW50LCB2YXJpYW50Q29udHJvbHMpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRjb25zdCBleHRlcm5hbFN0YXRlUHJvbWlzZSA9IChhd2FpdCBnZXRTdGF0ZVV0aWwoKSkucmV0cmlldmVFeHRlcm5hbFN0YXRlKGNvbnRyb2wgYXMgTURDQ29udHJvbCk7XG5cdFx0XHRcdFx0XHRleHRlcm5hbFN0YXRlUHJvbWlzZXMucHVzaChleHRlcm5hbFN0YXRlUHJvbWlzZSk7XG5cdFx0XHRcdFx0XHRjb250cm9sU3RhdGVLZXkucHVzaCh0aGlzLmdldFN0YXRlS2V5KGNvbnRyb2wpKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0KTtcblxuXHRcdFx0aW5pdGlhbENvbnRyb2xTdGF0ZXMgPSBhd2FpdCBQcm9taXNlLmFsbChleHRlcm5hbFN0YXRlUHJvbWlzZXMpO1xuXHRcdFx0aW5pdGlhbENvbnRyb2xTdGF0ZXMuZm9yRWFjaCgoaW5pdGlhbENvbnRyb2xTdGF0ZTogb2JqZWN0LCBpOiBudW1iZXIpID0+IHtcblx0XHRcdFx0dGhpcy5pbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcltjb250cm9sU3RhdGVLZXlbaV1dID0gaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGU6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHR9O1xuXG5cdC8vIEF0dGFjaCBldmVudCB0byBzYXZlIGFuZCBzZWxlY3Qgb2YgVmFyaWFudCBNYW5hZ2VtZW50IHRvIHVwZGF0ZSB0aGUgaW5pdGlhbCBDb250cm9sIFN0YXRlcyBvbiB2YXJpYW50IGNoYW5nZVxuXHRfYWRkRXZlbnRMaXN0ZW5lcnNUb1ZhcmlhbnRNYW5hZ2VtZW50KHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudCwgdmFyaWFudENvbnRyb2xzOiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGNvbnN0IG9QYXlsb2FkID0geyB2YXJpYW50TWFuYWdlZENvbnRyb2xzOiB2YXJpYW50Q29udHJvbHMgfTtcblx0XHRjb25zdCBmbkV2ZW50ID0gKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5fdXBkYXRlSW5pdGlhbFN0YXRlc09uVmFyaWFudENoYW5nZSh2YXJpYW50Q29udHJvbHMpO1xuXHRcdH07XG5cdFx0dmFyaWFudE1hbmFnZW1lbnQuYXR0YWNoU2F2ZShvUGF5bG9hZCwgZm5FdmVudCwge30pO1xuXHRcdHZhcmlhbnRNYW5hZ2VtZW50LmF0dGFjaFNlbGVjdChvUGF5bG9hZCwgZm5FdmVudCwge30pO1xuXHR9XG5cblx0X3VwZGF0ZUluaXRpYWxTdGF0ZXNPblZhcmlhbnRDaGFuZ2Uodm1Bc3NvY2lhdGVkQ29udHJvbHNUb1Jlc2V0OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGNvbnN0IGluaXRpYWxDb250cm9sU3RhdGVzTWFwcGVyID0gdGhpcy5pbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcjtcblx0XHRPYmplY3Qua2V5cyhpbml0aWFsQ29udHJvbFN0YXRlc01hcHBlcikuZm9yRWFjaCgoY29udHJvbEtleSkgPT4ge1xuXHRcdFx0Zm9yIChjb25zdCB2bUFzc29jaWF0ZWRjb250cm9sS2V5IG9mIHZtQXNzb2NpYXRlZENvbnRyb2xzVG9SZXNldCkge1xuXHRcdFx0XHRpZiAodm1Bc3NvY2lhdGVkY29udHJvbEtleS5pbmNsdWRlcyhjb250cm9sS2V5KSkge1xuXHRcdFx0XHRcdGluaXRpYWxDb250cm9sU3RhdGVzTWFwcGVyW2NvbnRyb2xLZXldID0ge307XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnVwZGF0ZUluaXRpYWxTdGF0ZSh2bUFzc29jaWF0ZWRDb250cm9sc1RvUmVzZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCB2YXJpYW50IGNvbnRyb2xzLlxuXHQgKiBAcGFyYW0gdmFyaWFudENvbnRyb2xzIEFuIGFycmF5IG9mIGNvbnRyb2wgSURzIGZvciB3aGljaCB0aGUgaW5pdGlhbCBzdGF0ZSBuZWVkcyB0byBiZSB1cGRhdGVkLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBpbml0aWFsIHN0YXRlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cblx0ICovXG5cdGFzeW5jIHVwZGF0ZUluaXRpYWxTdGF0ZSh2YXJpYW50Q29udHJvbHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3Qgdmlld0NvbnRyb2xzOiAoTWFuYWdlZE9iamVjdCB8IHVuZGVmaW5lZClbXSA9IHRoaXMuc3RhdGVDb250cmlidXRvcnM7XG5cdFx0YXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHR2aWV3Q29udHJvbHMubWFwKGFzeW5jIChjb250cm9sKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xJZDogc3RyaW5nID0gY29udHJvbD8uZ2V0SWQoKSBhcyBzdHJpbmc7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR2YXJpYW50Q29udHJvbHMuaW5jbHVkZXMoY29udHJvbElkKSAmJlxuXHRcdFx0XHRcdGNvbnRyb2w/LmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8b2JqZWN0Pj4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpICYmXG5cdFx0XHRcdFx0Y29udHJvbC5zZXRJbml0aWFsU3RhdGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0YXdhaXQgY29udHJvbC5zZXRJbml0aWFsU3RhdGUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cblx0X2lzSW5pdGlhbFN0YXRlc0FwcGxpY2FibGUoXG5cdFx0aW5pdGlhbFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQsXG5cdFx0Y29udHJvbDogRmlsdGVyQmFyIHwgTURDVGFibGUsXG5cdFx0c2tpcE1lcmdlOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuXHRcdGlzTmF2SHlicmlkPzogYm9vbGVhblxuXHQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0ISFpbml0aWFsU3RhdGUgJiZcblx0XHRcdCF0aGlzLmludmFsaWRhdGVJbml0aWFsU3RhdGVGb3JBcHBseS5pbmNsdWRlcyhjb250cm9sLmdldElkKCkpICYmXG5cdFx0XHQhdGhpcy5jb250cm9sc1ZhcmlhbnRJZFVuYXZhaWxhYmxlLmluY2x1ZGVzKGNvbnRyb2wuZ2V0SWQoKSkgJiZcblx0XHRcdChpc05hdkh5YnJpZCA/PyB0cnVlKSAmJlxuXHRcdFx0c2tpcE1lcmdlICE9PSB0cnVlXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBWaWV3U3RhdGU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTRCQTtFQUNBO0VBQ0E7RUFDQSxNQUFNQSxPQUFPLEdBQUdDLFVBQVUsQ0FBQ0QsT0FBTzs7RUFFbEM7QUFDQTtBQUNBO0FBQ0E7O0VBd0JB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U0FBQSxxQkFBQWxDLE9BQUEsQ0FBQWtDLFNBQUEsR0FBQTZJLHlCQUFBLENBQUEvSyxPQUFBLENBQUFrQyxTQUFBLG1DQUFBaEQsTUFBQSxHQUFBNEYsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQWhMLE9BQUEsQ0FBQWtDLFNBQUEsbUNBQUFsQyxPQUFBLENBQUFrQyxTQUFBLEdBQUE2SSx5QkFBQSxDQUFBL0ssT0FBQSxDQUFBa0MsU0FBQSwyQkFBQS9DLE1BQUEsRUFBQUMsTUFBQSxHQUFBMEYsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQWhMLE9BQUEsQ0FBQWtDLFNBQUEsMkJBQUFsQyxPQUFBLENBQUFrQyxTQUFBLEdBQUE2SSx5QkFBQSxDQUFBL0ssT0FBQSxDQUFBa0MsU0FBQSwwQkFBQTdDLE1BQUEsRUFBQUMsTUFBQSxHQUFBd0YsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQWhMLE9BQUEsQ0FBQWtDLFNBQUEsMEJBQUFsQyxPQUFBLENBQUFrQyxTQUFBLEdBQUE2SSx5QkFBQSxDQUFBL0ssT0FBQSxDQUFBa0MsU0FBQSw0QkFBQTNDLE1BQUEsRUFBQUMsTUFBQSxHQUFBc0YsTUFBQSxDQUFBa0csd0JBQUEsQ0FBQWhMLE9BQUEsQ0FBQWtDLFNBQUEsNEJBQUFsQyxPQUFBLENBQUFrQyxTQUFBLEdBQUE2SSx5QkFBQSxDQUFBL0ssT0FBQSxDQUFBa0MsU0FBQSw0Q0FBQXpDLE1BQUEsR0FBQXFGLE1BQUEsQ0FBQWtHLHdCQUFBLENBQUFoTCxPQUFBLENBQUFrQyxTQUFBLDRDQUFBbEMsT0FBQSxDQUFBa0MsU0FBQSxHQUFBNkkseUJBQUEsQ0FBQS9LLE9BQUEsQ0FBQWtDLFNBQUEsZ0NBQUF4QyxNQUFBLEVBQUFDLE1BQUEsR0FBQW1GLE1BQUEsQ0FBQWtHLHdCQUFBLENBQUFoTCxPQUFBLENBQUFrQyxTQUFBLGdDQUFBbEMsT0FBQSxDQUFBa0MsU0FBQSxHQUFBNkkseUJBQUEsQ0FBQS9LLE9BQUEsQ0FBQWtDLFNBQUEsd0JBQUF0QyxNQUFBLEVBQUFDLE1BQUEsR0FBQWlGLE1BQUEsQ0FBQWtHLHdCQUFBLENBQUFoTCxPQUFBLENBQUFrQyxTQUFBLHdCQUFBbEMsT0FBQSxDQUFBa0MsU0FBQSxHQUFBNkkseUJBQUEsQ0FBQS9LLE9BQUEsQ0FBQWtDLFNBQUEsOEJBQUFwQyxNQUFBLEdBQUFnRixNQUFBLENBQUFrRyx3QkFBQSxDQUFBaEwsT0FBQSxDQUFBa0MsU0FBQSw4QkFBQWxDLE9BQUEsQ0FBQWtDLFNBQUEsSUFBQWxDLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BOHpCNUJ6RCxTQUFTO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -944,6 +944,10 @@ class ViewState extends ControllerExtension {
|
|
|
944
944
|
* @param stateContributor The ViewStateContributor to register
|
|
945
945
|
*/
|
|
946
946
|
registerStateContributor(stateContributor: ManagedObject & IViewStateContributor<unknown>): void {
|
|
947
|
+
if (this.stateContributors.includes(stateContributor)) {
|
|
948
|
+
// no need to register the same control again
|
|
949
|
+
return;
|
|
950
|
+
}
|
|
947
951
|
this.stateContributors.push(stateContributor);
|
|
948
952
|
if (this._currentViewState) {
|
|
949
953
|
const controlKey = this.getStateKey(stateContributor);
|
|
@@ -51,7 +51,6 @@ sap.ui.define(["sap/fe/core/templating/EntityTypeHelper", "sap/m/Button", "sap/m
|
|
|
51
51
|
return _jsx(Dialog, {
|
|
52
52
|
state: "Warning",
|
|
53
53
|
showHeader: true,
|
|
54
|
-
contentWidth: "20rem",
|
|
55
54
|
resizable: true,
|
|
56
55
|
verticalScrolling: true,
|
|
57
56
|
horizontalScrolling: true,
|
|
@@ -104,4 +103,4 @@ sap.ui.define(["sap/fe/core/templating/EntityTypeHelper", "sap/m/Button", "sap/m
|
|
|
104
103
|
_exports = NotApplicableContextDialog;
|
|
105
104
|
return _exports;
|
|
106
105
|
}, false);
|
|
107
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOb3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZyIsInByb3BzIiwidGl0bGUiLCJyZXNvdXJjZU1vZGVsIiwiZW50aXR5VHlwZSIsIm5vdEFwcGxpY2FibGVDb250ZXh0cyIsIl9zaG91bGRDb250aW51ZSIsImFjdGlvbk5hbWUiLCJlbnRpdHlTZXROYW1lIiwiZW50aXR5U2V0IiwiX2RpYWxvZyIsImNyZWF0ZURpYWxvZyIsIl9wcm9jZXNzaW5nUHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiX2ZuUmVzb2x2ZSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25BZnRlckNsb3NlIiwiZGVzdHJveSIsIm9uQ29udGludWUiLCJjbG9zZSIsIm9wZW4iLCJvd25lciIsImFkZERlcGVuZGVudCIsImdldERpYWxvZyIsIl9ib3VuZEFjdGlvbk5hbWUiLCJfYm91bmRBY3Rpb25OYW1lMiIsIl9ib3VuZEFjdGlvbk5hbWUzIiwiX3RoaXMkZW50aXR5VHlwZSRhbm5vIiwiX3RoaXMkZW50aXR5VHlwZSRhbm5vMiIsImJvdW5kQWN0aW9uTmFtZSIsImluY2x1ZGVzIiwic3BsaXQiLCJsZW5ndGgiLCJzdWZmaXhSZXNvdXJjZUtleSIsIl9qc3giLCJEaWFsb2ciLCJzdGF0ZSIsInNob3dIZWFkZXIiLCJjb250ZW50V2lkdGgiLCJyZXNpemFibGUiLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJjbGFzcyIsImFmdGVyQ2xvc2UiLCJiaW5kIiwiY2hpbGRyZW4iLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInRleHQiLCJnZXRUZXh0IiwidW5kZWZpbmVkIiwicHJlc3MiLCJ0eXBlIiwiZW5kQnV0dG9uIiwiY29udGVudCIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiVkJveCIsIlRleHQiLCJMaXN0IiwiaGVhZGVyVGV4dCIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwiVHlwZU5hbWVQbHVyYWwiLCJzaG93U2VwYXJhdG9ycyIsIml0ZW1zIiwibWFwIiwibm90QXBwbGljYWJsZUNvbnRleHQiLCJ0aXRsZUV4cHJlc3Npb24iLCJnZXRUaXRsZUV4cHJlc3Npb24iLCJjdXN0b21MaXN0SXRlbSIsIkN1c3RvbUxpc3RJdGVtIiwiSEJveCIsImp1c3RpZnlDb250ZW50Iiwic2V0QmluZGluZ0NvbnRleHQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB7IGdldFRpdGxlRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0VudGl0eVR5cGVIZWxwZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IExpc3QgZnJvbSBcInNhcC9tL0xpc3RcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuLyoqXG4gKiBEaXNwbGF5IGEgZGlhbG9nIHRvIGluZm9ybSB0aGUgdXNlciB0aGF0IHNvbWUgY29udGV4dHMgYXJlIG5vdCBhcHBsaWNhYmxlIGZvciB0aGUgYWN0aW9uLlxuICogVGhpcyBpcyBub3QgdGhlIHRhcmdldCBVeCBidXQganVzdCBrZWVwaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nIHtcblx0cHJpdmF0ZSByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuXG5cdHByaXZhdGUgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGVudGl0eVR5cGU6IEVudGl0eVR5cGU7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfZGlhbG9nOiBEaWFsb2c7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfcHJvY2Vzc2luZ1Byb21pc2U6IFByb21pc2U8Ym9vbGVhbj47XG5cblx0cHJpdmF0ZSBfZm5SZXNvbHZlITogKHJlc29sdmVWYWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcblxuXHRwcml2YXRlIF9zaG91bGRDb250aW51ZTogYm9vbGVhbjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGFjdGlvbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiB7IHRpdGxlOiBzdHJpbmc7IGVudGl0eVR5cGU6IEVudGl0eVR5cGU7IHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWw7IG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdOyBlbnRpdHlTZXQ/OiBzdHJpbmc7IGFjdGlvbk5hbWU/OiBzdHJpbmcgfSkge1xuXHRcdHRoaXMudGl0bGUgPSBwcm9wcy50aXRsZTtcblx0XHR0aGlzLnJlc291cmNlTW9kZWwgPSBwcm9wcy5yZXNvdXJjZU1vZGVsO1xuXHRcdHRoaXMuZW50aXR5VHlwZSA9IHByb3BzLmVudGl0eVR5cGU7XG5cdFx0dGhpcy5ub3RBcHBsaWNhYmxlQ29udGV4dHMgPSBwcm9wcy5ub3RBcHBsaWNhYmxlQ29udGV4dHM7XG5cdFx0dGhpcy5fc2hvdWxkQ29udGludWUgPSBmYWxzZTtcblx0XHR0aGlzLmFjdGlvbk5hbWUgPSBwcm9wcy5hY3Rpb25OYW1lO1xuXHRcdHRoaXMuZW50aXR5U2V0TmFtZSA9IHByb3BzLmVudGl0eVNldDtcblx0XHR0aGlzLl9kaWFsb2cgPSB0aGlzLmNyZWF0ZURpYWxvZygpO1xuXHRcdHRoaXMuX3Byb2Nlc3NpbmdQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdHRoaXMuX2ZuUmVzb2x2ZSA9IHJlc29sdmU7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG9uQWZ0ZXJDbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLl9mblJlc29sdmUodGhpcy5fc2hvdWxkQ29udGludWUpO1xuXHRcdHRoaXMuX2RpYWxvZy5kZXN0cm95KCk7XG5cdH1cblxuXHRwcml2YXRlIG9uQ29udGludWUoKTogdm9pZCB7XG5cdFx0dGhpcy5fc2hvdWxkQ29udGludWUgPSB0cnVlO1xuXHRcdHRoaXMuX2RpYWxvZy5jbG9zZSgpO1xuXHR9XG5cblx0YXN5bmMgb3Blbihvd25lcjogQ29udHJvbCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdG93bmVyLmFkZERlcGVuZGVudCh0aGlzLl9kaWFsb2cpO1xuXHRcdHRoaXMuX2RpYWxvZy5vcGVuKCk7XG5cdFx0cmV0dXJuIHRoaXMuX3Byb2Nlc3NpbmdQcm9taXNlO1xuXHR9XG5cblx0Z2V0RGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0cmV0dXJuIHRoaXMuX2RpYWxvZztcblx0fVxuXG5cdGNyZWF0ZURpYWxvZygpOiBEaWFsb2cge1xuXHRcdGxldCBib3VuZEFjdGlvbk5hbWUgPSB0aGlzLmFjdGlvbk5hbWU7XG5cdFx0Ym91bmRBY3Rpb25OYW1lID0gYm91bmRBY3Rpb25OYW1lPy5pbmNsdWRlcyhcIi5cIilcblx0XHRcdD8gYm91bmRBY3Rpb25OYW1lPy5zcGxpdChcIi5cIilbYm91bmRBY3Rpb25OYW1lPy5zcGxpdChcIi5cIikubGVuZ3RoIC0gMV1cblx0XHRcdDogYm91bmRBY3Rpb25OYW1lO1xuXHRcdGNvbnN0IHN1ZmZpeFJlc291cmNlS2V5ID0gYm91bmRBY3Rpb25OYW1lICYmIHRoaXMuZW50aXR5U2V0TmFtZSA/IGAke3RoaXMuZW50aXR5U2V0TmFtZX18JHtib3VuZEFjdGlvbk5hbWV9YCA6IFwiXCI7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxEaWFsb2dcblx0XHRcdFx0c3RhdGU9e1wiV2FybmluZ1wifVxuXHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRjb250ZW50V2lkdGg9e1wiMjByZW1cIn1cblx0XHRcdFx0cmVzaXphYmxlPXt0cnVlfVxuXHRcdFx0XHR2ZXJ0aWNhbFNjcm9sbGluZz17dHJ1ZX1cblx0XHRcdFx0aG9yaXpvbnRhbFNjcm9sbGluZz17dHJ1ZX1cblx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHR0aXRsZT17dGhpcy50aXRsZX1cblx0XHRcdFx0YWZ0ZXJDbG9zZT17dGhpcy5vbkFmdGVyQ2xvc2UuYmluZCh0aGlzKX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRiZWdpbkJ1dHRvbjogKFxuXHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQUNUSU9OX1BBUlRJQUxfRlJBR01FTlRfU0FQRkVfQ09OVElOVUVfQU5ZV0FZXCIsIHVuZGVmaW5lZCwgc3VmZml4UmVzb3VyY2VLZXkpfVxuXHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5vbkNvbnRpbnVlLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdHR5cGU9XCJFbXBoYXNpemVkXCJcblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRlbmRCdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b24gdGV4dD17dGhpcy5yZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTU1PTl9TQVBGRV9DTE9TRVwiKX0gcHJlc3M9eygpOiBEaWFsb2cgPT4gdGhpcy5fZGlhbG9nLmNsb3NlKCl9IC8+XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb250ZW50OiAoXG5cblx0XHRcdFx0XHRcdDw+XG5cdFx0XHRcdFx0XHRcdDxWQm94PlxuXHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ub3RBcHBsaWNhYmxlQ29udGV4dHMubGVuZ3RoID09PSAxXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB0aGlzLnJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQUNUSU9OX1BBUlRJQUxfRlJBR01FTlRfU0FQRkVfQk9VTkRfQUNUSU9OXCIsIHVuZGVmaW5lZCwgc3VmZml4UmVzb3VyY2VLZXkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQUNUSU9OX1BBUlRJQUxfRlJBR01FTlRfU0FQRkVfQk9VTkRfQUNUSU9OX1BMVVJBTFwiLCBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm5vdEFwcGxpY2FibGVDb250ZXh0cy5sZW5ndGhcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdLCBzdWZmaXhSZXNvdXJjZUtleSlcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwic2FwVWlUaW55TWFyZ2luQmVnaW4gc2FwVWlUaW55TWFyZ2luVG9wQm90dG9tXCJcblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdFx0XHRcdDxMaXN0IGhlYWRlclRleHQ9e3RoaXMuZW50aXR5VHlwZS5hbm5vdGF0aW9ucy5VST8uSGVhZGVySW5mbz8uVHlwZU5hbWVQbHVyYWx9IHNob3dTZXBhcmF0b3JzPVwiTm9uZVwiPlxuXHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogdGhpcy5ub3RBcHBsaWNhYmxlQ29udGV4dHMubWFwKChub3RBcHBsaWNhYmxlQ29udGV4dCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBFaXRoZXIgc2hvdyB0aGUgSGVhZGVySW5mb05hbWUgb3IgdGhlIFNlbWFudGljIEtleSBwcm9wZXJ0eVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aXRsZUV4cHJlc3Npb24gPSBnZXRUaXRsZUV4cHJlc3Npb24odGhpcy5lbnRpdHlUeXBlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgY3VzdG9tTGlzdEl0ZW0gPSAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEhCb3gganVzdGlmeUNvbnRlbnQ9e1wiU3RhcnRcIn0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0IHRleHQ9e3RpdGxlRXhwcmVzc2lvbn0gY2xhc3M9XCJzYXBVaVRpbnlNYXJnaW5CZWdpbiBzYXBVaVRpbnlNYXJnaW5Ub3BCb3R0b21cIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9IQm94PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbUxpc3RJdGVtLnNldEJpbmRpbmdDb250ZXh0KG5vdEFwcGxpY2FibGVDb250ZXh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGN1c3RvbUxpc3RJdGVtO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHQ8L0xpc3Q+XG5cdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5c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
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOb3RBcHBsaWNhYmxlQ29udGV4dERpYWxvZyIsInByb3BzIiwidGl0bGUiLCJyZXNvdXJjZU1vZGVsIiwiZW50aXR5VHlwZSIsIm5vdEFwcGxpY2FibGVDb250ZXh0cyIsIl9zaG91bGRDb250aW51ZSIsImFjdGlvbk5hbWUiLCJlbnRpdHlTZXROYW1lIiwiZW50aXR5U2V0IiwiX2RpYWxvZyIsImNyZWF0ZURpYWxvZyIsIl9wcm9jZXNzaW5nUHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiX2ZuUmVzb2x2ZSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25BZnRlckNsb3NlIiwiZGVzdHJveSIsIm9uQ29udGludWUiLCJjbG9zZSIsIm9wZW4iLCJvd25lciIsImFkZERlcGVuZGVudCIsImdldERpYWxvZyIsIl9ib3VuZEFjdGlvbk5hbWUiLCJfYm91bmRBY3Rpb25OYW1lMiIsIl9ib3VuZEFjdGlvbk5hbWUzIiwiX3RoaXMkZW50aXR5VHlwZSRhbm5vIiwiX3RoaXMkZW50aXR5VHlwZSRhbm5vMiIsImJvdW5kQWN0aW9uTmFtZSIsImluY2x1ZGVzIiwic3BsaXQiLCJsZW5ndGgiLCJzdWZmaXhSZXNvdXJjZUtleSIsIl9qc3giLCJEaWFsb2ciLCJzdGF0ZSIsInNob3dIZWFkZXIiLCJyZXNpemFibGUiLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJjbGFzcyIsImFmdGVyQ2xvc2UiLCJiaW5kIiwiY2hpbGRyZW4iLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInRleHQiLCJnZXRUZXh0IiwidW5kZWZpbmVkIiwicHJlc3MiLCJ0eXBlIiwiZW5kQnV0dG9uIiwiY29udGVudCIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiVkJveCIsIlRleHQiLCJMaXN0IiwiaGVhZGVyVGV4dCIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwiVHlwZU5hbWVQbHVyYWwiLCJzaG93U2VwYXJhdG9ycyIsIml0ZW1zIiwibWFwIiwibm90QXBwbGljYWJsZUNvbnRleHQiLCJ0aXRsZUV4cHJlc3Npb24iLCJnZXRUaXRsZUV4cHJlc3Npb24iLCJjdXN0b21MaXN0SXRlbSIsIkN1c3RvbUxpc3RJdGVtIiwiSEJveCIsImp1c3RpZnlDb250ZW50Iiwic2V0QmluZGluZ0NvbnRleHQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB7IGdldFRpdGxlRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0VudGl0eVR5cGVIZWxwZXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IExpc3QgZnJvbSBcInNhcC9tL0xpc3RcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuLyoqXG4gKiBEaXNwbGF5IGEgZGlhbG9nIHRvIGluZm9ybSB0aGUgdXNlciB0aGF0IHNvbWUgY29udGV4dHMgYXJlIG5vdCBhcHBsaWNhYmxlIGZvciB0aGUgYWN0aW9uLlxuICogVGhpcyBpcyBub3QgdGhlIHRhcmdldCBVeCBidXQganVzdCBrZWVwaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vdEFwcGxpY2FibGVDb250ZXh0RGlhbG9nIHtcblx0cHJpdmF0ZSByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuXG5cdHByaXZhdGUgcmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGVudGl0eVR5cGU6IEVudGl0eVR5cGU7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfZGlhbG9nOiBEaWFsb2c7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfcHJvY2Vzc2luZ1Byb21pc2U6IFByb21pc2U8Ym9vbGVhbj47XG5cblx0cHJpdmF0ZSBfZm5SZXNvbHZlITogKHJlc29sdmVWYWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcblxuXHRwcml2YXRlIF9zaG91bGRDb250aW51ZTogYm9vbGVhbjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGFjdGlvbk5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGVudGl0eVNldE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiB7IHRpdGxlOiBzdHJpbmc7IGVudGl0eVR5cGU6IEVudGl0eVR5cGU7IHJlc291cmNlTW9kZWw6IFJlc291cmNlTW9kZWw7IG5vdEFwcGxpY2FibGVDb250ZXh0czogQ29udGV4dFtdOyBlbnRpdHlTZXQ/OiBzdHJpbmc7IGFjdGlvbk5hbWU/OiBzdHJpbmcgfSkge1xuXHRcdHRoaXMudGl0bGUgPSBwcm9wcy50aXRsZTtcblx0XHR0aGlzLnJlc291cmNlTW9kZWwgPSBwcm9wcy5yZXNvdXJjZU1vZGVsO1xuXHRcdHRoaXMuZW50aXR5VHlwZSA9IHByb3BzLmVudGl0eVR5cGU7XG5cdFx0dGhpcy5ub3RBcHBsaWNhYmxlQ29udGV4dHMgPSBwcm9wcy5ub3RBcHBsaWNhYmxlQ29udGV4dHM7XG5cdFx0dGhpcy5fc2hvdWxkQ29udGludWUgPSBmYWxzZTtcblx0XHR0aGlzLmFjdGlvbk5hbWUgPSBwcm9wcy5hY3Rpb25OYW1lO1xuXHRcdHRoaXMuZW50aXR5U2V0TmFtZSA9IHByb3BzLmVudGl0eVNldDtcblx0XHR0aGlzLl9kaWFsb2cgPSB0aGlzLmNyZWF0ZURpYWxvZygpO1xuXHRcdHRoaXMuX3Byb2Nlc3NpbmdQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdHRoaXMuX2ZuUmVzb2x2ZSA9IHJlc29sdmU7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG9uQWZ0ZXJDbG9zZSgpOiB2b2lkIHtcblx0XHR0aGlzLl9mblJlc29sdmUodGhpcy5fc2hvdWxkQ29udGludWUpO1xuXHRcdHRoaXMuX2RpYWxvZy5kZXN0cm95KCk7XG5cdH1cblxuXHRwcml2YXRlIG9uQ29udGludWUoKTogdm9pZCB7XG5cdFx0dGhpcy5fc2hvdWxkQ29udGludWUgPSB0cnVlO1xuXHRcdHRoaXMuX2RpYWxvZy5jbG9zZSgpO1xuXHR9XG5cblx0YXN5bmMgb3Blbihvd25lcjogQ29udHJvbCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdG93bmVyLmFkZERlcGVuZGVudCh0aGlzLl9kaWFsb2cpO1xuXHRcdHRoaXMuX2RpYWxvZy5vcGVuKCk7XG5cdFx0cmV0dXJuIHRoaXMuX3Byb2Nlc3NpbmdQcm9taXNlO1xuXHR9XG5cblx0Z2V0RGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0cmV0dXJuIHRoaXMuX2RpYWxvZztcblx0fVxuXG5cdGNyZWF0ZURpYWxvZygpOiBEaWFsb2cge1xuXHRcdGxldCBib3VuZEFjdGlvbk5hbWUgPSB0aGlzLmFjdGlvbk5hbWU7XG5cdFx0Ym91bmRBY3Rpb25OYW1lID0gYm91bmRBY3Rpb25OYW1lPy5pbmNsdWRlcyhcIi5cIilcblx0XHRcdD8gYm91bmRBY3Rpb25OYW1lPy5zcGxpdChcIi5cIilbYm91bmRBY3Rpb25OYW1lPy5zcGxpdChcIi5cIikubGVuZ3RoIC0gMV1cblx0XHRcdDogYm91bmRBY3Rpb25OYW1lO1xuXHRcdGNvbnN0IHN1ZmZpeFJlc291cmNlS2V5ID0gYm91bmRBY3Rpb25OYW1lICYmIHRoaXMuZW50aXR5U2V0TmFtZSA/IGAke3RoaXMuZW50aXR5U2V0TmFtZX18JHtib3VuZEFjdGlvbk5hbWV9YCA6IFwiXCI7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxEaWFsb2dcblx0XHRcdFx0c3RhdGU9e1wiV2FybmluZ1wifVxuXHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRyZXNpemFibGU9e3RydWV9XG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPXt0cnVlfVxuXHRcdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nPXt0cnVlfVxuXHRcdFx0XHRjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9XG5cdFx0XHRcdHRpdGxlPXt0aGlzLnRpdGxlfVxuXHRcdFx0XHRhZnRlckNsb3NlPXt0aGlzLm9uQWZ0ZXJDbG9zZS5iaW5kKHRoaXMpfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGJlZ2luQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19BQ1RJT05fUEFSVElBTF9GUkFHTUVOVF9TQVBGRV9DT05USU5VRV9BTllXQVlcIiwgdW5kZWZpbmVkLCBzdWZmaXhSZXNvdXJjZUtleSl9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uQ29udGludWUuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGVuZEJ1dHRvbjogKFxuXHRcdFx0XHRcdFx0PEJ1dHRvbiB0ZXh0PXt0aGlzLnJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0NMT1NFXCIpfSBwcmVzcz17KCk6IERpYWxvZyA9PiB0aGlzLl9kaWFsb2cuY2xvc2UoKX0gLz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblxuXHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0PFZCb3g+XG5cdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm5vdEFwcGxpY2FibGVDb250ZXh0cy5sZW5ndGggPT09IDFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19BQ1RJT05fUEFSVElBTF9GUkFHTUVOVF9TQVBGRV9CT1VORF9BQ1RJT05cIiwgdW5kZWZpbmVkLCBzdWZmaXhSZXNvdXJjZUtleSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19BQ1RJT05fUEFSVElBTF9GUkFHTUVOVF9TQVBGRV9CT1VORF9BQ1RJT05fUExVUkFMXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMubm90QXBwbGljYWJsZUNvbnRleHRzLmxlbmd0aFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF0sIHN1ZmZpeFJlc291cmNlS2V5KVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaVRpbnlNYXJnaW5CZWdpbiBzYXBVaVRpbnlNYXJnaW5Ub3BCb3R0b21cIlxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHRcdFx0PExpc3QgaGVhZGVyVGV4dD17dGhpcy5lbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5IZWFkZXJJbmZvPy5UeXBlTmFtZVBsdXJhbH0gc2hvd1NlcGFyYXRvcnM9XCJOb25lXCI+XG5cdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiB0aGlzLm5vdEFwcGxpY2FibGVDb250ZXh0cy5tYXAoKG5vdEFwcGxpY2FibGVDb250ZXh0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIEVpdGhlciBzaG93IHRoZSBIZWFkZXJJbmZvTmFtZSBvciB0aGUgU2VtYW50aWMgS2V5IHByb3BlcnR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlRXhwcmVzc2lvbiA9IGdldFRpdGxlRXhwcmVzc2lvbih0aGlzLmVudGl0eVR5cGUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBjdXN0b21MaXN0SXRlbSA9IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SEJveCBqdXN0aWZ5Q29udGVudD17XCJTdGFydFwifT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFRleHQgdGV4dD17dGl0bGVFeHByZXNzaW9ufSBjbGFzcz1cInNhcFVpVGlueU1hcmdpbkJlZ2luIHNhcFVpVGlueU1hcmdpblRvcEJvdHRvbVwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tTGlzdEl0ZW0uc2V0QmluZGluZ0NvbnRleHQobm90QXBwbGljYWJsZUNvbnRleHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gY3VzdG9tTGlzdEl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdDwvTGlzdD5cblx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvRGlhbG9nPlxuXHRcdCkgYXMgRGlhbG9nO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7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
|