@sapui5/sap.fe.controls 1.139.0 → 1.139.4
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/controls/.library +1 -1
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +7 -8
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +12 -6
- package/src/sap/fe/controls/library.js +1 -1
- package/src/sap/fe/controls/messagebundle.properties +1 -1
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +38 -2
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.tsx +37 -1
- package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.js +8 -1
- package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.tsx +5 -0
package/package.json
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "sap/fe/base/jsx-runtime/jsx", "sap/fe/controls/easyFilter/ShellHistoryProvider", "sap/m/Button", "sap/m/CustomListItem", "sap/m/FlexBox", "sap/m/HBox", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageSize", "sap/m/IllustratedMessageType", "sap/m/Input", "sap/m/List", "sap/m/Popover", "sap/m/Text", "sap/m/Title", "sap/m/library", "sap/ui/core/Control", "sap/ui/core/CustomData", "sap/ui/core/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/base/EventDelegateHook", "sap/fe/base/jsx-runtime/jsx", "sap/fe/controls/easyFilter/ShellHistoryProvider", "sap/m/Button", "sap/m/CustomListItem", "sap/m/FlexBox", "sap/m/HBox", "sap/m/IllustratedMessage", "sap/m/IllustratedMessageSize", "sap/m/IllustratedMessageType", "sap/m/Input", "sap/m/List", "sap/m/Popover", "sap/m/Text", "sap/m/Title", "sap/m/library", "sap/ui/core/Control", "sap/ui/core/CustomData", "sap/ui/core/InvisibleMessage", "sap/ui/core/Lib", "sap/ui/core/library", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/jsxs"], function (Log, BindingToolkit, ClassSupport, EventDelegateHook, jsx, ShellHistoryProvider, Button, CustomListItem, FlexBox, HBox, IllustratedMessage, IllustratedMessageSize, IllustratedMessageType, Input, List, Popover, Text, Title, library, Control, CustomData, InvisibleMessage, Lib, coreLibrary, _jsx, _jsxs) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;
|
|
9
9
|
var _exports = {};
|
|
10
10
|
var ValueState = coreLibrary.ValueState;
|
|
11
11
|
var TitleLevel = coreLibrary.TitleLevel;
|
|
12
|
+
var InvisibleMessageMode = coreLibrary.InvisibleMessageMode;
|
|
12
13
|
var PlacementType = library.PlacementType;
|
|
13
14
|
var ListMode = library.ListMode;
|
|
14
15
|
var FlexWrap = library.FlexWrap;
|
|
@@ -75,6 +76,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
75
76
|
_proto.initialize = function initialize() {
|
|
76
77
|
this.state.recommendedQueries = this.recommendedValues ?? [];
|
|
77
78
|
this.resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
|
|
79
|
+
this.popoverInvisibleMessage = InvisibleMessage.getInstance();
|
|
78
80
|
this.createInput();
|
|
79
81
|
};
|
|
80
82
|
_proto.setAsInvalid = function setAsInvalid(message) {
|
|
@@ -110,14 +112,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
110
112
|
},
|
|
111
113
|
placeholder: this.resourceBundle.getText("M_EASY_FILTER_PLACEHOLDER")
|
|
112
114
|
});
|
|
113
|
-
const textBinding = this.resourceBundle.getText("T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA");
|
|
114
|
-
const invisibleText = new InvisibleText({
|
|
115
|
-
text: textBinding
|
|
116
|
-
}).toStatic();
|
|
117
115
|
const favoritePopover = this.createFavoritePopover();
|
|
118
116
|
this.$favoritePopover = favoritePopover;
|
|
119
|
-
this.$searchInput.addAriaDescribedBy(favoritePopover);
|
|
120
|
-
this.$searchInput.addAriaDescribedBy(invisibleText);
|
|
121
117
|
this.$searchInput.addDependent(favoritePopover);
|
|
122
118
|
this.$searchInput.addEventDelegate({
|
|
123
119
|
onkeyup: e => {
|
|
@@ -167,6 +163,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
167
163
|
}
|
|
168
164
|
break;
|
|
169
165
|
}
|
|
166
|
+
},
|
|
167
|
+
onAfterRendering: () => {
|
|
168
|
+
this.popoverInvisibleMessage?.announce(this.resourceBundle.getText("T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA"), InvisibleMessageMode.Assertive);
|
|
170
169
|
}
|
|
171
170
|
});
|
|
172
171
|
};
|
|
@@ -489,4 +488,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
489
488
|
_exports = EasyFilterInput;
|
|
490
489
|
return _exports;
|
|
491
490
|
}, false);
|
|
492
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiY3JlYXRlSW5wdXQiLCJzZXRBc0ludmFsaWQiLCJtZXNzYWdlIiwic2V0VmFsdWVTdGF0ZSIsIlZhbHVlU3RhdGUiLCJXYXJuaW5nIiwic2V0VmFsdWVTdGF0ZVRleHQiLCJvcGVuVmFsdWVTdGF0ZU1lc3NhZ2UiLCJzZXRBc1ZhbGlkIiwiTm9uZSIsImNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UiLCJfanN4IiwiSW5wdXQiLCJ3aWR0aCIsInNob3dDbGVhckljb24iLCJjaGFuZ2UiLCJlIiwiZmlyZUV2ZW50IiwicXVlcnkiLCJnZXRQYXJhbWV0ZXIiLCJsaXZlQ2hhbmdlIiwicXVlcnlDaGFuZ2VkIiwiZ2V0U291cmNlIiwiJGZhdm9yaXRlUG9wb3ZlciIsImlzT3BlbiIsIm9wZW5TdWdnZXN0aW9uUG9wb3ZlciIsImdldFRleHQiLCJnZXRWYWx1ZVN0YXRlIiwicGxhY2Vob2xkZXIiLCJ0ZXh0QmluZGluZyIsImludmlzaWJsZVRleHQiLCJJbnZpc2libGVUZXh0IiwidGV4dCIsInRvU3RhdGljIiwiZmF2b3JpdGVQb3BvdmVyIiwiY3JlYXRlRmF2b3JpdGVQb3BvdmVyIiwiYWRkQXJpYURlc2NyaWJlZEJ5IiwiYWRkRGVwZW5kZW50IiwiYWRkRXZlbnREZWxlZ2F0ZSIsIm9ua2V5dXAiLCJrZXkiLCJvbkVudGVyUHJlc3NlZCIsImNsb3NlIiwib25rZXlkb3duIiwibGVuZ3RoIiwicHJldmVudERlZmF1bHQiLCJwb3BvdmVyQ29uYWluZXIiLCJnZXRDb250ZW50IiwiY29udGFpbmVySXRlbXMiLCJnZXRJdGVtcyIsImZpbmQiLCJpdGVtIiwiaXNGb2N1c2FibGUiLCJmb2N1cyIsIm9udGFwIiwib25mb2N1c2luIiwidGFyZ2V0VGV4dCIsInRhcmdldCIsIm91dGVyVGV4dCIsInRhcmdldElkIiwiaWQiLCJpbmNsdWRlcyIsImZhdm9yaXRlUXVlcmllcyIsImZpbHRlciIsImRhdGEiLCJ0b0xvd2VyQ2FzZSIsInJlY2VudFF1ZXJpZXMiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJpc0Zhdm9yaXRlIiwiZmF2b3JpdGVRdWVyeSIsImluaXRTaGVsbEhpc3RvcnlQcm92aWRlciIsIlNoZWxsSGlzdG9yeVByb3ZpZGVyIiwiZ2V0SW5zdGFuY2UiLCJhcHBJZCIsImVycm9yIiwiTG9nIiwiUG9wb3ZlciIsImdldElkIiwic2hvd0hlYWRlciIsImhvcml6b250YWxTY3JvbGxpbmciLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnRUeXBlIiwiQm90dG9tIiwic2hvd0Fycm93IiwiaW5pdGlhbEZvY3VzIiwiY2xhc3MiLCJ2aXNpYmxlIiwiZXF1YWwiLCJiaW5kU3RhdGUiLCJjaGlsZHJlbiIsImNvbnRlbnQiLCJGbGV4Qm94IiwiZGlyZWN0aW9uIiwiRmxleERpcmVjdGlvbiIsIkNvbHVtbiIsInJlbmRlclR5cGUiLCJpdGVtcyIsIlRpdGxlIiwidGl0bGVTdHlsZSIsIlRpdGxlTGV2ZWwiLCJINiIsIkhCb3giLCJ3cmFwIiwiRmxleFdyYXAiLCJXcmFwIiwiY3R4IiwiQnV0dG9uIiwiZ2V0T2JqZWN0IiwicHJlc3MiLCJiaW5kIiwiTGlzdCIsIm5vRGF0YSIsIklsbHVzdHJhdGVkTWVzc2FnZSIsInRpdGxlIiwiaWxsdXN0cmF0aW9uU2l6ZSIsIklsbHVzdHJhdGVkTWVzc2FnZVNpemUiLCJFeHRyYVNtYWxsIiwiaWxsdXN0cmF0aW9uVHlwZSIsIklsbHVzdHJhdGVkTWVzc2FnZVR5cGUiLCJOb0VudHJpZXMiLCJkZXNjcmlwdGlvbiIsIkN1c3RvbUxpc3RJdGVtIiwiYXJpYUxhYmVsbGVkQnkiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsIl9qc3hzIiwiUm93IiwiYWxpZ25JdGVtcyIsIkZsZXhBbGlnbkl0ZW1zIiwiQ2VudGVyIiwianVzdGlmeUNvbnRlbnQiLCJGbGV4SnVzdGlmeUNvbnRlbnQiLCJTcGFjZUJldHdlZW4iLCJUZXh0IiwidG9vbHRpcCIsIndyYXBwaW5nIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwiaWNvbiIsIkJ1dHRvblR5cGUiLCJUcmFuc3BhcmVudCIsImluZGV4IiwiaW5kZXhPZiIsIm1vZGUiLCJMaXN0TW9kZSIsIkRlbGV0ZSIsImRlbGV0ZSIsImVuYWJsZWQiLCJsZXNzVGhhbiIsInJlbW92ZUZyb21GYXZvcml0ZXMiLCJhZGRUb0Zhdm9yaXRlcyIsIm5ld0Zhdm9yaXRlIiwicG9wIiwicmVuZGVyIiwicm0iLCJjb250cm9sIiwianN4IiwicmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyIiwicmVmIiwiQ29udHJvbCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRWFzeUZpbHRlcklucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgdHlwZSB7IFBhdGhJbk1vZGVsRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYmluZFN0YXRlLCBlcXVhbCwgbGVuZ3RoLCBsZXNzVGhhbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVN0YXRlLCBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiwgdHlwZSBTdGF0ZU9mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEV2ZW50RGVsZWdhdGVIb29rIGZyb20gXCJzYXAvZmUvYmFzZS9FdmVudERlbGVnYXRlSG9va1wiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgU2hlbGxIaXN0b3J5UHJvdmlkZXIgZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL1NoZWxsSGlzdG9yeVByb3ZpZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJ1dHRvbiRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQ3VzdG9tTGlzdEl0ZW0gZnJvbSBcInNhcC9tL0N1c3RvbUxpc3RJdGVtXCI7XG5pbXBvcnQgRmxleEJveCBmcm9tIFwic2FwL20vRmxleEJveFwiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVNpemUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVNpemVcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IElucHV0JExpdmVDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IElucHV0IGZyb20gXCJzYXAvbS9JbnB1dFwiO1xuaW1wb3J0IExpc3QgZnJvbSBcInNhcC9tL0xpc3RcIjtcbmltcG9ydCB0eXBlIHsgTGlzdEJhc2UkRGVsZXRlRXZlbnQgfSBmcm9tIFwic2FwL20vTGlzdEJhc2VcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgdHlwZSBTdGFuZGFyZExpc3RJdGVtIGZyb20gXCJzYXAvbS9TdGFuZGFyZExpc3RJdGVtXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFRpdGxlIGZyb20gXCJzYXAvbS9UaXRsZVwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRmxleEFsaWduSXRlbXMsIEZsZXhEaXJlY3Rpb24sIEZsZXhKdXN0aWZ5Q29udGVudCwgRmxleFdyYXAsIExpc3RNb2RlLCBQbGFjZW1lbnRUeXBlIH0gZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IEludmlzaWJsZVRleHQgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVRleHRcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHsgVGl0bGVMZXZlbCwgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbnR5cGUgUmVjZW50VHlwZSA9IHtcblx0dGV4dDogc3RyaW5nO1xuXHRpc0Zhdm9yaXRlOiBib29sZWFuO1xufTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJJbnB1dFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeUZpbHRlcklucHV0IGV4dGVuZHMgQ29udHJvbCB7XG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uSW5wdXRcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0JHNlYXJjaElucHV0ITogSW5wdXQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRhcHBJZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0cmVjb21tZW5kZWRWYWx1ZXM/OiBzdHJpbmdbXTtcblxuXHRAZXZlbnQoKVxuXHRxdWVyeUNoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGVudGVyUHJlc3NlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGV2ZW50KClcblx0bGl2ZUNoYW5nZT86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlITogUmVzb3VyY2VCdW5kbGU7XG5cblx0c2hlbGxIaXN0b3J5UHJvdmlkZXI6IFNoZWxsSGlzdG9yeVByb3ZpZGVyIHwgdW5kZWZpbmVkO1xuXG5cdCRmYXZvcml0ZVBvcG92ZXI6IFBvcG92ZXIgfCB1bmRlZmluZWQ7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMuY3JlYXRlSW5wdXQoKTtcblx0fVxuXG5cdHNldEFzSW52YWxpZChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlKFZhbHVlU3RhdGUuV2FybmluZyk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQobWVzc2FnZSk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQub3BlblZhbHVlU3RhdGVNZXNzYWdlKCk7XG5cdH1cblxuXHRzZXRBc1ZhbGlkKCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5Ob25lKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5jbG9zZVZhbHVlU3RhdGVNZXNzYWdlKCk7XG5cdH1cblxuXHRjcmVhdGVJbnB1dCgpOiB2b2lkIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dCA9IChcblx0XHRcdDxJbnB1dFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRzaG93Q2xlYXJJY29uPXt0cnVlfVxuXHRcdFx0XHRjaGFuZ2U9eyhlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJxdWVyeUNoYW5nZWRcIiwgeyBxdWVyeTogZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSB9KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0bGl2ZUNoYW5nZT17KGU6IElucHV0JExpdmVDaGFuZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc3RhdGUucXVlcnlDaGFuZ2VkID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcImxpdmVDaGFuZ2VcIik7XG5cdFx0XHRcdFx0aWYgKCFlLmdldFNvdXJjZSgpLmdldFZhbHVlKCkgJiYgISh0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmlzT3BlbigpID8/IGZhbHNlKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5vcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGUuZ2V0UGFyYW1ldGVyKFwidmFsdWVcIikgPT09IFwiXCIpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2V0UGxhY2Vob2xkZXIodGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0aGlzLiRzZWFyY2hJbnB1dC5nZXRWYWx1ZVN0YXRlKCkgPT09IFZhbHVlU3RhdGUuV2FybmluZykge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRBc1ZhbGlkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9fVxuXHRcdFx0XHRwbGFjZWhvbGRlcj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKX1cblx0XHRcdD48L0lucHV0PlxuXHRcdCk7XG5cblx0XHRjb25zdCB0ZXh0QmluZGluZyA9IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfRUFTWV9GSUxURVJfSU5QVVRfVEVYVF9MSU5LX1BPUE9WRVJfQVJJQVwiKTtcblx0XHRjb25zdCBpbnZpc2libGVUZXh0ID0gbmV3IEludmlzaWJsZVRleHQoeyB0ZXh0OiB0ZXh0QmluZGluZyB9KS50b1N0YXRpYygpO1xuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmFkZEFyaWFEZXNjcmliZWRCeShmYXZvcml0ZVBvcG92ZXIpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmFkZEFyaWFEZXNjcmliZWRCeShpbnZpc2libGVUZXh0KTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5hZGREZXBlbmRlbnQoZmF2b3JpdGVQb3BvdmVyKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5dXA6IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7XG5cdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLiRmYXZvcml0ZVBvcG92ZXIgJiYgdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKSkge1xuXHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5jbG9zZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b25rZXlkb3duOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0ZS5rZXkgPT09IFwiVGFiXCIgJiZcblx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKS5sZW5ndGggPT09IDAgJiZcblx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAhPT0gdGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgJiZcblx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSAhPT0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpKTtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcImxpdmVDaGFuZ2VcIik7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZS5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcblx0XHRcdFx0XHRjb25zdCBwb3BvdmVyQ29uYWluZXIgPSB0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmdldENvbnRlbnQoKVswXTtcblx0XHRcdFx0XHRjb25zdCBjb250YWluZXJJdGVtcyA9IChwb3BvdmVyQ29uYWluZXIgYXMgRmxleEJveCkuZ2V0SXRlbXMoKTtcblx0XHRcdFx0XHRjb250YWluZXJJdGVtcz8uZmluZCgoaXRlbSkgPT4gaXRlbS5pc0ZvY3VzYWJsZSgpICYmIChpdGVtLmZvY3VzKCksIHRydWUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9udGFwOiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMub3BlblN1Z2dlc3Rpb25Qb3BvdmVyKCk7XG5cdFx0XHR9LFxuXHRcdFx0b25mb2N1c2luOiAoKSA9PiB7XG5cdFx0XHRcdHRoaXMub3BlblN1Z2dlc3Rpb25Qb3BvdmVyKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmFkZEV2ZW50RGVsZWdhdGUoe1xuXHRcdFx0b25rZXlkb3duOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCB0YXJnZXRUZXh0ID0gKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8ub3V0ZXJUZXh0O1xuXHRcdFx0XHRjb25zdCB0YXJnZXRJZCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmlkO1xuXHRcdFx0XHRzd2l0Y2ggKGUua2V5KSB7XG5cdFx0XHRcdFx0Y2FzZSBcIkVudGVyXCI6XG5cdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUodGFyZ2V0VGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiRGVsZXRlXCI6XG5cdFx0XHRcdFx0XHRpZiAodGFyZ2V0SWQ/LmluY2x1ZGVzKFwiZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwiKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0XHQoZGF0YSkgPT4gZGF0YS50b0xvd2VyQ2FzZSgpICE9PSB0YXJnZXRUZXh0LnRvTG93ZXJDYXNlKClcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeSAhPT0gdGFyZ2V0VGV4dCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIFwiRXNjYXBlXCI6XG5cdFx0XHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIG9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuJHNlYXJjaElucHV0Py5nZXRWYWx1ZSgpICYmICghdGhpcy4kZmF2b3JpdGVQb3BvdmVyIHx8ICF0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmlzT3BlbigpKSkge1xuXHRcdFx0Ly8gT3BlbiB0aGUgZWFzeSBmaWx0ZXIgcG9wb3ZlclxuXHRcdFx0dGhpcy5zdGF0ZS5pc0hpc3RvcnlFbmFibGVkID0gdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uaXNIaXN0b3J5RW5hYmxlZCgpID8/IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5nZXRGYXZvcml0ZVF1ZXJpZXMoKSA/PyBbXTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9ICh0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5nZXRSZWNlbnRRdWVyaWVzKCkgPz8gW10pLm1hcCgocXVlcnkpID0+IHF1ZXJ5KTtcblx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8ub3BlbkJ5KHRoaXMuJHNlYXJjaElucHV0KTtcblx0XHR9XG5cdH1cblxuXHRyZXF1ZXN0RmF2b3JpdGUoZTogQnV0dG9uJFByZXNzRXZlbnQpOiB2b2lkIHtcblx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmNsb3NlKCk7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKGUuZ2V0U291cmNlKCkuZ2V0VGV4dCgpKTtcblx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdH1cblxuXHRvbkVudGVyUHJlc3NlZCgpOiB2b2lkIHtcblx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmNsb3NlKCk7XG5cdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSBmYWxzZTtcblx0XHRsZXQgbWFnaWNRdWVyeSA9IHRoaXMuJHNlYXJjaElucHV0Py5nZXRWYWx1ZSgpO1xuXHRcdGlmIChtYWdpY1F1ZXJ5ID09PSBcIlwiICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIikpIHtcblx0XHRcdG1hZ2ljUXVlcnkgPSB0aGlzLiRzZWFyY2hJbnB1dC5nZXRQbGFjZWhvbGRlcigpO1xuXHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKG1hZ2ljUXVlcnkpO1xuXHRcdH1cblx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWVTdGF0ZVRleHQoXCJcIik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlU3RhdGUoXCJOb25lXCIpO1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiZW50ZXJQcmVzc2VkXCIsIHsgcXVlcnk6IG1hZ2ljUXVlcnkgfSk7XG5cdH1cblxuXHRhZGRSZWNlbnRRdWVyeShxdWVyeVN0cmluZzogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBzdG9yaW5nXG5cdFx0cXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZz8ucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpO1xuXG5cdFx0Y29uc3QgcmVjZW50UXVlcnlJbmRleCA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maW5kSW5kZXgoKHF1ZXJ5KSA9PiBxdWVyeS50b0xvd2VyQ2FzZSgpID09PSBxdWVyeVN0cmluZz8udG9Mb3dlckNhc2UoKSk7XG5cdFx0aWYgKHF1ZXJ5U3RyaW5nICYmIHJlY2VudFF1ZXJ5SW5kZXggPT09IC0xKSB7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSBbcXVlcnlTdHJpbmddLmNvbmNhdCh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMpO1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5sZW5ndGggPiA1KSB7XG5cdFx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5zbGljZSgwLCA1KTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHF1ZXJ5U3RyaW5nKSB7XG5cdFx0XHRjb25zdCByZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbHRlcigocXVlcnkpID0+IHF1ZXJ5LnRvTG93ZXJDYXNlKCkgIT09IHF1ZXJ5U3RyaW5nPy50b0xvd2VyQ2FzZSgpKTtcblx0XHRcdHJlY2VudFF1ZXJpZXMudW5zaGlmdChxdWVyeVN0cmluZyk7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSByZWNlbnRRdWVyaWVzO1xuXHRcdH1cblx0fVxuXG5cdG9uU3RhdGVDaGFuZ2UoY2hhbmdlZFByb3BzOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZWRQcm9wcy5pbmNsdWRlcyhcImZhdm9yaXRlUXVlcmllc1wiKSB8fCBjaGFuZ2VkUHJvcHMuaW5jbHVkZXMoXCJyZWNlbnRRdWVyaWVzXCIpKSB7XG5cdFx0XHR0aGlzLnNoZWxsSGlzdG9yeVByb3ZpZGVyPy5zZXRGYXZvcml0ZVF1ZXJpZXModGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMpO1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uc2V0UmVjZW50UXVlcmllcyh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubWFwKChxdWVyeSkgPT4gcXVlcnkpKTtcblx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllc1dpdEZhdm9yaXRlcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5tYXAoKHJlY2VudFF1ZXJ5KSA9PiB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0dGV4dDogcmVjZW50UXVlcnksXG5cdFx0XHRcdFx0aXNGYXZvcml0ZTogISF0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maW5kKChmYXZvcml0ZVF1ZXJ5KSA9PiBmYXZvcml0ZVF1ZXJ5ID09PSByZWNlbnRRdWVyeSlcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIGluaXRTaGVsbEhpc3RvcnlQcm92aWRlcigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlciA9IGF3YWl0IFNoZWxsSGlzdG9yeVByb3ZpZGVyLmdldEluc3RhbmNlKHRoaXMuYXBwSWQgPz8gXCI8dW5rbm93bkFwcD5cIik7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGNyZWF0aW5nIFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZvciBlYXN5IGZpbHRlclwiLCBlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZUZhdm9yaXRlUG9wb3ZlcigpOiBQb3BvdmVyIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWZhdm9yaXRlUG9wb3ZlclwifVxuXHRcdFx0XHRzaG93SGVhZGVyPXtmYWxzZX1cblx0XHRcdFx0aG9yaXpvbnRhbFNjcm9sbGluZz17ZmFsc2V9XG5cdFx0XHRcdHBsYWNlbWVudD17UGxhY2VtZW50VHlwZS5Cb3R0b219XG5cdFx0XHRcdHNob3dBcnJvdz17ZmFsc2V9XG5cdFx0XHRcdGluaXRpYWxGb2N1cz17dGhpcy4kc2VhcmNoSW5wdXR9XG5cdFx0XHRcdGNsYXNzPXtcInNhcEZFQ29udHJvbHNQb3BvdmVyXCJ9XG5cdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDAgfHwgZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PEZsZXhCb3ggZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLkNvbHVtbn0gY2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifSByZW5kZXJUeXBlPXtcIkJhcmVcIn0+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0aXRlbXM6IFtcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZVN0eWxlPXtUaXRsZUxldmVsLkg2fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfU1VHR0VTVElPTlNfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8SEJveFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaUNvbnRlbnRQYWRkaW5nXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJyZWNvbW1lbmRlZFF1ZXJpZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXA9e0ZsZXhXcmFwLldyYXB9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUucmVjb21tZW5kZWRRdWVyaWVzLmxlbmd0aCA+IDB9XG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM6IChpZDogc3RyaW5nLCBjdHg6IENvbnRleHQpOiBTdGFuZGFyZExpc3RJdGVtID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5FbmRcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMucmVxdWVzdEZhdm9yaXRlLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvSEJveD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZVRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9GQVZPUklURV9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8TGlzdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiZmF2b3JpdGVRdWVyaWVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9GQVZPUklURV9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5FeHRyYVNtYWxsfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25UeXBlPXtJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vRW50cmllc31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9GQVZPUklURV9ERVNDUklQVElPTlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM6IChpZDogc3RyaW5nLCBjdHg6IENvbnRleHQpOiBTdGFuZGFyZExpc3RJdGVtID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21MaXN0SXRlbVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZCArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVNtYWxsTWFyZ2luQmVnaW5cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W2lkICsgXCItZWFzeUZpbHRlckZhdm9yaXRlVGl0bGVcIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCl9IC8+XX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoPXtcIjEwMCVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Sb3d9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhbGlnbkl0ZW1zPXtGbGV4QWxpZ25JdGVtcy5DZW50ZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudD17RmxleEp1c3RpZnlDb250ZW50LlNwYWNlQmV0d2Vlbn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbmRlclR5cGU9e1wiQmFyZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cmFwcGluZz17ZmFsc2V9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwic2FwRkVDb250cm9sc1BvaW50ZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YXA9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkucmVwbGFjZSgvXFxcXFxcXFwvZywgXCJcXFxcXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvVGV4dD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2Zhdm9yaXRlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMTEVEX1NUQVJcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbdGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckZhdm9yaXRlSXRlbVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL1JldGFpbmluZyB0aGUgZm9jdXMgb24gcG9wb3ZlciBkb2Vzbid0IG1ha2UgdGhlIHBvcG92ZXIgY2xvc2Ugb24gZXZlcnkgaW50ZXJhY3Rpb25cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgcXVlcnlTdHJpbmcgPSBjdHguZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaW5kZXggPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5pbmRleE9mKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaW5kZXggIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KHF1ZXJ5KSA9PiBxdWVyeSAhPT0gcXVlcnlTdHJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvQ3VzdG9tTGlzdEl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvTGlzdD4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlU3R5bGU9e1RpdGxlTGV2ZWwuSDZ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9MQVNUX1VTRURcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXNcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlPXtMaXN0TW9kZS5EZWxldGV9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KGU6IExpc3RCYXNlJERlbGV0ZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbSA9IGUuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIikgYXMgQ3VzdG9tTGlzdEl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbS5mb2N1cygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHF1ZXJ5U3RyaW5nID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKT8uZGF0YShcInRleHRcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXF1ZXJ5U3RyaW5nKSByZXR1cm47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsaXplIGJhY2tzbGFzaGVzIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRxdWVyeVN0cmluZyA9IHF1ZXJ5U3RyaW5nPy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIik7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRub0RhdGE6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxJbGx1c3RyYXRlZE1lc3NhZ2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9MQVNUX1VTRURfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfUkVDRU5UX0RFU0NSSVBUSU9OXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtczogKGlkOiBzdHJpbmcsIGN0eDogQ29udGV4dCk6IEZsZXhCb3ggPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbUxpc3RJdGVtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkICsgXCItZWFzeUZpbHRlckxhc3RVc2VkSXRlbVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoY3R4LmdldE9iamVjdCgpLnRleHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VzdG9tRGF0YT17WzxDdXN0b21EYXRhIGtleT17XCJ0ZXh0XCJ9IHZhbHVlPXtjdHguZ2V0T2JqZWN0KCkudGV4dH0gLz5dfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9vbHRpcD17Y3R4LmdldE9iamVjdCgpLnRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdyYXBwaW5nPXtmYWxzZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGRUNvbnRyb2xzUG9pbnRlclwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEV2ZW50RGVsZWdhdGVIb29rXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRhcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS50ZXh0LnJlcGxhY2UoL1xcXFxcXFxcL2csIFwiXFxcXFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFwic2FwLWljb246Ly9mYXZvcml0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwic2FwLWljb246Ly9hZGQtZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMTEVEX1NUQVJcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9FTVBUWV9TVEFSVFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVuYWJsZWQ9e2xlc3NUaGFuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJpbmRTdGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJmYXZvcml0ZVF1ZXJpZXNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSBhcyBQYXRoSW5Nb2RlbEV4cHJlc3Npb248dW5rbm93bj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZEl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHF1ZXJ5U3RyaW5nID0gY3R4LmdldE9iamVjdCgpLnRleHQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgaXNGYXZvcml0ZSA9IGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGlzRmF2b3JpdGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucmVtb3ZlRnJvbUZhdm9yaXRlcyhxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWRkVG9GYXZvcml0ZXMocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0N1c3RvbUxpc3RJdGVtPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0xpc3Q+XG5cdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpIGFzIFBvcG92ZXI7XG5cdH1cblxuXHRwcml2YXRlIHJlbW92ZUZyb21GYXZvcml0ZXMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmlsdGVyKChkYXRhKSA9PiBkYXRhLnRvTG93ZXJDYXNlKCkgIT09IHF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBhZGRUb0Zhdm9yaXRlcyhxdWVyeTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3RmF2b3JpdGUgPSBbcXVlcnldLmNvbmNhdCh0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5jb25jYXQoKSk7XG5cdFx0aWYgKG5ld0Zhdm9yaXRlLmxlbmd0aCA+IDUpIHtcblx0XHRcdG5ld0Zhdm9yaXRlLnBvcCgpO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IG5ld0Zhdm9yaXRlO1xuXHR9XG5cblx0c3RhdGljIHJlbmRlcihybTogUmVuZGVyTWFuYWdlciwgY29udHJvbDogRWFzeUZpbHRlcklucHV0KTogdm9pZCB7XG5cdFx0cmV0dXJuIGpzeC5yZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIocm0sIGNvbnRyb2wsICgpID0+IHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxzcGFuIHJlZj17Y29udHJvbH0gY2xhc3M9e1wic2FwRkVFYXN5RmlsdGVySW5wdXRcIn0+XG5cdFx0XHRcdFx0e2NvbnRyb2wuJHNlYXJjaElucHV0fVxuXHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BeUNxQkEsZUFBZSxJQUFBQyxJQUFBLEdBRG5DQyxjQUFjLENBQUMsNENBQTRDLENBQUMsRUFBQUMsS0FBQSxHQUUzREMsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRSxhQUFhO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR3RFQyxRQUFRLENBQUM7SUFBRUosSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHNUJELFFBQVEsQ0FBQztJQUFFSixJQUFJLEVBQUU7RUFBUSxDQUFDLENBQUMsRUFBQU0sS0FBQSxHQUczQkMsS0FBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdQRCxLQUFLLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR1BGLEtBQUssQ0FBQyxDQUFDLEVBQUFHLEtBQUEsR0FTUEMsV0FBVyxDQUFDLENBQUMsRUFBQWYsSUFBQSxDQUFBZ0IsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxRQUFBO0lBaUJkLFNBQUFuQixnQkFBWW9CLFVBQXVFLEVBQUVDLE1BQXlCLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQy9HQSxLQUFBLEdBQUFILFFBQUEsQ0FBQUksSUFBQSxPQUFNSCxVQUFVLEVBQVlDLE1BQU0sQ0FBQztNQUFDRywwQkFBQSxDQUFBRixLQUFBLGtCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxXQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSx1QkFBQUssWUFBQSxFQUFBTCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFNLFlBQUEsRUFBQU4sS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBTyxZQUFBLEVBQUFQLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxnQkFBQVEsWUFBQSxFQUFBUixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsV0FBQVMsWUFBQSxFQUFBVCxLQUFBO01BQ3BDQSxLQUFBLENBQUtVLFVBQVUsQ0FBQyxDQUFDO01BQUMsT0FBQVYsS0FBQTtJQUNuQjtJQUFDVyxRQUFBLEdBQUFqQyxlQUFBO0lBQUFrQyxjQUFBLENBQUFsQyxlQUFBLEVBQUFtQixRQUFBO0lBQUEsSUFBQWdCLE1BQUEsR0FBQW5DLGVBQUEsQ0FBQW9DLFNBQUE7SUFBQUQsTUFBQSxDQUVNRSxRQUFRLEdBQWYsU0FBT0EsUUFBUUEsQ0FBQSxFQUFXO01BQ3pCLE9BQU8sSUFBSSxDQUFDQyxZQUFZLENBQUNELFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFBQUYsTUFBQSxDQUVNSSxnQkFBZ0IsR0FBdkIsU0FBT0EsZ0JBQWdCQSxDQUFBLEVBQVk7TUFDbEMsT0FBTyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsZ0JBQWdCLENBQUNFLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFBQU4sTUFBQSxDQUVETyxRQUFRLEdBQVIsU0FBQUEsUUFBUUEsQ0FBQ0MsS0FBYSxFQUFRO01BQzdCLElBQUksQ0FBQ0wsWUFBWSxDQUFDSSxRQUFRLENBQUNDLEtBQUssQ0FBQztNQUNqQyxPQUFPLElBQUk7SUFDWixDQUFDO0lBQUFSLE1BQUEsQ0FFRFMsY0FBYyxHQUFkLFNBQUFBLGNBQWNBLENBQUNELEtBQWEsRUFBUTtNQUNuQyxJQUFJLENBQUNMLFlBQVksQ0FBQ00sY0FBYyxDQUFDRCxLQUFLLENBQUM7TUFDdkMsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUFBUixNQUFBLENBRU1VLGNBQWMsR0FBckIsU0FBT0EsY0FBY0EsQ0FBQSxFQUFXO01BQy9CLE9BQU8sSUFBSSxDQUFDUCxZQUFZLENBQUNPLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFBQVYsTUFBQSxDQUVESCxVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQSxFQUFTO01BQ2xCLElBQUksQ0FBQ1EsS0FBSyxDQUFDTSxrQkFBa0IsR0FBRyxJQUFJLENBQUNDLGlCQUFpQixJQUFJLEVBQUU7TUFDNUQsSUFBSSxDQUFDQyxjQUFjLEdBQUdDLEdBQUcsQ0FBQ0Msb0JBQW9CLENBQUMsaUJBQWlCLENBQUU7TUFDbEUsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBQUFoQixNQUFBLENBRURpQixZQUFZLEdBQVosU0FBQUEsWUFBWUEsQ0FBQ0MsT0FBZSxFQUFRO01BQ25DLElBQUksQ0FBQ2YsWUFBWSxDQUFDZ0IsYUFBYSxDQUFDQyxVQUFVLENBQUNDLE9BQU8sQ0FBQztNQUNuRCxJQUFJLENBQUNsQixZQUFZLENBQUNtQixpQkFBaUIsQ0FBQ0osT0FBTyxDQUFDO01BQzVDLElBQUksQ0FBQ2YsWUFBWSxDQUFDb0IscUJBQXFCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUF2QixNQUFBLENBRUR3QixVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQSxFQUFTO01BQ2xCLElBQUksQ0FBQ3JCLFlBQVksQ0FBQ2dCLGFBQWEsQ0FBQ0MsVUFBVSxDQUFDSyxJQUFJLENBQUM7TUFDaEQsSUFBSSxDQUFDdEIsWUFBWSxDQUFDdUIsc0JBQXNCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQUExQixNQUFBLENBRURnQixXQUFXLEdBQVgsU0FBQUEsV0FBV0EsQ0FBQSxFQUFTO01BQ25CLElBQUksQ0FBQ2IsWUFBWSxHQUNoQndCLElBQUEsQ0FBQ0MsS0FBSztRQUNMQyxLQUFLLEVBQUMsTUFBTTtRQUNaQyxhQUFhLEVBQUUsSUFBSztRQUNwQkMsTUFBTSxFQUFHQyxDQUFDLElBQVc7VUFDcEIsSUFBSSxDQUFDQyxTQUFTLENBQUMsY0FBYyxFQUFFO1lBQUVDLEtBQUssRUFBRUYsQ0FBQyxDQUFDRyxZQUFZLENBQUMsT0FBTztVQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFFO1FBQ0ZDLFVBQVUsRUFBR0osQ0FBd0IsSUFBVztVQUMvQyxJQUFJLENBQUMzQixLQUFLLENBQUNnQyxZQUFZLEdBQUcsSUFBSTtVQUM5QixJQUFJLENBQUNKLFNBQVMsQ0FBQyxZQUFZLENBQUM7VUFDNUIsSUFBSSxDQUFDRCxDQUFDLENBQUNNLFNBQVMsQ0FBQyxDQUFDLENBQUNwQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDcUMsZ0JBQWdCLEVBQUVDLE1BQU0sQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDQyxxQkFBcUIsQ0FBQyxDQUFDO1VBQzdCO1VBQ0EsSUFBSVQsQ0FBQyxDQUFDRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQzFCLGNBQWMsQ0FBQyxJQUFJLENBQUNJLGNBQWMsQ0FBQzZCLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1VBQzlFO1VBQ0EsSUFBSSxJQUFJLENBQUN2QyxZQUFZLENBQUN3QyxhQUFhLENBQUMsQ0FBQyxLQUFLdkIsVUFBVSxDQUFDQyxPQUFPLEVBQUU7WUFDN0QsSUFBSSxDQUFDRyxVQUFVLENBQUMsQ0FBQztVQUNsQjtRQUNELENBQUU7UUFDRm9CLFdBQVcsRUFBRSxJQUFJLENBQUMvQixjQUFjLENBQUM2QixPQUFPLENBQUMsMkJBQTJCO01BQUUsQ0FDL0QsQ0FDUjtNQUVELE1BQU1HLFdBQVcsR0FBRyxJQUFJLENBQUNoQyxjQUFjLENBQUM2QixPQUFPLENBQUMsNENBQTRDLENBQUM7TUFDN0YsTUFBTUksYUFBYSxHQUFHLElBQUlDLGFBQWEsQ0FBQztRQUFFQyxJQUFJLEVBQUVIO01BQVksQ0FBQyxDQUFDLENBQUNJLFFBQVEsQ0FBQyxDQUFDO01BQ3pFLE1BQU1DLGVBQWUsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDLENBQUM7TUFDcEQsSUFBSSxDQUFDWixnQkFBZ0IsR0FBR1csZUFBZTtNQUN2QyxJQUFJLENBQUMvQyxZQUFZLENBQUNpRCxrQkFBa0IsQ0FBQ0YsZUFBZSxDQUFDO01BQ3JELElBQUksQ0FBQy9DLFlBQVksQ0FBQ2lELGtCQUFrQixDQUFDTixhQUFhLENBQUM7TUFDbkQsSUFBSSxDQUFDM0MsWUFBWSxDQUFDa0QsWUFBWSxDQUFDSCxlQUFlLENBQUM7TUFDL0MsSUFBSSxDQUFDL0MsWUFBWSxDQUFDbUQsZ0JBQWdCLENBQUM7UUFDbENDLE9BQU8sRUFBR3ZCLENBQWdCLElBQUs7VUFDOUIsSUFBSUEsQ0FBQyxDQUFDd0IsR0FBRyxLQUFLLE9BQU8sRUFBRTtZQUN0QixJQUFJLENBQUNDLGNBQWMsQ0FBQyxDQUFDO1VBQ3RCO1VBQ0EsSUFBSSxJQUFJLENBQUNsQixnQkFBZ0IsSUFBSSxJQUFJLENBQUNwQyxZQUFZLENBQUNELFFBQVEsQ0FBQyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDcUMsZ0JBQWdCLENBQUNtQixLQUFLLENBQUMsQ0FBQztVQUM5QjtRQUNELENBQUM7UUFDREMsU0FBUyxFQUFHM0IsQ0FBZ0IsSUFBSztVQUNoQyxJQUNDQSxDQUFDLENBQUN3QixHQUFHLEtBQUssS0FBSyxJQUNmLElBQUksQ0FBQ3JELFlBQVksRUFBRUQsUUFBUSxDQUFDLENBQUMsQ0FBQzBELE1BQU0sS0FBSyxDQUFDLElBQzFDLElBQUksQ0FBQ3pELFlBQVksRUFBRUQsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUNDLFlBQVksRUFBRU8sY0FBYyxDQUFDLENBQUMsSUFDckUsSUFBSSxDQUFDUCxZQUFZLEVBQUVPLGNBQWMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDRyxjQUFjLENBQUM2QixPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFDL0Y7WUFDRFYsQ0FBQyxDQUFDNkIsY0FBYyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDMUQsWUFBWSxFQUFFSSxRQUFRLENBQUMsSUFBSSxDQUFDSixZQUFZLEVBQUVPLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDdUIsU0FBUyxDQUFDLFlBQVksQ0FBQztVQUM3QixDQUFDLE1BQU0sSUFBSUQsQ0FBQyxDQUFDd0IsR0FBRyxLQUFLLFdBQVcsRUFBRTtZQUNqQyxNQUFNTSxlQUFlLEdBQUcsSUFBSSxDQUFDdkIsZ0JBQWdCLEVBQUV3QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxNQUFNQyxjQUFjLEdBQUlGLGVBQWUsQ0FBYUcsUUFBUSxDQUFDLENBQUM7WUFDOURELGNBQWMsRUFBRUUsSUFBSSxDQUFFQyxJQUFJLElBQUtBLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsS0FBS0QsSUFBSSxDQUFDRSxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1VBQzNFO1FBQ0QsQ0FBQztRQUNEQyxLQUFLLEVBQUVBLENBQUEsS0FBTTtVQUNaLElBQUksQ0FBQzdCLHFCQUFxQixDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNEOEIsU0FBUyxFQUFFQSxDQUFBLEtBQU07VUFDaEIsSUFBSSxDQUFDOUIscUJBQXFCLENBQUMsQ0FBQztRQUM3QjtNQUNELENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ0YsZ0JBQWdCLENBQUNlLGdCQUFnQixDQUFDO1FBQ3RDSyxTQUFTLEVBQUczQixDQUFnQixJQUFLO1VBQ2hDLE1BQU13QyxVQUFVLEdBQUl4QyxDQUFDLENBQUN5QyxNQUFNLEVBQWtCQyxTQUFTO1VBQ3ZELE1BQU1DLFFBQVEsR0FBSTNDLENBQUMsQ0FBQ3lDLE1BQU0sRUFBa0JHLEVBQUU7VUFDOUMsUUFBUTVDLENBQUMsQ0FBQ3dCLEdBQUc7WUFDWixLQUFLLE9BQU87Y0FDWCxJQUFJLENBQUNyRCxZQUFZLEVBQUVJLFFBQVEsQ0FBQ2lFLFVBQVUsQ0FBQztjQUN2QztZQUNELEtBQUssUUFBUTtjQUNaLElBQUlHLFFBQVEsRUFBRUUsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUU7Z0JBQ2pELElBQUksQ0FBQ3hFLEtBQUssQ0FBQ3lFLGVBQWUsR0FBRyxJQUFJLENBQUN6RSxLQUFLLENBQUN5RSxlQUFlLENBQUNDLE1BQU0sQ0FDNURDLElBQUksSUFBS0EsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQyxLQUFLVCxVQUFVLENBQUNTLFdBQVcsQ0FBQyxDQUN6RCxDQUFDO2NBQ0YsQ0FBQyxNQUFNO2dCQUNOLElBQUksQ0FBQzVFLEtBQUssQ0FBQzZFLGFBQWEsR0FBRyxJQUFJLENBQUM3RSxLQUFLLENBQUM2RSxhQUFhLENBQUNILE1BQU0sQ0FBRTdDLEtBQUssSUFBS0EsS0FBSyxLQUFLc0MsVUFBVSxDQUFDO2NBQzVGO2NBQ0E7WUFDRCxLQUFLLFFBQVE7Y0FDWixJQUFJLElBQUksQ0FBQ2pDLGdCQUFnQixFQUFFQyxNQUFNLENBQUMsQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUNELGdCQUFnQixDQUFDbUIsS0FBSyxDQUFDLENBQUM7Y0FDOUI7Y0FDQTtVQUNGO1FBQ0Q7TUFDRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUExRCxNQUFBLENBRU95QyxxQkFBcUIsR0FBN0IsU0FBUUEscUJBQXFCQSxDQUFBLEVBQVM7TUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQ3RDLFlBQVksRUFBRUQsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQ3FDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDQSxnQkFBZ0IsRUFBRUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ25HO1FBQ0EsSUFBSSxDQUFDbkMsS0FBSyxDQUFDRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMrRSxvQkFBb0IsRUFBRS9FLGdCQUFnQixDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ3BGLElBQUksQ0FBQ0MsS0FBSyxDQUFDeUUsZUFBZSxHQUFHLElBQUksQ0FBQ0ssb0JBQW9CLEVBQUVDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFO1FBQ2xGLElBQUksQ0FBQy9FLEtBQUssQ0FBQzZFLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQ0Msb0JBQW9CLEVBQUVFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUVDLEdBQUcsQ0FBRXBELEtBQUssSUFBS0EsS0FBSyxDQUFDO1FBQ3RHLElBQUksQ0FBQ0ssZ0JBQWdCLEVBQUVnRCxNQUFNLENBQUMsSUFBSSxDQUFDcEYsWUFBWSxDQUFDO01BQ2pEO0lBQ0QsQ0FBQztJQUFBSCxNQUFBLENBRUR3RixlQUFlLEdBQWYsU0FBQUEsZUFBZUEsQ0FBQ3hELENBQW9CLEVBQVE7TUFDM0MsSUFBSSxDQUFDTyxnQkFBZ0IsRUFBRW1CLEtBQUssQ0FBQyxDQUFDO01BQzlCLElBQUksQ0FBQ3ZELFlBQVksRUFBRUksUUFBUSxDQUFDeUIsQ0FBQyxDQUFDTSxTQUFTLENBQUMsQ0FBQyxDQUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDO01BQ3BELElBQUksQ0FBQ2UsY0FBYyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUFBekQsTUFBQSxDQUVEeUQsY0FBYyxHQUFkLFNBQUFBLGNBQWNBLENBQUEsRUFBUztNQUN0QixJQUFJLENBQUNsQixnQkFBZ0IsRUFBRW1CLEtBQUssQ0FBQyxDQUFDO01BQzlCLElBQUksQ0FBQ3JELEtBQUssQ0FBQ2dDLFlBQVksR0FBRyxLQUFLO01BQy9CLElBQUlvRCxVQUFVLEdBQUcsSUFBSSxDQUFDdEYsWUFBWSxFQUFFRCxRQUFRLENBQUMsQ0FBQztNQUM5QyxJQUFJdUYsVUFBVSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUN0RixZQUFZLENBQUNPLGNBQWMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDRyxjQUFjLENBQUM2QixPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFBRTtRQUN6SCtDLFVBQVUsR0FBRyxJQUFJLENBQUN0RixZQUFZLENBQUNPLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQ1AsWUFBWSxFQUFFSSxRQUFRLENBQUNrRixVQUFVLENBQUM7TUFDeEM7TUFDQSxJQUFJLENBQUN0RixZQUFZLEVBQUVtQixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7TUFDeEMsSUFBSSxDQUFDbkIsWUFBWSxFQUFFZ0IsYUFBYSxDQUFDLE1BQU0sQ0FBQztNQUN4QyxJQUFJLENBQUNjLFNBQVMsQ0FBQyxjQUFjLEVBQUU7UUFBRUMsS0FBSyxFQUFFdUQ7TUFBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUFBekYsTUFBQSxDQUVEMEYsY0FBYyxHQUFkLFNBQUFBLGNBQWNBLENBQUNDLFdBQStCLEVBQVE7TUFDckQ7TUFDQUEsV0FBVyxHQUFHQSxXQUFXLEVBQUVDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO01BRWpELE1BQU1DLGdCQUFnQixHQUFHLElBQUksQ0FBQ3hGLEtBQUssQ0FBQzZFLGFBQWEsQ0FBQ1ksU0FBUyxDQUFFNUQsS0FBSyxJQUFLQSxLQUFLLENBQUMrQyxXQUFXLENBQUMsQ0FBQyxLQUFLVSxXQUFXLEVBQUVWLFdBQVcsQ0FBQyxDQUFDLENBQUM7TUFDMUgsSUFBSVUsV0FBVyxJQUFJRSxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUMzQyxJQUFJLENBQUN4RixLQUFLLENBQUM2RSxhQUFhLEdBQUcsQ0FBQ1MsV0FBVyxDQUFDLENBQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMxRixLQUFLLENBQUM2RSxhQUFhLENBQUM7UUFDekUsSUFBSSxJQUFJLENBQUM3RSxLQUFLLENBQUM2RSxhQUFhLENBQUN0QixNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQ3hDLElBQUksQ0FBQ3ZELEtBQUssQ0FBQzZFLGFBQWEsR0FBRyxJQUFJLENBQUM3RSxLQUFLLENBQUM2RSxhQUFhLENBQUNjLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFO01BQ0QsQ0FBQyxNQUFNLElBQUlMLFdBQVcsRUFBRTtRQUN2QixNQUFNVCxhQUFhLEdBQUcsSUFBSSxDQUFDN0UsS0FBSyxDQUFDNkUsYUFBYSxDQUFDSCxNQUFNLENBQUU3QyxLQUFLLElBQUtBLEtBQUssQ0FBQytDLFdBQVcsQ0FBQyxDQUFDLEtBQUtVLFdBQVcsRUFBRVYsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwSEMsYUFBYSxDQUFDZSxPQUFPLENBQUNOLFdBQVcsQ0FBQztRQUNsQyxJQUFJLENBQUN0RixLQUFLLENBQUM2RSxhQUFhLEdBQUdBLGFBQWE7TUFDekM7SUFDRCxDQUFDO0lBQUFsRixNQUFBLENBRURrRyxhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQSxFQUFvQztNQUFBLElBQW5DQyxZQUFzQixHQUFBQyxTQUFBLENBQUF4QyxNQUFBLFFBQUF3QyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLEVBQUU7TUFDeEMsSUFBSUQsWUFBWSxDQUFDdEIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUlzQixZQUFZLENBQUN0QixRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDdkYsSUFBSSxDQUFDTSxvQkFBb0IsRUFBRW1CLGtCQUFrQixDQUFDLElBQUksQ0FBQ2pHLEtBQUssQ0FBQ3lFLGVBQWUsQ0FBQztRQUN6RSxJQUFJLENBQUNLLG9CQUFvQixFQUFFb0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDbEcsS0FBSyxDQUFDNkUsYUFBYSxDQUFDSSxHQUFHLENBQUVwRCxLQUFLLElBQUtBLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQzdCLEtBQUssQ0FBQ21HLHlCQUF5QixHQUFHLElBQUksQ0FBQ25HLEtBQUssQ0FBQzZFLGFBQWEsQ0FBQ0ksR0FBRyxDQUFFbUIsV0FBVyxJQUFLO1VBQ3BGLE9BQU87WUFDTnpELElBQUksRUFBRXlELFdBQVc7WUFDakJDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDckcsS0FBSyxDQUFDeUUsZUFBZSxDQUFDWixJQUFJLENBQUV5QyxhQUFhLElBQUtBLGFBQWEsS0FBS0YsV0FBVztVQUMvRixDQUFDO1FBQ0YsQ0FBQyxDQUFDO01BQ0g7SUFDRCxDQUFDO0lBQUF6RyxNQUFBLENBRUs0Ryx3QkFBd0IsR0FBOUIsZUFBTUEsd0JBQXdCQSxDQUFBLEVBQWtCO01BQy9DLElBQUk7UUFDSCxJQUFJLENBQUN6QixvQkFBb0IsR0FBRyxNQUFNMEIsb0JBQW9CLENBQUNDLFdBQVcsQ0FBQyxJQUFJLENBQUNDLEtBQUssSUFBSSxjQUFjLENBQUM7TUFDakcsQ0FBQyxDQUFDLE9BQU9DLEtBQUssRUFBRTtRQUNmQyxHQUFHLENBQUNELEtBQUssQ0FBQywyREFBMkQsRUFBRUEsS0FBZSxDQUFDO01BQ3hGO0lBQ0QsQ0FBQztJQUFBaEgsTUFBQSxDQUVEbUQscUJBQXFCLEdBQXJCLFNBQUFBLHFCQUFxQkEsQ0FBQSxFQUFZO01BQ2hDLE9BQ0N4QixJQUFBLENBQUN1RixPQUFPO1FBQ1B0QyxFQUFFLEVBQUUsSUFBSSxDQUFDdUMsS0FBSyxDQUFDLENBQUMsR0FBRyxrQkFBbUI7UUFDdENDLFVBQVUsRUFBRSxLQUFNO1FBQ2xCQyxtQkFBbUIsRUFBRSxLQUFNO1FBQzNCQyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ0MsTUFBTztRQUNoQ0MsU0FBUyxFQUFFLEtBQU07UUFDakJDLFlBQVksRUFBRSxJQUFJLENBQUN2SCxZQUFhO1FBQ2hDd0gsS0FBSyxFQUFFLHNCQUF1QjtRQUM5QkMsT0FBTyxFQUFFLElBQUksQ0FBQ3ZILEtBQUssQ0FBQ00sa0JBQWtCLENBQUNpRCxNQUFNLEdBQUcsQ0FBQyxJQUFJaUUsS0FBSyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDekgsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxDQUFFO1FBQUEwSCxRQUFBLEVBRTNHO1VBQ0FDLE9BQU8sRUFDTnJHLElBQUEsQ0FBQ3NHLE9BQU87WUFBQ0MsU0FBUyxFQUFFQyxhQUFhLENBQUNDLE1BQU87WUFBQ1QsS0FBSyxFQUFFLHFCQUFzQjtZQUFDVSxVQUFVLEVBQUUsTUFBTztZQUFBTixRQUFBLEVBQ3pGO2NBQ0FPLEtBQUssRUFBRSxDQUNOM0csSUFBQSxDQUFDNEcsS0FBSztnQkFDTEMsVUFBVSxFQUFFQyxVQUFVLENBQUNDLEVBQUc7Z0JBQzFCMUYsSUFBSSxFQUFFLElBQUksQ0FBQ25DLGNBQWMsQ0FBQzZCLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBRTtnQkFDN0VpRixLQUFLLEVBQUUsMEJBQTJCO2dCQUNsQ0MsT0FBTyxFQUFFLElBQUksQ0FBQ3ZILEtBQUssQ0FBQ00sa0JBQWtCLENBQUNpRCxNQUFNLEdBQUc7Y0FBRSxDQUNsRCxDQUFDLEVBQ0ZqQyxJQUFBLENBQUNnSCxJQUFJO2dCQUNKaEIsS0FBSyxFQUFFLHFCQUFzQjtnQkFDN0JXLEtBQUssRUFBRVIsU0FBUyxDQUFDLElBQUksQ0FBQ3pILEtBQUssRUFBRSxvQkFBb0IsQ0FBRTtnQkFDbkR1SSxJQUFJLEVBQUVDLFFBQVEsQ0FBQ0MsSUFBSztnQkFDcEJsQixPQUFPLEVBQUUsSUFBSSxDQUFDdkgsS0FBSyxDQUFDTSxrQkFBa0IsQ0FBQ2lELE1BQU0sR0FBRyxDQUFFO2dCQUFBbUUsUUFBQSxFQUVqRDtrQkFDQU8sS0FBSyxFQUFFQSxDQUFDMUQsRUFBVSxFQUFFbUUsR0FBWSxLQUF1QjtvQkFDdEQsT0FDQ3BILElBQUEsQ0FBQ3FILE1BQU07c0JBQ05yQixLQUFLLEVBQUUsb0JBQXFCO3NCQUM1QjNFLElBQUksRUFBRStGLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUU7c0JBQ3RCQyxLQUFLLEVBQUUsSUFBSSxDQUFDMUQsZUFBZSxDQUFDMkQsSUFBSSxDQUFDLElBQUk7b0JBQUUsQ0FDdkMsQ0FBQztrQkFFSjtnQkFDRDtjQUFDLENBQ0ksQ0FBQyxFQUNQeEgsSUFBQSxDQUFDNEcsS0FBSztnQkFDTDNELEVBQUUsRUFBRSxJQUFJLENBQUN1QyxLQUFLLENBQUMsQ0FBQyxHQUFHLDBCQUEyQjtnQkFDOUNxQixVQUFVLEVBQUVDLFVBQVUsQ0FBQ0MsRUFBRztnQkFDMUIxRixJQUFJLEVBQUUsSUFBSSxDQUFDbkMsY0FBYyxDQUFDNkIsT0FBTyxDQUFDLHNDQUFzQyxDQUFFO2dCQUMxRWlGLEtBQUssRUFBRSwwQkFBMkI7Z0JBQ2xDQyxPQUFPLEVBQUVDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQ3pILEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLElBQUk7Y0FBRSxDQUNoRSxDQUFDLEVBQ0ZzQixJQUFBLENBQUN5SCxJQUFJO2dCQUNKZCxLQUFLLEVBQUVSLFNBQVMsQ0FBQyxJQUFJLENBQUN6SCxLQUFLLEVBQUUsaUJBQWlCLENBQUU7Z0JBQ2hEdUgsT0FBTyxFQUFFQyxLQUFLLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUN6SCxLQUFLLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUU7Z0JBQUEwSCxRQUFBLEVBRS9EO2tCQUNBc0IsTUFBTSxFQUNMMUgsSUFBQSxDQUFDMkgsa0JBQWtCO29CQUNsQkMsS0FBSyxFQUFFLElBQUksQ0FBQzFJLGNBQWMsQ0FBQzZCLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBRTtvQkFDakY4RyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFVBQVc7b0JBQ3BEQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFNBQVU7b0JBQ25EQyxXQUFXLEVBQUUsSUFBSSxDQUFDakosY0FBYyxDQUFDNkIsT0FBTyxDQUN2QyxrREFDRDtrQkFBRSxDQUNGLENBQ0Q7a0JBQ0Q0RixLQUFLLEVBQUVBLENBQUMxRCxFQUFVLEVBQUVtRSxHQUFZLEtBQXVCO29CQUN0RCxPQUNDcEgsSUFBQSxDQUFDb0ksY0FBYztzQkFDZG5GLEVBQUUsRUFBRUEsRUFBRSxHQUFHLHlCQUEwQjtzQkFDbkMrQyxLQUFLLEVBQUUsdUJBQXdCO3NCQUMvQnFDLGNBQWMsRUFBRSxDQUFDcEYsRUFBRSxHQUFHLDBCQUEwQixDQUFFO3NCQUNsRHFGLFVBQVUsRUFBRSxDQUFDdEksSUFBQSxDQUFDdUksVUFBVTt3QkFBYzFKLEtBQUssRUFBRXVJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDO3NCQUFFLEdBQS9CLE1BQWlDLENBQUMsQ0FBRTtzQkFDbEVDLEtBQUssRUFBRUEsQ0FBQSxLQUFZO3dCQUNsQixJQUFJLENBQUMvSSxZQUFZLENBQUNJLFFBQVEsQ0FBQ3dJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDeEYsY0FBYyxDQUFDLENBQUM7c0JBQ3RCLENBQUU7c0JBQUFzRSxRQUFBLEVBRUZvQyxLQUFBLENBQUNsQyxPQUFPO3dCQUNQcEcsS0FBSyxFQUFFLE1BQU87d0JBQ2RxRyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ2lDLEdBQUk7d0JBQzdCQyxVQUFVLEVBQUVDLGNBQWMsQ0FBQ0MsTUFBTzt3QkFDbENDLGNBQWMsRUFBRUMsa0JBQWtCLENBQUNDLFlBQWE7d0JBQ2hEckMsVUFBVSxFQUFFLE1BQU87d0JBQ25CekQsRUFBRSxFQUFFQSxFQUFHO3dCQUFBbUQsUUFBQSxHQUVQcEcsSUFBQSxDQUFDZ0osSUFBSTswQkFDSjNILElBQUksRUFBRStGLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUU7MEJBQ3RCMkIsT0FBTyxFQUFFN0IsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBRTswQkFDekI0QixRQUFRLEVBQUUsS0FBTTswQkFDaEJsRCxLQUFLLEVBQUMsc0JBQXNCOzBCQUFBSSxRQUFBLEVBRTNCOzRCQUNBK0MsVUFBVSxFQUNUbkosSUFBQSxDQUFDb0osaUJBQWlCOzhCQUNqQkMsR0FBRyxFQUFFQSxDQUFBLEtBQVk7Z0NBQ2hCLElBQUksQ0FBQzdLLFlBQVksRUFBRUksUUFBUSxDQUMxQndJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3JELE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUN0QyxDQUFDO2dDQUNELElBQUksQ0FBQ25DLGNBQWMsQ0FBQyxDQUFDOzhCQUN0Qjs0QkFBRSxDQUNGOzBCQUVIO3dCQUFDLENBQ0ksQ0FBQyxFQUNQOUIsSUFBQSxDQUFDcUgsTUFBTTswQkFDTmlDLElBQUksRUFBRSxxQkFBc0I7MEJBQzVCTCxPQUFPLEVBQUUsSUFBSSxDQUFDL0osY0FBYyxDQUFDNkIsT0FBTyxDQUFDLDJCQUEyQixDQUFFOzBCQUNsRXNILGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQzdDLEtBQUssQ0FBQyxDQUFDLEdBQUcseUJBQXlCLENBQUU7MEJBQzNEakosSUFBSSxFQUFFZ04sVUFBVSxDQUFDQyxXQUFZOzBCQUM3QmpDLEtBQUssRUFBRUEsQ0FBQSxLQUFZOzRCQUNsQjs0QkFDQSxJQUFJLENBQUMzRyxnQkFBZ0IsRUFBRThCLEtBQUssQ0FBQyxDQUFDOzRCQUM5QixNQUFNc0IsV0FBVyxHQUFHb0QsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQzs0QkFDbkMsTUFBTW1DLEtBQUssR0FBRyxJQUFJLENBQUMvSyxLQUFLLENBQUN5RSxlQUFlLENBQUN1RyxPQUFPLENBQUMxRixXQUFXLENBQUM7NEJBQzdELElBQUl5RixLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7OEJBQ2pCLElBQUksQ0FBQy9LLEtBQUssQ0FBQ3lFLGVBQWUsR0FBRyxJQUFJLENBQUN6RSxLQUFLLENBQUN5RSxlQUFlLENBQUNDLE1BQU0sQ0FDNUQ3QyxLQUFLLElBQUtBLEtBQUssS0FBS3lELFdBQ3RCLENBQUM7NEJBQ0Y7MEJBQ0Q7d0JBQUUsQ0FDRixDQUFDO3NCQUFBLENBQ007b0JBQUMsQ0FDSyxDQUFDO2tCQUVuQjtnQkFDRDtjQUFDLENBQ0ksQ0FBQyxFQUNQaEUsSUFBQSxDQUFDNEcsS0FBSztnQkFDTDNELEVBQUUsRUFBRSxJQUFJLENBQUN1QyxLQUFLLENBQUMsQ0FBQyxHQUFHLDBCQUEyQjtnQkFDOUNxQixVQUFVLEVBQUVDLFVBQVUsQ0FBQ0MsRUFBRztnQkFDMUIxRixJQUFJLEVBQUUsSUFBSSxDQUFDbkMsY0FBYyxDQUFDNkIsT0FBTyxDQUFDLGlDQUFpQyxDQUFFO2dCQUNyRWlGLEtBQUssRUFBRSwwQkFBMkI7Z0JBQ2xDQyxPQUFPLEVBQUVDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQ3pILEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLElBQUk7Y0FBRSxDQUNoRSxDQUFDLEVBQ0ZzQixJQUFBLENBQUN5SCxJQUFJO2dCQUNKZCxLQUFLLEVBQUVSLFNBQVMsQ0FBQyxJQUFJLENBQUN6SCxLQUFLLEVBQUUsMkJBQTJCLENBQUU7Z0JBQzFEdUgsT0FBTyxFQUFFQyxLQUFLLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUN6SCxLQUFLLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUU7Z0JBQ2hFaUwsSUFBSSxFQUFFQyxRQUFRLENBQUNDLE1BQU87Z0JBQ3RCQyxNQUFNLEVBQUd6SixDQUF1QixJQUFXO2tCQUMxQyxNQUFNbUMsSUFBSSxHQUFHbkMsQ0FBQyxDQUFDRyxZQUFZLENBQUMsVUFBVSxDQUFtQjtrQkFDekRnQyxJQUFJLENBQUNFLEtBQUssQ0FBQyxDQUFDO2tCQUVaLElBQUlzQixXQUFXLEdBQUczRCxDQUFDLENBQUNHLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRTZDLElBQUksQ0FBQyxNQUFNLENBQUM7a0JBRTFELElBQUksQ0FBQ1csV0FBVyxFQUFFO2tCQUNsQjtrQkFDQUEsV0FBVyxHQUFHQSxXQUFXLEVBQUVDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO2tCQUVqRCxJQUFJLENBQUN2RixLQUFLLENBQUM2RSxhQUFhLEdBQUcsSUFBSSxDQUFDN0UsS0FBSyxDQUFDNkUsYUFBYSxDQUFDSCxNQUFNLENBQUU3QyxLQUFLLElBQUtBLEtBQUssS0FBS3lELFdBQVcsQ0FBQztnQkFDN0YsQ0FBRTtnQkFBQW9DLFFBQUEsRUFFRDtrQkFDQXNCLE1BQU0sRUFDTDFILElBQUEsQ0FBQzJILGtCQUFrQjtvQkFDbEJDLEtBQUssRUFBRSxJQUFJLENBQUMxSSxjQUFjLENBQUM2QixPQUFPLENBQUMsNkNBQTZDLENBQUU7b0JBQ2xGOEcsZ0JBQWdCLEVBQUVDLHNCQUFzQixDQUFDQyxVQUFXO29CQUNwREMsZ0JBQWdCLEVBQUVDLHNCQUFzQixDQUFDQyxTQUFVO29CQUNuREMsV0FBVyxFQUFFLElBQUksQ0FBQ2pKLGNBQWMsQ0FBQzZCLE9BQU8sQ0FDdkMsZ0RBQ0Q7a0JBQUUsQ0FDRixDQUNEO2tCQUNENEYsS0FBSyxFQUFFQSxDQUFDMUQsRUFBVSxFQUFFbUUsR0FBWSxLQUFjO29CQUM3QyxPQUNDcEgsSUFBQSxDQUFDb0ksY0FBYztzQkFDZG5GLEVBQUUsRUFBRUEsRUFBRSxHQUFHLHlCQUEwQjtzQkFDbkNzRSxLQUFLLEVBQUVBLENBQUEsS0FBWTt3QkFDbEIsSUFBSSxDQUFDL0ksWUFBWSxFQUFFSSxRQUFRLENBQUN3SSxHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUNqRyxJQUFJLENBQUM7d0JBQ2pELElBQUksQ0FBQ1MsY0FBYyxDQUFDLENBQUM7c0JBQ3RCLENBQUU7c0JBQ0ZrRSxLQUFLLEVBQUUsdUJBQXdCO3NCQUMvQnNDLFVBQVUsRUFBRSxDQUFDdEksSUFBQSxDQUFDdUksVUFBVTt3QkFBYzFKLEtBQUssRUFBRXVJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ2pHO3NCQUFLLEdBQXBDLE1BQXNDLENBQUMsQ0FBRTtzQkFDdkVnSCxjQUFjLEVBQUUsQ0FBQ3BGLEVBQUUsR0FBRywwQkFBMEIsQ0FBRTtzQkFBQW1ELFFBQUEsRUFFbERvQyxLQUFBLENBQUNsQyxPQUFPO3dCQUNQcEcsS0FBSyxFQUFFLE1BQU87d0JBQ2RxRyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ2lDLEdBQUk7d0JBQzdCQyxVQUFVLEVBQUVDLGNBQWMsQ0FBQ0MsTUFBTzt3QkFDbENDLGNBQWMsRUFBRUMsa0JBQWtCLENBQUNDLFlBQWE7d0JBQ2hEckMsVUFBVSxFQUFFLE1BQU87d0JBQ25CekQsRUFBRSxFQUFFQSxFQUFHO3dCQUFBbUQsUUFBQSxHQUVQcEcsSUFBQSxDQUFDZ0osSUFBSTswQkFDSjNILElBQUksRUFBRStGLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ2pHLElBQUs7MEJBQzNCNEgsT0FBTyxFQUFFN0IsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQyxDQUFDakcsSUFBSzswQkFDOUI2SCxRQUFRLEVBQUUsS0FBTTswQkFDaEJsRCxLQUFLLEVBQUMsc0JBQXNCOzBCQUFBSSxRQUFBLEVBRTNCOzRCQUNBK0MsVUFBVSxFQUNUbkosSUFBQSxDQUFDb0osaUJBQWlCOzhCQUNqQkMsR0FBRyxFQUFFQSxDQUFBLEtBQVk7Z0NBQ2hCLElBQUksQ0FBQzdLLFlBQVksRUFBRUksUUFBUSxDQUMxQndJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ2pHLElBQUksQ0FBQzRDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUMzQyxDQUFDO2dDQUNELElBQUksQ0FBQ25DLGNBQWMsQ0FBQyxDQUFDOzhCQUN0Qjs0QkFBRSxDQUNGOzBCQUVIO3dCQUFDLENBQ0ksQ0FBQyxFQUNQOUIsSUFBQSxDQUFDcUgsTUFBTTswQkFDTmlDLElBQUksRUFDSGxDLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLFVBQVUsR0FDdkIscUJBQXFCLEdBQ3JCLHlCQUNIOzBCQUNEa0UsT0FBTyxFQUNON0IsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQyxDQUFDdkMsVUFBVSxHQUN2QixJQUFJLENBQUM3RixjQUFjLENBQUM2QixPQUFPLENBQUMsMkJBQTJCLENBQUMsR0FDeEQsSUFBSSxDQUFDN0IsY0FBYyxDQUFDNkIsT0FBTyxDQUFDLDJCQUEyQixDQUMxRDswQkFDRGdKLE9BQU8sRUFBRUMsUUFBUSxDQUNoQi9ILE1BQU0sQ0FDTGtFLFNBQVMsQ0FDUixJQUFJLENBQUN6SCxLQUFLLEVBQ1YsaUJBQ0QsQ0FDRCxDQUFDLEVBQ0QsQ0FDRCxDQUFFOzBCQUNGbkMsSUFBSSxFQUFFZ04sVUFBVSxDQUFDQyxXQUFZOzBCQUM3Qm5CLGNBQWMsRUFBRSxDQUFDcEYsRUFBRSxHQUFHLHlCQUF5QixDQUFFOzBCQUNqRHNFLEtBQUssRUFBRUEsQ0FBQSxLQUFZOzRCQUNsQjs0QkFDQSxJQUFJLENBQUMzRyxnQkFBZ0IsRUFBRThCLEtBQUssQ0FBQyxDQUFDOzRCQUM5QixNQUFNc0IsV0FBVyxHQUFHb0QsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQyxDQUFDakcsSUFBSTs0QkFDeEMsTUFBTTBELFVBQVUsR0FBR3FDLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLFVBQVU7NEJBRTdDLElBQUlBLFVBQVUsRUFBRTs4QkFDZixJQUFJLENBQUNrRixtQkFBbUIsQ0FBQ2pHLFdBQVcsQ0FBQzs0QkFDdEMsQ0FBQyxNQUFNOzhCQUNOLElBQUksQ0FBQ2tHLGNBQWMsQ0FBQ2xHLFdBQVcsQ0FBQzs0QkFDakM7MEJBQ0Q7d0JBQUUsQ0FDRixDQUFDO3NCQUFBLENBQ007b0JBQUMsQ0FDSyxDQUFDO2tCQUVuQjtnQkFDRDtjQUFDLENBQ0ksQ0FBQztZQUVUO1VBQUMsQ0FDTztRQUVYO01BQUMsQ0FDTyxDQUFDO0lBRVosQ0FBQztJQUFBM0YsTUFBQSxDQUVPNEwsbUJBQW1CLEdBQTNCLFNBQVFBLG1CQUFtQkEsQ0FBQzFKLEtBQWEsRUFBUTtNQUNoRCxJQUFJLENBQUM3QixLQUFLLENBQUN5RSxlQUFlLEdBQUcsSUFBSSxDQUFDekUsS0FBSyxDQUFDeUUsZUFBZSxDQUFDQyxNQUFNLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQyxLQUFLL0MsS0FBSyxDQUFDK0MsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBQUFqRixNQUFBLENBRU82TCxjQUFjLEdBQXRCLFNBQVFBLGNBQWNBLENBQUMzSixLQUFhLEVBQVE7TUFDM0MsTUFBTTRKLFdBQVcsR0FBRyxDQUFDNUosS0FBSyxDQUFDLENBQUM2RCxNQUFNLENBQUMsSUFBSSxDQUFDMUYsS0FBSyxDQUFDeUUsZUFBZSxDQUFDaUIsTUFBTSxDQUFDLENBQUMsQ0FBQztNQUN2RSxJQUFJK0YsV0FBVyxDQUFDbEksTUFBTSxHQUFHLENBQUMsRUFBRTtRQUMzQmtJLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDLENBQUM7TUFDbEI7TUFDQSxJQUFJLENBQUMxTCxLQUFLLENBQUN5RSxlQUFlLEdBQUdnSCxXQUFXO0lBQ3pDLENBQUM7SUFBQWpPLGVBQUEsQ0FFTW1PLE1BQU0sR0FBYixTQUFPQSxNQUFNQSxDQUFDQyxFQUFpQixFQUFFQyxPQUF3QixFQUFRO01BQ2hFLE9BQU9DLEdBQUcsQ0FBQ0Msd0JBQXdCLENBQUNILEVBQUUsRUFBRUMsT0FBTyxFQUFFLE1BQU07UUFDdEQsT0FDQ3ZLLElBQUE7VUFBTTBLLEdBQUcsRUFBRUgsT0FBUTtVQUFDdkUsS0FBSyxFQUFFLHNCQUF1QjtVQUFBSSxRQUFBLEVBQ2hEbUUsT0FBTyxDQUFDL0w7UUFBWSxDQUNoQixDQUFDO01BRVQsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUFBLE9BQUF0QyxlQUFBO0VBQUEsRUFqZ0IyQ3lPLE9BQU8sR0FBQWhOLFdBQUEsR0FBQWlOLHlCQUFBLENBQUF4TixPQUFBLENBQUFrQixTQUFBLG1CQUFBakMsS0FBQTtJQUFBd08sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFwTixZQUFBLEdBQUFnTix5QkFBQSxDQUFBeE4sT0FBQSxDQUFBa0IsU0FBQSxZQUFBNUIsS0FBQTtJQUFBbU8sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuTixZQUFBLEdBQUErTSx5QkFBQSxDQUFBeE4sT0FBQSxDQUFBa0IsU0FBQSx3QkFBQTFCLEtBQUE7SUFBQWlPLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbE4sWUFBQSxHQUFBOE0seUJBQUEsQ0FBQXhOLE9BQUEsQ0FBQWtCLFNBQUEsbUJBQUF6QixLQUFBO0lBQUFnTyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpOLFlBQUEsR0FBQTZNLHlCQUFBLENBQUF4TixPQUFBLENBQUFrQixTQUFBLG1CQUFBdkIsS0FBQTtJQUFBOE4sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFoTixZQUFBLEdBQUE0TSx5QkFBQSxDQUFBeE4sT0FBQSxDQUFBa0IsU0FBQSxpQkFBQXRCLEtBQUE7SUFBQTZOLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBL00sWUFBQSxHQUFBMk0seUJBQUEsQ0FBQXhOLE9BQUEsQ0FBQWtCLFNBQUEsWUFBQXJCLEtBQUE7SUFBQTROLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BaUM5QztRQUNKdEssWUFBWSxFQUFFLEtBQUs7UUFDbkJqQyxnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCOEUsYUFBYSxFQUFFLEVBQUU7UUFDakJzQix5QkFBeUIsRUFBRSxFQUFFO1FBQzdCMUIsZUFBZSxFQUFFLEVBQWM7UUFDL0JuRSxrQkFBa0IsRUFBRTtNQUNyQixDQUFDO0lBQUE7RUFBQSxJQUFBNUIsT0FBQSxNQUFBRCxNQUFBO0VBQUFnQixRQUFBLEdBQUFqQyxlQUFBO0VBQUEsT0FBQWlDLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
491
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJkZXBlbmRlbnRzIiwiRXZlbnREZWxlZ2F0ZUhvb2siLCJ0YXAiLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwibW9kZSIsIkxpc3RNb2RlIiwiRGVsZXRlIiwiZGVsZXRlIiwiZW5hYmxlZCIsImxlc3NUaGFuIiwicmVtb3ZlRnJvbUZhdm9yaXRlcyIsImFkZFRvRmF2b3JpdGVzIiwibmV3RmF2b3JpdGUiLCJwb3AiLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJyZWYiLCJDb250cm9sIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFYXN5RmlsdGVySW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgUGF0aEluTW9kZWxFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBiaW5kU3RhdGUsIGVxdWFsLCBsZW5ndGgsIGxlc3NUaGFuIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgZGVmaW5lU3RhdGUsIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mLCB0eXBlIFN0YXRlT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgRXZlbnREZWxlZ2F0ZUhvb2sgZnJvbSBcInNhcC9mZS9iYXNlL0V2ZW50RGVsZWdhdGVIb29rXCI7XG5pbXBvcnQganN4IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBTaGVsbEhpc3RvcnlQcm92aWRlciBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvU2hlbGxIaXN0b3J5UHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgQnV0dG9uJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBDdXN0b21MaXN0SXRlbSBmcm9tIFwic2FwL20vQ3VzdG9tTGlzdEl0ZW1cIjtcbmltcG9ydCBGbGV4Qm94IGZyb20gXCJzYXAvbS9GbGV4Qm94XCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIHsgSW5wdXQkTGl2ZUNoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9tL0lucHV0XCI7XG5pbXBvcnQgSW5wdXQgZnJvbSBcInNhcC9tL0lucHV0XCI7XG5pbXBvcnQgTGlzdCBmcm9tIFwic2FwL20vTGlzdFwiO1xuaW1wb3J0IHR5cGUgeyBMaXN0QmFzZSREZWxldGVFdmVudCB9IGZyb20gXCJzYXAvbS9MaXN0QmFzZVwiO1xuaW1wb3J0IFBvcG92ZXIgZnJvbSBcInNhcC9tL1BvcG92ZXJcIjtcbmltcG9ydCB0eXBlIFN0YW5kYXJkTGlzdEl0ZW0gZnJvbSBcInNhcC9tL1N0YW5kYXJkTGlzdEl0ZW1cIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVGl0bGUgZnJvbSBcInNhcC9tL1RpdGxlXCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlLCBGbGV4QWxpZ25JdGVtcywgRmxleERpcmVjdGlvbiwgRmxleEp1c3RpZnlDb250ZW50LCBGbGV4V3JhcCwgTGlzdE1vZGUsIFBsYWNlbWVudFR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgSW52aXNpYmxlTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlTWVzc2FnZVwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgeyBJbnZpc2libGVNZXNzYWdlTW9kZSwgVGl0bGVMZXZlbCwgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbnR5cGUgUmVjZW50VHlwZSA9IHtcblx0dGV4dDogc3RyaW5nO1xuXHRpc0Zhdm9yaXRlOiBib29sZWFuO1xufTtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJJbnB1dFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeUZpbHRlcklucHV0IGV4dGVuZHMgQ29udHJvbCB7XG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLm0uSW5wdXRcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0JHNlYXJjaElucHV0ITogSW5wdXQ7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRhcHBJZD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0cmVjb21tZW5kZWRWYWx1ZXM/OiBzdHJpbmdbXTtcblxuXHRAZXZlbnQoKVxuXHRxdWVyeUNoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGVudGVyUHJlc3NlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGV2ZW50KClcblx0bGl2ZUNoYW5nZT86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlITogUmVzb3VyY2VCdW5kbGU7XG5cblx0c2hlbGxIaXN0b3J5UHJvdmlkZXI6IFNoZWxsSGlzdG9yeVByb3ZpZGVyIHwgdW5kZWZpbmVkO1xuXG5cdHBvcG92ZXJJbnZpc2libGVNZXNzYWdlOiBJbnZpc2libGVNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG5cdCRmYXZvcml0ZVBvcG92ZXI6IFBvcG92ZXIgfCB1bmRlZmluZWQ7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2UgPSBJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dCgpO1xuXHR9XG5cblx0c2V0QXNJbnZhbGlkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5XYXJuaW5nKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChtZXNzYWdlKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdHNldEFzVmFsaWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZShWYWx1ZVN0YXRlLk5vbmUpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdGNyZWF0ZUlucHV0KCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0ID0gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdGNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInF1ZXJ5Q2hhbmdlZFwiLCB7IHF1ZXJ5OiBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXsoZTogSW5wdXQkTGl2ZUNoYW5nZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0XHRpZiAoIWUuZ2V0U291cmNlKCkuZ2V0VmFsdWUoKSAmJiAhKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSA9PT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlU3RhdGUoKSA9PT0gVmFsdWVTdGF0ZS5XYXJuaW5nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEFzVmFsaWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH19XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0PjwvSW5wdXQ+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRGVwZW5kZW50KGZhdm9yaXRlUG9wb3Zlcik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGUua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgIT09IHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSk7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJsaXZlQ2hhbmdlXCIpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9wb3ZlckNvbmFpbmVyID0gdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5nZXRDb250ZW50KClbMF07XG5cdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySXRlbXMgPSAocG9wb3ZlckNvbmFpbmVyIGFzIEZsZXhCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29udGFpbmVySXRlbXM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSAmJiAoaXRlbS5mb2N1cygpLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbnRhcDogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fSxcblx0XHRcdG9uZm9jdXNpbjogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0VGV4dCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm91dGVyVGV4dDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5pZDtcblx0XHRcdFx0c3dpdGNoIChlLmtleSkge1xuXHRcdFx0XHRcdGNhc2UgXCJFbnRlclwiOlxuXHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRlbGV0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldElkPy5pbmNsdWRlcyhcImVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIikpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0KGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gdGFyZ2V0VGV4dC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVzY2FwZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5wb3BvdmVySW52aXNpYmxlTWVzc2FnZT8uYW5ub3VuY2UoXG5cdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9FQVNZX0ZJTFRFUl9JTlBVVF9URVhUX0xJTktfUE9QT1ZFUl9BUklBXCIpLFxuXHRcdFx0XHRcdEludmlzaWJsZU1lc3NhZ2VNb2RlLkFzc2VydGl2ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBvcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAmJiAoIXRoaXMuJGZhdm9yaXRlUG9wb3ZlciB8fCAhdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkpIHtcblx0XHRcdC8vIE9wZW4gdGhlIGVhc3kgZmlsdGVyIHBvcG92ZXJcblx0XHRcdHRoaXMuc3RhdGUuaXNIaXN0b3J5RW5hYmxlZCA9IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmlzSGlzdG9yeUVuYWJsZWQoKSA/PyBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uZ2V0RmF2b3JpdGVRdWVyaWVzKCkgPz8gW107XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSAodGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uZ2V0UmVjZW50UXVlcmllcygpID8/IFtdKS5tYXAoKHF1ZXJ5KSA9PiBxdWVyeSk7XG5cdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/Lm9wZW5CeSh0aGlzLiRzZWFyY2hJbnB1dCk7XG5cdFx0fVxuXHR9XG5cblx0cmVxdWVzdEZhdm9yaXRlKGU6IEJ1dHRvbiRQcmVzc0V2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShlLmdldFNvdXJjZSgpLmdldFRleHQoKSk7XG5cdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHR9XG5cblx0b25FbnRlclByZXNzZWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuc3RhdGUucXVlcnlDaGFuZ2VkID0gZmFsc2U7XG5cdFx0bGV0IG1hZ2ljUXVlcnkgPSB0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKTtcblx0XHRpZiAobWFnaWNRdWVyeSA9PT0gXCJcIiAmJiB0aGlzLiRzZWFyY2hJbnB1dC5nZXRQbGFjZWhvbGRlcigpICE9PSB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKSB7XG5cdFx0XHRtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShtYWdpY1F1ZXJ5KTtcblx0XHR9XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlU3RhdGVUZXh0KFwiXCIpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlKFwiTm9uZVwiKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImVudGVyUHJlc3NlZFwiLCB7IHF1ZXJ5OiBtYWdpY1F1ZXJ5IH0pO1xuXHR9XG5cblx0YWRkUmVjZW50UXVlcnkocXVlcnlTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdC8vIE5vcm1hbGl6ZSBiYWNrc2xhc2hlcyBiZWZvcmUgc3RvcmluZ1xuXHRcdHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmc/LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKTtcblxuXHRcdGNvbnN0IHJlY2VudFF1ZXJ5SW5kZXggPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmluZEluZGV4KChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSA9PT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGlmIChxdWVyeVN0cmluZyAmJiByZWNlbnRRdWVyeUluZGV4ID09PSAtMSkge1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gW3F1ZXJ5U3RyaW5nXS5jb25jYXQodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzKTtcblx0XHRcdGlmICh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubGVuZ3RoID4gNSkge1xuXHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuc2xpY2UoMCwgNSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChxdWVyeVN0cmluZykge1xuXHRcdFx0Y29uc3QgcmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeVN0cmluZz8udG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRyZWNlbnRRdWVyaWVzLnVuc2hpZnQocXVlcnlTdHJpbmcpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gcmVjZW50UXVlcmllcztcblx0XHR9XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKGNoYW5nZWRQcm9wczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VkUHJvcHMuaW5jbHVkZXMoXCJmYXZvcml0ZVF1ZXJpZXNcIikgfHwgY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwicmVjZW50UXVlcmllc1wiKSkge1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uc2V0RmF2b3JpdGVRdWVyaWVzKHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzKTtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldFJlY2VudFF1ZXJpZXModGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocXVlcnkpID0+IHF1ZXJ5KSk7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubWFwKChyZWNlbnRRdWVyeSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHRleHQ6IHJlY2VudFF1ZXJ5LFxuXHRcdFx0XHRcdGlzRmF2b3JpdGU6ICEhdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmluZCgoZmF2b3JpdGVRdWVyeSkgPT4gZmF2b3JpdGVRdWVyeSA9PT0gcmVjZW50UXVlcnkpXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaGVsbEhpc3RvcnlQcm92aWRlci5nZXRJbnN0YW5jZSh0aGlzLmFwcElkID8/IFwiPHVua25vd25BcHA+XCIpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBjcmVhdGluZyBTaGVsbEhpc3RvcnlQcm92aWRlciBmb3IgZWFzeSBmaWx0ZXJcIiwgZXJyb3IgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVGYXZvcml0ZVBvcG92ZXIoKTogUG9wb3ZlciB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQb3BvdmVyXG5cdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1mYXZvcml0ZVBvcG92ZXJcIn1cblx0XHRcdFx0c2hvd0hlYWRlcj17ZmFsc2V9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9e2ZhbHNlfVxuXHRcdFx0XHRwbGFjZW1lbnQ9e1BsYWNlbWVudFR5cGUuQm90dG9tfVxuXHRcdFx0XHRzaG93QXJyb3c9e2ZhbHNlfVxuXHRcdFx0XHRpbml0aWFsRm9jdXM9e3RoaXMuJHNlYXJjaElucHV0fVxuXHRcdFx0XHRjbGFzcz17XCJzYXBGRUNvbnRyb2xzUG9wb3ZlclwifVxuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwIHx8IGVxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxGbGV4Qm94IGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Db2x1bW59IGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9PlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX1NVR0dFU1RJT05TX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwicmVjb21tZW5kZWRRdWVyaWVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cmFwPXtGbGV4V3JhcC5XcmFwfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlUaW55TWFyZ2luRW5kXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlcXVlc3RGYXZvcml0ZS5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0hCb3g+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZVN0eWxlPXtUaXRsZUxldmVsLkg2fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImZhdm9yaXRlUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bm9EYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SWxsdXN0cmF0ZWRNZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfREVTQ1JJUFRJT05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZVRpdGxlXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE9e1s8Q3VzdG9tRGF0YSBrZXk9e1widGV4dFwifSB2YWx1ZT17Y3R4LmdldE9iamVjdCgpfSAvPl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKGN0eC5nZXRPYmplY3QoKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBpbmc9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZFQ29udHJvbHNQb2ludGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbnRzOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RXZlbnREZWxlZ2F0ZUhvb2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y3R4LmdldE9iamVjdCgpLnJlcGxhY2UoL1xcXFxcXFxcL2csIFwiXFxcXFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9mYXZvcml0ZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHF1ZXJ5U3RyaW5nID0gY3R4LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuaW5kZXhPZihxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGluZGV4ICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0N1c3RvbUxpc3RJdGVtPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0xpc3Q+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZVN0eWxlPXtUaXRsZUxldmVsLkg2fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfTEFTVF9VU0VEXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdFx0XHRcdDxMaXN0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kZT17TGlzdE1vZGUuRGVsZXRlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWxldGU9eyhlOiBMaXN0QmFzZSREZWxldGVFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGl0ZW0gPSBlLmdldFBhcmFtZXRlcihcImxpc3RJdGVtXCIpIGFzIEN1c3RvbUxpc3RJdGVtO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW0uZm9jdXMoKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBxdWVyeVN0cmluZyA9IGUuZ2V0UGFyYW1ldGVyKFwibGlzdEl0ZW1cIik/LmRhdGEoXCJ0ZXh0XCIpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFxdWVyeVN0cmluZykgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE5vcm1hbGl6ZSBiYWNrc2xhc2hlcyBiZWZvcmUgY29tcGFyaW5nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZz8ucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gdGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLmZpbHRlcigocXVlcnkpID0+IHF1ZXJ5ICE9PSBxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bm9EYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SWxsdXN0cmF0ZWRNZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfTEFTVF9VU0VEX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25TaXplPXtJbGx1c3RyYXRlZE1lc3NhZ2VTaXplLkV4dHJhU21hbGx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblR5cGU9e0lsbHVzdHJhdGVkTWVzc2FnZVR5cGUuTm9FbnRyaWVzfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbj17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX1JFQ0VOVF9ERVNDUklQVElPTlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM6IChpZDogc3RyaW5nLCBjdHg6IENvbnRleHQpOiBGbGV4Qm94ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21MaXN0SXRlbVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZEl0ZW1cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKGN0eC5nZXRPYmplY3QoKS50ZXh0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE9e1s8Q3VzdG9tRGF0YSBrZXk9e1widGV4dFwifSB2YWx1ZT17Y3R4LmdldE9iamVjdCgpLnRleHR9IC8+XX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W2lkICsgXCItZWFzeUZpbHRlckxhc3RVc2VkVGl0bGVcIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d2lkdGg9e1wiMTAwJVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtGbGV4RGlyZWN0aW9uLlJvd31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpLnRleHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e2N0eC5nZXRPYmplY3QoKS50ZXh0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cmFwcGluZz17ZmFsc2V9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwic2FwRkVDb250cm9sc1BvaW50ZXJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YXA9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkudGV4dC5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9UZXh0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyBcInNhcC1pY29uOi8vZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcInNhcC1pY29uOi8vYWRkLWZhdm9yaXRlXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PyB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRU1QVFlfU1RBUlRcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbmFibGVkPXtsZXNzVGhhbihcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGgoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRiaW5kU3RhdGUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiZmF2b3JpdGVRdWVyaWVzXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCkgYXMgUGF0aEluTW9kZWxFeHByZXNzaW9uPHVua25vd24+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ1XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbaWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKS50ZXh0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzRmF2b3JpdGUgPSBjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpc0Zhdm9yaXRlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZUZyb21GYXZvcml0ZXMocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFkZFRvRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9MaXN0PlxuXHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1BvcG92ZXI+XG5cdFx0KSBhcyBQb3BvdmVyO1xuXHR9XG5cblx0cHJpdmF0ZSByZW1vdmVGcm9tRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcigoZGF0YSkgPT4gZGF0YS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeS50b0xvd2VyQ2FzZSgpKTtcblx0fVxuXG5cdHByaXZhdGUgYWRkVG9GYXZvcml0ZXMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld0Zhdm9yaXRlID0gW3F1ZXJ5XS5jb25jYXQodGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuY29uY2F0KCkpO1xuXHRcdGlmIChuZXdGYXZvcml0ZS5sZW5ndGggPiA1KSB7XG5cdFx0XHRuZXdGYXZvcml0ZS5wb3AoKTtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSBuZXdGYXZvcml0ZTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocm06IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEVhc3lGaWx0ZXJJbnB1dCk6IHZvaWQge1xuXHRcdHJldHVybiBqc3gucmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyKHJtLCBjb250cm9sLCAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8c3BhbiByZWY9e2NvbnRyb2x9IGNsYXNzPXtcInNhcEZFRWFzeUZpbHRlcklucHV0XCJ9PlxuXHRcdFx0XHRcdHtjb250cm9sLiRzZWFyY2hJ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
|
|
@@ -27,10 +27,10 @@ import type UI5Event from "sap/ui/base/Event";
|
|
|
27
27
|
import type { $ControlSettings } from "sap/ui/core/Control";
|
|
28
28
|
import Control from "sap/ui/core/Control";
|
|
29
29
|
import CustomData from "sap/ui/core/CustomData";
|
|
30
|
-
import
|
|
30
|
+
import InvisibleMessage from "sap/ui/core/InvisibleMessage";
|
|
31
31
|
import Lib from "sap/ui/core/Lib";
|
|
32
32
|
import type RenderManager from "sap/ui/core/RenderManager";
|
|
33
|
-
import { TitleLevel, ValueState } from "sap/ui/core/library";
|
|
33
|
+
import { InvisibleMessageMode, TitleLevel, ValueState } from "sap/ui/core/library";
|
|
34
34
|
import type Context from "sap/ui/model/Context";
|
|
35
35
|
import type { EventHandler } from "../../../../../../../types/extension_types";
|
|
36
36
|
|
|
@@ -62,6 +62,8 @@ export default class EasyFilterInput extends Control {
|
|
|
62
62
|
|
|
63
63
|
shellHistoryProvider: ShellHistoryProvider | undefined;
|
|
64
64
|
|
|
65
|
+
popoverInvisibleMessage: InvisibleMessage | undefined;
|
|
66
|
+
|
|
65
67
|
$favoritePopover: Popover | undefined;
|
|
66
68
|
|
|
67
69
|
@defineState()
|
|
@@ -111,6 +113,7 @@ export default class EasyFilterInput extends Control {
|
|
|
111
113
|
initialize(): void {
|
|
112
114
|
this.state.recommendedQueries = this.recommendedValues ?? [];
|
|
113
115
|
this.resourceBundle = Lib.getResourceBundleFor("sap.fe.controls")!;
|
|
116
|
+
this.popoverInvisibleMessage = InvisibleMessage.getInstance();
|
|
114
117
|
this.createInput();
|
|
115
118
|
}
|
|
116
119
|
|
|
@@ -150,12 +153,9 @@ export default class EasyFilterInput extends Control {
|
|
|
150
153
|
></Input>
|
|
151
154
|
);
|
|
152
155
|
|
|
153
|
-
const textBinding = this.resourceBundle.getText("T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA");
|
|
154
|
-
const invisibleText = new InvisibleText({ text: textBinding }).toStatic();
|
|
155
156
|
const favoritePopover = this.createFavoritePopover();
|
|
156
157
|
this.$favoritePopover = favoritePopover;
|
|
157
|
-
|
|
158
|
-
this.$searchInput.addAriaDescribedBy(invisibleText);
|
|
158
|
+
|
|
159
159
|
this.$searchInput.addDependent(favoritePopover);
|
|
160
160
|
this.$searchInput.addEventDelegate({
|
|
161
161
|
onkeyup: (e: KeyboardEvent) => {
|
|
@@ -212,6 +212,12 @@ export default class EasyFilterInput extends Control {
|
|
|
212
212
|
}
|
|
213
213
|
break;
|
|
214
214
|
}
|
|
215
|
+
},
|
|
216
|
+
onAfterRendering: () => {
|
|
217
|
+
this.popoverInvisibleMessage?.announce(
|
|
218
|
+
this.resourceBundle.getText("T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA"),
|
|
219
|
+
InvisibleMessageMode.Assertive
|
|
220
|
+
);
|
|
215
221
|
}
|
|
216
222
|
});
|
|
217
223
|
}
|
|
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
|
|
|
22
22
|
controls: [],
|
|
23
23
|
elements: [],
|
|
24
24
|
// eslint-disable-next-line no-template-curly-in-string
|
|
25
|
-
version: "1.139.
|
|
25
|
+
version: "1.139.4",
|
|
26
26
|
noLibraryCSS: false
|
|
27
27
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
28
|
});
|
|
@@ -64,7 +64,7 @@ M_EASY_FILTER_FILLED_STAR=Remove from Favorites
|
|
|
64
64
|
# XMSG
|
|
65
65
|
M_EASY_FILTER_EMPTY_START=Add to Favorites
|
|
66
66
|
# XMSG: Text read out by the screenreader, telling users how to move to the list under the search field containing favorite queries and last used queries, if available
|
|
67
|
-
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queries and last used queries, press the
|
|
67
|
+
T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queries and last used queries, press the Arrow Down key
|
|
68
68
|
# XMSG
|
|
69
69
|
M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Only one single value can be applied to the following: {0}
|
|
70
70
|
# XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
|
|
@@ -35,7 +35,8 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
35
35
|
if (left + windowWidth > window.screen.availWidth) {
|
|
36
36
|
left = window.screen.availWidth - windowWidth;
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
let theme = Theming.getTheme();
|
|
39
|
+
theme = this._sanitizeTheme(theme);
|
|
39
40
|
const url = sap.ui.require.toUrl("sap/fe/controls/shortcuts/popup/index.html");
|
|
40
41
|
const localOrigin = window.location.protocol + "//" + window.location.host;
|
|
41
42
|
// We pass the theme and the origin to the popup so that it can communicate safely with the parent
|
|
@@ -72,6 +73,41 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
72
73
|
myWin.close();
|
|
73
74
|
};
|
|
74
75
|
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Sanitizes the theme name to ensure it starts with "sap-".
|
|
80
|
+
* If the theme does not start with "sap-", it tries to get the theme from the computed styles.
|
|
81
|
+
* If it still does not find a valid theme, it defaults to "sap_horizon".
|
|
82
|
+
* This is to ensure that the popup always uses a valid theme.
|
|
83
|
+
* @param theme The theme name to sanitize
|
|
84
|
+
* @returns The sanitized theme name
|
|
85
|
+
* @private
|
|
86
|
+
*/;
|
|
87
|
+
_proto._sanitizeTheme = function _sanitizeTheme(theme) {
|
|
88
|
+
if (!theme.startsWith("sap_")) {
|
|
89
|
+
try {
|
|
90
|
+
const computedStyles = getComputedStyle(document.documentElement);
|
|
91
|
+
theme = computedStyles.getPropertyValue("--sapSapThemeId");
|
|
92
|
+
if (!theme) {
|
|
93
|
+
const themeMetadata = computedStyles.getPropertyValue("--sapThemeMetaData-UI5-sap-ui-core");
|
|
94
|
+
if (themeMetadata) {
|
|
95
|
+
const themeMatch = JSON.parse(themeMetadata);
|
|
96
|
+
if (themeMatch && themeMatch.Extends && themeMatch.Extends.length > 0) {
|
|
97
|
+
theme = themeMatch.Extends[0];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
} catch (e) {
|
|
102
|
+
Log.info("Cannot get theme from computed styles", e instanceof Error ? e.message : String(e));
|
|
103
|
+
theme = "sap_horizon";
|
|
104
|
+
}
|
|
105
|
+
if (!theme || !theme.startsWith("sap_")) {
|
|
106
|
+
// Final fallback to sap_horizon
|
|
107
|
+
theme = "sap_horizon";
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return theme;
|
|
75
111
|
};
|
|
76
112
|
/**
|
|
77
113
|
* Creates or returns the instance of the ShortcutExplanationProvider.
|
|
@@ -134,4 +170,4 @@ sap.ui.define(["sap/base/Log", "sap/base/security/encodeURL", "sap/fe/base/Class
|
|
|
134
170
|
_exports = ShortcutExplanationProvider;
|
|
135
171
|
return _exports;
|
|
136
172
|
}, false);
|
|
137
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsInVybCIsInNhcCIsInVpIiwicmVxdWlyZSIsInRvVXJsIiwibG9jYWxPcmlnaW4iLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdCIsInBhcmFtcyIsImVuY29kZVVSTCIsIm15V2luIiwib3BlbiIsInNjcmVlblRvcCIsImhhbmRsZU1lc3NhZ2VSZWNlaXZlZCIsIm1lc3NhZ2VFdmVudCIsIm9yaWdpbiIsIm1lc3NhZ2VEYXRhIiwiZGF0YSIsInNlcnZpY2UiLCJtZXNzYWdlUG9ydCIsInBvcnRzIiwicG9zdE1lc3NhZ2UiLCJzdGFydHNXaXRoIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9wZW5lciIsImUiLCJMb2ciLCJkZWJ1ZyIsIkVycm9yIiwibWVzc2FnZSIsIlN0cmluZyIsInNldFRpbWVvdXQiLCJhZGRFdmVudExpc3RlbmVyIiwiaWQiLCJvbnVubG9hZCIsImNsb3NlIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleHRlbnNpb25TZXJ2aWNlIiwiZ2V0U2VydmljZUFzeW5jIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJpc0RpYWxvZ0FkZGVkIiwidXNlckFjdGlvbiIsImNyZWF0ZVVzZXJBY3Rpb24iLCJ0ZXh0IiwiZ2V0VGV4dCIsImljb24iLCJJY29uUG9vbCIsImdldEljb25VUkkiLCJwcmVzcyIsImNvbnRyb2xUeXBlIiwic2hvd0ZvckFsbEFwcHMiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGVuY29kZVVSTCBmcm9tIFwic2FwL2Jhc2Uvc2VjdXJpdHkvZW5jb2RlVVJMXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBUaGVtaW5nIGZyb20gXCJzYXAvdWkvY29yZS9UaGVtaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250YWluZXIgZnJvbSBcInNhcC91c2hlbGwvQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb24gZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvRXh0ZW5zaW9uXCI7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBkaWFsb2cgdG8gZXhwbGFpbiB0aGUgc2hvcnRjdXRzIHRvIHRoZSB1c2VyLlxuICogVGhpcyBkaWFsb2cgd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBzaGVsbCB1c2VyIG1lbnUgYW5kIHdpbGwgb3BlbiBhcyBhbiBpbmRlcGVuZGVudCB3aW5kb3cuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5zaG9ydGN1dHMuU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgZXh0ZW5kcyBNYW5hZ2VkT2JqZWN0IHtcblx0cHJpdmF0ZSBfcG9wdXBJZHggPSAwO1xuXG5cdGdldFNoZWxsRGlhbG9nQ29udGVudCgpOiB2b2lkIHtcblx0XHQvLyBQb3NpdGlvbiB0byB0b3AgcmlnaHQgb2YgdGhlIG1haW4gd2luZG93IGlmIHBvc3NpYmxlXG5cdFx0Y29uc3Qgd2luZG93V2lkdGggPSA2MjA7XG5cdFx0bGV0IGxlZnQgPSB3aW5kb3cuc2NyZWVuTGVmdCArIHdpbmRvdy5vdXRlcldpZHRoO1xuXHRcdGlmIChsZWZ0ICsgd2luZG93V2lkdGggPiB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGgpIHtcblx0XHRcdGxlZnQgPSB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGggLSB3aW5kb3dXaWR0aDtcblx0XHR9XG5cdFx0Y29uc3QgdGhlbWUgPSBUaGVtaW5nLmdldFRoZW1lKCk7XG5cdFx0Y29uc3QgdXJsID0gc2FwLnVpLnJlcXVpcmUudG9VcmwoXCJzYXAvZmUvY29udHJvbHMvc2hvcnRjdXRzL3BvcHVwL2luZGV4Lmh0bWxcIik7XG5cdFx0Y29uc3QgbG9jYWxPcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcblx0XHQvLyBXZSBwYXNzIHRoZSB0aGVtZSBhbmQgdGhlIG9yaWdpbiB0byB0aGUgcG9wdXAgc28gdGhhdCBpdCBjYW4gY29tbXVuaWNhdGUgc2FmZWx5IHdpdGggdGhlIHBhcmVudFxuXHRcdGNvbnN0IHBhcmFtcyA9IFwiP3NhcC11aS14eC1zaG9ydGN1dC1vcmlnaW49XCIgKyBlbmNvZGVVUkwobG9jYWxPcmlnaW4pICsgXCImc2FwLXVpLXRoZW1lPVwiICsgdGhlbWU7XG5cdFx0Y29uc3QgbXlXaW4gPSB3aW5kb3cub3Blbihcblx0XHRcdHVybCArIHBhcmFtcyxcblx0XHRcdFwiX2JsYW5rXCIsXG5cdFx0XHRgcG9wdXAsdG9vbGJhcj1ubyxtZW51YmFyPW5vLHNjcm9sbGJhcnM9bm8sbG9jYXRpb249bm8sd2lkdGg9JHt3aW5kb3dXaWR0aH0saGVpZ2h0PTU1MCx0b3A9JHt3aW5kb3cuc2NyZWVuVG9wfSxsZWZ0PSR7bGVmdH1gXG5cdFx0KTtcblx0XHRpZiAobXlXaW4pIHtcblx0XHRcdGNvbnN0IGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCA9IChtZXNzYWdlRXZlbnQ6IE1lc3NhZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAobG9jYWxPcmlnaW4gPT09IG1lc3NhZ2VFdmVudC5vcmlnaW4pIHtcblx0XHRcdFx0XHRjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2VFdmVudD8uZGF0YTtcblx0XHRcdFx0XHRpZiAobWVzc2FnZURhdGEuc2VydmljZSA9PT0gXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBtZXNzYWdlUG9ydCA9IG1lc3NhZ2VFdmVudC5wb3J0c1swXTsgLy8gUmVtZW1iZXIgdGhlIHBvcnRcblx0XHRcdFx0XHRcdG15V2luLnBvc3RNZXNzYWdlKHsgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiIH0sIHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IGxvY2FsT3JpZ2luIDogdXJsLCBbXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VQb3J0XG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG15V2luLm9wZW5lciA9IG51bGw7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vIFRoaXMgbWlnaHQgZmFpbCB3aGVuIHRoZXJlIGlzIENPUlMgaW52b2x2ZWQgYW55d2F5IGFuZCB3ZSBjYW4ndCBhY2Nlc3MgdGhlIG9wZW5lciBhbnl3YXlcblx0XHRcdFx0TG9nLmRlYnVnKFwiQ2Fubm90IHNldCBvcGVuZXIgdG8gbnVsbFwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0fVxuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCk7XG5cdFx0XHRcdHdpbmRvdy5wb3N0TWVzc2FnZShcblx0XHRcdFx0XHR7IGlkOiBcInNhcC5mZS5pbnRlcmFjdGlvbi5Qb3B1cFwiICsgdGhpcy5fcG9wdXBJZHgrKywgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uUmVxdWVzdE1lc3NhZ2VQb3J0XCIgfSxcblx0XHRcdFx0XHRsb2NhbE9yaWdpblxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgMTUwMCk7IC8vIGdpdmUgYSBiaXQgb2YgdGltZSBmb3IgdGhlIHBvcHVwIHRvIGJlIHJlYWR5XG5cdFx0XHQvLyBXZSBjYW4ndCByZWx5IG9uIHRoZSBvbmxvYWQgb2YgdGhlIHBvcHVwIGJlY2F1c2UgaXQgaXMgbm90IGFsd2F5cyBhdmFpbGJsZSBpbiBDT1JTIHNjZW5hcmlvc1xuXHRcdFx0d2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRteVdpbi5jbG9zZSgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgaW5zdGFuY2VQcm9taXNlOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD47XG5cblx0c3RhdGljIGluc3RhbmNlOiBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ7XG5cblx0c3RhdGljIGlzRGlhbG9nQWRkZWQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBvciByZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyLlxuXHQgKiBUaGlzIGlzIGEgc2luZ2xldG9uIHRvIGVuc3VyZSB3ZSBvbmx5IGhhdmUgb25lIGluc3RhbmNlIG9mIHRoZSBkaWFsb2cuXG5cdCAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiB0aGUgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgZ2V0SW5zdGFuY2UoKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHQvLyBUZXN0IHRoZSBzaGVsbCBleGlzdGVuY2UgYW5kIHJlZ2lzdGVyIHRoZSBleHRlbnNpb25cblx0XHRjb25zdCBzaGVsbENvbnRhaW5lciA9IHNhcC51aS5yZXF1aXJlKFwic2FwL3VzaGVsbC9Db250YWluZXJcIikgYXMgQ29udGFpbmVyIHwgdW5kZWZpbmVkO1xuXHRcdGxldCByZXNvbHZlQ3JlYXRpb246IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoc2hlbGxDb250YWluZXIgJiYgIXRoaXMuaW5zdGFuY2UpIHtcblx0XHRcdFx0dGhpcy5pbnN0YW5jZVByb21pc2UgPSBuZXcgUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+KChyZXNvbHZlKSA9PiB7XG5cdFx0XHRcdFx0cmVzb2x2ZUNyZWF0aW9uID0gcmVzb2x2ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGNvbnN0IGV4dGVuc2lvblNlcnZpY2UgPSAoYXdhaXQgc2hlbGxDb250YWluZXIuZ2V0U2VydmljZUFzeW5jKFwiRXh0ZW5zaW9uXCIpKSBhcyBFeHRlbnNpb24gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChleHRlbnNpb25TZXJ2aWNlKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIucmVnaXN0ZXJVc2VyQWN0aW9uKGV4dGVuc2lvblNlcnZpY2UpO1xuXHRcdFx0XHRcdHRoaXMuaW5zdGFuY2UgPSBzaGVsbEhpc3RvcnlQcm92aWRlcjtcblx0XHRcdFx0XHRyZXNvbHZlQ3JlYXRpb24hKHNoZWxsSGlzdG9yeVByb3ZpZGVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCByZWdpc3RlciBleHRlbnNpb25cIiwgZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpKTtcblx0XHRcdHJlc29sdmVDcmVhdGlvbj8uKHVuZGVmaW5lZCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmluc3RhbmNlUHJvbWlzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIHRoZSB1c2VyIGFjdGlvbiB0byB0aGUgc2hlbGwsIHRoZSBhY3Rpb24gd2lsbCBvcGVuIHRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzLlxuXHQgKiBAcGFyYW0gc2hlbGxFeHRlbnNpb25TZXJ2aWNlIFRoZSBleHRlbnNpb24gc2VydmljZSB0byBhZGQgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbFxuXHQgKiBAcmV0dXJucyBUaGUgZGlhbG9nIHdpdGggdGhlIHNob3J0Y3V0c1xuXHQgKi9cblx0c3RhdGljIGFzeW5jIHJlZ2lzdGVyVXNlckFjdGlvbihzaGVsbEV4dGVuc2lvblNlcnZpY2U6IEV4dGVuc2lvbik6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblxuXHRcdFx0Y29uc3Qgc2hlbGxIaXN0b3J5RGlhbG9nID0gbmV3IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlcigpO1xuXHRcdFx0aWYgKCF0aGlzLmlzRGlhbG9nQWRkZWQpIHtcblx0XHRcdFx0dGhpcy5pc0RpYWxvZ0FkZGVkID0gdHJ1ZTtcblx0XHRcdFx0Y29uc3QgdXNlckFjdGlvbiA9IGF3YWl0IHNoZWxsRXh0ZW5zaW9uU2VydmljZS5jcmVhdGVVc2VyQWN0aW9uKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlkOiBcInNhcHVpNS5zaG9ydGN1dC5leHBsYW5hdGlvbi50cmlnZ2VyXCIsXG5cdFx0XHRcdFx0XHR0ZXh0OiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19TSE9SVENVVF9USVRMRVwiKSxcblx0XHRcdFx0XHRcdGljb246IEljb25Qb29sLmdldEljb25VUkkoXCJrZXlib2FyZC1hbmQtbW91c2VcIiksXG5cdFx0XHRcdFx0XHRwcmVzczogKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRzaGVsbEhpc3RvcnlEaWFsb2cuZ2V0U2hlbGxEaWFsb2dDb250ZW50KCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRjb250cm9sVHlwZTogXCJzYXAubS5CdXR0b25cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHRcdFx0dXNlckFjdGlvbi5zaG93Rm9yQWxsQXBwcygpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHNoZWxsSGlzdG9yeURpYWxvZztcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBhZGQgdXNlciBhY3Rpb25cIiwgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0VBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUpBLElBTXFCQSwyQkFBMkIsSUFBQUMsSUFBQSxHQUQvQ0MsY0FBYyxDQUFDLHVEQUF1RCxDQUFDLEVBQUFELElBQUEsQ0FBQUUsTUFBQSxJQUFBQyw0QkFBQSwwQkFBQUMsY0FBQTtJQUFBLFNBQUFMLDRCQUFBO01BQUEsSUFBQU0sS0FBQTtNQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFDLElBQUEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBQUYsSUFBQSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQUFOLEtBQUEsR0FBQUQsY0FBQSxDQUFBUSxJQUFBLFVBQUFILElBQUE7TUFBQUosS0FBQSxDQUUvRFEsU0FBUyxHQUFHLENBQUM7TUFBQSxPQUFBUixLQUFBO0lBQUE7SUFBQVMsUUFBQSxHQUFBZiwyQkFBQTtJQUFBZ0IsY0FBQSxDQUFBaEIsMkJBQUEsRUFBQUssY0FBQTtJQUFBLElBQUFZLE1BQUEsR0FBQWpCLDJCQUFBLENBQUFrQixTQUFBO0lBQUFELE1BQUEsQ0FFckJFLHFCQUFxQixHQUFyQixTQUFBQSxxQkFBcUJBLENBQUEsRUFBUztNQUM3QjtNQUNBLE1BQU1DLFdBQVcsR0FBRyxHQUFHO01BQ3ZCLElBQUlDLElBQUksR0FBR0MsTUFBTSxDQUFDQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsVUFBVTtNQUNoRCxJQUFJSCxJQUFJLEdBQUdELFdBQVcsR0FBR0UsTUFBTSxDQUFDRyxNQUFNLENBQUNDLFVBQVUsRUFBRTtRQUNsREwsSUFBSSxHQUFHQyxNQUFNLENBQUNHLE1BQU0sQ0FBQ0MsVUFBVSxHQUFH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
|
|
173
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfY2xhc3MiLCJfU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIiwiX01hbmFnZWRPYmplY3QiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9wb3B1cElkeCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTaGVsbERpYWxvZ0NvbnRlbnQiLCJ3aW5kb3dXaWR0aCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JlZW5MZWZ0Iiwib3V0ZXJXaWR0aCIsInNjcmVlbiIsImF2YWlsV2lkdGgiLCJ0aGVtZSIsIlRoZW1pbmciLCJnZXRUaGVtZSIsIl9zYW5pdGl6ZVRoZW1lIiwidXJsIiwic2FwIiwidWkiLCJyZXF1aXJlIiwidG9VcmwiLCJsb2NhbE9yaWdpbiIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0IiwicGFyYW1zIiwiZW5jb2RlVVJMIiwibXlXaW4iLCJvcGVuIiwic2NyZWVuVG9wIiwiaGFuZGxlTWVzc2FnZVJlY2VpdmVkIiwibWVzc2FnZUV2ZW50Iiwib3JpZ2luIiwibWVzc2FnZURhdGEiLCJkYXRhIiwic2VydmljZSIsIm1lc3NhZ2VQb3J0IiwicG9ydHMiLCJwb3N0TWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib3BlbmVyIiwiZSIsIkxvZyIsImRlYnVnIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZCIsIm9udW5sb2FkIiwiY2xvc2UiLCJjb21wdXRlZFN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZU1ldGFkYXRhIiwidGhlbWVNYXRjaCIsIkpTT04iLCJwYXJzZSIsIkV4dGVuZHMiLCJpbmZvIiwiZ2V0SW5zdGFuY2UiLCJzaGVsbENvbnRhaW5lciIsInJlc29sdmVDcmVhdGlvbiIsImluc3RhbmNlIiwiaW5zdGFuY2VQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJleHRlbnNpb25TZXJ2aWNlIiwiZ2V0U2VydmljZUFzeW5jIiwic2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJyZWdpc3RlclVzZXJBY3Rpb24iLCJlcnJvciIsInVuZGVmaW5lZCIsInNoZWxsRXh0ZW5zaW9uU2VydmljZSIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJzaGVsbEhpc3RvcnlEaWFsb2ciLCJpc0RpYWxvZ0FkZGVkIiwidXNlckFjdGlvbiIsImNyZWF0ZVVzZXJBY3Rpb24iLCJ0ZXh0IiwiZ2V0VGV4dCIsImljb24iLCJJY29uUG9vbCIsImdldEljb25VUkkiLCJwcmVzcyIsImNvbnRyb2xUeXBlIiwic2hvd0ZvckFsbEFwcHMiLCJlcnIiLCJNYW5hZ2VkT2JqZWN0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGVuY29kZVVSTCBmcm9tIFwic2FwL2Jhc2Uvc2VjdXJpdHkvZW5jb2RlVVJMXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBUaGVtaW5nIGZyb20gXCJzYXAvdWkvY29yZS9UaGVtaW5nXCI7XG5pbXBvcnQgdHlwZSBDb250YWluZXIgZnJvbSBcInNhcC91c2hlbGwvQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBFeHRlbnNpb24gZnJvbSBcInNhcC91c2hlbGwvc2VydmljZXMvRXh0ZW5zaW9uXCI7XG5cbi8qKlxuICogUHJvdmlkZXMgYSBkaWFsb2cgdG8gZXhwbGFpbiB0aGUgc2hvcnRjdXRzIHRvIHRoZSB1c2VyLlxuICogVGhpcyBkaWFsb2cgd2lsbCBiZSByZWdpc3RlcmVkIGluIHRoZSBzaGVsbCB1c2VyIG1lbnUgYW5kIHdpbGwgb3BlbiBhcyBhbiBpbmRlcGVuZGVudCB3aW5kb3cuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5zaG9ydGN1dHMuU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgZXh0ZW5kcyBNYW5hZ2VkT2JqZWN0IHtcblx0cHJpdmF0ZSBfcG9wdXBJZHggPSAwO1xuXG5cdGdldFNoZWxsRGlhbG9nQ29udGVudCgpOiB2b2lkIHtcblx0XHQvLyBQb3NpdGlvbiB0byB0b3AgcmlnaHQgb2YgdGhlIG1haW4gd2luZG93IGlmIHBvc3NpYmxlXG5cdFx0Y29uc3Qgd2luZG93V2lkdGggPSA2MjA7XG5cdFx0bGV0IGxlZnQgPSB3aW5kb3cuc2NyZWVuTGVmdCArIHdpbmRvdy5vdXRlcldpZHRoO1xuXHRcdGlmIChsZWZ0ICsgd2luZG93V2lkdGggPiB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGgpIHtcblx0XHRcdGxlZnQgPSB3aW5kb3cuc2NyZWVuLmF2YWlsV2lkdGggLSB3aW5kb3dXaWR0aDtcblx0XHR9XG5cdFx0bGV0IHRoZW1lID0gVGhlbWluZy5nZXRUaGVtZSgpO1xuXHRcdHRoZW1lID0gdGhpcy5fc2FuaXRpemVUaGVtZSh0aGVtZSk7XG5cdFx0Y29uc3QgdXJsID0gc2FwLnVpLnJlcXVpcmUudG9VcmwoXCJzYXAvZmUvY29udHJvbHMvc2hvcnRjdXRzL3BvcHVwL2luZGV4Lmh0bWxcIik7XG5cdFx0Y29uc3QgbG9jYWxPcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcblx0XHQvLyBXZSBwYXNzIHRoZSB0aGVtZSBhbmQgdGhlIG9yaWdpbiB0byB0aGUgcG9wdXAgc28gdGhhdCBpdCBjYW4gY29tbXVuaWNhdGUgc2FmZWx5IHdpdGggdGhlIHBhcmVudFxuXHRcdGNvbnN0IHBhcmFtcyA9IFwiP3NhcC11aS14eC1zaG9ydGN1dC1vcmlnaW49XCIgKyBlbmNvZGVVUkwobG9jYWxPcmlnaW4pICsgXCImc2FwLXVpLXRoZW1lPVwiICsgdGhlbWU7XG5cdFx0Y29uc3QgbXlXaW4gPSB3aW5kb3cub3Blbihcblx0XHRcdHVybCArIHBhcmFtcyxcblx0XHRcdFwiX2JsYW5rXCIsXG5cdFx0XHRgcG9wdXAsdG9vbGJhcj1ubyxtZW51YmFyPW5vLHNjcm9sbGJhcnM9bm8sbG9jYXRpb249bm8sd2lkdGg9JHt3aW5kb3dXaWR0aH0saGVpZ2h0PTU1MCx0b3A9JHt3aW5kb3cuc2NyZWVuVG9wfSxsZWZ0PSR7bGVmdH1gXG5cdFx0KTtcblx0XHRpZiAobXlXaW4pIHtcblx0XHRcdGNvbnN0IGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCA9IChtZXNzYWdlRXZlbnQ6IE1lc3NhZ2VFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAobG9jYWxPcmlnaW4gPT09IG1lc3NhZ2VFdmVudC5vcmlnaW4pIHtcblx0XHRcdFx0XHRjb25zdCBtZXNzYWdlRGF0YSA9IG1lc3NhZ2VFdmVudD8uZGF0YTtcblx0XHRcdFx0XHRpZiAobWVzc2FnZURhdGEuc2VydmljZSA9PT0gXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBtZXNzYWdlUG9ydCA9IG1lc3NhZ2VFdmVudC5wb3J0c1swXTsgLy8gUmVtZW1iZXIgdGhlIHBvcnRcblx0XHRcdFx0XHRcdG15V2luLnBvc3RNZXNzYWdlKHsgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uTWVzc2FnZVBvcnRSZWFkeVwiIH0sIHVybC5zdGFydHNXaXRoKFwiL1wiKSA/IGxvY2FsT3JpZ2luIDogdXJsLCBbXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VQb3J0XG5cdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlUmVjZWl2ZWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG15V2luLm9wZW5lciA9IG51bGw7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdC8vIFRoaXMgbWlnaHQgZmFpbCB3aGVuIHRoZXJlIGlzIENPUlMgaW52b2x2ZWQgYW55d2F5IGFuZCB3ZSBjYW4ndCBhY2Nlc3MgdGhlIG9wZW5lciBhbnl3YXlcblx0XHRcdFx0TG9nLmRlYnVnKFwiQ2Fubm90IHNldCBvcGVuZXIgdG8gbnVsbFwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0fVxuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZU1lc3NhZ2VSZWNlaXZlZCk7XG5cdFx0XHRcdHdpbmRvdy5wb3N0TWVzc2FnZShcblx0XHRcdFx0XHR7IGlkOiBcInNhcC5mZS5pbnRlcmFjdGlvbi5Qb3B1cFwiICsgdGhpcy5fcG9wdXBJZHgrKywgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uUmVxdWVzdE1lc3NhZ2VQb3J0XCIgfSxcblx0XHRcdFx0XHRsb2NhbE9yaWdpblxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgMTUwMCk7IC8vIGdpdmUgYSBiaXQgb2YgdGltZSBmb3IgdGhlIHBvcHVwIHRvIGJlIHJlYWR5XG5cdFx0XHQvLyBXZSBjYW4ndCByZWx5IG9uIHRoZSBvbmxvYWQgb2YgdGhlIHBvcHVwIGJlY2F1c2UgaXQgaXMgbm90IGFsd2F5cyBhdmFpbGJsZSBpbiBDT1JTIHNjZW5hcmlvc1xuXHRcdFx0d2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRteVdpbi5jbG9zZSgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2FuaXRpemVzIHRoZSB0aGVtZSBuYW1lIHRvIGVuc3VyZSBpdCBzdGFydHMgd2l0aCBcInNhcC1cIi5cblx0ICogSWYgdGhlIHRoZW1lIGRvZXMgbm90IHN0YXJ0IHdpdGggXCJzYXAtXCIsIGl0IHRyaWVzIHRvIGdldCB0aGUgdGhlbWUgZnJvbSB0aGUgY29tcHV0ZWQgc3R5bGVzLlxuXHQgKiBJZiBpdCBzdGlsbCBkb2VzIG5vdCBmaW5kIGEgdmFsaWQgdGhlbWUsIGl0IGRlZmF1bHRzIHRvIFwic2FwX2hvcml6b25cIi5cblx0ICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgcG9wdXAgYWx3YXlzIHVzZXMgYSB2YWxpZCB0aGVtZS5cblx0ICogQHBhcmFtIHRoZW1lIFRoZSB0aGVtZSBuYW1lIHRvIHNhbml0aXplXG5cdCAqIEByZXR1cm5zIFRoZSBzYW5pdGl6ZWQgdGhlbWUgbmFtZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBfc2FuaXRpemVUaGVtZSh0aGVtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRpZiAoIXRoZW1lLnN0YXJ0c1dpdGgoXCJzYXBfXCIpKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBjb21wdXRlZFN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcblx0XHRcdFx0dGhlbWUgPSBjb21wdXRlZFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zYXBTYXBUaGVtZUlkXCIpO1xuXHRcdFx0XHRpZiAoIXRoZW1lKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGhlbWVNZXRhZGF0YSA9IGNvbXB1dGVkU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoXCItLXNhcFRoZW1lTWV0YURhdGEtVUk1LXNhcC11aS1jb3JlXCIpO1xuXHRcdFx0XHRcdGlmICh0aGVtZU1ldGFkYXRhKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB0aGVtZU1hdGNoID0gSlNPTi5wYXJzZSh0aGVtZU1ldGFkYXRhKTtcblx0XHRcdFx0XHRcdGlmICh0aGVtZU1hdGNoICYmIHRoZW1lTWF0Y2guRXh0ZW5kcyAmJiB0aGVtZU1hdGNoLkV4dGVuZHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHR0aGVtZSA9IHRoZW1lTWF0Y2guRXh0ZW5kc1swXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0TG9nLmluZm8oXCJDYW5ub3QgZ2V0IHRoZW1lIGZyb20gY29tcHV0ZWQgc3R5bGVzXCIsIGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSk7XG5cdFx0XHRcdHRoZW1lID0gXCJzYXBfaG9yaXpvblwiO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGVtZSB8fCAhdGhlbWUuc3RhcnRzV2l0aChcInNhcF9cIikpIHtcblx0XHRcdFx0Ly8gRmluYWwgZmFsbGJhY2sgdG8gc2FwX2hvcml6b25cblx0XHRcdFx0dGhlbWUgPSBcInNhcF9ob3Jpem9uXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0aGVtZTtcblx0fVxuXG5cdHN0YXRpYyBpbnN0YW5jZVByb21pc2U6IFByb21pc2U8U2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyIHwgdW5kZWZpbmVkPjtcblxuXHRzdGF0aWMgaW5zdGFuY2U6IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRzdGF0aWMgaXNEaWFsb2dBZGRlZCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9yIHJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIuXG5cdCAqIFRoaXMgaXMgYSBzaW5nbGV0b24gdG8gZW5zdXJlIHdlIG9ubHkgaGF2ZSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIHRoZSBTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXJcblx0ICovXG5cdHN0YXRpYyBhc3luYyBnZXRJbnN0YW5jZSgpOiBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD4ge1xuXHRcdC8vIFRlc3QgdGhlIHNoZWxsIGV4aXN0ZW5jZSBhbmQgcmVnaXN0ZXIgdGhlIGV4dGVuc2lvblxuXHRcdGNvbnN0IHNoZWxsQ29udGFpbmVyID0gc2FwLnVpLnJlcXVpcmUoXCJzYXAvdXNoZWxsL0NvbnRhaW5lclwiKSBhcyBDb250YWluZXIgfCB1bmRlZmluZWQ7XG5cdFx0bGV0IHJlc29sdmVDcmVhdGlvbjogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChzaGVsbENvbnRhaW5lciAmJiAhdGhpcy5pbnN0YW5jZSkge1xuXHRcdFx0XHR0aGlzLmluc3RhbmNlUHJvbWlzZSA9IG5ldyBQcm9taXNlPFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlciB8IHVuZGVmaW5lZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRyZXNvbHZlQ3JlYXRpb24gPSByZXNvbHZlO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y29uc3QgZXh0ZW5zaW9uU2VydmljZSA9IChhd2FpdCBzaGVsbENvbnRhaW5lci5nZXRTZXJ2aWNlQXN5bmMoXCJFeHRlbnNpb25cIikpIGFzIEV4dGVuc2lvbiB8IHVuZGVmaW5lZDtcblx0XHRcdFx0aWYgKGV4dGVuc2lvblNlcnZpY2UpIHtcblx0XHRcdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlQcm92aWRlciA9IGF3YWl0IFNob3J0Y3V0RXhwbGFuYXRpb25Qcm92aWRlci5yZWdpc3RlclVzZXJBY3Rpb24oZXh0ZW5zaW9uU2VydmljZSk7XG5cdFx0XHRcdFx0dGhpcy5pbnN0YW5jZSA9IHNoZWxsSGlzdG9yeVByb3ZpZGVyO1xuXHRcdFx0XHRcdHJlc29sdmVDcmVhdGlvbiEoc2hlbGxIaXN0b3J5UHJvdmlkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHJlZ2lzdGVyIGV4dGVuc2lvblwiLCBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSkpO1xuXHRcdFx0cmVzb2x2ZUNyZWF0aW9uPy4odW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5zdGFuY2VQcm9taXNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgdGhlIHVzZXIgYWN0aW9uIHRvIHRoZSBzaGVsbCwgdGhlIGFjdGlvbiB3aWxsIG9wZW4gdGhlIGRpYWxvZyB3aXRoIHRoZSBzaG9ydGN1dHMuXG5cdCAqIEBwYXJhbSBzaGVsbEV4dGVuc2lvblNlcnZpY2UgVGhlIGV4dGVuc2lvbiBzZXJ2aWNlIHRvIGFkZCB0aGUgdXNlciBhY3Rpb24gdG8gdGhlIHNoZWxsXG5cdCAqIEByZXR1cm5zIFRoZSBkaWFsb2cgd2l0aCB0aGUgc2hvcnRjdXRzXG5cdCAqL1xuXHRzdGF0aWMgYXN5bmMgcmVnaXN0ZXJVc2VyQWN0aW9uKHNoZWxsRXh0ZW5zaW9uU2VydmljZTogRXh0ZW5zaW9uKTogUHJvbWlzZTxTaG9ydGN1dEV4cGxhbmF0aW9uUHJvdmlkZXIgfCB1bmRlZmluZWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdFx0XHRjb25zdCBzaGVsbEhpc3RvcnlEaWFsb2cgPSBuZXcgU2hvcnRjdXRFeHBsYW5hdGlvblByb3ZpZGVyKCk7XG5cdFx0XHRpZiAoIXRoaXMuaXNEaWFsb2dBZGRlZCkge1xuXHRcdFx0XHR0aGlzLmlzRGlhbG9nQWRkZWQgPSB0cnVlO1xuXHRcdFx0XHRjb25zdCB1c2VyQWN0aW9uID0gYXdhaXQgc2hlbGxFeHRlbnNpb25TZXJ2aWNlLmNyZWF0ZVVzZXJBY3Rpb24oXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWQ6IFwic2FwdWk1LnNob3J0Y3V0LmV4cGxhbmF0aW9uLnRyaWdnZXJcIixcblx0XHRcdFx0XHRcdHRleHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0aWNvbjogSWNvblBvb2wuZ2V0SWNvblVSSShcImtleWJvYXJkLWFuZC1tb3VzZVwiKSxcblx0XHRcdFx0XHRcdHByZXNzOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHNoZWxsSGlzdG9yeURpYWxvZy5nZXRTaGVsbERpYWxvZ0NvbnRlbnQoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNvbnRyb2xUeXBlOiBcInNhcC5tLkJ1dHRvblwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHR1c2VyQWN0aW9uLnNob3dGb3JBbGxBcHBzKCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gc2hlbGxIaXN0b3J5RGlhbG9nO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IGFkZCB1c2VyIGFjdGlvblwiLCBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycikpO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7RUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBSkEsSUFNcUJBLDJCQUEyQixJQUFBQyxJQUFBLEdBRC9DQyxjQUFjLENBQUMsdURBQXVE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
|
|
@@ -24,7 +24,8 @@ export default class ShortcutExplanationProvider extends ManagedObject {
|
|
|
24
24
|
if (left + windowWidth > window.screen.availWidth) {
|
|
25
25
|
left = window.screen.availWidth - windowWidth;
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
let theme = Theming.getTheme();
|
|
28
|
+
theme = this._sanitizeTheme(theme);
|
|
28
29
|
const url = sap.ui.require.toUrl("sap/fe/controls/shortcuts/popup/index.html");
|
|
29
30
|
const localOrigin = window.location.protocol + "//" + window.location.host;
|
|
30
31
|
// We pass the theme and the origin to the popup so that it can communicate safely with the parent
|
|
@@ -68,6 +69,41 @@ export default class ShortcutExplanationProvider extends ManagedObject {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Sanitizes the theme name to ensure it starts with "sap-".
|
|
74
|
+
* If the theme does not start with "sap-", it tries to get the theme from the computed styles.
|
|
75
|
+
* If it still does not find a valid theme, it defaults to "sap_horizon".
|
|
76
|
+
* This is to ensure that the popup always uses a valid theme.
|
|
77
|
+
* @param theme The theme name to sanitize
|
|
78
|
+
* @returns The sanitized theme name
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
private _sanitizeTheme(theme: string): string {
|
|
82
|
+
if (!theme.startsWith("sap_")) {
|
|
83
|
+
try {
|
|
84
|
+
const computedStyles = getComputedStyle(document.documentElement);
|
|
85
|
+
theme = computedStyles.getPropertyValue("--sapSapThemeId");
|
|
86
|
+
if (!theme) {
|
|
87
|
+
const themeMetadata = computedStyles.getPropertyValue("--sapThemeMetaData-UI5-sap-ui-core");
|
|
88
|
+
if (themeMetadata) {
|
|
89
|
+
const themeMatch = JSON.parse(themeMetadata);
|
|
90
|
+
if (themeMatch && themeMatch.Extends && themeMatch.Extends.length > 0) {
|
|
91
|
+
theme = themeMatch.Extends[0];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
} catch (e) {
|
|
96
|
+
Log.info("Cannot get theme from computed styles", e instanceof Error ? e.message : String(e));
|
|
97
|
+
theme = "sap_horizon";
|
|
98
|
+
}
|
|
99
|
+
if (!theme || !theme.startsWith("sap_")) {
|
|
100
|
+
// Final fallback to sap_horizon
|
|
101
|
+
theme = "sap_horizon";
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return theme;
|
|
105
|
+
}
|
|
106
|
+
|
|
71
107
|
static instancePromise: Promise<ShortcutExplanationProvider | undefined>;
|
|
72
108
|
|
|
73
109
|
static instance: ShortcutExplanationProvider | undefined;
|
|
@@ -95,6 +95,13 @@ sap.ui.define(["sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport", "sap
|
|
|
95
95
|
var _proto = ShortcutTool.prototype;
|
|
96
96
|
_proto.setupPort = function setupPort(messagePort) {
|
|
97
97
|
messagePort.onmessage = this.onMessageReceived.bind(this);
|
|
98
|
+
// We send a message to stop the display if it is already running
|
|
99
|
+
// and then start it again to ensure we have the latest data.
|
|
100
|
+
// This is to ensure that the popup is always up-to-date with the latest shortcuts
|
|
101
|
+
// and to avoid any potential issues with the display being already running.
|
|
102
|
+
messagePort.postMessage({
|
|
103
|
+
service: "sap.ui.interaction.StopDisplay"
|
|
104
|
+
});
|
|
98
105
|
messagePort.postMessage({
|
|
99
106
|
service: "sap.ui.interaction.StartDisplay"
|
|
100
107
|
});
|
|
@@ -226,4 +233,4 @@ sap.ui.define(["sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport", "sap
|
|
|
226
233
|
_exports = ShortcutTool;
|
|
227
234
|
return _exports;
|
|
228
235
|
}, false);
|
|
229
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREb2NzRGV0YWlsIiwiZG9jc1BhdGgiLCJkYXRhIiwic3BsdGlQYXRoIiwic3BsaXQiLCJyZXN1bHQiLCJmb3JFYWNoIiwicGF0aCIsImNvbGxhcHNlRHVwbGljYXRlIiwiZWxlbWVudHMiLCJmaWx0ZXJRdWVyeSIsIm1hcCIsImVsZW1lbnQiLCJsYWJlbCIsIm5vZGVzIiwiZmlsdGVyIiwibm9kZSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJzb21lIiwiZXhpc3RpbmdOb2RlIiwicHVzaCIsIk9iamVjdCIsImVudHJpZXMiLCJfcmVmIiwibWFwS2V5VG9TeW1ib2wiLCJrZXkiLCJ0cmFuc2xhdGVkS2V5IiwidHJpbSIsIlNob3J0Y3V0VG9vbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tCYXNlIiwiX3RoaXMiLCJjYWxsIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzdGF0ZSIsInNob3J0Y3V0c1RyZWUiLCJvcmlnaW5hbFRyZWUiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImluaXRpYWxGb2N1cyIsIiRzZWFyY2hGaWVsZCIsImN1cnJlbnQiLCJhZGRFdmVudERlbGVnYXRlIiwib25BZnRlclJlbmRlcmluZyIsImZvY3VzIiwid2luZG93IiwibWVzc2FnZVBvcnQiLCJzZXR1cFBvcnQiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25tZXNzYWdlIiwib25NZXNzYWdlUmVjZWl2ZWQiLCJiaW5kIiwicG9zdE1lc3NhZ2UiLCJzZXJ2aWNlIiwiZSIsInBheWxvYWQiLCJyZXZlcnNlIiwiaW50ZXJhY3Rpb25zIiwic2hvcnRjdXQiLCIkcmVmIiwiZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uIiwiZGVzY3JpcHRpb24iLCJyZXBsYWNlQWxsIiwic2hvcnRjdXRLZXlzIiwia2JkIiwibmFtZSIsImNvbmNhdCIsIm9uU3RhdGVDaGFuZ2UiLCIkdHJlZSIsImV4cGFuZFRvTGV2ZWwiLCJvblNlYXJjaCIsIl9lIiwicXVlcnkiLCJnZXRQYXJhbWV0ZXIiLCJpc1RpdGxlTWF0Y2giLCJpc05vZGVNYXRjaCIsIl9qc3giLCJQYW5lbCIsImhlYWRlclRleHQiLCJnZXRUZXh0Iiwid2lkdGgiLCJjaGlsZHJlbiIsIlNlYXJjaEZpZWxkIiwicmVmIiwicGxhY2Vob2xkZXIiLCJzZWFyY2giLCJUcmVlIiwiaXRlbXMiLCJtb2RlbCIsInBhcmFtZXRlcnMiLCJhcnJheU5hbWVzIiwibm9EYXRhVGV4dCIsIkN1c3RvbVRyZWVJdGVtIiwiX2pzeHMiLCJGbGV4Qm94IiwiYWxpZ25JdGVtcyIsInJlbmRlclR5cGUiLCJqdXN0aWZ5Q29udGVudCIsIkZvcm1hdHRlZFRleHQiLCJodG1sVGV4dCIsImNsYXNzIiwiZGlyZWN0aW9uIiwiaWQiLCJjb250ZXh0Iiwic2hvcnRjdXRLZXkiLCJnZXRPYmplY3QiLCJzaG9ydEN1dFRleHQiLCJyYXciLCJ0cmFuc2xhdGVkU2hvcnRDdXRUZXh0IiwidHJhbnNsYXRlZCIsInRyYW5zbGF0ZWRTaG9ydEN1dEtleXMiLCJyYXdLZXkiLCJpZHgiLCJMYWJlbCIsInRleHQiLCJsZW5ndGgiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hvcnRjdXRUb29sLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvYmFzZS9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHsgZGVmaW5lUmVmZXJlbmNlLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IEN1c3RvbVRyZWVJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21UcmVlSXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBGb3JtYXR0ZWRUZXh0IGZyb20gXCJzYXAvbS9Gb3JtYXR0ZWRUZXh0XCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgUGFuZWwgZnJvbSBcInNhcC9tL1BhbmVsXCI7XG5pbXBvcnQgdHlwZSB7IFNlYXJjaEZpZWxkJFNlYXJjaEV2ZW50IH0gZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgU2VhcmNoRmllbGQgZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgVHJlZSBmcm9tIFwic2FwL20vVHJlZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG50eXBlIE5hbWVkS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0a2JkOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW107XG59O1xudHlwZSBEb2NLZXlib2FyZEludGVyYWN0aW9uID0ge1xuXHRkZXNjcmlwdGlvbjogc3RyaW5nO1xuXHRrYmQ6IChzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfSlbXTtcbn07XG5cbnR5cGUgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0JHJlZjogc3RyaW5nO1xufTtcbnR5cGUgS2V5Ym9hcmRFbGVtZW50cyA9IHtcblx0Y2xhc3M6IHN0cmluZztcblx0aWQ6IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0aW50ZXJhY3Rpb25zOiAoTmFtZWRLZXlib2FyZEludGVyYWN0aW9uIHwgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbilbXTtcbn07XG50eXBlIFNob3J0Y3V0RWxlbWVudCA9IHsgbGFiZWw6IHN0cmluZzsgc2hvcnRjdXRLZXlzOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW10gfTtcblxuZnVuY3Rpb24gZ2V0RG9jc0RldGFpbChkb2NzUGF0aDogc3RyaW5nLCBkYXRhOiBvYmplY3QpOiBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQge1xuXHRjb25zdCBzcGx0aVBhdGggPSBkb2NzUGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCByZXN1bHQgPSBkYXRhO1xuXHRzcGx0aVBhdGguZm9yRWFjaCgocGF0aCkgPT4ge1xuXHRcdHJlc3VsdCA9IHJlc3VsdFtwYXRoIGFzIGtleW9mIHR5cGVvZiByZXN1bHRdO1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdCBhcyBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxhcHNlRHVwbGljYXRlKFxuXHRlbGVtZW50czogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdLFxuXHRmaWx0ZXJRdWVyeTogc3RyaW5nXG4pOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W10ge1xuXHRjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIFNob3J0Y3V0RWxlbWVudFtdPiA9IHt9O1xuXHRlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG5cdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0pIHtcblx0XHRcdG1hcFtlbGVtZW50LmxhYmVsXSA9IFtdO1xuXHRcdH1cblx0XHRlbGVtZW50Lm5vZGVzXG5cdFx0XHQuZmlsdGVyKChub2RlKSA9PiB7XG5cdFx0XHRcdHJldHVybiBub2RlLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyUXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZvckVhY2goKG5vZGUpID0+IHtcblx0XHRcdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0uc29tZSgoZXhpc3RpbmdOb2RlKSA9PiBleGlzdGluZ05vZGUubGFiZWwgPT09IG5vZGUubGFiZWwpKSB7XG5cdFx0XHRcdFx0bWFwW2VsZW1lbnQubGFiZWxdLnB1c2gobm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9KTtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcCkubWFwKChbbGFiZWwsIG5vZGVzXSkgPT4gKHsgbGFiZWwsIG5vZGVzIH0pKTtcbn1cblxuLyoqXG4gKiBNYXBzIGEga2V5Ym9hcmQga2V5IHRvIGEgc3ltYm9sIGZvciBkaXNwbGF5IHB1cnBvc2VzLlxuICogV2UgbmVlZCB0byBwZXJmb3JtIHRoZSBtYXBwaW5nIGJhc2VkIG9uIHRoZSByYXcga2V5IG5hbWUgYnV0IHJldHVybiB0aGUgdHJhbnNsYXRlZCBrZXkgZm9yIGRpc3BsYXkuXG4gKiBAcGFyYW0ga2V5IFRoZSByYXcga2V5IG5hbWUgKGUuZy4sIFwiQXJyb3dVcFwiLCBcIkN0cmxcIiwgZXRjLilcbiAqIEBwYXJhbSB0cmFuc2xhdGVkS2V5IFRoZSB0cmFuc2xhdGVkIGtleSBuYW1lIGluIHRoZSBwcm9wZXIgbGFuZ3VhZ2VcbiAqIEByZXR1cm5zIFRoZSBzeW1ib2wgdG8gYmUgZGlzcGxheWVkIGZvciB0aGUga2V5XG4gKi9cbmZ1bmN0aW9uIG1hcEtleVRvU3ltYm9sKGtleTogc3RyaW5nLCB0cmFuc2xhdGVkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRzd2l0Y2ggKGtleS50cmltKCkpIHtcblx0XHRjYXNlIFwiQXJyb3dEb3duXCI6XG5cdFx0XHRyZXR1cm4gXCLihpNcIjtcblx0XHRjYXNlIFwiQXJyb3dVcFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaRXCI7XG5cdFx0Y2FzZSBcIkFycm93TGVmdFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaQXCI7XG5cdFx0Y2FzZSBcIkFycm93UmlnaHRcIjpcblx0XHRcdHJldHVybiBcIuKGklwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdHJhbnNsYXRlZEtleTtcblx0fVxufVxuXG50eXBlIFNob3J0Y3V0VG9vbFN0YXRlID0ge1xuXHRzaG9ydGN1dHNUcmVlOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W107XG5cdG9yaWdpbmFsVHJlZTogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdO1xuXHRpbml0aWFsRm9jdXM6IGJvb2xlYW47XG59O1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvbnRyb2xzLnNob3J0Y3V0cy5wb3B1cC5TaG9ydGN1dFRvb2xcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNob3J0Y3V0VG9vbCBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFBhbmVsLCBTaG9ydGN1dFRvb2xTdGF0ZT4ge1xuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCRzZWFyY2hGaWVsZCE6IFJlZjxTZWFyY2hGaWVsZD47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCR0cmVlITogUmVmPFRyZWU+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlID0gW107XG5cdFx0dGhpcy5zdGF0ZS5vcmlnaW5hbFRyZWUgPSBbXTtcblxuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzID0gdHJ1ZTtcblx0XHR0aGlzLiRzZWFyY2hGaWVsZC5jdXJyZW50Py5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzKSB7XG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoRmllbGQuY3VycmVudD8uZm9jdXMoKTtcblx0XHRcdFx0XHR0aGlzLnN0YXRlLmluaXRpYWxGb2N1cyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpZiAoKHdpbmRvdyBhcyB7IG1lc3NhZ2VQb3J0PzogTWVzc2FnZVBvcnQgfSkubWVzc2FnZVBvcnQpIHtcblx0XHRcdHRoaXMuc2V0dXBQb3J0KCh3aW5kb3cgYXMgeyBtZXNzYWdlUG9ydD86IE1lc3NhZ2VQb3J0IH0pLm1lc3NhZ2VQb3J0ISk7XG5cdFx0fVxuXHR9XG5cblx0c2V0dXBQb3J0KG1lc3NhZ2VQb3J0OiBNZXNzYWdlUG9ydCk6IHZvaWQge1xuXHRcdG1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IHRoaXMub25NZXNzYWdlUmVjZWl2ZWQuYmluZCh0aGlzKTtcblx0XHRtZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh7IHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLlN0YXJ0RGlzcGxheVwiIH0pO1xuXHR9XG5cblx0b25NZXNzYWdlUmVjZWl2ZWQoZTogTWVzc2FnZUV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKGU/LmRhdGE/LnNlcnZpY2UgPT09IFwic2FwLnVpLmludGVyYWN0aW9uLlVwZGF0ZURpc3BsYXlcIikge1xuXHRcdFx0Y29uc3QgZWxlbWVudHMgPSBlLmRhdGEucGF5bG9hZC5lbGVtZW50cyBhcyBLZXlib2FyZEVsZW1lbnRzW107XG5cdFx0XHRlbGVtZW50cy5yZXZlcnNlKCk7XG5cdFx0XHR0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZSA9IGVsZW1lbnRzLm1hcCgoZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBub2RlczogU2hvcnRjdXRFbGVtZW50W10gPSBbXTtcblx0XHRcdFx0ZWxlbWVudC5pbnRlcmFjdGlvbnMuZm9yRWFjaCgoc2hvcnRjdXQpID0+IHtcblx0XHRcdFx0XHRpZiAoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVyYWN0aW9ucyA9IGdldERvY3NEZXRhaWwoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYsIGUuZGF0YS5wYXlsb2FkKTtcblx0XHRcdFx0XHRcdGludGVyYWN0aW9ucz8uZm9yRWFjaCgoZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24uZGVzY3JpcHRpb24ucmVwbGFjZUFsbChcIjxrYmRcIiwgXCI8c3Ryb25nXCIpLnJlcGxhY2VBbGwoXCI8L2tiZD5cIiwgXCI8L3N0cm9uZz5cIiksXG5cdFx0XHRcdFx0XHRcdFx0c2hvcnRjdXRLZXlzOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24ua2JkXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogKChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmRlc2NyaXB0aW9uID8/IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLm5hbWUpXG5cdFx0XHRcdFx0XHRcdFx0LnJlcGxhY2VBbGwoXCI8a2JkXCIsIFwiPHN0cm9uZ1wiKVxuXHRcdFx0XHRcdFx0XHRcdC5yZXBsYWNlQWxsKFwiPC9rYmQ+XCIsIFwiPC9zdHJvbmc+XCIpLFxuXHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXM6IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmtiZFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsYWJlbDogZWxlbWVudC5sYWJlbC5yZXBsYWNlQWxsKFwiPGtiZFwiLCBcIjxzdHJvbmdcIikucmVwbGFjZUFsbChcIjwva2JkPlwiLCBcIjwvc3Ryb25nPlwiKSxcblx0XHRcdFx0XHRub2Rlczogbm9kZXNcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZSh0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZS5jb25jYXQoKSwgXCJcIik7XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuJHRyZWUuY3VycmVudD8uZXhwYW5kVG9MZXZlbCgxKTtcblx0fVxuXG5cdG9uU2VhcmNoKF9lOiBTZWFyY2hGaWVsZCRTZWFyY2hFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHF1ZXJ5ID0gX2UuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIikgPz8gXCJcIjtcblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZShcblx0XHRcdHRoaXMuc3RhdGUub3JpZ2luYWxUcmVlXG5cdFx0XHRcdC5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpc1RpdGxlTWF0Y2ggPSBlbGVtZW50LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRcdFx0Y29uc3QgaXNOb2RlTWF0Y2ggPSBlbGVtZW50Lm5vZGVzLnNvbWUoKG5vZGUpID0+IG5vZGUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSk7XG5cdFx0XHRcdFx0cmV0dXJuIGlzVGl0bGVNYXRjaCB8fCBpc05vZGVNYXRjaDtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNvbmNhdCgpLFxuXHRcdFx0cXVlcnlcblx0XHQpO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBQYW5lbCB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQYW5lbCBoZWFkZXJUZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpfSB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiBbXG5cdFx0XHRcdFx0XHQ8U2VhcmNoRmllbGRcblx0XHRcdFx0XHRcdFx0cmVmPXt0aGlzLiRzZWFyY2hGaWVsZH1cblx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0XHRcdHNlYXJjaD17KGUpOiB2b2lkID0+IHRoaXMub25TZWFyY2goZSl9XG5cdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdDxUcmVlXG5cdFx0XHRcdFx0XHRcdHJlZj17dGhpcy4kdHJlZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e3sgbW9kZWw6IFwiJGNvbXBvbmVudFN0YXRlXCIsIHBhdGg6IFwiL3Nob3J0Y3V0c1RyZWVcIiwgcGFyYW1ldGVyczogeyBhcnJheU5hbWVzOiBbXCJub2Rlc1wiXSB9IH19XG5cdFx0XHRcdFx0XHRcdG5vRGF0YVRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfTk9EQVRBXCIpfVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3ggYWxpZ25JdGVtcz17XCJTdGFydFwifSB3aWR0aD17XCIxMDAlXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifSBqdXN0aWZ5Q29udGVudD17XCJTcGFjZUJldHdlZW5cIn0+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8Rm9ybWF0dGVkVGV4dCBodG1sVGV4dD17dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlLmxhYmVsfSBjbGFzcz17XCJzYXBGZUNvbnRyb2xzU2hvcmN1dE1GVFwifSAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtcIlNwYWNlQmV0d2VlblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17XCJ7JGNvbXBvbmVudFN0YXRlPnNob3J0Y3V0S2V5c31cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtcIkNvbHVtblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBmdW5jdGlvbiAoaWQ6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IExhYmVsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5ID0gY29udGV4dC5nZXRPYmplY3QoKSBhcyBzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Q3V0VGV4dCA9IHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkucmF3O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdHJhbnNsYXRlZFNob3J0Q3V0VGV4dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkudHJhbnNsYXRlZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5cyA9IHNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzID0gdHJhbnNsYXRlZFNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBlbGVtZW50czogQ29udHJvbFtdID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXMuZm9yRWFjaCgocmF3S2V5OiBzdHJpbmcsIGlkeDogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRyYW5zbGF0ZWRLZXkgPSB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzW2lkeF0gPz8gcmF3S2V5O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbGVtZW50cy5wdXNoKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxMYWJlbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17bWFwS2V5VG9TeW1ib2wocmF3S2V5LCB0cmFuc2xhdGVkS2V5KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZCBzYXBGZUNvbnRyb2xzU2hvcnRjdXRLZXlcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaWR4ICE9PSBzaG9ydGN1dEtleXMubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsZW1lbnRzLnB1c2goPExhYmVsIHRleHQ9e1wiK1wifSBjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5FbmRcIn0gLz4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94IGlkPXtpZH0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9IGFsaWduSXRlbXM9e1wiQ2VudGVyXCJ9PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW1zOiBlbGVtZW50cyB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdDwvQ3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHQ8L1RyZWU+XG5cdFx0XHRcdFx0XVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9QYW5lbD5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxQ0EsU0FBU0EsYUFBYUEsQ0FBQ0MsUUFBZ0IsRUFBRUMsSUFBWSxFQUF3QztJQUM1RixNQUFNQyxTQUFTLEdBQUdGLFFBQVEsQ0FBQ0csS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNyQyxJQUFJQyxNQUFNLEdBQUdILElBQUk7SUFDakJDLFNBQVMsQ0FBQ0csT0FBTyxDQUFFQyxJQUFJLElBQUs7TUFDM0JGLE1BQU0sR0FBR0EsTUFBTSxDQUFDRSxJQUFJLENBQXdCO0lBQzdDLENBQUMsQ0FBQztJQUNGLE9BQU9GLE1BQU07RUFDZDtFQUVBLFNBQVNHLGlCQUFpQkEsQ0FDekJDLFFBQXVELEVBQ3ZEQyxXQUFtQixFQUM2QjtJQUNoRCxN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
|
|
236
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREb2NzRGV0YWlsIiwiZG9jc1BhdGgiLCJkYXRhIiwic3BsdGlQYXRoIiwic3BsaXQiLCJyZXN1bHQiLCJmb3JFYWNoIiwicGF0aCIsImNvbGxhcHNlRHVwbGljYXRlIiwiZWxlbWVudHMiLCJmaWx0ZXJRdWVyeSIsIm1hcCIsImVsZW1lbnQiLCJsYWJlbCIsIm5vZGVzIiwiZmlsdGVyIiwibm9kZSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJzb21lIiwiZXhpc3RpbmdOb2RlIiwicHVzaCIsIk9iamVjdCIsImVudHJpZXMiLCJfcmVmIiwibWFwS2V5VG9TeW1ib2wiLCJrZXkiLCJ0cmFuc2xhdGVkS2V5IiwidHJpbSIsIlNob3J0Y3V0VG9vbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tCYXNlIiwiX3RoaXMiLCJjYWxsIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzdGF0ZSIsInNob3J0Y3V0c1RyZWUiLCJvcmlnaW5hbFRyZWUiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImluaXRpYWxGb2N1cyIsIiRzZWFyY2hGaWVsZCIsImN1cnJlbnQiLCJhZGRFdmVudERlbGVnYXRlIiwib25BZnRlclJlbmRlcmluZyIsImZvY3VzIiwid2luZG93IiwibWVzc2FnZVBvcnQiLCJzZXR1cFBvcnQiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25tZXNzYWdlIiwib25NZXNzYWdlUmVjZWl2ZWQiLCJiaW5kIiwicG9zdE1lc3NhZ2UiLCJzZXJ2aWNlIiwiZSIsInBheWxvYWQiLCJyZXZlcnNlIiwiaW50ZXJhY3Rpb25zIiwic2hvcnRjdXQiLCIkcmVmIiwiZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uIiwiZGVzY3JpcHRpb24iLCJyZXBsYWNlQWxsIiwic2hvcnRjdXRLZXlzIiwia2JkIiwibmFtZSIsImNvbmNhdCIsIm9uU3RhdGVDaGFuZ2UiLCIkdHJlZSIsImV4cGFuZFRvTGV2ZWwiLCJvblNlYXJjaCIsIl9lIiwicXVlcnkiLCJnZXRQYXJhbWV0ZXIiLCJpc1RpdGxlTWF0Y2giLCJpc05vZGVNYXRjaCIsIl9qc3giLCJQYW5lbCIsImhlYWRlclRleHQiLCJnZXRUZXh0Iiwid2lkdGgiLCJjaGlsZHJlbiIsIlNlYXJjaEZpZWxkIiwicmVmIiwicGxhY2Vob2xkZXIiLCJzZWFyY2giLCJUcmVlIiwiaXRlbXMiLCJtb2RlbCIsInBhcmFtZXRlcnMiLCJhcnJheU5hbWVzIiwibm9EYXRhVGV4dCIsIkN1c3RvbVRyZWVJdGVtIiwiX2pzeHMiLCJGbGV4Qm94IiwiYWxpZ25JdGVtcyIsInJlbmRlclR5cGUiLCJqdXN0aWZ5Q29udGVudCIsIkZvcm1hdHRlZFRleHQiLCJodG1sVGV4dCIsImNsYXNzIiwiZGlyZWN0aW9uIiwiaWQiLCJjb250ZXh0Iiwic2hvcnRjdXRLZXkiLCJnZXRPYmplY3QiLCJzaG9ydEN1dFRleHQiLCJyYXciLCJ0cmFuc2xhdGVkU2hvcnRDdXRUZXh0IiwidHJhbnNsYXRlZCIsInRyYW5zbGF0ZWRTaG9ydEN1dEtleXMiLCJyYXdLZXkiLCJpZHgiLCJMYWJlbCIsInRleHQiLCJsZW5ndGgiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2hvcnRjdXRUb29sLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2tCYXNlIGZyb20gXCJzYXAvZmUvYmFzZS9CdWlsZGluZ0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHsgZGVmaW5lUmVmZXJlbmNlLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IEN1c3RvbVRyZWVJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21UcmVlSXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBGb3JtYXR0ZWRUZXh0IGZyb20gXCJzYXAvbS9Gb3JtYXR0ZWRUZXh0XCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgUGFuZWwgZnJvbSBcInNhcC9tL1BhbmVsXCI7XG5pbXBvcnQgdHlwZSB7IFNlYXJjaEZpZWxkJFNlYXJjaEV2ZW50IH0gZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgU2VhcmNoRmllbGQgZnJvbSBcInNhcC9tL1NlYXJjaEZpZWxkXCI7XG5pbXBvcnQgVHJlZSBmcm9tIFwic2FwL20vVHJlZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG50eXBlIE5hbWVkS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0a2JkOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW107XG59O1xudHlwZSBEb2NLZXlib2FyZEludGVyYWN0aW9uID0ge1xuXHRkZXNjcmlwdGlvbjogc3RyaW5nO1xuXHRrYmQ6IChzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfSlbXTtcbn07XG5cbnR5cGUgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IHtcblx0JHJlZjogc3RyaW5nO1xufTtcbnR5cGUgS2V5Ym9hcmRFbGVtZW50cyA9IHtcblx0Y2xhc3M6IHN0cmluZztcblx0aWQ6IHN0cmluZztcblx0bGFiZWw6IHN0cmluZztcblx0aW50ZXJhY3Rpb25zOiAoTmFtZWRLZXlib2FyZEludGVyYWN0aW9uIHwgUmVmS2V5Ym9hcmRJbnRlcmFjdGlvbilbXTtcbn07XG50eXBlIFNob3J0Y3V0RWxlbWVudCA9IHsgbGFiZWw6IHN0cmluZzsgc2hvcnRjdXRLZXlzOiAoc3RyaW5nIHwgeyByYXc6IHN0cmluZzsgdHJhbnNsYXRlZDogc3RyaW5nIH0pW10gfTtcblxuZnVuY3Rpb24gZ2V0RG9jc0RldGFpbChkb2NzUGF0aDogc3RyaW5nLCBkYXRhOiBvYmplY3QpOiBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQge1xuXHRjb25zdCBzcGx0aVBhdGggPSBkb2NzUGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCByZXN1bHQgPSBkYXRhO1xuXHRzcGx0aVBhdGguZm9yRWFjaCgocGF0aCkgPT4ge1xuXHRcdHJlc3VsdCA9IHJlc3VsdFtwYXRoIGFzIGtleW9mIHR5cGVvZiByZXN1bHRdO1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdCBhcyBEb2NLZXlib2FyZEludGVyYWN0aW9uW10gfCB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxhcHNlRHVwbGljYXRlKFxuXHRlbGVtZW50czogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdLFxuXHRmaWx0ZXJRdWVyeTogc3RyaW5nXG4pOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W10ge1xuXHRjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIFNob3J0Y3V0RWxlbWVudFtdPiA9IHt9O1xuXHRlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG5cdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0pIHtcblx0XHRcdG1hcFtlbGVtZW50LmxhYmVsXSA9IFtdO1xuXHRcdH1cblx0XHRlbGVtZW50Lm5vZGVzXG5cdFx0XHQuZmlsdGVyKChub2RlKSA9PiB7XG5cdFx0XHRcdHJldHVybiBub2RlLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyUXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZvckVhY2goKG5vZGUpID0+IHtcblx0XHRcdFx0aWYgKCFtYXBbZWxlbWVudC5sYWJlbF0uc29tZSgoZXhpc3RpbmdOb2RlKSA9PiBleGlzdGluZ05vZGUubGFiZWwgPT09IG5vZGUubGFiZWwpKSB7XG5cdFx0XHRcdFx0bWFwW2VsZW1lbnQubGFiZWxdLnB1c2gobm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHR9KTtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcCkubWFwKChbbGFiZWwsIG5vZGVzXSkgPT4gKHsgbGFiZWwsIG5vZGVzIH0pKTtcbn1cblxuLyoqXG4gKiBNYXBzIGEga2V5Ym9hcmQga2V5IHRvIGEgc3ltYm9sIGZvciBkaXNwbGF5IHB1cnBvc2VzLlxuICogV2UgbmVlZCB0byBwZXJmb3JtIHRoZSBtYXBwaW5nIGJhc2VkIG9uIHRoZSByYXcga2V5IG5hbWUgYnV0IHJldHVybiB0aGUgdHJhbnNsYXRlZCBrZXkgZm9yIGRpc3BsYXkuXG4gKiBAcGFyYW0ga2V5IFRoZSByYXcga2V5IG5hbWUgKGUuZy4sIFwiQXJyb3dVcFwiLCBcIkN0cmxcIiwgZXRjLilcbiAqIEBwYXJhbSB0cmFuc2xhdGVkS2V5IFRoZSB0cmFuc2xhdGVkIGtleSBuYW1lIGluIHRoZSBwcm9wZXIgbGFuZ3VhZ2VcbiAqIEByZXR1cm5zIFRoZSBzeW1ib2wgdG8gYmUgZGlzcGxheWVkIGZvciB0aGUga2V5XG4gKi9cbmZ1bmN0aW9uIG1hcEtleVRvU3ltYm9sKGtleTogc3RyaW5nLCB0cmFuc2xhdGVkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRzd2l0Y2ggKGtleS50cmltKCkpIHtcblx0XHRjYXNlIFwiQXJyb3dEb3duXCI6XG5cdFx0XHRyZXR1cm4gXCLihpNcIjtcblx0XHRjYXNlIFwiQXJyb3dVcFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaRXCI7XG5cdFx0Y2FzZSBcIkFycm93TGVmdFwiOlxuXHRcdFx0cmV0dXJuIFwi4oaQXCI7XG5cdFx0Y2FzZSBcIkFycm93UmlnaHRcIjpcblx0XHRcdHJldHVybiBcIuKGklwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdHJhbnNsYXRlZEtleTtcblx0fVxufVxuXG50eXBlIFNob3J0Y3V0VG9vbFN0YXRlID0ge1xuXHRzaG9ydGN1dHNUcmVlOiB7IGxhYmVsOiBzdHJpbmc7IG5vZGVzOiBTaG9ydGN1dEVsZW1lbnRbXSB9W107XG5cdG9yaWdpbmFsVHJlZTogeyBsYWJlbDogc3RyaW5nOyBub2RlczogU2hvcnRjdXRFbGVtZW50W10gfVtdO1xuXHRpbml0aWFsRm9jdXM6IGJvb2xlYW47XG59O1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvbnRyb2xzLnNob3J0Y3V0cy5wb3B1cC5TaG9ydGN1dFRvb2xcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNob3J0Y3V0VG9vbCBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFBhbmVsLCBTaG9ydGN1dFRvb2xTdGF0ZT4ge1xuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCRzZWFyY2hGaWVsZCE6IFJlZjxTZWFyY2hGaWVsZD47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdCR0cmVlITogUmVmPFRyZWU+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlID0gW107XG5cdFx0dGhpcy5zdGF0ZS5vcmlnaW5hbFRyZWUgPSBbXTtcblxuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzID0gdHJ1ZTtcblx0XHR0aGlzLiRzZWFyY2hGaWVsZC5jdXJyZW50Py5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaW5pdGlhbEZvY3VzKSB7XG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoRmllbGQuY3VycmVudD8uZm9jdXMoKTtcblx0XHRcdFx0XHR0aGlzLnN0YXRlLmluaXRpYWxGb2N1cyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpZiAoKHdpbmRvdyBhcyB7IG1lc3NhZ2VQb3J0PzogTWVzc2FnZVBvcnQgfSkubWVzc2FnZVBvcnQpIHtcblx0XHRcdHRoaXMuc2V0dXBQb3J0KCh3aW5kb3cgYXMgeyBtZXNzYWdlUG9ydD86IE1lc3NhZ2VQb3J0IH0pLm1lc3NhZ2VQb3J0ISk7XG5cdFx0fVxuXHR9XG5cblx0c2V0dXBQb3J0KG1lc3NhZ2VQb3J0OiBNZXNzYWdlUG9ydCk6IHZvaWQge1xuXHRcdG1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IHRoaXMub25NZXNzYWdlUmVjZWl2ZWQuYmluZCh0aGlzKTtcblx0XHQvLyBXZSBzZW5kIGEgbWVzc2FnZSB0byBzdG9wIHRoZSBkaXNwbGF5IGlmIGl0IGlzIGFscmVhZHkgcnVubmluZ1xuXHRcdC8vIGFuZCB0aGVuIHN0YXJ0IGl0IGFnYWluIHRvIGVuc3VyZSB3ZSBoYXZlIHRoZSBsYXRlc3QgZGF0YS5cblx0XHQvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBwb3B1cCBpcyBhbHdheXMgdXAtdG8tZGF0ZSB3aXRoIHRoZSBsYXRlc3Qgc2hvcnRjdXRzXG5cdFx0Ly8gYW5kIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIGRpc3BsYXkgYmVpbmcgYWxyZWFkeSBydW5uaW5nLlxuXHRcdG1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKHsgc2VydmljZTogXCJzYXAudWkuaW50ZXJhY3Rpb24uU3RvcERpc3BsYXlcIiB9KTtcblx0XHRtZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh7IHNlcnZpY2U6IFwic2FwLnVpLmludGVyYWN0aW9uLlN0YXJ0RGlzcGxheVwiIH0pO1xuXHR9XG5cblx0b25NZXNzYWdlUmVjZWl2ZWQoZTogTWVzc2FnZUV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKGU/LmRhdGE/LnNlcnZpY2UgPT09IFwic2FwLnVpLmludGVyYWN0aW9uLlVwZGF0ZURpc3BsYXlcIikge1xuXHRcdFx0Y29uc3QgZWxlbWVudHMgPSBlLmRhdGEucGF5bG9hZC5lbGVtZW50cyBhcyBLZXlib2FyZEVsZW1lbnRzW107XG5cdFx0XHRlbGVtZW50cy5yZXZlcnNlKCk7XG5cdFx0XHR0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZSA9IGVsZW1lbnRzLm1hcCgoZWxlbWVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBub2RlczogU2hvcnRjdXRFbGVtZW50W10gPSBbXTtcblx0XHRcdFx0ZWxlbWVudC5pbnRlcmFjdGlvbnMuZm9yRWFjaCgoc2hvcnRjdXQpID0+IHtcblx0XHRcdFx0XHRpZiAoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVyYWN0aW9ucyA9IGdldERvY3NEZXRhaWwoKHNob3J0Y3V0IGFzIFJlZktleWJvYXJkSW50ZXJhY3Rpb24pLiRyZWYsIGUuZGF0YS5wYXlsb2FkKTtcblx0XHRcdFx0XHRcdGludGVyYWN0aW9ucz8uZm9yRWFjaCgoZG9jdW1lbnRhdGlvbkludGVyYWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24uZGVzY3JpcHRpb24ucmVwbGFjZUFsbChcIjxrYmRcIiwgXCI8c3Ryb25nXCIpLnJlcGxhY2VBbGwoXCI8L2tiZD5cIiwgXCI8L3N0cm9uZz5cIiksXG5cdFx0XHRcdFx0XHRcdFx0c2hvcnRjdXRLZXlzOiBkb2N1bWVudGF0aW9uSW50ZXJhY3Rpb24ua2JkXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG5vZGVzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRsYWJlbDogKChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmRlc2NyaXB0aW9uID8/IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLm5hbWUpXG5cdFx0XHRcdFx0XHRcdFx0LnJlcGxhY2VBbGwoXCI8a2JkXCIsIFwiPHN0cm9uZ1wiKVxuXHRcdFx0XHRcdFx0XHRcdC5yZXBsYWNlQWxsKFwiPC9rYmQ+XCIsIFwiPC9zdHJvbmc+XCIpLFxuXHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXM6IChzaG9ydGN1dCBhcyBOYW1lZEtleWJvYXJkSW50ZXJhY3Rpb24pLmtiZFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsYWJlbDogZWxlbWVudC5sYWJlbC5yZXBsYWNlQWxsKFwiPGtiZFwiLCBcIjxzdHJvbmdcIikucmVwbGFjZUFsbChcIjwva2JkPlwiLCBcIjwvc3Ryb25nPlwiKSxcblx0XHRcdFx0XHRub2Rlczogbm9kZXNcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZSh0aGlzLnN0YXRlLm9yaWdpbmFsVHJlZS5jb25jYXQoKSwgXCJcIik7XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuXHRcdHRoaXMuJHRyZWUuY3VycmVudD8uZXhwYW5kVG9MZXZlbCgxKTtcblx0fVxuXG5cdG9uU2VhcmNoKF9lOiBTZWFyY2hGaWVsZCRTZWFyY2hFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IHF1ZXJ5ID0gX2UuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIikgPz8gXCJcIjtcblx0XHR0aGlzLnN0YXRlLnNob3J0Y3V0c1RyZWUgPSBjb2xsYXBzZUR1cGxpY2F0ZShcblx0XHRcdHRoaXMuc3RhdGUub3JpZ2luYWxUcmVlXG5cdFx0XHRcdC5maWx0ZXIoKGVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpc1RpdGxlTWF0Y2ggPSBlbGVtZW50LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkudG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRcdFx0Y29uc3QgaXNOb2RlTWF0Y2ggPSBlbGVtZW50Lm5vZGVzLnNvbWUoKG5vZGUpID0+IG5vZGUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeS50b0xvd2VyQ2FzZSgpKSk7XG5cdFx0XHRcdFx0cmV0dXJuIGlzVGl0bGVNYXRjaCB8fCBpc05vZGVNYXRjaDtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNvbmNhdCgpLFxuXHRcdFx0cXVlcnlcblx0XHQpO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBQYW5lbCB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQYW5lbCBoZWFkZXJUZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX1NIT1JUQ1VUX1RJVExFXCIpfSB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb250ZW50OiBbXG5cdFx0XHRcdFx0XHQ8U2VhcmNoRmllbGRcblx0XHRcdFx0XHRcdFx0cmVmPXt0aGlzLiRzZWFyY2hGaWVsZH1cblx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfUExBQ0VIT0xERVJcIil9XG5cdFx0XHRcdFx0XHRcdHNlYXJjaD17KGUpOiB2b2lkID0+IHRoaXMub25TZWFyY2goZSl9XG5cdFx0XHRcdFx0XHQvPixcblx0XHRcdFx0XHRcdDxUcmVlXG5cdFx0XHRcdFx0XHRcdHJlZj17dGhpcy4kdHJlZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e3sgbW9kZWw6IFwiJGNvbXBvbmVudFN0YXRlXCIsIHBhdGg6IFwiL3Nob3J0Y3V0c1RyZWVcIiwgcGFyYW1ldGVyczogeyBhcnJheU5hbWVzOiBbXCJub2Rlc1wiXSB9IH19XG5cdFx0XHRcdFx0XHRcdG5vRGF0YVRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfU0hPUlRDVVRfTk9EQVRBXCIpfVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHQ8Q3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3ggYWxpZ25JdGVtcz17XCJTdGFydFwifSB3aWR0aD17XCIxMDAlXCJ9IHJlbmRlclR5cGU9e1wiQmFyZVwifSBqdXN0aWZ5Q29udGVudD17XCJTcGFjZUJldHdlZW5cIn0+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8Rm9ybWF0dGVkVGV4dCBodG1sVGV4dD17dGhpcy5zdGF0ZS5zaG9ydGN1dHNUcmVlLmxhYmVsfSBjbGFzcz17XCJzYXBGZUNvbnRyb2xzU2hvcmN1dE1GVFwifSAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVuZGVyVHlwZT17XCJCYXJlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtcIlNwYWNlQmV0d2VlblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17XCJ7JGNvbXBvbmVudFN0YXRlPnNob3J0Y3V0S2V5c31cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlyZWN0aW9uPXtcIkNvbHVtblwifVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBmdW5jdGlvbiAoaWQ6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IExhYmVsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5ID0gY29udGV4dC5nZXRPYmplY3QoKSBhcyBzdHJpbmcgfCB7IHJhdzogc3RyaW5nOyB0cmFuc2xhdGVkOiBzdHJpbmcgfTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Q3V0VGV4dCA9IHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkucmF3O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdHJhbnNsYXRlZFNob3J0Q3V0VGV4dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGVvZiBzaG9ydGN1dEtleSA9PT0gXCJzdHJpbmdcIiA/IHNob3J0Y3V0S2V5IDogc2hvcnRjdXRLZXkudHJhbnNsYXRlZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHNob3J0Y3V0S2V5cyA9IHNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzID0gdHJhbnNsYXRlZFNob3J0Q3V0VGV4dC5zcGxpdChcIitcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBlbGVtZW50czogQ29udHJvbFtdID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaG9ydGN1dEtleXMuZm9yRWFjaCgocmF3S2V5OiBzdHJpbmcsIGlkeDogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRyYW5zbGF0ZWRLZXkgPSB0cmFuc2xhdGVkU2hvcnRDdXRLZXlzW2lkeF0gPz8gcmF3S2V5O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbGVtZW50cy5wdXNoKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxMYWJlbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17bWFwS2V5VG9TeW1ib2wocmF3S2V5LCB0cmFuc2xhdGVkS2V5KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpbkVuZCBzYXBGZUNvbnRyb2xzU2hvcnRjdXRLZXlcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoaWR4ICE9PSBzaG9ydGN1dEtleXMubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsZW1lbnRzLnB1c2goPExhYmVsIHRleHQ9e1wiK1wifSBjbGFzcz17XCJzYXBVaVRpbnlNYXJnaW5FbmRcIn0gLz4pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94IGlkPXtpZH0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9IGFsaWduSXRlbXM9e1wiQ2VudGVyXCJ9PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7IGl0ZW1zOiBlbGVtZW50cyB9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdFx0XHRcdDwvQ3VzdG9tVHJlZUl0ZW0+XG5cdFx0XHRcdFx0XHQ8L1RyZWU+XG5cdFx0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
|
|
@@ -126,6 +126,11 @@ export default class ShortcutTool extends BuildingBlockBase<Panel, ShortcutToolS
|
|
|
126
126
|
|
|
127
127
|
setupPort(messagePort: MessagePort): void {
|
|
128
128
|
messagePort.onmessage = this.onMessageReceived.bind(this);
|
|
129
|
+
// We send a message to stop the display if it is already running
|
|
130
|
+
// and then start it again to ensure we have the latest data.
|
|
131
|
+
// This is to ensure that the popup is always up-to-date with the latest shortcuts
|
|
132
|
+
// and to avoid any potential issues with the display being already running.
|
|
133
|
+
messagePort.postMessage({ service: "sap.ui.interaction.StopDisplay" });
|
|
129
134
|
messagePort.postMessage({ service: "sap.ui.interaction.StartDisplay" });
|
|
130
135
|
}
|
|
131
136
|
|