@sapui5/sap.fe.macros 1.136.2 → 1.136.3
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/macros/.library +1 -1
- package/src/sap/fe/macros/MultiValueField.js +17 -4
- package/src/sap/fe/macros/MultiValueField.tsx +7 -2
- package/src/sap/fe/macros/chart/ChartDelegate.js +3 -3
- package/src/sap/fe/macros/chart/ChartDelegate.ts +2 -2
- package/src/sap/fe/macros/controls/FieldWrapper.js +7 -2
- package/src/sap/fe/macros/controls/FieldWrapper.ts +9 -1
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +2 -2
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +1 -1
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/messagebundle_ar.properties +2 -0
- package/src/sap/fe/macros/messagebundle_bg.properties +2 -0
- package/src/sap/fe/macros/messagebundle_ca.properties +2 -0
- package/src/sap/fe/macros/messagebundle_cnr.properties +2 -0
- package/src/sap/fe/macros/messagebundle_cs.properties +2 -0
- package/src/sap/fe/macros/messagebundle_cy.properties +2 -0
- package/src/sap/fe/macros/messagebundle_da.properties +2 -0
- package/src/sap/fe/macros/messagebundle_de.properties +3 -1
- package/src/sap/fe/macros/messagebundle_el.properties +2 -0
- package/src/sap/fe/macros/messagebundle_en.properties +2 -0
- package/src/sap/fe/macros/messagebundle_en_GB.properties +2 -0
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +2 -0
- package/src/sap/fe/macros/messagebundle_es.properties +2 -0
- package/src/sap/fe/macros/messagebundle_es_MX.properties +2 -0
- package/src/sap/fe/macros/messagebundle_et.properties +2 -0
- package/src/sap/fe/macros/messagebundle_fi.properties +4 -2
- package/src/sap/fe/macros/messagebundle_fr.properties +2 -0
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +5 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +2 -0
- package/src/sap/fe/macros/messagebundle_hr.properties +2 -0
- package/src/sap/fe/macros/messagebundle_hu.properties +2 -0
- package/src/sap/fe/macros/messagebundle_id.properties +5 -3
- package/src/sap/fe/macros/messagebundle_it.properties +2 -0
- package/src/sap/fe/macros/messagebundle_iw.properties +2 -0
- package/src/sap/fe/macros/messagebundle_ja.properties +2 -0
- package/src/sap/fe/macros/messagebundle_kk.properties +2 -0
- package/src/sap/fe/macros/messagebundle_ko.properties +2 -0
- package/src/sap/fe/macros/messagebundle_lt.properties +2 -0
- package/src/sap/fe/macros/messagebundle_lv.properties +2 -0
- package/src/sap/fe/macros/messagebundle_mk.properties +2 -0
- package/src/sap/fe/macros/messagebundle_ms.properties +4 -2
- package/src/sap/fe/macros/messagebundle_nl.properties +2 -0
- package/src/sap/fe/macros/messagebundle_no.properties +3 -1
- package/src/sap/fe/macros/messagebundle_pl.properties +2 -0
- package/src/sap/fe/macros/messagebundle_pt.properties +2 -0
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +2 -0
- package/src/sap/fe/macros/messagebundle_ro.properties +2 -0
- package/src/sap/fe/macros/messagebundle_ru.properties +2 -0
- package/src/sap/fe/macros/messagebundle_sh.properties +2 -0
- package/src/sap/fe/macros/messagebundle_sk.properties +2 -0
- package/src/sap/fe/macros/messagebundle_sl.properties +2 -0
- package/src/sap/fe/macros/messagebundle_sr.properties +2 -0
- package/src/sap/fe/macros/messagebundle_sv.properties +2 -0
- package/src/sap/fe/macros/messagebundle_th.properties +2 -0
- package/src/sap/fe/macros/messagebundle_tr.properties +2 -0
- package/src/sap/fe/macros/messagebundle_uk.properties +2 -0
- package/src/sap/fe/macros/messagebundle_vi.properties +2 -0
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +3 -1
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -1
- package/src/sap/fe/macros/table/Column.js +3 -3
- package/src/sap/fe/macros/table/Column.ts +2 -2
- package/src/sap/fe/macros/table/MdcTableTemplate.js +10 -5
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +21 -3
- package/src/sap/fe/macros/table/Table.block.js +2 -2
- package/src/sap/fe/macros/table/Table.block.tsx +1 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +14 -15
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +14 -14
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe/core/helpers/BindingHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/core/templating/UIFormatters", "sap/fe/macros/field/FieldHelper", "sap/fe/macros/field/FieldTemplating", "sap/ui/core/CustomData", "sap/ui/mdc/MultiValueField", "sap/ui/mdc/field/MultiValueFieldItem", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/controllerextensions/collaboration/CollaborationCommon", "sap/fe/core/controls/FormElementWrapper", "sap/fe/core/formatters/CollaborationFormatter", "sap/fe/core/helpers/ModelHelper", "sap/fe/macros/field/FieldRuntime", "sap/fe/macros/multivaluefield/FormatOptions", "sap/fe/macros/multivaluefield/MultiValueFieldRuntime", "sap/m/Avatar", "sap/m/HBox", "sap/ui/base/Event", "sap/ui/core/Element", "./ValueHelp", "./field/FieldRuntimeHelper", "sap/fe/base/jsx-runtime/jsx"], function (BindingToolkit, ClassSupport, BindingHelper, ID, TypeGuards, DataModelPathHelper, UIFormatters, FieldHelper, FieldTemplating, CustomData, MultiValueField, MultiValueFieldItem, BuildingBlock, CollaborationCommon, FormElementWrapper, CollaborationFormatters, ModelHelper, FieldRuntime, FormatOptions, MultiValueFieldRuntime, Avatar, HBox, UI5Event, Element, ValueHelp, FieldRuntimeHelper, _jsx) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10;
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11;
|
|
9
9
|
var _exports = {};
|
|
10
10
|
var CollaborationFieldGroupPrefix = CollaborationCommon.CollaborationFieldGroupPrefix;
|
|
11
11
|
var getVisibleExpression = FieldTemplating.getVisibleExpression;
|
|
@@ -82,11 +82,13 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
82
82
|
defaultClass: FormatOptions
|
|
83
83
|
}), _dec11 = property({
|
|
84
84
|
type: "boolean"
|
|
85
|
+
}), _dec12 = property({
|
|
86
|
+
type: "boolean"
|
|
85
87
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
|
|
86
88
|
// Computed properties
|
|
87
89
|
|
|
88
90
|
/**
|
|
89
|
-
* Pointed at dataField
|
|
91
|
+
* Pointed at a dataField. This can be DataFieldDefault from a property.
|
|
90
92
|
*/
|
|
91
93
|
|
|
92
94
|
/**
|
|
@@ -160,6 +162,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
160
162
|
*/
|
|
161
163
|
_initializerDefineProperty(_this, "formatOptions", _descriptor9, _this);
|
|
162
164
|
_initializerDefineProperty(_this, "_isInEditMode", _descriptor10, _this);
|
|
165
|
+
_initializerDefineProperty(_this, "useParentBindingCache", _descriptor11, _this);
|
|
163
166
|
return _this;
|
|
164
167
|
}
|
|
165
168
|
|
|
@@ -210,7 +213,10 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
210
213
|
collectionPath,
|
|
211
214
|
itemDataModelObjectPath
|
|
212
215
|
} = MultiValueFieldBlock._getPathStructure(propertyDataModelObjectPath);
|
|
213
|
-
const collectionBinding = {
|
|
216
|
+
const collectionBinding = this.useParentBindingCache ? {
|
|
217
|
+
path: collectionPath,
|
|
218
|
+
templateShareable: false
|
|
219
|
+
} : {
|
|
214
220
|
path: collectionPath,
|
|
215
221
|
parameters: {
|
|
216
222
|
$$ownRequest: true
|
|
@@ -622,8 +628,15 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
622
628
|
initializer: function () {
|
|
623
629
|
return false;
|
|
624
630
|
}
|
|
631
|
+
}), _descriptor11 = _applyDecoratedDescriptor(_class2.prototype, "useParentBindingCache", [_dec12], {
|
|
632
|
+
configurable: true,
|
|
633
|
+
enumerable: true,
|
|
634
|
+
writable: true,
|
|
635
|
+
initializer: function () {
|
|
636
|
+
return false;
|
|
637
|
+
}
|
|
625
638
|
}), _class2)) || _class);
|
|
626
639
|
_exports = MultiValueFieldBlock;
|
|
627
640
|
return _exports;
|
|
628
641
|
}, false);
|
|
629
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJfb3ZlcnJpZGVWYWx1ZSIsImNvbGxlY3Rpb25CaW5kaW5nIiwiaXRlbURhdGFNb2RlbE9iamVjdFBhdGgiLCJ0ZXh0RXhwcmVzc2lvbiIsImtleSIsIml0ZW1zIiwibW9kZWwiLCJtb2RlbE5hbWUiLCJwYXRoIiwiY29tbW9uVGFyZ2V0T2JqZWN0UHJvcGVydHkiLCJ0YXJnZXRPYmplY3QiLCJjb21tb25Qcm9wZXJ0eVBhdGgiLCJuYW1lIiwiaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24iLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJkZXNjcmlwdGlvbiIsIl9nZXRNdWx0aUlucHV0U2V0dGluZ3MiLCJwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJmb3JtYXRPcHRpb25zIiwiY29sbGVjdGlvblBhdGgiLCJfZ2V0UGF0aFN0cnVjdHVyZSIsInBhcmFtZXRlcnMiLCIkJG93blJlcXVlc3QiLCJ0ZW1wbGF0ZVNoYXJlYWJsZSIsInByb3BlcnR5UGF0aE9yUHJvcGVydHkiLCJwcm9wZXJ0eURlZmluaXRpb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwiY29tbW9uVGV4dCIsInJlbGF0aXZlTG9jYXRpb24iLCJnZXRSZWxhdGl2ZVBhdGhzIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiZ2V0VmFsdWVCaW5kaW5nIiwiZGlzcGxheU9ubHkiLCJsZW5ndGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiZmlyc3RDb2xsZWN0aW9uUGF0aCIsImN1cnJlbnRFbnRpdHlTZXQiLCJjb250ZXh0TG9jYXRpb24iLCJ0YXJnZXRFbnRpdHlTZXQiLCJzdGFydGluZ0VudGl0eVNldCIsIm5hdmlnYXRlZFBhdGhzIiwiY29udGV4dE5hdnNGb3JJdGVtIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJuYXZQcm9wIiwidW5kZWZpbmVkIiwic29tZSIsImNvbnRleHROYXZQcm9wIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwicHVzaCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsImlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkiLCJqb2luIiwiT2JqZWN0IiwiYXNzaWduIiwiY29tcHV0ZUZpZWxkR3JvdXBJZHMiLCJhcHBDb21wb25lbnQiLCJzaWRlRWZmZWN0U2VydmljZSIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsImZpZWxkR3JvdXBJZHMiLCJkYXRhTW9kZWxQYXRoIiwidGFyZ2V0RW50aXR5VHlwZSIsImNvbGxhYm9yYXRpb25FbmFibGVkIiwiY29sbGFib3JhdGlvbkZpZWxkR3JvdXAiLCJDb2xsYWJvcmF0aW9uRmllbGRHcm91cFByZWZpeCIsImRhdGFTb3VyY2VQYXRoIiwicmVzdWx0IiwiaW5pdGlhbGl6ZSIsIm1ldGFDb250ZXh0UGF0aCIsIm93bmVyIiwiX2dldE93bmVyIiwiY29udGV4dFBhdGgiLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZnVsbENvbnRleHRQYXRoIiwib2RhdGFNZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0UGF0aCIsIm1ldGFQYXRoT2JqZWN0IiwiZ2V0VGFyZ2V0IiwiaXNQcm9wZXJ0eSIsIkRhdGFGaWVsZERlZmF1bHQiLCJlbmhhbmNlZE1ldGFQYXRoIiwiZGF0YUZpZWxkRGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwiY29udmVydGVkRGF0YUZpZWxkIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJWYWx1ZSIsImdldFRhcmdldE9iamVjdFBhdGgiLCJpbnNlcnRhYmxlIiwiaXNQYXRoSW5zZXJ0YWJsZSIsImRlbGV0ZU5hdmlnYXRpb25SZXN0cmljdGlvbiIsImlzUGF0aERlbGV0YWJsZSIsImlnbm9yZVRhcmdldENvbGxlY3Rpb24iLCJhdXRob3JpemVVbnJlc29sdmFibGUiLCJkZWxldGVQYXRoIiwiZGVsZXRhYmxlIiwiaWZFbHNlIiwiX3R5cGUiLCJvciIsIm5vdCIsImlzQ29uc3RhbnQiLCJjb25zdGFudCIsInJlYWRPbmx5IiwidmlzaWJsZSIsImdldFZpc2libGVFeHByZXNzaW9uIiwiaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSIsImFuZCIsImNvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiY29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzIiwiaXNQcm9wZXJ0eUluaXRpYWwiLCJlZGl0TW9kZSIsImRpc3BsYXlNb2RlIiwiZ2V0RGlzcGxheU1vZGUiLCJsb2NhbERhdGFNb2RlbFBhdGgiLCJpdGVtIiwiY29sbGVjdGlvbiIsImdldEFwcENvbXBvbmVudCIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwiTW9kZWxIZWxwZXIiLCJVSUZvcm1hdHRlcnMiLCJnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsIkNvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIiwiaGFzQ29sbGFib3JhdGlvbkFjdGl2aXR5IiwiY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiIsImdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzIiwiY29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbiIsImdldENvbGxhYm9yYXRpb25BY3Rpdml0eUNvbG9yIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsImlkIiwidmhJZFByZWZpeCIsIklEIiwiZ2VuZXJhdGUiLCJnZXRJZCIsImNyZWF0ZUlkIiwiY29udHJvbGxlciIsImdldFJvb3RDb250cm9sbGVyIiwidmlldyIsImdldFZpZXciLCJjb250ZXh0IiwiZ2V0Q29udGV4dFBhdGgiLCJpdGVtc0FnZ3JlZ2F0aW9uIiwiY3VzdG9tQWdncmVnYXRpb25MZW5ndGgiLCJnZXRNYW5pZmVzdEVudHJ5IiwibWFjcm9zIiwibXVsdGlWYWx1ZUZpZWxkIiwiaXRlbXNTaXplTGltaXQiLCJsYWJlbCIsIkZpZWxkSGVscGVyIiwiY29tcHV0ZUxhYmVsVGV4dCIsInZoQ29udHJvbCIsIlZhbHVlSGVscCIsImdldFZhbHVlSGVscEZvck1ldGFQYXRoIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZ2V0T3duZXJDb250ZXh0UGF0aCIsInZhbHVlSGVscCIsImdldENvbnRlbnQiLCJfanN4IiwiTXVsdGlWYWx1ZUZpZWxkIiwiZGVsZWdhdGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJhcmlhTGFiZWxsZWRCeSIsInNob3dFbXB0eUluZGljYXRvciIsImNoYW5nZSIsIk11bHRpVmFsdWVGaWVsZFJ1bnRpbWUiLCJoYW5kbGVDaGFuZ2UiLCJiaW5kIiwidmFsaWRhdGVGaWVsZEdyb3VwIiwiRmllbGRSdW50aW1lIiwib25WYWxpZGF0ZUZpZWxkR3JvdXAiLCJjaGlsZHJlbiIsIk11bHRpVmFsdWVGaWVsZEl0ZW0iLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsInZhbHVlIiwiZm9ybXdyYXBwZXIiLCJhdmF0YXIiLCJBdmF0YXIiLCJpbml0aWFscyIsImRpc3BsYXlTaXplIiwiY3VzdG9tRGlzcGxheVNpemUiLCJjdXN0b21Gb250U2l6ZSIsImJhY2tncm91bmRDb2xvciIsInByZXNzIiwiRmllbGRSdW50aW1lSGVscGVyIiwic2hvd0NvbGxhYm9yYXRpb25FZGl0VXNlciIsIkZvcm1FbGVtZW50V3JhcHBlciIsIkhCb3giLCJyZW5kZXJUeXBlIiwiYWxpZ25JdGVtcyIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmZvY3VzaW4iLCJldnQiLCJjdXJyZW50TXVsdGlWYWx1ZUZpZWxkIiwic3JjQ29udHJvbCIsImdldFBhcmVudCIsImNvbGxhYm9yYXRpdmVEcmFmdCIsImhhbmRsZUNvbnRlbnRGb2N1c0luIiwidmFsdWVIZWxwQ29udHJvbCIsImdldERvbVJlZiIsImF0dGFjaEV2ZW50T25jZSIsImZvY3VzIiwib25mb2N1c291dCIsImlzQSIsImV2ZW50IiwiVUk1RXZlbnQiLCJnZXRGaWVsZEdyb3VwSWRzIiwiaGFuZGxlQ29udGVudEZvY3VzT3V0IiwiRWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0VmFsdWVIZWxwIiwiYXR0YWNoT3BlbmVkIiwiZ2V0U291cmNlIiwiZ2V0Q29udHJvbCIsImFkZEN1c3RvbURhdGEiLCJzZXRSZWFkT25seSIsInNldFByb3BlcnR5IiwidXBkYXRlRWRpdE1vZGUiLCJzZXRfaXNJbkVkaXRNb2RlIiwiaW5FZGl0TW9kZSIsImdldE11bHRpVmFsdWVGaWVsZCIsImdldEl0ZW1zIiwibXVsdGl2YWx1ZUZpZWxkIiwiZGF0YSIsInNldEVkaXRNb2RlIiwib25CZWZvcmVSZW5kZXJpbmciLCJhQXJpYUxhYmVsbGVkQnkiLCJnZXRBcmlhTGFiZWxsZWRCeSIsInNJZCIsImFBcmlhTGFiZWxsZWRCeXMiLCJpbmNsdWRlcyIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiQnVpbGRpbmdCbG9jayIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTXVsdGlWYWx1ZUZpZWxkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlmRWxzZSwgaXNDb25zdGFudCwgbm90LCBvciB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0YWdncmVnYXRpb24sXG5cdGFzc29jaWF0aW9uLFxuXHRkZWZpbmVVSTVDbGFzcyxcblx0aW1wbGVtZW50SW50ZXJmYWNlLFxuXHRwcm9wZXJ0eSxcblx0dHlwZSBFbmhhbmNlV2l0aFVJNSxcblx0dHlwZSBQcm9wZXJ0aWVzT2Zcbn0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7IFVJIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0ICogYXMgSUQgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHksXG5cdGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uLFxuXHRpc1Byb3BlcnR5LFxuXHRpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHtcblx0ZW5oYW5jZURhdGFNb2RlbFBhdGgsXG5cdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgsXG5cdGdldFJlbGF0aXZlUGF0aHMsXG5cdGdldFRhcmdldE9iamVjdFBhdGgsXG5cdGlzUGF0aERlbGV0YWJsZSxcblx0aXNQYXRoSW5zZXJ0YWJsZVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgeyBnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiwgZ2V0RGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBGaWVsZEhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0VmFsdWVCaW5kaW5nLCBnZXRWaXNpYmxlRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkVGVtcGxhdGluZ1wiO1xuaW1wb3J0IHR5cGUgVG9rZW5pemVyIGZyb20gXCJzYXAvbS9Ub2tlbml6ZXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IE11bHRpVmFsdWVGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9NdWx0aVZhbHVlRmllbGRcIjtcbmltcG9ydCB0eXBlIEZpZWxkRWRpdE1vZGUgZnJvbSBcInNhcC91aS9tZGMvZW51bXMvRmllbGRFZGl0TW9kZVwiO1xuaW1wb3J0IE11bHRpVmFsdWVGaWVsZEl0ZW0gZnJvbSBcInNhcC91aS9tZGMvZmllbGQvTXVsdGlWYWx1ZUZpZWxkSXRlbVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcblxuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgRm9ybUVsZW1lbnRXcmFwcGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9Gb3JtRWxlbWVudFdyYXBwZXJcIjtcbmltcG9ydCAqIGFzIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NvbGxhYm9yYXRpb25Gb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIE1ldGFQYXRoIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFQYXRoXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgRm9ybWF0T3B0aW9ucyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9tdWx0aXZhbHVlZmllbGQvRm9ybWF0T3B0aW9uc1wiO1xuaW1wb3J0IE11bHRpVmFsdWVGaWVsZFJ1bnRpbWUgZnJvbSBcInNhcC9mZS9tYWNyb3MvbXVsdGl2YWx1ZWZpZWxkL011bHRpVmFsdWVGaWVsZFJ1bnRpbWVcIjtcbmltcG9ydCBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IEhCb3ggZnJvbSBcInNhcC9tL0hCb3hcIjtcbmltcG9ydCBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE1kY1ZhbHVlSGVscCwgVmFsdWVIZWxwJE9wZW5lZEV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvVmFsdWVIZWxwXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5pbXBvcnQgVmFsdWVIZWxwIGZyb20gXCIuL1ZhbHVlSGVscFwiO1xuaW1wb3J0IEZpZWxkUnVudGltZUhlbHBlciBmcm9tIFwiLi9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXJcIjtcblxudHlwZSBNdWx0aUlucHV0U2V0dGluZ3MgPSB7XG5cdGRlc2NyaXB0aW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRjb2xsZWN0aW9uQmluZGluZzogUHJvcGVydHlCaW5kaW5nSW5mbztcblx0a2V5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRkaXNwbGF5T25seT86IGJvb2xlYW47XG59O1xuXG50eXBlIE11bHRpVmFsdWVGaWVsZFBhdGhTdHJ1Y3R1cmUgPSB7XG5cdGNvbGxlY3Rpb25QYXRoOiBzdHJpbmc7XG5cdGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pjtcbn07XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgTXVsdGlWYWx1ZUZpZWxkIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqIDxicj5cbiAqIFRoZSBNdWx0aVZhbHVlRmllbGQgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBlaXRoZXIgYSBEYXRhRmllbGQgb3IgUHJvcGVydHkgZGlyZWN0bHkuIEl0IGhhcyB0byBwb2ludCB0byBhIGNvbGxlY3Rpb24gcHJvcGVydHkuXG4gKiA8YnI+XG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNybzpNdWx0aVZhbHVlRmllbGRcbiAqIGlkPVwiU29tZVVuaXF1ZUlkZW50aWZpZXJcIlxuICogY29udGV4dFBhdGg9XCJ7ZW50aXR5U2V0Jmd0O31cIlxuICogbWV0YVBhdGg9XCJ7ZGF0YUZpZWxkJmd0O31cIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuTXVsdGlWYWx1ZUZpZWxkXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS4xMTguMFxuICogQGV4cGVyaW1lbnRhbFxuICovXG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuTXVsdGlWYWx1ZUZpZWxkXCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNdWx0aVZhbHVlRmllbGRCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8Q29udHJvbD4ge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogVGhlICdpZCcgcHJvcGVydHlcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgaWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSBmaWVsZCAtIG9ubHkgaWYgbm8gaWQgaXMgcHJvdmlkZWRcblx0ICovXG5cdEBhc3NvY2lhdGlvbih7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRpZFByZWZpeD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIHZhbHVlIGhlbHAgdXNlZCBmb3IgdGhlIGZpZWxkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dmhJZFByZWZpeCE6IHN0cmluZztcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgTWV0YWRhdGEgcGF0aCB0byB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBUaGUgbWV0YVBhdGggc2hvdWxkIHBvaW50IHRvIGEgUHJvcGVydHkgb3IgRGF0YUZpZWxkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHVibGljIG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgcmVhZE9ubHkgZmxhZ1xuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgcmVxdWlyZWQ6IGZhbHNlIH0pXG5cdHB1YmxpYyByZWFkT25seT86IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogVGhlIGNvbnRleHQgcGF0aCBwcm92aWRlZCBmb3IgdGhlIE11bHRpVmFsdWVGaWVsZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSBhZGRlZCB0byBiZSBhYmxlIHRvIGFkZCBkYXRhIC8gaXRlbXMgdG8gdGhlIG11bHRpIHZhbHVlIGZpZWxkIHZpYSBhIGRpZmZlcmVudCBtb2RlbFxuXHQgKiBAZXhwZXJpbWVudGFsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJhbnlcIixcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBpdGVtcz86IFByb3BlcnR5QmluZGluZ0luZm87XG5cblx0LyoqXG5cdCAqIFRoZSBvYmplY3Qgd2l0aCB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG5cdCAqXG5cdCAqL1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MubXVsdGl2YWx1ZWZpZWxkLkZvcm1hdE9wdGlvbnNcIiwgbXVsdGlwbGU6IGZhbHNlLCBkZWZhdWx0Q2xhc3M6IEZvcm1hdE9wdGlvbnMgfSlcblx0Zm9ybWF0T3B0aW9ucz86IEZvcm1hdE9wdGlvbnM7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0X2lzSW5FZGl0TW9kZTogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0gZmFsc2U7XG5cblx0Ly8gQ29tcHV0ZWQgcHJvcGVydGllc1xuXG5cdHByaXZhdGUgaXRlbSE6IE11bHRpSW5wdXRTZXR0aW5ncztcblxuXHQvKipcblx0ICogUG9pbnRlZCBhdCBkYXRhRmllbGQsIGNhbiBiZSBEYXRhRmllbGREZWZhdWx0IGZyb20gYSBwcm9wZXJ0eS5cblx0ICovXG5cdHByaXZhdGUgY29udmVydGVkRGF0YUZpZWxkITogRGF0YUZpZWxkO1xuXG5cdC8qKlxuXHQgKiBEYXRhTW9kZWxQYXRoIGZvciB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBkaXNwbGF5ZWQuXG5cdCAqL1xuXHRwcml2YXRlIGRhdGFNb2RlbFBhdGghOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PjtcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gYmUgZGlzcGxheWVkXG5cdCAqL1xuXHRwcml2YXRlIHByb3BlcnR5ITogUHJvcGVydHk7XG5cblx0LyoqXG5cdCAqIEVkaXQgTW9kZSBvZiB0aGUgZmllbGQuXG5cdCAqIElmIHRoZSBlZGl0TW9kZSBpcyB1bmRlZmluZWQgdGhlbiB3ZSBjb21wdXRlIGl0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YVxuXHQgKiBPdGhlcndpc2Ugd2UgdXNlIHRoZSB2YWx1ZSBwcm92aWRlZCBoZXJlLlxuXHQgKi9cblx0cHJpdmF0ZSBlZGl0TW9kZSE6IEZpZWxkRWRpdE1vZGUgfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogVGhlIGRpc3BsYXkgbW9kZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvbiBmaWVsZFxuXHQgKi9cblx0cHJpdmF0ZSBkaXNwbGF5TW9kZSE6IERpc3BsYXlNb2RlO1xuXG5cdC8qKlxuXHQgKiBUaGUgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gdGhhdCBpcyBjYWxjdWxhdGVkIGludGVybmFsbHlcblx0ICovXG5cdHByaXZhdGUgY29sbGVjdGlvbiE6IFByb3BlcnR5QmluZGluZ0luZm87XG5cblx0cHJpdmF0ZSB2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGZpZWxkR3JvdXBJZHM/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBlbmhhbmNlZE1ldGFQYXRoITogQ29udGV4dDtcblxuXHRwcml2YXRlIGVuYWJsZUV4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgY29sbGFib3JhdGlvbkV4cHJlc3Npb24hOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uITogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uITogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uRW5hYmxlZCE6IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBkYXRhU291cmNlUGF0aCE6IHN0cmluZztcblxuXHRwcml2YXRlIGluc2VydGFibGVBbmREZWxldGFibGUhOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPE11bHRpVmFsdWVGaWVsZEJsb2NrPiksIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRpZiAodHlwZW9mIHByb3BzICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHQvLyB0eXBlIG9mIHByb3BzIGNhbiBiZSBhIHN0cmluZyBpZiB3ZSBhcmUgY2xvbmluZyB0aGUgTXVsdGlWYWx1ZUZpZWxkIGluc2lkZSBhbiBhZ2dyZWdhdGlvblxuXHRcdFx0Ly8gaW4gdGhhdCBjYXNlIF9pc0luRWRpdE1vZGUgaGFzIGFscmVhZHkgYmVlbiBjb21wdXRlZCBvbiB0aGUgb25lIHdlIGNsb25lXG5cdFx0XHRwcm9wcy5faXNJbkVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oVUkuSXNFZGl0YWJsZSk7XG5cdFx0fVxuXHRcdHN1cGVyKHByb3BzLCBvdGhlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluIGNhc2UgYW4gZXh0ZXJuYWwgdmFsdWUgaXMgc2V0IChlLmcuIGZvciBwcm92aWRpbmcgZGF0YSBpbiBhIGpzb24gbW9kZWwpIHdlIG5lZWQgdG8gb3ZlcnJpZGUgdGhlIGJpbmRpbmcgc3RyaW5ncyBmb3IgdGhlIGl0ZW0uXG5cdCAqIEBwYXJhbSBjb2xsZWN0aW9uQmluZGluZ1xuXHQgKiBAcGFyYW0gaXRlbURhdGFNb2RlbE9iamVjdFBhdGhcblx0ICogQHBhcmFtIHRleHRFeHByZXNzaW9uXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgTXVsdGlJbnB1dFNldHRpbmdzXG5cdCAqL1xuXHRwcml2YXRlIF9vdmVycmlkZVZhbHVlKFxuXHRcdGNvbGxlY3Rpb25CaW5kaW5nOiBQcm9wZXJ0eUJpbmRpbmdJbmZvICYgeyBwYXJhbWV0ZXJzPzogb2JqZWN0IH0sXG5cdFx0aXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHlQYXRoIHwgUHJvcGVydHk+LFxuXHRcdHRleHRFeHByZXNzaW9uOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0XHRrZXk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG5cdCk6IE11bHRpSW5wdXRTZXR0aW5ncyB7XG5cdFx0aWYgKHRoaXMuaXRlbXMpIHtcblx0XHRcdGNvbnN0IG1vZGVsID0gdGhpcy5pdGVtcy5tb2RlbCA/PyB0aGlzLml0ZW1zLm1vZGVsTmFtZTtcblx0XHRcdGNvbGxlY3Rpb25CaW5kaW5nID0geyBwYXRoOiBgJHttb2RlbH0+JHt0aGlzLml0ZW1zLnBhdGh9YCB9O1xuXHRcdFx0Y29uc3QgY29tbW9uVGFyZ2V0T2JqZWN0UHJvcGVydHkgPSBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdFx0XHRjb25zdCBjb21tb25Qcm9wZXJ0eVBhdGggPSBgeyR7bW9kZWx9PiR7Y29tbW9uVGFyZ2V0T2JqZWN0UHJvcGVydHkubmFtZX19YDtcblxuXHRcdFx0Ly8gVGV4dCBhcnJhbmdlbWVudCB1c2UgY2FzZVxuXHRcdFx0aWYgKGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4oY29tbW9uVGFyZ2V0T2JqZWN0UHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0KSkge1xuXHRcdFx0XHR0ZXh0RXhwcmVzc2lvbiA9IGB7JHttb2RlbH0+JHtjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQ/LnBhdGh9fWA7XG5cdFx0XHRcdC8vIG5vbiB0ZXh0IGFycmFuZ2VtZW50IHVzZSBjYXNlXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0ZXh0RXhwcmVzc2lvbiA9IGNvbW1vblByb3BlcnR5UGF0aDtcblx0XHRcdH1cblx0XHRcdGtleSA9IGNvbW1vblByb3BlcnR5UGF0aDtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGRlc2NyaXB0aW9uOiB0ZXh0RXhwcmVzc2lvbixcblx0XHRcdGNvbGxlY3Rpb25CaW5kaW5nLFxuXHRcdFx0a2V5OiBrZXlcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVjdCBzZXR0aW5ncyBmb3IgdGhlIG11bHRpIGlucHV0LlxuXHQgKiBAcGFyYW0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBjb3JyZXNwb25kaW5nIERhdGFNb2RlbE9iamVjdFBhdGguXG5cdCAqIEBwYXJhbSBmb3JtYXRPcHRpb25zIFRoZSBmb3JtYXQgb3B0aW9ucyB0byBjYWxjdWxhdGUgdGhlIHJlc3VsdFxuXHQgKiBAcmV0dXJucyBNdWx0aUlucHV0U2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgX2dldE11bHRpSW5wdXRTZXR0aW5ncyhcblx0XHRwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRcdGZvcm1hdE9wdGlvbnM6IEZvcm1hdE9wdGlvbnMgfCB1bmRlZmluZWRcblx0KTogTXVsdGlJbnB1dFNldHRpbmdzIHtcblx0XHRjb25zdCB7IGNvbGxlY3Rpb25QYXRoLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCB9ID0gTXVsdGlWYWx1ZUZpZWxkQmxvY2suX2dldFBhdGhTdHJ1Y3R1cmUocHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRjb25zdCBjb2xsZWN0aW9uQmluZGluZyA9IHsgcGF0aDogY29sbGVjdGlvblBhdGgsIHBhcmFtZXRlcnM6IHsgJCRvd25SZXF1ZXN0OiB0cnVlIH0sIHRlbXBsYXRlU2hhcmVhYmxlOiBmYWxzZSB9O1xuXG5cdFx0Y29uc3QgcHJvcGVydHlQYXRoT3JQcm9wZXJ0eSA9IHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHlQYXRoIHwgUHJvcGVydHk7XG5cdFx0Y29uc3QgcHJvcGVydHlEZWZpbml0aW9uID0gaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aE9yUHJvcGVydHkpXG5cdFx0XHQ/IHByb3BlcnR5UGF0aE9yUHJvcGVydHkuJHRhcmdldFxuXHRcdFx0OiBwcm9wZXJ0eVBhdGhPclByb3BlcnR5O1xuXHRcdGNvbnN0IGNvbW1vblRleHQgPSBwcm9wZXJ0eURlZmluaXRpb24/LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dDtcblx0XHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UmVsYXRpdmVQYXRocyhwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXG5cdFx0Y29uc3QgdGV4dEV4cHJlc3Npb24gPSBjb21tb25UZXh0XG5cdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSlcblx0XHRcdDogZ2V0VmFsdWVCaW5kaW5nKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCBmb3JtYXRPcHRpb25zID8/IHt9LCB0cnVlKTtcblxuXHRcdGNvbnN0IGtleSA9IGdldFZhbHVlQmluZGluZyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgZm9ybWF0T3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG5cdFx0bGV0IGRpc3BsYXlPbmx5ID0gZmFsc2U7XG5cdFx0aWYgKGdldFJlbGF0aXZlUGF0aHMoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgpLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIGlmIHRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSB2YWx1ZSBjb250YWlucyBhIG5hdmlnYXRpb24sIGNyZWF0ZSB3aWxsIG5vdCBiZSBwb3NzaWJsZSBpbiB0aGUgZGVsZWdhdGUsIHNvIHdlIGZvcmNlIHRoZSBkaXNwbGF5IE1vZGVcblx0XHRcdGRpc3BsYXlPbmx5ID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGRpc3BsYXlPbmx5LFxuXHRcdFx0Li4udGhpcy5fb3ZlcnJpZGVWYWx1ZShjb2xsZWN0aW9uQmluZGluZywgaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIHRleHRFeHByZXNzaW9uLCBrZXkpXG5cdFx0fTtcblx0fVxuXG5cdC8vIFByb2Nlc3MgdGhlIGRhdGFNb2RlbFBhdGggdG8gZmluZCB0aGUgY29sbGVjdGlvbiBhbmQgdGhlIHJlbGF0aXZlIERhdGFNb2RlbFBhdGggZm9yIHRoZSBpdGVtLlxuXHRwcml2YXRlIHN0YXRpYyBfZ2V0UGF0aFN0cnVjdHVyZShkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pik6IE11bHRpVmFsdWVGaWVsZFBhdGhTdHJ1Y3R1cmUge1xuXHRcdGxldCBmaXJzdENvbGxlY3Rpb25QYXRoID0gXCJcIjtcblx0XHRjb25zdCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24/LnRhcmdldEVudGl0eVNldFxuXHRcdFx0PyBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi50YXJnZXRFbnRpdHlTZXRcblx0XHRcdDogZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldDtcblx0XHRjb25zdCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBjb250ZXh0TmF2c0Zvckl0ZW0gPSBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8ubmF2aWdhdGlvblByb3BlcnRpZXMgfHwgW107XG5cdFx0Zm9yIChjb25zdCBuYXZQcm9wIG9mIGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24gPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHQhZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMuc29tZShcblx0XHRcdFx0XHQoY29udGV4dE5hdlByb3ApID0+IGNvbnRleHROYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gbmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWVcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIGluIGNhc2Ugb2YgcmVsYXRpdmUgZW50aXR5U2V0UGF0aCB3ZSBkb24ndCBjb25zaWRlciBuYXZpZ2F0aW9uUGF0aCB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBjb250ZXh0XG5cdFx0XHRcdG5hdmlnYXRlZFBhdGhzLnB1c2gobmF2UHJvcC5uYW1lKTtcblx0XHRcdFx0Y29udGV4dE5hdnNGb3JJdGVtLnB1c2gobmF2UHJvcCk7XG5cdFx0XHRcdGlmIChjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkobmF2UHJvcC5uYW1lKSkge1xuXHRcdFx0XHRcdGlmIChpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5KG5hdlByb3ApKSB7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0Zmlyc3RDb2xsZWN0aW9uUGF0aCA9IGAke25hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpfWA7XG5cdFx0Y29uc3QgaXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+ID0gT2JqZWN0LmFzc2lnbih7fSwgZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0aWYgKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbikge1xuXHRcdFx0aXRlbURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLm5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gY29udGV4dE5hdnNGb3JJdGVtOyAvLyB0aGlzIGNoYW5nZXMgdGhlIGNyZWF0aW9uIG9mIHRoZSB2YWx1ZUhlbHAgSUQgLi4uXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHsgY29sbGVjdGlvblBhdGg6IGZpcnN0Q29sbGVjdGlvblBhdGgsIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoOiBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGN1bGF0ZSB0aGUgZmllbGRHcm91cElkcyBmb3IgdGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICogQHBhcmFtIGFwcENvbXBvbmVudFxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgZm9yIHRoZSBmaWVsZEdyb3VwSWRzXG5cdCAqL1xuXHRwcml2YXRlIGNvbXB1dGVGaWVsZEdyb3VwSWRzKGFwcENvbXBvbmVudD86IEFwcENvbXBvbmVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCFhcHBDb21wb25lbnQpIHtcblx0XHRcdC8vZm9yIFZhbHVlSGVscCAvIE1hc3MgZWRpdCBUZW1wbGF0aW5nIHRoZSBhcHBDb21wb25lbnQgaXMgbm90IHBhc3NlZCB0byB0aGUgdGVtcGxhdGluZ1xuXHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0fVxuXHRcdGNvbnN0IHNpZGVFZmZlY3RTZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpO1xuXHRcdGNvbnN0IGZpZWxkR3JvdXBJZHMgPSBzaWRlRWZmZWN0U2VydmljZS5jb21wdXRlRmllbGRHcm91cElkcyhcblx0XHRcdHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdCh0aGlzLmRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KS5mdWxseVF1YWxpZmllZE5hbWVcblx0XHQpO1xuXHRcdGlmICh0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRjb25zdCBjb2xsYWJvcmF0aW9uRmllbGRHcm91cCA9IGAke0NvbGxhYm9yYXRpb25GaWVsZEdyb3VwUHJlZml4fSR7dGhpcy5kYXRhU291cmNlUGF0aH1gO1xuXHRcdFx0ZmllbGRHcm91cElkcy5wdXNoKGNvbGxhYm9yYXRpb25GaWVsZEdyb3VwKTtcblx0XHR9XG5cdFx0dGhpcy5maWVsZEdyb3VwSWRzID0gZmllbGRHcm91cElkcy5sZW5ndGggPyBmaWVsZEdyb3VwSWRzLmpvaW4oXCIsXCIpIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHJlc3VsdCA9IGZpZWxkR3JvdXBJZHMuam9pbihcIixcIik7XG5cdFx0cmV0dXJuIHJlc3VsdCA9PT0gXCJcIiA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcblx0fVxuXG5cdGluaXRpYWxpemUobWV0YUNvbnRleHRQYXRoOiBNZXRhUGF0aDx1bmtub3duPik6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblxuXHRcdHRoaXMuY29udGV4dFBhdGggPSB0aGlzLmNvbnRleHRQYXRoID8/IG93bmVyPy5wcmVwcm9jZXNzb3JDb250ZXh0Py5mdWxsQ29udGV4dFBhdGg7XG5cdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKCk7XG5cblx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0UGF0aCgpKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgbWV0YVBhdGhPYmplY3QgPSBtZXRhQ29udGV4dFBhdGg/LmdldFRhcmdldCgpO1xuXG5cdFx0Ly8gSWYgdGhlIHRhcmdldCBpcyBhIHByb3BlcnR5IHdpdGggYSBEYXRhRmllbGREZWZhdWx0LCB1c2UgdGhpcyBhcyBkYXRhIGZpZWxkXG5cdFx0aWYgKGlzUHJvcGVydHkobWV0YVBhdGhPYmplY3QpICYmIG1ldGFQYXRoT2JqZWN0LmFubm90YXRpb25zLlVJPy5EYXRhRmllbGREZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMuZW5oYW5jZWRNZXRhUGF0aCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChgQCR7VUlBbm5vdGF0aW9uVGVybXMuRGF0YUZpZWxkRGVmYXVsdH1gLCBtZXRhQ29udGV4dCkgYXMgQ29udGV4dDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5lbmhhbmNlZE1ldGFQYXRoID0gbWV0YUNvbnRleHQgYXMgQ29udGV4dDtcblx0XHR9XG5cdFx0Y29uc3QgZGF0YUZpZWxkRGF0YU1vZGVsUGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgodGhpcy5lbmhhbmNlZE1ldGFQYXRoLmdldFBhdGgoKSwgdGhpcy5jb250ZXh0UGF0aCkhO1xuXG5cdFx0dGhpcy5jb252ZXJ0ZWREYXRhRmllbGQgPSBkYXRhRmllbGREYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCBhcyBEYXRhRmllbGQ7XG5cblx0XHR0aGlzLmRhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4oXG5cdFx0XHRkYXRhRmllbGREYXRhTW9kZWxQYXRoLFxuXHRcdFx0KHRoaXMuY29udmVydGVkRGF0YUZpZWxkLlZhbHVlIGFzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KS5wYXRoXG5cdFx0KTtcblx0XHR0aGlzLmRhdGFTb3VyY2VQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aCh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHRcdHRoaXMucHJvcGVydHkgPSB0aGlzLmRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXG5cdFx0bGV0IGluc2VydGFibGUgPSBpc1BhdGhJbnNlcnRhYmxlKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0Y29uc3QgZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uID0gaXNQYXRoRGVsZXRhYmxlKHRoaXMuZGF0YU1vZGVsUGF0aCwge1xuXHRcdFx0aWdub3JlVGFyZ2V0Q29sbGVjdGlvbjogdHJ1ZSxcblx0XHRcdGF1dGhvcml6ZVVucmVzb2x2YWJsZTogdHJ1ZVxuXHRcdH0pO1xuXHRcdGNvbnN0IGRlbGV0ZVBhdGggPSBpc1BhdGhEZWxldGFibGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblxuXHRcdC8vIGRlbGV0YWJsZTpcblx0XHQvL1x0XHRpZiByZXN0cmljdGlvbnMgY29tZSBmcm9tIE5hdmlnYXRpb24gd2UgYXBwbHkgaXRcblx0XHQvL1x0XHRvdGhlcndpc2Ugd2UgYXBwbHkgcmVzdHJpY3Rpb25zIGRlZmluZWQgb24gdGFyZ2V0IGNvbGxlY3Rpb24gb25seSBpZiBpdCdzIGEgY29uc3RhbnRcblx0XHQvLyAgICAgIG90aGVyd2lzZSBpdCdzIHRydWUhXG5cdFx0bGV0IGRlbGV0YWJsZSA9IGlmRWxzZShcblx0XHRcdGRlbGV0ZU5hdmlnYXRpb25SZXN0cmljdGlvbi5fdHlwZSA9PT0gXCJVbnJlc29sdmFibGVcIixcblx0XHRcdG9yKG5vdChpc0NvbnN0YW50KGRlbGV0ZVBhdGgpKSwgZGVsZXRlUGF0aCksXG5cdFx0XHRkZWxldGVQYXRoXG5cdFx0KTtcblxuXHRcdGlmICh0aGlzLml0ZW1zKSB7XG5cdFx0XHRpbnNlcnRhYmxlID0gZGVsZXRhYmxlID0gY29uc3RhbnQoIXRoaXMucmVhZE9ubHkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnZpc2libGUgPSBnZXRWaXNpYmxlRXhwcmVzc2lvbih0aGlzLmRhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5pbnNlcnRhYmxlQW5kRGVsZXRhYmxlID0gYW5kKGluc2VydGFibGUsIGRlbGV0YWJsZSk7XG5cdFx0dGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IGNvbnN0YW50KGZhbHNlKTtcblx0XHR0aGlzLmNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcygpO1xuXHRcdGNvbnN0IHJlYWRPbmx5ID0gdGhpcy5pc1Byb3BlcnR5SW5pdGlhbChcInJlYWRPbmx5XCIpID8gdW5kZWZpbmVkIDogdGhpcy5yZWFkT25seTtcblx0XHRpZiAodGhpcy5mb3JtYXRPcHRpb25zPy5kaXNwbGF5T25seSA9PT0gdHJ1ZSB8fCByZWFkT25seSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRGlzcGxheVwiO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5yZWFkT25seSA9PT0gZmFsc2UpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdGFuZChpbnNlcnRhYmxlLCBkZWxldGFibGUpLFxuXHRcdFx0XHRcdGlmRWxzZSh0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBjb25zdGFudChcIlJlYWRPbmx5XCIpLCBjb25zdGFudChcIkVkaXRhYmxlXCIpKSxcblx0XHRcdFx0XHRjb25zdGFudChcIkRpc3BsYXlcIilcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0YW5kKGluc2VydGFibGUsIGRlbGV0YWJsZSwgVUkuSXNFZGl0YWJsZSksXG5cdFx0XHRcdFx0aWZFbHNlKHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50KFwiUmVhZE9ubHlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiRGlzcGxheVwiKVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuZGlzcGxheU1vZGUgPSBnZXREaXNwbGF5TW9kZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Y29uc3QgbG9jYWxEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KFxuXHRcdFx0dGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLmVuaGFuY2VkTWV0YVBhdGguZ2V0UGF0aCgpLCB0aGlzLmNvbnRleHRQYXRoKSEsXG5cdFx0XHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pLnBhdGhcblx0XHQpO1xuXG5cdFx0dGhpcy5pdGVtID0gdGhpcy5fZ2V0TXVsdGlJbnB1dFNldHRpbmdzKGxvY2FsRGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zKTsgLy8gdGhpcyBmdW5jdGlvbiByZXdyaXRlcyBkYXRhTW9kZWxQYXRoLCB0aGVyZWZvcmUsIGZvciBub3cgYSBjbGVhbiBvYmplY3QgaXMgcGFzc2VkXG5cdFx0aWYgKHRoaXMuaXRlbS5kaXNwbGF5T25seSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRGlzcGxheVwiO1xuXHRcdH1cblx0XHR0aGlzLmNvbGxlY3Rpb24gPSB0aGlzLml0ZW0uY29sbGVjdGlvbkJpbmRpbmc7XG5cblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdHRoaXMuZmllbGRHcm91cElkcyA9IHRoaXMuY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGlzIHN1cHBvcnRlZC5cblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY29sbGFib3JhdGlvbiBkcmFmdCBpcyBzdXBwb3J0ZWQuXG5cdCAqL1xuXHRpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0cmV0dXJuIE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9kYXRhTWV0YU1vZGVsISk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBoZWxwZXIgY29tcHV0ZXMgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUgY29sbGFib3JhdGlvbiBhdmF0YXIuXG5cdCAqL1xuXHRjb21wdXRlQ29sbGFib3JhdGlvblByb3BlcnRpZXMoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQoKSAmJiB0aGlzLmVkaXRNb2RlICE9PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCA9IHRydWU7XG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKFxuXHRcdFx0XHR0aGlzLmRhdGFNb2RlbFBhdGgsXG5cdFx0XHRcdENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmhhc0NvbGxhYm9yYXRpb25BY3Rpdml0eVxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMpXG5cdFx0XHQpO1xuXHRcdFx0dGhpcy5jb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IpXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgY29udGVudCBvZiB0aGUgYnVpbGRpbmcgYmxvY2suXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFDb250ZXh0UGF0aCA9IHRoaXMuZ2V0TWV0YVBhdGhPYmplY3QodGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0aWYgKG1ldGFDb250ZXh0UGF0aCkge1xuXHRcdFx0dGhpcy5pbml0aWFsaXplKG1ldGFDb250ZXh0UGF0aCk7XG5cblx0XHRcdC8vIEJ1aWxkaW5nQmxvY2sgd2l0aCBzZXQgSUQgc2NlbmFyaW9cblx0XHRcdGlmICh0aGlzLmlkKSB7XG5cdFx0XHRcdHRoaXMudmhJZFByZWZpeCA9IElELmdlbmVyYXRlKFt0aGlzLmdldElkKCksIHRoaXMudmhJZFByZWZpeCA/PyBcIkZpZWxkVmFsdWVIZWxwXCJdKTsgLy8gVXNlIGdldElkIHRvIHJldHJpZXZlIElELCBub3QgdGhpcy5pZFxuXHRcdFx0fSBlbHNlIGlmICghdGhpcy52aElkUHJlZml4KSB7XG5cdFx0XHRcdC8vIE1heWJlIG5vdCBlbnRlcmVkXG5cdFx0XHRcdHRoaXMudmhJZFByZWZpeCA9IHRoaXMuY3JlYXRlSWQoXCJGaWVsZFZhbHVlSGVscFwiKSE7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBjb250cm9sbGVyID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcjtcblx0XHRcdGNvbnN0IHZpZXcgPSBjb250cm9sbGVyLmdldFZpZXcoKTtcblx0XHRcdGNvbnN0IG9kYXRhTWV0YU1vZGVsID0gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IGNvbnRleHQgPSBvZGF0YU1ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YUNvbnRleHRQYXRoLmdldENvbnRleHRQYXRoKCkpO1xuXHRcdFx0aWYgKCFtZXRhQ29udGV4dCB8fCAhY29udGV4dCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vY3JlYXRlIGEgbmV3IGJpbmRpbmcgY29udGV4dCBmb3IgdGhlIHZhbHVlIGhlbHBcblxuXHRcdFx0Y29uc3QgaXRlbXNBZ2dyZWdhdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcblx0XHRcdGNvbnN0IGN1c3RvbUFnZ3JlZ2F0aW9uTGVuZ3RoID0gdGhpcy5nZXRBcHBDb21wb25lbnQoKT8uZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5mZVwiKT8ubWFjcm9zPy5tdWx0aVZhbHVlRmllbGQ/Lml0ZW1zU2l6ZUxpbWl0O1xuXHRcdFx0aWYgKGN1c3RvbUFnZ3JlZ2F0aW9uTGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aXRlbXNBZ2dyZWdhdGlvbi5sZW5ndGggPSBjdXN0b21BZ2dyZWdhdGlvbkxlbmd0aDtcblx0XHRcdH1cblxuXHRcdFx0Ly9jb21wdXRlIHRoZSBjb3JyZWN0IGxhYmVsXG5cdFx0XHRjb25zdCBsYWJlbCA9IEZpZWxkSGVscGVyLmNvbXB1dGVMYWJlbFRleHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgTWV0YU1vZGVsVHlwZTxEYXRhRmllbGRUeXBlcz4sIHtcblx0XHRcdFx0Y29udGV4dDogbWV0YUNvbnRleHRcblx0XHRcdH0pIGFzIHN0cmluZztcblxuXHRcdFx0Y29uc3QgdmhDb250cm9sID0gVmFsdWVIZWxwLmdldFZhbHVlSGVscEZvck1ldGFQYXRoKFxuXHRcdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCksXG5cdFx0XHRcdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgodGhpcy5kYXRhTW9kZWxQYXRoKSEsXG5cdFx0XHRcdHRoaXMuY29udGV4dFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCkhLFxuXHRcdFx0XHR0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwoKVxuXHRcdFx0KTtcblx0XHRcdGxldCB2YWx1ZUhlbHA6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdGlmICh2aENvbnRyb2wgJiYgdmhDb250cm9sLmdldENvbnRlbnQoKSkge1xuXHRcdFx0XHR2YWx1ZUhlbHAgPSB2aENvbnRyb2wuZ2V0Q29udGVudCgpIS5nZXRJZCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbXVsdGlWYWx1ZUZpZWxkID0gKFxuXHRcdFx0XHQ8TXVsdGlWYWx1ZUZpZWxkXG5cdFx0XHRcdFx0aWQ9e3RoaXMuY3JlYXRlSWQoXCJfbXZmXCIpfVxuXHRcdFx0XHRcdGRlbGVnYXRlPXt7IG5hbWU6IFwic2FwL2ZlL21hY3Jvcy9tdWx0aXZhbHVlZmllbGQvTXVsdGlWYWx1ZUZpZWxkRGVsZWdhdGVcIiB9fVxuXHRcdFx0XHRcdGl0ZW1zPXtpdGVtc0FnZ3JlZ2F0aW9ufVxuXHRcdFx0XHRcdGRpc3BsYXk9e3RoaXMuZGlzcGxheU1vZGV9XG5cdFx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0XHRlZGl0TW9kZT17dGhpcy5lZGl0TW9kZX1cblx0XHRcdFx0XHR2YWx1ZUhlbHA9e3ZhbHVlSGVscH1cblx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeSA/IHRoaXMuYXJpYUxhYmVsbGVkQnkgOiBbXX1cblx0XHRcdFx0XHRzaG93RW1wdHlJbmRpY2F0b3I9e3RoaXMuZm9ybWF0T3B0aW9ucz8uc2hvd0VtcHR5SW5kaWNhdG9yfVxuXHRcdFx0XHRcdGxhYmVsPXtsYWJlbH1cblx0XHRcdFx0XHRjaGFuZ2U9eyhNdWx0aVZhbHVlRmllbGRSdW50aW1lLmhhbmRsZUNoYW5nZSBhcyB1bmtub3duIGFzIEZ1bmN0aW9uKS5iaW5kKE11bHRpVmFsdWVGaWVsZFJ1bnRpbWUsIGNvbnRyb2xsZXIpfVxuXHRcdFx0XHRcdGZpZWxkR3JvdXBJZHM9e3RoaXMuZmllbGRHcm91cElkc31cblx0XHRcdFx0XHR2YWxpZGF0ZUZpZWxkR3JvdXA9e0ZpZWxkUnVudGltZS5vblZhbGlkYXRlRmllbGRHcm91cH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRpdGVtczogPE11bHRpVmFsdWVGaWVsZEl0ZW0ga2V5PXt0aGlzLml0ZW0ua2V5fSBkZXNjcmlwdGlvbj17dGhpcy5pdGVtLmRlc2NyaXB0aW9ufSAvPixcblx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IDxDdXN0b21EYXRhIGtleT1cImluc2VydGFibGVBbmREZWxldGFibGVcIiB2YWx1ZT17dGhpcy5pbnNlcnRhYmxlQW5kRGVsZXRhYmxlfSAvPlxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvTXVsdGlWYWx1ZUZpZWxkPlxuXHRcdFx0KTtcblxuXHRcdFx0bGV0IGZvcm13cmFwcGVyID0gbnVsbDtcblx0XHRcdGlmICh0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRcdGNvbnN0IGF2YXRhciA9IChcblx0XHRcdFx0XHQ8QXZhdGFyXG5cdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9ufVxuXHRcdFx0XHRcdFx0aW5pdGlhbHM9e3RoaXMuY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbn1cblx0XHRcdFx0XHRcdGRpc3BsYXlTaXplPVwiQ3VzdG9tXCJcblx0XHRcdFx0XHRcdGN1c3RvbURpc3BsYXlTaXplPVwiMS41cmVtXCJcblx0XHRcdFx0XHRcdGN1c3RvbUZvbnRTaXplPVwiMC44cmVtXCJcblx0XHRcdFx0XHRcdGJhY2tncm91bmRDb2xvcj17dGhpcy5jb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0RmllbGRSdW50aW1lSGVscGVyLnNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIoYXZhdGFyLCB2aWV3KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KTtcblx0XHRcdFx0Zm9ybXdyYXBwZXIgPSAoXG5cdFx0XHRcdFx0PEZvcm1FbGVtZW50V3JhcHBlcj5cblx0XHRcdFx0XHRcdDxIQm94IHdpZHRoPVwiMTAwJVwiIHJlbmRlclR5cGU9XCJCYXJlXCIgYWxpZ25JdGVtcz1cIkVuZFwiPlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbbXVsdGlWYWx1ZUZpZWxkLCBhdmF0YXJdXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0PC9Gb3JtRWxlbWVudFdyYXBwZXI+XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0bXVsdGlWYWx1ZUZpZWxkPy5hZGRFdmVudERlbGVnYXRlKFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9uZm9jdXNpbjogKGV2dDogalF1ZXJ5LkV2ZW50ICYgeyBzcmNDb250cm9sOiBDb250cm9sIH0pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGV2dC5zcmNDb250cm9sLmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQ/LmhhbmRsZUNvbnRlbnRGb2N1c0luKGN1cnJlbnRNdWx0aVZhbHVlRmllbGQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh2YWx1ZUhlbHBDb250cm9sPy5nZXREb21SZWYoKSkge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlSGVscENvbnRyb2wuYXR0YWNoRXZlbnRPbmNlKFwiY2xvc2VkXCIsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnRNdWx0aVZhbHVlRmllbGQ/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRvbmZvY3Vzb3V0OiAoZXZ0OiBqUXVlcnkuRXZlbnQgJiB7IHNyY0NvbnRyb2w6IENvbnRyb2wgfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGV2dC5zcmNDb250cm9sLmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRNdWx0aVZhbHVlRmllbGQ/LmlzQTxUb2tlbml6ZXI+KFwic2FwLm0uVG9rZW5pemVyXCIpKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpIGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRjb25zdCBldmVudCA9IG5ldyBVSTVFdmVudChcIlwiLCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLCB7XG5cdFx0XHRcdFx0XHRcdFx0ZmllbGRHcm91cElkczogY3VycmVudE11bHRpVmFsdWVGaWVsZC5nZXRGaWVsZEdyb3VwSWRzKClcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0LmhhbmRsZUNvbnRlbnRGb2N1c091dChldmVudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0aGlzXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Y29uc3QgdmFsdWVIZWxwQ29udHJvbCA9IEVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQobXVsdGlWYWx1ZUZpZWxkLmdldFZhbHVlSGVscCgpKSBhcyBNZGNWYWx1ZUhlbHA7XG5cblx0XHRcdFx0dmFsdWVIZWxwQ29udHJvbD8uYXR0YWNoT3BlbmVkKChldnQ6IFZhbHVlSGVscCRPcGVuZWRFdmVudCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgPSBldnQuZ2V0U291cmNlKCkuZ2V0Q29udHJvbCgpITtcblx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdC5oYW5kbGVDb250ZW50Rm9jdXNJbihjdXJyZW50TXVsdGlWYWx1ZUZpZWxkIGFzIE11bHRpVmFsdWVGaWVsZCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0bXVsdGlWYWx1ZUZpZWxkLmFkZEN1c3RvbURhdGEobmV3IEN1c3RvbURhdGEoeyBrZXk6IFwiZm9yd2FyZGVkSXRlbXNCaW5kaW5nXCIsIHZhbHVlOiB0aGlzLml0ZW1zIH0pKTtcblx0XHRcdHJldHVybiB0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkID8gZm9ybXdyYXBwZXIgOiBtdWx0aVZhbHVlRmllbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRlciBmb3IgdGhlIHJlYWRPbmx5IHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gcmVhZE9ubHlcblx0ICovXG5cdHNldFJlYWRPbmx5KHJlYWRPbmx5OiBib29sZWFuKTogdm9pZCB7XG5cdFx0c3VwZXIuc2V0UHJvcGVydHkoXCJyZWFkT25seVwiLCByZWFkT25seSk7XG5cdFx0dGhpcy51cGRhdGVFZGl0TW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRlciBmb3IgdGhlIF9pc0luRWRpdE1vZGUgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSBpbkVkaXRNb2RlXG5cdCAqL1xuXHRzZXRfaXNJbkVkaXRNb2RlKGluRWRpdE1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRzdXBlci5zZXRQcm9wZXJ0eShcIl9pc0luRWRpdE1vZGVcIiwgaW5FZGl0TW9kZSk7XG5cdFx0dGhpcy51cGRhdGVFZGl0TW9kZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqIEByZXR1cm5zIFRoZSBNdWx0aVZhbHVlRmllbGQuXG5cdCAqL1xuXHRnZXRNdWx0aVZhbHVlRmllbGQoKTogTXVsdGlWYWx1ZUZpZWxkIHtcblx0XHRpZiAodGhpcy5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpKSB7XG5cdFx0XHRyZXR1cm4gKCh0aGlzLmNvbnRlbnQgYXMgRm9ybUVsZW1lbnRXcmFwcGVyKS5jb250ZW50IGFzIEhCb3gpLmdldEl0ZW1zKClbMF0gYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50IGFzIE11bHRpVmFsdWVGaWVsZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSBlZGl0IG1vZGUgYmFzZWQgb24gdGhlIHJlYWRPbmx5IGFuZCBfaXNJbkVkaXRNb2RlIHByb3BlcnRpZXMuXG5cdCAqL1xuXHR1cGRhdGVFZGl0TW9kZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBtdWx0aXZhbHVlRmllbGQgPSB0aGlzLmdldE11bHRpVmFsdWVGaWVsZCgpO1xuXHRcdGNvbnN0IGluc2VydGFibGVBbmREZWxldGFibGUgPSBtdWx0aXZhbHVlRmllbGQuZGF0YShcImluc2VydGFibGVBbmREZWxldGFibGVcIik7XG5cdFx0aWYgKHRoaXMucmVhZE9ubHkgPT09IHRydWUgfHwgIWluc2VydGFibGVBbmREZWxldGFibGUpIHtcblx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkRpc3BsYXlcIik7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnJlYWRPbmx5ID09PSBmYWxzZSAmJiBpbnNlcnRhYmxlQW5kRGVsZXRhYmxlKSB7XG5cdFx0XHQvL3JlYWRPbmx5IGZhbHNlIGNhbiBvbmx5IGhhdmUgaW1wYWN0IGlmIGl0ZW1zIGFyZSBwcm92aWRlZFxuXHRcdFx0aWYgKHRoaXMuX2lzSW5FZGl0TW9kZSkge1xuXHRcdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJFZGl0YWJsZVwiO1xuXHRcdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJFZGl0YWJsZVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkRpc3BsYXlcIjtcblx0XHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRGlzcGxheVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gaWYgcmVhZE9ubHkgaXMgbm90IGV4cGxpY2l0bHkgc2V0IHdlIGtlZXAgdGVoIHN0YW5kYXJkIGJlaGF2aW9yXG5cdH1cblxuXHQvKipcblx0ICogT24gQmVmb3JlIHJlbmRlcmluZyBmcm93YXJkIHRoZSBhcmlhTGFiZWxsZWRCeSB0byB0aGUgbWRjIE11bHRpVmFsdWVGaWVsZC5cblx0ICovXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdGNvbnN0IG11bHRpVmFsdWVGaWVsZCA9IHRoaXMuZ2V0TXVsdGlWYWx1ZUZpZWxkKCk7XG5cdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnkgPSAodGhpcyBhcyB1bmtub3duIGFzIEVuaGFuY2VXaXRoVUk1PE11bHRpVmFsdWVGaWVsZEJsb2NrPikuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcblxuXHRcdFx0Zm9yIChjb25zdCBzSWQgb2YgYUFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeXMgPSBtdWx0aVZhbHVlRmllbGQuZ2V0QXJpYUxhYmVsbGVkQnkoKTtcblx0XHRcdFx0aWYgKCFhQXJpYUxhYmVsbGVkQnlzLmluY2x1ZGVzKHNJZCkpIHtcblx0XHRcdFx0XHRtdWx0aVZhbHVlRmllbGQuYWRkQXJpYUxhYmVsbGVkQnkoc0lkKTtcblx0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
|
|
642
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNdWx0aVZhbHVlRmllbGRCbG9jayIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiX2RlYzMiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjNCIsImFzc29jaWF0aW9uIiwiX2RlYzUiLCJfZGVjNiIsInJlcXVpcmVkIiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiaXNCaW5kaW5nSW5mbyIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwibXVsdGlwbGUiLCJkZWZhdWx0Q2xhc3MiLCJGb3JtYXRPcHRpb25zIiwiX2RlYzExIiwiX2RlYzEyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcHMiLCJvdGhlcnMiLCJfdGhpcyIsIl9pc0luRWRpdE1vZGUiLCJjb21waWxlRXhwcmVzc2lvbiIsIlVJIiwiSXNFZGl0YWJsZSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX292ZXJyaWRlVmFsdWUiLCJjb2xsZWN0aW9uQmluZGluZyIsIml0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIiwidGV4dEV4cHJlc3Npb24iLCJrZXkiLCJpdGVtcyIsIm1vZGVsIiwibW9kZWxOYW1lIiwicGF0aCIsImNvbW1vblRhcmdldE9iamVjdFByb3BlcnR5IiwidGFyZ2V0T2JqZWN0IiwiY29tbW9uUHJvcGVydHlQYXRoIiwibmFtZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwiZGVzY3JpcHRpb24iLCJfZ2V0TXVsdGlJbnB1dFNldHRpbmdzIiwicHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwiZm9ybWF0T3B0aW9ucyIsImNvbGxlY3Rpb25QYXRoIiwiX2dldFBhdGhTdHJ1Y3R1cmUiLCJ1c2VQYXJlbnRCaW5kaW5nQ2FjaGUiLCJ0ZW1wbGF0ZVNoYXJlYWJsZSIsInBhcmFtZXRlcnMiLCIkJG93blJlcXVlc3QiLCJwcm9wZXJ0eVBhdGhPclByb3BlcnR5IiwicHJvcGVydHlEZWZpbml0aW9uIiwiaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIiwiJHRhcmdldCIsImNvbW1vblRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldFZhbHVlQmluZGluZyIsImRpc3BsYXlPbmx5IiwibGVuZ3RoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZpcnN0Q29sbGVjdGlvblBhdGgiLCJjdXJyZW50RW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYXZpZ2F0ZWRQYXRocyIsImNvbnRleHROYXZzRm9ySXRlbSIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibmF2UHJvcCIsInVuZGVmaW5lZCIsInNvbWUiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInB1c2giLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5Iiwiam9pbiIsIk9iamVjdCIsImFzc2lnbiIsImNvbXB1dGVGaWVsZEdyb3VwSWRzIiwiYXBwQ29tcG9uZW50Iiwic2lkZUVmZmVjdFNlcnZpY2UiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmaWVsZEdyb3VwSWRzIiwiZGF0YU1vZGVsUGF0aCIsInRhcmdldEVudGl0eVR5cGUiLCJjb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbGxhYm9yYXRpb25GaWVsZEdyb3VwIiwiQ29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXgiLCJkYXRhU291cmNlUGF0aCIsInJlc3VsdCIsImluaXRpYWxpemUiLCJtZXRhQ29udGV4dFBhdGgiLCJvd25lciIsIl9nZXRPd25lciIsImNvbnRleHRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm9kYXRhTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJtZXRhUGF0aE9iamVjdCIsImdldFRhcmdldCIsImlzUHJvcGVydHkiLCJEYXRhRmllbGREZWZhdWx0IiwiZW5oYW5jZWRNZXRhUGF0aCIsImRhdGFGaWVsZERhdGFNb2RlbFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsImNvbnZlcnRlZERhdGFGaWVsZCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiVmFsdWUiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiaW5zZXJ0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24iLCJpc1BhdGhEZWxldGFibGUiLCJpZ25vcmVUYXJnZXRDb2xsZWN0aW9uIiwiYXV0aG9yaXplVW5yZXNvbHZhYmxlIiwiZGVsZXRlUGF0aCIsImRlbGV0YWJsZSIsImlmRWxzZSIsIl90eXBlIiwib3IiLCJub3QiLCJpc0NvbnN0YW50IiwiY29uc3RhbnQiLCJyZWFkT25seSIsInZpc2libGUiLCJnZXRWaXNpYmxlRXhwcmVzc2lvbiIsImluc2VydGFibGVBbmREZWxldGFibGUiLCJhbmQiLCJjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsImNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcyIsImlzUHJvcGVydHlJbml0aWFsIiwiZWRpdE1vZGUiLCJkaXNwbGF5TW9kZSIsImdldERpc3BsYXlNb2RlIiwibG9jYWxEYXRhTW9kZWxQYXRoIiwiaXRlbSIsImNvbGxlY3Rpb24iLCJnZXRBcHBDb21wb25lbnQiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIk1vZGVsSGVscGVyIiwiVUlGb3JtYXR0ZXJzIiwiZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24iLCJDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyIsImhhc0NvbGxhYm9yYXRpb25BY3Rpdml0eSIsImNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24iLCJnZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscyIsImNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24iLCJnZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlDb2xvciIsImdldE1ldGFQYXRoT2JqZWN0IiwibWV0YVBhdGgiLCJpZCIsInZoSWRQcmVmaXgiLCJJRCIsImdlbmVyYXRlIiwiZ2V0SWQiLCJjcmVhdGVJZCIsImNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsInZpZXciLCJnZXRWaWV3IiwiY29udGV4dCIsImdldENvbnRleHRQYXRoIiwiaXRlbXNBZ2dyZWdhdGlvbiIsImN1c3RvbUFnZ3JlZ2F0aW9uTGVuZ3RoIiwiZ2V0TWFuaWZlc3RFbnRyeSIsIm1hY3JvcyIsIm11bHRpVmFsdWVGaWVsZCIsIml0ZW1zU2l6ZUxpbWl0IiwibGFiZWwiLCJGaWVsZEhlbHBlciIsImNvbXB1dGVMYWJlbFRleHQiLCJ2aENvbnRyb2wiLCJWYWx1ZUhlbHAiLCJnZXRWYWx1ZUhlbHBGb3JNZXRhUGF0aCIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImdldE93bmVyQ29udGV4dFBhdGgiLCJ2YWx1ZUhlbHAiLCJnZXRDb250ZW50IiwiX2pzeCIsIk11bHRpVmFsdWVGaWVsZCIsImRlbGVnYXRlIiwiZGlzcGxheSIsIndpZHRoIiwiYXJpYUxhYmVsbGVkQnkiLCJzaG93RW1wdHlJbmRpY2F0b3IiLCJjaGFuZ2UiLCJNdWx0aVZhbHVlRmllbGRSdW50aW1lIiwiaGFuZGxlQ2hhbmdlIiwiYmluZCIsInZhbGlkYXRlRmllbGRHcm91cCIsIkZpZWxkUnVudGltZSIsIm9uVmFsaWRhdGVGaWVsZEdyb3VwIiwiY2hpbGRyZW4iLCJNdWx0aVZhbHVlRmllbGRJdGVtIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJ2YWx1ZSIsImZvcm13cmFwcGVyIiwiYXZhdGFyIiwiQXZhdGFyIiwiaW5pdGlhbHMiLCJkaXNwbGF5U2l6ZSIsImN1c3RvbURpc3BsYXlTaXplIiwiY3VzdG9tRm9udFNpemUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmVzcyIsIkZpZWxkUnVudGltZUhlbHBlciIsInNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIiLCJGb3JtRWxlbWVudFdyYXBwZXIiLCJIQm94IiwicmVuZGVyVHlwZSIsImFsaWduSXRlbXMiLCJhZGRFdmVudERlbGVnYXRlIiwib25mb2N1c2luIiwiZXZ0IiwiY3VycmVudE11bHRpVmFsdWVGaWVsZCIsInNyY0NvbnRyb2wiLCJnZXRQYXJlbnQiLCJjb2xsYWJvcmF0aXZlRHJhZnQiLCJoYW5kbGVDb250ZW50Rm9jdXNJbiIsInZhbHVlSGVscENvbnRyb2wiLCJnZXREb21SZWYiLCJhdHRhY2hFdmVudE9uY2UiLCJmb2N1cyIsIm9uZm9jdXNvdXQiLCJpc0EiLCJldmVudCIsIlVJNUV2ZW50IiwiZ2V0RmllbGRHcm91cElkcyIsImhhbmRsZUNvbnRlbnRGb2N1c091dCIsIkVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImdldFZhbHVlSGVscCIsImF0dGFjaE9wZW5lZCIsImdldFNvdXJjZSIsImdldENvbnRyb2wiLCJhZGRDdXN0b21EYXRhIiwic2V0UmVhZE9ubHkiLCJzZXRQcm9wZXJ0eSIsInVwZGF0ZUVkaXRNb2RlIiwic2V0X2lzSW5FZGl0TW9kZSIsImluRWRpdE1vZGUiLCJnZXRNdWx0aVZhbHVlRmllbGQiLCJnZXRJdGVtcyIsIm11bHRpdmFsdWVGaWVsZCIsImRhdGEiLCJzZXRFZGl0TW9kZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiYUFyaWFMYWJlbGxlZEJ5IiwiZ2V0QXJpYUxhYmVsbGVkQnkiLCJzSWQiLCJhQXJpYUxhYmVsbGVkQnlzIiwiaW5jbHVkZXMiLCJhZGRBcmlhTGFiZWxsZWRCeSIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk11bHRpVmFsdWVGaWVsZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCB0eXBlIHsgRGF0YUZpZWxkLCBEYXRhRmllbGRUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBjb25zdGFudCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpZkVsc2UsIGlzQ29uc3RhbnQsIG5vdCwgb3IgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRhc3NvY2lhdGlvbixcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGltcGxlbWVudEludGVyZmFjZSxcblx0cHJvcGVydHksXG5cdHR5cGUgRW5oYW5jZVdpdGhVSTUsXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBVSSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCAqIGFzIElEIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQge1xuXHRpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5LFxuXHRpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eSxcblx0aXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRSZWxhdGl2ZVBhdGhzLFxuXHRnZXRUYXJnZXRPYmplY3RQYXRoLFxuXHRpc1BhdGhEZWxldGFibGUsXG5cdGlzUGF0aEluc2VydGFibGVcbn0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGdldERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdldFZhbHVlQmluZGluZywgZ2V0VmlzaWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGQgZnJvbSBcInNhcC91aS9tZGMvTXVsdGlWYWx1ZUZpZWxkXCI7XG5pbXBvcnQgdHlwZSBGaWVsZEVkaXRNb2RlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0ZpZWxkRWRpdE1vZGVcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGRJdGVtIGZyb20gXCJzYXAvdWkvbWRjL2ZpZWxkL011bHRpVmFsdWVGaWVsZEl0ZW1cIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5cbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IENvbGxhYm9yYXRpb25GaWVsZEdyb3VwUHJlZml4IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IEZvcm1FbGVtZW50V3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRm9ybUVsZW1lbnRXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkUnVudGltZVwiO1xuaW1wb3J0IEZvcm1hdE9wdGlvbnMgZnJvbSBcInNhcC9mZS9tYWNyb3MvbXVsdGl2YWx1ZWZpZWxkL0Zvcm1hdE9wdGlvbnNcIjtcbmltcG9ydCBNdWx0aVZhbHVlRmllbGRSdW50aW1lIGZyb20gXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGRSdW50aW1lXCI7XG5pbXBvcnQgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBNZGNWYWx1ZUhlbHAsIFZhbHVlSGVscCRPcGVuZWRFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwiLi9WYWx1ZUhlbHBcIjtcbmltcG9ydCBGaWVsZFJ1bnRpbWVIZWxwZXIgZnJvbSBcIi4vZmllbGQvRmllbGRSdW50aW1lSGVscGVyXCI7XG5cbnR5cGUgTXVsdGlJbnB1dFNldHRpbmdzID0ge1xuXHRkZXNjcmlwdGlvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm87XG5cdGtleTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZGlzcGxheU9ubHk/OiBib29sZWFuO1xufTtcblxudHlwZSBNdWx0aVZhbHVlRmllbGRQYXRoU3RydWN0dXJlID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIE11bHRpVmFsdWVGaWVsZCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBUaGUgTXVsdGlWYWx1ZUZpZWxkIGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgZWl0aGVyIGEgRGF0YUZpZWxkIG9yIFByb3BlcnR5IGRpcmVjdGx5LiBJdCBoYXMgdG8gcG9pbnQgdG8gYSBjb2xsZWN0aW9uIHByb3BlcnR5LlxuICogPGJyPlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm86TXVsdGlWYWx1ZUZpZWxkXG4gKiBpZD1cIlNvbWVVbmlxdWVJZGVudGlmaWVyXCJcbiAqIGNvbnRleHRQYXRoPVwie2VudGl0eVNldCZndDt9XCJcbiAqIG1ldGFQYXRoPVwie2RhdGFGaWVsZCZndDt9XCJcbiAqIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuMTE4LjBcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLk11bHRpVmFsdWVGaWVsZFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlWYWx1ZUZpZWxkQmxvY2sgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPENvbnRyb2w+IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFRoZSAnaWQnIHByb3BlcnR5XG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGlkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBQcmVmaXggYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgZmllbGQgLSBvbmx5IGlmIG5vIGlkIGlzIHByb3ZpZGVkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSB2YWx1ZSBoZWxwIHVzZWQgZm9yIHRoZSBmaWVsZFxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZoSWRQcmVmaXghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHJlbGF0aXZlIE1ldGFkYXRhIHBhdGggdG8gdGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICogVGhlIG1ldGFQYXRoIHNob3VsZCBwb2ludCB0byBhIFByb3BlcnR5IG9yIERhdGFGaWVsZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIHJlYWRPbmx5IGZsYWdcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIHJlcXVpcmVkOiBmYWxzZSB9KVxuXHRwdWJsaWMgcmVhZE9ubHk/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0LyoqXG5cdCAqIFRoZSBjb250ZXh0IHBhdGggcHJvdmlkZWQgZm9yIHRoZSBNdWx0aVZhbHVlRmllbGRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgYWRkZWQgdG8gYmUgYWJsZSB0byBhZGQgZGF0YSAvIGl0ZW1zIHRvIHRoZSBtdWx0aSB2YWx1ZSBmaWVsZCB2aWEgYSBkaWZmZXJlbnQgbW9kZWxcblx0ICogQGV4cGVyaW1lbnRhbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYW55XCIsXG5cdFx0aXNCaW5kaW5nSW5mbzogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgaXRlbXM/OiBQcm9wZXJ0eUJpbmRpbmdJbmZvO1xuXG5cdC8qKlxuXHQgKiBUaGUgb2JqZWN0IHdpdGggdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuXHQgKlxuXHQgKi9cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLm11bHRpdmFsdWVmaWVsZC5Gb3JtYXRPcHRpb25zXCIsIG11bHRpcGxlOiBmYWxzZSwgZGVmYXVsdENsYXNzOiBGb3JtYXRPcHRpb25zIH0pXG5cdGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdF9pc0luRWRpdE1vZGU6IGJvb2xlYW4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZVBhcmVudEJpbmRpbmdDYWNoZSA9IGZhbHNlO1xuXG5cdC8vIENvbXB1dGVkIHByb3BlcnRpZXNcblxuXHRwcml2YXRlIGl0ZW0hOiBNdWx0aUlucHV0U2V0dGluZ3M7XG5cblx0LyoqXG5cdCAqIFBvaW50ZWQgYXQgYSBkYXRhRmllbGQuIFRoaXMgY2FuIGJlIERhdGFGaWVsZERlZmF1bHQgZnJvbSBhIHByb3BlcnR5LlxuXHQgKi9cblx0cHJpdmF0ZSBjb252ZXJ0ZWREYXRhRmllbGQhOiBEYXRhRmllbGQ7XG5cblx0LyoqXG5cdCAqIERhdGFNb2RlbFBhdGggZm9yIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGRpc3BsYXllZC5cblx0ICovXG5cdHByaXZhdGUgZGF0YU1vZGVsUGF0aCE6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdHByaXZhdGUgcHJvcGVydHkhOiBQcm9wZXJ0eTtcblxuXHQvKipcblx0ICogRWRpdCBNb2RlIG9mIHRoZSBmaWVsZC5cblx0ICogSWYgdGhlIGVkaXRNb2RlIGlzIHVuZGVmaW5lZCB0aGVuIHdlIGNvbXB1dGUgaXQgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG5cdCAqIE90aGVyd2lzZSB3ZSB1c2UgdGhlIHZhbHVlIHByb3ZpZGVkIGhlcmUuXG5cdCAqL1xuXHRwcml2YXRlIGVkaXRNb2RlITogRmllbGRFZGl0TW9kZSB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBUaGUgZGlzcGxheSBtb2RlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uIGZpZWxkXG5cdCAqL1xuXHRwcml2YXRlIGRpc3BsYXlNb2RlITogRGlzcGxheU1vZGU7XG5cblx0LyoqXG5cdCAqIFRoZSBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB0aGF0IGlzIGNhbGN1bGF0ZWQgaW50ZXJuYWxseVxuXHQgKi9cblx0cHJpdmF0ZSBjb2xsZWN0aW9uITogUHJvcGVydHlCaW5kaW5nSW5mbztcblxuXHRwcml2YXRlIHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdHByaXZhdGUgZmllbGRHcm91cElkcz86IHN0cmluZztcblxuXHRwcml2YXRlIGVuaGFuY2VkTWV0YVBhdGghOiBDb250ZXh0O1xuXG5cdHByaXZhdGUgZW5hYmxlRXhwcmVzc2lvbjogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cblx0cHJpdmF0ZSBjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24hOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHRwcml2YXRlIGNvbGxhYm9yYXRpb25FbmFibGVkITogYm9vbGVhbjtcblxuXHRwcml2YXRlIGRhdGFTb3VyY2VQYXRoITogc3RyaW5nO1xuXG5cdHByaXZhdGUgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSE6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8TXVsdGlWYWx1ZUZpZWxkQmxvY2s+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGlmICh0eXBlb2YgcHJvcHMgIT09IFwic3RyaW5nXCIpIHtcblx0XHRcdC8vIHR5cGUgb2YgcHJvcHMgY2FuIGJlIGEgc3RyaW5nIGlmIHdlIGFyZSBjbG9uaW5nIHRoZSBNdWx0aVZhbHVlRmllbGQgaW5zaWRlIGFuIGFnZ3JlZ2F0aW9uXG5cdFx0XHQvLyBpbiB0aGF0IGNhc2UgX2lzSW5FZGl0TW9kZSBoYXMgYWxyZWFkeSBiZWVuIGNvbXB1dGVkIG9uIHRoZSBvbmUgd2UgY2xvbmVcblx0XHRcdHByb3BzLl9pc0luRWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihVSS5Jc0VkaXRhYmxlKTtcblx0XHR9XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogSW4gY2FzZSBhbiBleHRlcm5hbCB2YWx1ZSBpcyBzZXQgKGUuZy4gZm9yIHByb3ZpZGluZyBkYXRhIGluIGEganNvbiBtb2RlbCkgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgYmluZGluZyBzdHJpbmdzIGZvciB0aGUgaXRlbS5cblx0ICogQHBhcmFtIGNvbGxlY3Rpb25CaW5kaW5nXG5cdCAqIEBwYXJhbSBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQgKiBAcGFyYW0gdGV4dEV4cHJlc3Npb25cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBNdWx0aUlucHV0U2V0dGluZ3Ncblx0ICovXG5cdHByaXZhdGUgX292ZXJyaWRlVmFsdWUoXG5cdFx0Y29sbGVjdGlvbkJpbmRpbmc6IFByb3BlcnR5QmluZGluZ0luZm8gJiB7IHBhcmFtZXRlcnM/OiBvYmplY3QgfSxcblx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eT4sXG5cdFx0dGV4dEV4cHJlc3Npb246IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRcdGtleTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cblx0KTogTXVsdGlJbnB1dFNldHRpbmdzIHtcblx0XHRpZiAodGhpcy5pdGVtcykge1xuXHRcdFx0Y29uc3QgbW9kZWwgPSB0aGlzLml0ZW1zLm1vZGVsID8/IHRoaXMuaXRlbXMubW9kZWxOYW1lO1xuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcgPSB7IHBhdGg6IGAke21vZGVsfT4ke3RoaXMuaXRlbXMucGF0aH1gIH07XG5cdFx0XHRjb25zdCBjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eSA9IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRcdGNvbnN0IGNvbW1vblByb3BlcnR5UGF0aCA9IGB7JHttb2RlbH0+JHtjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5uYW1lfX1gO1xuXG5cdFx0XHQvLyBUZXh0IGFycmFuZ2VtZW50IHVzZSBjYXNlXG5cdFx0XHRpZiAoaXNQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPihjb21tb25UYXJnZXRPYmplY3RQcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlRleHQpKSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gYHske21vZGVsfT4ke2NvbW1vblRhcmdldE9iamVjdFByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbj8uVGV4dD8ucGF0aH19YDtcblx0XHRcdFx0Ly8gbm9uIHRleHQgYXJyYW5nZW1lbnQgdXNlIGNhc2Vcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRleHRFeHByZXNzaW9uID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdFx0fVxuXHRcdFx0a2V5ID0gY29tbW9uUHJvcGVydHlQYXRoO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGVzY3JpcHRpb246IHRleHRFeHByZXNzaW9uLFxuXHRcdFx0Y29sbGVjdGlvbkJpbmRpbmcsXG5cdFx0XHRrZXk6IGtleVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBjb3JyZWN0IHNldHRpbmdzIGZvciB0aGUgbXVsdGkgaW5wdXQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGggVGhlIGNvcnJlc3BvbmRpbmcgRGF0YU1vZGVsT2JqZWN0UGF0aC5cblx0ICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgVGhlIGZvcm1hdCBvcHRpb25zIHRvIGNhbGN1bGF0ZSB0aGUgcmVzdWx0XG5cdCAqIEByZXR1cm5zIE11bHRpSW5wdXRTZXR0aW5nc1xuXHQgKi9cblx0cHJpdmF0ZSBfZ2V0TXVsdGlJbnB1dFNldHRpbmdzKFxuXHRcdHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdFx0Zm9ybWF0T3B0aW9uczogRm9ybWF0T3B0aW9ucyB8IHVuZGVmaW5lZFxuXHQpOiBNdWx0aUlucHV0U2V0dGluZ3Mge1xuXHRcdGNvbnN0IHsgY29sbGVjdGlvblBhdGgsIGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH0gPSBNdWx0aVZhbHVlRmllbGRCbG9jay5fZ2V0UGF0aFN0cnVjdHVyZShwcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdGNvbnN0IGNvbGxlY3Rpb25CaW5kaW5nID0gdGhpcy51c2VQYXJlbnRCaW5kaW5nQ2FjaGVcblx0XHRcdD8geyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH1cblx0XHRcdDogeyBwYXRoOiBjb2xsZWN0aW9uUGF0aCwgcGFyYW1ldGVyczogeyAkJG93blJlcXVlc3Q6IHRydWUgfSwgdGVtcGxhdGVTaGFyZWFibGU6IGZhbHNlIH07XG5cblx0XHRjb25zdCBwcm9wZXJ0eVBhdGhPclByb3BlcnR5ID0gcHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eVBhdGggfCBQcm9wZXJ0eTtcblx0XHRjb25zdCBwcm9wZXJ0eURlZmluaXRpb24gPSBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoT3JQcm9wZXJ0eSlcblx0XHRcdD8gcHJvcGVydHlQYXRoT3JQcm9wZXJ0eS4kdGFyZ2V0XG5cdFx0XHQ6IHByb3BlcnR5UGF0aE9yUHJvcGVydHk7XG5cdFx0Y29uc3QgY29tbW9uVGV4dCA9IHByb3BlcnR5RGVmaW5pdGlvbj8uYW5ub3RhdGlvbnMuQ29tbW9uPy5UZXh0O1xuXHRcdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKHByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cblx0XHRjb25zdCB0ZXh0RXhwcmVzc2lvbiA9IGNvbW1vblRleHRcblx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pKVxuXHRcdFx0OiBnZXRWYWx1ZUJpbmRpbmcoaXRlbURhdGFNb2RlbE9iamVjdFBhdGgsIGZvcm1hdE9wdGlvbnMgPz8ge30sIHRydWUpO1xuXG5cdFx0Y29uc3Qga2V5ID0gZ2V0VmFsdWVCaW5kaW5nKGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoLCBmb3JtYXRPcHRpb25zID8/IHt9LCB0cnVlKTtcblx0XHRsZXQgZGlzcGxheU9ubHkgPSBmYWxzZTtcblx0XHRpZiAoZ2V0UmVsYXRpdmVQYXRocyhpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCkubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gaWYgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHZhbHVlIGNvbnRhaW5zIGEgbmF2aWdhdGlvbiwgY3JlYXRlIHdpbGwgbm90IGJlIHBvc3NpYmxlIGluIHRoZSBkZWxlZ2F0ZSwgc28gd2UgZm9yY2UgdGhlIGRpc3BsYXkgTW9kZVxuXHRcdFx0ZGlzcGxheU9ubHkgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZGlzcGxheU9ubHksXG5cdFx0XHQuLi50aGlzLl9vdmVycmlkZVZhbHVlKGNvbGxlY3Rpb25CaW5kaW5nLCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aCwgdGV4dEV4cHJlc3Npb24sIGtleSlcblx0XHR9O1xuXHR9XG5cblx0Ly8gUHJvY2VzcyB0aGUgZGF0YU1vZGVsUGF0aCB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGFuZCB0aGUgcmVsYXRpdmUgRGF0YU1vZGVsUGF0aCBmb3IgdGhlIGl0ZW0uXG5cdHByaXZhdGUgc3RhdGljIF9nZXRQYXRoU3RydWN0dXJlKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+KTogTXVsdGlWYWx1ZUZpZWxkUGF0aFN0cnVjdHVyZSB7XG5cdFx0bGV0IGZpcnN0Q29sbGVjdGlvblBhdGggPSBcIlwiO1xuXHRcdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8udGFyZ2V0RW50aXR5U2V0XG5cdFx0XHQ/IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLnRhcmdldEVudGl0eVNldFxuXHRcdFx0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRcdGNvbnN0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IGNvbnRleHROYXZzRm9ySXRlbSA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcyB8fCBbXTtcblx0XHRmb3IgKGNvbnN0IG5hdlByb3Agb2YgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCFkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5uYXZpZ2F0aW9uUHJvcGVydGllcy5zb21lKFxuXHRcdFx0XHRcdChjb250ZXh0TmF2UHJvcCkgPT4gY29udGV4dE5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lID09PSBuYXZQcm9wLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHQpXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gaW4gY2FzZSBvZiByZWxhdGl2ZSBlbnRpdHlTZXRQYXRoIHdlIGRvbid0IGNvbnNpZGVyIG5hdmlnYXRpb25QYXRoIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGNvbnRleHRcblx0XHRcdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdFx0XHRjb250ZXh0TmF2c0Zvckl0ZW0ucHVzaChuYXZQcm9wKTtcblx0XHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZQcm9wLm5hbWUpKSB7XG5cdFx0XHRcdFx0aWYgKGlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcCkpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRmaXJzdENvbGxlY3Rpb25QYXRoID0gYCR7bmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIil9YDtcblx0XHRjb25zdCBpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4gPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRpZiAoaXRlbURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uKSB7XG5cdFx0XHRpdGVtRGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24ubmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb250ZXh0TmF2c0Zvckl0ZW07IC8vIHRoaXMgY2hhbmdlcyB0aGUgY3JlYXRpb24gb2YgdGhlIHZhbHVlSGVscCBJRCAuLi5cblx0XHR9XG5cblx0XHRyZXR1cm4geyBjb2xsZWN0aW9uUGF0aDogZmlyc3RDb2xsZWN0aW9uUGF0aCwgaXRlbURhdGFNb2RlbE9iamVjdFBhdGg6IGl0ZW1EYXRhTW9kZWxPYmplY3RQYXRoIH07XG5cdH1cblxuXHQvKipcblx0ICogQ2FsY3VsYXRlIHRoZSBmaWVsZEdyb3VwSWRzIGZvciB0aGUgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKiBAcGFyYW0gYXBwQ29tcG9uZW50XG5cdCAqIEByZXR1cm5zIFRoZSB2YWx1ZSBmb3IgdGhlIGZpZWxkR3JvdXBJZHNcblx0ICovXG5cdHByaXZhdGUgY29tcHV0ZUZpZWxkR3JvdXBJZHMoYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIWFwcENvbXBvbmVudCkge1xuXHRcdFx0Ly9mb3IgVmFsdWVIZWxwIC8gTWFzcyBlZGl0IFRlbXBsYXRpbmcgdGhlIGFwcENvbXBvbmVudCBpcyBub3QgcGFzc2VkIHRvIHRoZSB0ZW1wbGF0aW5nXG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0Y29uc3Qgc2lkZUVmZmVjdFNlcnZpY2UgPSBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCk7XG5cdFx0Y29uc3QgZmllbGRHcm91cElkcyA9IHNpZGVFZmZlY3RTZXJ2aWNlLmNvbXB1dGVGaWVsZEdyb3VwSWRzKFxuXHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0KHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdCk7XG5cdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25GaWVsZEdyb3VwID0gYCR7Q29sbGFib3JhdGlvbkZpZWxkR3JvdXBQcmVmaXh9JHt0aGlzLmRhdGFTb3VyY2VQYXRofWA7XG5cdFx0XHRmaWVsZEdyb3VwSWRzLnB1c2goY29sbGFib3JhdGlvbkZpZWxkR3JvdXApO1xuXHRcdH1cblx0XHR0aGlzLmZpZWxkR3JvdXBJZHMgPSBmaWVsZEdyb3VwSWRzLmxlbmd0aCA/IGZpZWxkR3JvdXBJZHMuam9pbihcIixcIikgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgcmVzdWx0ID0gZmllbGRHcm91cElkcy5qb2luKFwiLFwiKTtcblx0XHRyZXR1cm4gcmVzdWx0ID09PSBcIlwiID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuXHR9XG5cblx0aW5pdGlhbGl6ZShtZXRhQ29udGV4dFBhdGg6IE1ldGFQYXRoPHVua25vd24+KTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXG5cdFx0dGhpcy5jb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggPz8gb3duZXI/LnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblxuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpIGFzIENvbnRleHQgfCB1bmRlZmluZWQ7XG5cblx0XHRjb25zdCBtZXRhUGF0aE9iamVjdCA9IG1ldGFDb250ZXh0UGF0aD8uZ2V0VGFyZ2V0KCk7XG5cblx0XHQvLyBJZiB0aGUgdGFyZ2V0IGlzIGEgcHJvcGVydHkgd2l0aCBhIERhdGFGaWVsZERlZmF1bHQsIHVzZSB0aGlzIGFzIGRhdGEgZmllbGRcblx0XHRpZiAoaXNQcm9wZXJ0eShtZXRhUGF0aE9iamVjdCkgJiYgbWV0YVBhdGhPYmplY3QuYW5ub3RhdGlvbnMuVUk/LkRhdGFGaWVsZERlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5lbmhhbmNlZE1ldGFQYXRoID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGBAJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWAsIG1ldGFDb250ZXh0KSBhcyBDb250ZXh0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVuaGFuY2VkTWV0YVBhdGggPSBtZXRhQ29udGV4dCBhcyBDb250ZXh0O1xuXHRcdH1cblx0XHRjb25zdCBkYXRhRmllbGREYXRhTW9kZWxQYXRoID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCh0aGlzLmVuaGFuY2VkTWV0YVBhdGguZ2V0UGF0aCgpLCB0aGlzLmNvbnRleHRQYXRoKSE7XG5cblx0XHR0aGlzLmNvbnZlcnRlZERhdGFGaWVsZCA9IGRhdGFGaWVsZERhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIERhdGFGaWVsZDtcblxuXHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5Pihcblx0XHRcdGRhdGFGaWVsZERhdGFNb2RlbFBhdGgsXG5cdFx0XHQodGhpcy5jb252ZXJ0ZWREYXRhRmllbGQuVmFsdWUgYXMgUGF0aEFubm90YXRpb25FeHByZXNzaW9uPHN0cmluZz4pLnBhdGhcblx0XHQpO1xuXHRcdHRoaXMuZGF0YVNvdXJjZVBhdGggPSBnZXRUYXJnZXRPYmplY3RQYXRoKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5wcm9wZXJ0eSA9IHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cblx0XHRsZXQgaW5zZXJ0YWJsZSA9IGlzUGF0aEluc2VydGFibGUodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRjb25zdCBkZWxldGVOYXZpZ2F0aW9uUmVzdHJpY3Rpb24gPSBpc1BhdGhEZWxldGFibGUodGhpcy5kYXRhTW9kZWxQYXRoLCB7XG5cdFx0XHRpZ25vcmVUYXJnZXRDb2xsZWN0aW9uOiB0cnVlLFxuXHRcdFx0YXV0aG9yaXplVW5yZXNvbHZhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdFx0Y29uc3QgZGVsZXRlUGF0aCA9IGlzUGF0aERlbGV0YWJsZSh0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Ly8gZGVsZXRhYmxlOlxuXHRcdC8vXHRcdGlmIHJlc3RyaWN0aW9ucyBjb21lIGZyb20gTmF2aWdhdGlvbiB3ZSBhcHBseSBpdFxuXHRcdC8vXHRcdG90aGVyd2lzZSB3ZSBhcHBseSByZXN0cmljdGlvbnMgZGVmaW5lZCBvbiB0YXJnZXQgY29sbGVjdGlvbiBvbmx5IGlmIGl0J3MgYSBjb25zdGFudFxuXHRcdC8vICAgICAgb3RoZXJ3aXNlIGl0J3MgdHJ1ZSFcblx0XHRsZXQgZGVsZXRhYmxlID0gaWZFbHNlKFxuXHRcdFx0ZGVsZXRlTmF2aWdhdGlvblJlc3RyaWN0aW9uLl90eXBlID09PSBcIlVucmVzb2x2YWJsZVwiLFxuXHRcdFx0b3Iobm90KGlzQ29uc3RhbnQoZGVsZXRlUGF0aCkpLCBkZWxldGVQYXRoKSxcblx0XHRcdGRlbGV0ZVBhdGhcblx0XHQpO1xuXG5cdFx0aWYgKHRoaXMuaXRlbXMpIHtcblx0XHRcdGluc2VydGFibGUgPSBkZWxldGFibGUgPSBjb25zdGFudCghdGhpcy5yZWFkT25seSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmlzaWJsZSA9IGdldFZpc2libGVFeHByZXNzaW9uKHRoaXMuZGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zKTtcblx0XHR9XG5cblx0XHR0aGlzLmluc2VydGFibGVBbmREZWxldGFibGUgPSBhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlKTtcblx0XHR0aGlzLmNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gY29uc3RhbnQoZmFsc2UpO1xuXHRcdHRoaXMuY29tcHV0ZUNvbGxhYm9yYXRpb25Qcm9wZXJ0aWVzKCk7XG5cdFx0Y29uc3QgcmVhZE9ubHkgPSB0aGlzLmlzUHJvcGVydHlJbml0aWFsKFwicmVhZE9ubHlcIikgPyB1bmRlZmluZWQgOiB0aGlzLnJlYWRPbmx5O1xuXHRcdGlmICh0aGlzLmZvcm1hdE9wdGlvbnM/LmRpc3BsYXlPbmx5ID09PSB0cnVlIHx8IHJlYWRPbmx5ID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnJlYWRPbmx5ID09PSBmYWxzZSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0YW5kKGluc2VydGFibGUsIGRlbGV0YWJsZSksXG5cdFx0XHRcdFx0aWZFbHNlKHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50KFwiUmVhZE9ubHlcIiksIGNvbnN0YW50KFwiRWRpdGFibGVcIikpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiRGlzcGxheVwiKVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRhbmQoaW5zZXJ0YWJsZSwgZGVsZXRhYmxlLCBVSS5Jc0VkaXRhYmxlKSxcblx0XHRcdFx0XHRpZkVsc2UodGhpcy5jb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiwgY29uc3RhbnQoXCJSZWFkT25seVwiKSwgY29uc3RhbnQoXCJFZGl0YWJsZVwiKSksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJEaXNwbGF5XCIpXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kaXNwbGF5TW9kZSA9IGdldERpc3BsYXlNb2RlKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cblx0XHRjb25zdCBsb2NhbERhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4oXG5cdFx0XHR0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoKHRoaXMuZW5oYW5jZWRNZXRhUGF0aC5nZXRQYXRoKCksIHRoaXMuY29udGV4dFBhdGgpISxcblx0XHRcdCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248c3RyaW5nPikucGF0aFxuXHRcdCk7XG5cblx0XHR0aGlzLml0ZW0gPSB0aGlzLl9nZXRNdWx0aUlucHV0U2V0dGluZ3MobG9jYWxEYXRhTW9kZWxQYXRoLCB0aGlzLmZvcm1hdE9wdGlvbnMpOyAvLyB0aGlzIGZ1bmN0aW9uIHJld3JpdGVzIGRhdGFNb2RlbFBhdGgsIHRoZXJlZm9yZSwgZm9yIG5vdyBhIGNsZWFuIG9iamVjdCBpcyBwYXNzZWRcblx0XHRpZiAodGhpcy5pdGVtLmRpc3BsYXlPbmx5KSB7XG5cdFx0XHR0aGlzLmVkaXRNb2RlID0gXCJEaXNwbGF5XCI7XG5cdFx0fVxuXHRcdHRoaXMuY29sbGVjdGlvbiA9IHRoaXMuaXRlbS5jb2xsZWN0aW9uQmluZGluZztcblxuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0dGhpcy5maWVsZEdyb3VwSWRzID0gdGhpcy5jb21wdXRlRmllbGRHcm91cElkcyhhcHBDb21wb25lbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgaXMgc3VwcG9ydGVkLlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGlzIHN1cHBvcnRlZC5cblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRjb25zdCBvZGF0YU1ldGFNb2RlbCA9IG93bmVyPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRyZXR1cm4gTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob2RhdGFNZXRhTW9kZWwhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGhlbHBlciBjb21wdXRlcyB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBuZWVkZWQgZm9yIHRoZSBjb2xsYWJvcmF0aW9uIGF2YXRhci5cblx0ICovXG5cdGNvbXB1dGVDb2xsYWJvcmF0aW9uUHJvcGVydGllcygpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCgpICYmIHRoaXMuZWRpdE1vZGUgIT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25FbmFibGVkID0gdHJ1ZTtcblx0XHRcdHRoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24oXG5cdFx0XHRcdHRoaXMuZGF0YU1vZGVsUGF0aCxcblx0XHRcdFx0Q29sbGFib3JhdGlvbkZvcm1hdHRlcnMuaGFzQ29sbGFib3JhdGlvbkFjdGl2aXR5XG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0Z2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24odGhpcy5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlJbml0aWFscylcblx0XHRcdCk7XG5cdFx0XHR0aGlzLmNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0Z2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24odGhpcy5kYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlDb2xvcilcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGNvbnRlbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZW50IG9mIHRoZSBidWlsZGluZyBibG9jay5cblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbWV0YUNvbnRleHRQYXRoID0gdGhpcy5nZXRNZXRhUGF0aE9iamVjdCh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRpZiAobWV0YUNvbnRleHRQYXRoKSB7XG5cdFx0XHR0aGlzLmluaXRpYWxpemUobWV0YUNvbnRleHRQYXRoKTtcblxuXHRcdFx0Ly8gQnVpbGRpbmdCbG9jayB3aXRoIHNldCBJRCBzY2VuYXJpb1xuXHRcdFx0aWYgKHRoaXMuaWQpIHtcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gSUQuZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgdGhpcy52aElkUHJlZml4ID8/IFwiRmllbGRWYWx1ZUhlbHBcIl0pOyAvLyBVc2UgZ2V0SWQgdG8gcmV0cmlldmUgSUQsIG5vdCB0aGlzLmlkXG5cdFx0XHR9IGVsc2UgaWYgKCF0aGlzLnZoSWRQcmVmaXgpIHtcblx0XHRcdFx0Ly8gTWF5YmUgbm90IGVudGVyZWRcblx0XHRcdFx0dGhpcy52aElkUHJlZml4ID0gdGhpcy5jcmVhdGVJZChcIkZpZWxkVmFsdWVIZWxwXCIpITtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRSb290Q29udHJvbGxlcigpIGFzIFBhZ2VDb250cm9sbGVyO1xuXHRcdFx0Y29uc3QgdmlldyA9IGNvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdFx0Y29uc3Qgb2RhdGFNZXRhTW9kZWwgPSB0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb2RhdGFNZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1ldGFDb250ZXh0UGF0aC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgY29udGV4dCA9IG9kYXRhTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhQ29udGV4dFBhdGguZ2V0Q29udGV4dFBhdGgoKSk7XG5cdFx0XHRpZiAoIW1ldGFDb250ZXh0IHx8ICFjb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly9jcmVhdGUgYSBuZXcgYmluZGluZyBjb250ZXh0IGZvciB0aGUgdmFsdWUgaGVscFxuXG5cdFx0XHRjb25zdCBpdGVtc0FnZ3JlZ2F0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xuXHRcdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRpb25MZW5ndGggPSB0aGlzLmdldEFwcENvbXBvbmVudCgpPy5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLmZlXCIpPy5tYWNyb3M/Lm11bHRpVmFsdWVGaWVsZD8uaXRlbXNTaXplTGltaXQ7XG5cdFx0XHRpZiAoY3VzdG9tQWdncmVnYXRpb25MZW5ndGggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRpdGVtc0FnZ3JlZ2F0aW9uLmxlbmd0aCA9IGN1c3RvbUFnZ3JlZ2F0aW9uTGVuZ3RoO1xuXHRcdFx0fVxuXG5cdFx0XHQvL2NvbXB1dGUgdGhlIGNvcnJlY3QgbGFiZWxcblx0XHRcdGNvbnN0IGxhYmVsID0gRmllbGRIZWxwZXIuY29tcHV0ZUxhYmVsVGV4dCh0aGlzLmNvbnZlcnRlZERhdGFGaWVsZC5WYWx1ZSBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZFR5cGVzPiwge1xuXHRcdFx0XHRjb250ZXh0OiBtZXRhQ29udGV4dFxuXHRcdFx0fSkgYXMgc3RyaW5nO1xuXG5cdFx0XHRjb25zdCB2aENvbnRyb2wgPSBWYWx1ZUhlbHAuZ2V0VmFsdWVIZWxwRm9yTWV0YVBhdGgoXG5cdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSxcblx0XHRcdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCh0aGlzLmRhdGFNb2RlbFBhdGgpISxcblx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aCA/PyB0aGlzLmdldE93bmVyQ29udGV4dFBhdGgoKSEsXG5cdFx0XHRcdHRoaXMuX2dldE93bmVyKCk/LmdldE1ldGFNb2RlbCgpXG5cdFx0XHQpO1xuXHRcdFx0bGV0IHZhbHVlSGVscDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKHZoQ29udHJvbCAmJiB2aENvbnRyb2wuZ2V0Q29udGVudCgpKSB7XG5cdFx0XHRcdHZhbHVlSGVscCA9IHZoQ29udHJvbC5nZXRDb250ZW50KCkhLmdldElkKCk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBtdWx0aVZhbHVlRmllbGQgPSAoXG5cdFx0XHRcdDxNdWx0aVZhbHVlRmllbGRcblx0XHRcdFx0XHRpZD17dGhpcy5jcmVhdGVJZChcIl9tdmZcIil9XG5cdFx0XHRcdFx0ZGVsZWdhdGU9e3sgbmFtZTogXCJzYXAvZmUvbWFjcm9zL211bHRpdmFsdWVmaWVsZC9NdWx0aVZhbHVlRmllbGREZWxlZ2F0ZVwiIH19XG5cdFx0XHRcdFx0aXRlbXM9e2l0ZW1zQWdncmVnYXRpb259XG5cdFx0XHRcdFx0ZGlzcGxheT17dGhpcy5kaXNwbGF5TW9kZX1cblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdGVkaXRNb2RlPXt0aGlzLmVkaXRNb2RlfVxuXHRcdFx0XHRcdHZhbHVlSGVscD17dmFsdWVIZWxwfVxuXHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5ID8gdGhpcy5hcmlhTGFiZWxsZWRCeSA6IFtdfVxuXHRcdFx0XHRcdHNob3dFbXB0eUluZGljYXRvcj17dGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3J9XG5cdFx0XHRcdFx0bGFiZWw9e2xhYmVsfVxuXHRcdFx0XHRcdGNoYW5nZT17KE11bHRpVmFsdWVGaWVsZFJ1bnRpbWUuaGFuZGxlQ2hhbmdlIGFzIHVua25vd24gYXMgRnVuY3Rpb24pLmJpbmQoTXVsdGlWYWx1ZUZpZWxkUnVudGltZSwgY29udHJvbGxlcil9XG5cdFx0XHRcdFx0ZmllbGRHcm91cElkcz17dGhpcy5maWVsZEdyb3VwSWRzfVxuXHRcdFx0XHRcdHZhbGlkYXRlRmllbGRHcm91cD17RmllbGRSdW50aW1lLm9uVmFsaWRhdGVGaWVsZEdyb3VwfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGl0ZW1zOiA8TXVsdGlWYWx1ZUZpZWxkSXRlbSBrZXk9e3RoaXMuaXRlbS5rZXl9IGRlc2NyaXB0aW9uPXt0aGlzLml0ZW0uZGVzY3JpcHRpb259IC8+LFxuXHRcdFx0XHRcdFx0Y3VzdG9tRGF0YTogPEN1c3RvbURhdGEga2V5PVwiaW5zZXJ0YWJsZUFuZERlbGV0YWJsZVwiIHZhbHVlPXt0aGlzLmluc2VydGFibGVBbmREZWxldGFibGV9IC8+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9NdWx0aVZhbHVlRmllbGQ+XG5cdFx0XHQpO1xuXG5cdFx0XHRsZXQgZm9ybXdyYXBwZXIgPSBudWxsO1xuXHRcdFx0aWYgKHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdFx0Y29uc3QgYXZhdGFyID0gKFxuXHRcdFx0XHRcdDxBdmF0YXJcblx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuY29sbGFib3JhdGlvbkV4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRpbml0aWFscz17dGhpcy5jb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9ufVxuXHRcdFx0XHRcdFx0ZGlzcGxheVNpemU9XCJDdXN0b21cIlxuXHRcdFx0XHRcdFx0Y3VzdG9tRGlzcGxheVNpemU9XCIxLjVyZW1cIlxuXHRcdFx0XHRcdFx0Y3VzdG9tRm9udFNpemU9XCIwLjhyZW1cIlxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yPXt0aGlzLmNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb259XG5cdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWVIZWxwZXIuc2hvd0NvbGxhYm9yYXRpb25FZGl0VXNlcihhdmF0YXIsIHZpZXcpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQpO1xuXHRcdFx0XHRmb3Jtd3JhcHBlciA9IChcblx0XHRcdFx0XHQ8Rm9ybUVsZW1lbnRXcmFwcGVyPlxuXHRcdFx0XHRcdFx0PEhCb3ggd2lkdGg9XCIxMDAlXCIgcmVuZGVyVHlwZT1cIkJhcmVcIiBhbGlnbkl0ZW1zPVwiRW5kXCI+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0aXRlbXM6IFttdWx0aVZhbHVlRmllbGQsIGF2YXRhcl1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHQ8L0Zvcm1FbGVtZW50V3JhcHBlcj5cblx0XHRcdFx0KTtcblxuXHRcdFx0XHRtdWx0aVZhbHVlRmllbGQ/LmFkZEV2ZW50RGVsZWdhdGUoXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0b25mb2N1c2luOiAoZXZ0OiBqUXVlcnkuRXZlbnQgJiB7IHNyY0NvbnRyb2w6IENvbnRyb2wgfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LnNyY0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdFx0XHRcdFx0XHRjb250cm9sbGVyLmNvbGxhYm9yYXRpdmVEcmFmdD8uaGFuZGxlQ29udGVudEZvY3VzSW4oY3VycmVudE11bHRpVmFsdWVGaWVsZCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKHZhbHVlSGVscENvbnRyb2w/LmdldERvbVJlZigpKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWVIZWxwQ29udHJvbC5hdHRhY2hFdmVudE9uY2UoXCJjbG9zZWRcIiwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3VycmVudE11bHRpVmFsdWVGaWVsZD8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdG9uZm9jdXNvdXQ6IChldnQ6IGpRdWVyeS5FdmVudCAmIHsgc3JjQ29udHJvbDogQ29udHJvbCB9KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGxldCBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gZXZ0LnNyY0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdFx0XHRcdFx0XHRpZiAoY3VycmVudE11bHRpVmFsdWVGaWVsZD8uaXNBPFRva2VuaXplcj4oXCJzYXAubS5Ub2tlbml6ZXJcIikpIHtcblx0XHRcdFx0XHRcdFx0XHRjdXJyZW50TXVsdGlWYWx1ZUZpZWxkID0gY3VycmVudE11bHRpVmFsdWVGaWVsZC5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCkgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGV2ZW50ID0gbmV3IFVJNUV2ZW50KFwiXCIsIGN1cnJlbnRNdWx0aVZhbHVlRmllbGQsIHtcblx0XHRcdFx0XHRcdFx0XHRmaWVsZEdyb3VwSWRzOiBjdXJyZW50TXVsdGlWYWx1ZUZpZWxkLmdldEZpZWxkR3JvdXBJZHMoKVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0Y29udHJvbGxlci5jb2xsYWJvcmF0aXZlRHJhZnQuaGFuZGxlQ29udGVudEZvY3VzT3V0KGV2ZW50KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHRoaXNcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zdCB2YWx1ZUhlbHBDb250cm9sID0gRWxlbWVudC5nZXRFbGVtZW50QnlJZChtdWx0aVZhbHVlRmllbGQuZ2V0VmFsdWVIZWxwKCkpIGFzIE1kY1ZhbHVlSGVscDtcblxuXHRcdFx0XHR2YWx1ZUhlbHBDb250cm9sPy5hdHRhY2hPcGVuZWQoKGV2dDogVmFsdWVIZWxwJE9wZW5lZEV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudE11bHRpVmFsdWVGaWVsZCA9IGV2dC5nZXRTb3VyY2UoKS5nZXRDb250cm9sKCkhO1xuXHRcdFx0XHRcdGNvbnRyb2xsZXIuY29sbGFib3JhdGl2ZURyYWZ0LmhhbmRsZUNvbnRlbnRGb2N1c0luKGN1cnJlbnRNdWx0aVZhbHVlRmllbGQgYXMgTXVsdGlWYWx1ZUZpZWxkKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRtdWx0aVZhbHVlRmllbGQuYWRkQ3VzdG9tRGF0YShuZXcgQ3VzdG9tRGF0YSh7IGtleTogXCJmb3J3YXJkZWRJdGVtc0JpbmRpbmdcIiwgdmFsdWU6IHRoaXMuaXRlbXMgfSkpO1xuXHRcdFx0cmV0dXJuIHRoaXMuY29sbGFib3JhdGlvbkVuYWJsZWQgPyBmb3Jtd3JhcHBlciA6IG11bHRpVmFsdWVGaWVsZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGVyIGZvciB0aGUgcmVhZE9ubHkgcHJvcGVydHkuXG5cdCAqIEBwYXJhbSByZWFkT25seVxuXHQgKi9cblx0c2V0UmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRzdXBlci5zZXRQcm9wZXJ0eShcInJlYWRPbmx5XCIsIHJlYWRPbmx5KTtcblx0XHR0aGlzLnVwZGF0ZUVkaXRNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGVyIGZvciB0aGUgX2lzSW5FZGl0TW9kZSBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIGluRWRpdE1vZGVcblx0ICovXG5cdHNldF9pc0luRWRpdE1vZGUoaW5FZGl0TW9kZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHN1cGVyLnNldFByb3BlcnR5KFwiX2lzSW5FZGl0TW9kZVwiLCBpbkVkaXRNb2RlKTtcblx0XHR0aGlzLnVwZGF0ZUVkaXRNb2RlKCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICogQHJldHVybnMgVGhlIE11bHRpVmFsdWVGaWVsZC5cblx0ICovXG5cdGdldE11bHRpVmFsdWVGaWVsZCgpOiBNdWx0aVZhbHVlRmllbGQge1xuXHRcdGlmICh0aGlzLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKCkpIHtcblx0XHRcdHJldHVybiAoKHRoaXMuY29udGVudCBhcyBGb3JtRWxlbWVudFdyYXBwZXIpLmNvbnRlbnQgYXMgSEJveCkuZ2V0SXRlbXMoKVswXSBhcyBNdWx0aVZhbHVlRmllbGQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQgYXMgTXVsdGlWYWx1ZUZpZWxkO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIGVkaXQgbW9kZSBiYXNlZCBvbiB0aGUgcmVhZE9ubHkgYW5kIF9pc0luRWRpdE1vZGUgcHJvcGVydGllcy5cblx0ICovXG5cdHVwZGF0ZUVkaXRNb2RlKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG11bHRpdmFsdWVGaWVsZCA9IHRoaXMuZ2V0TXVsdGlWYWx1ZUZpZWxkKCk7XG5cdFx0Y29uc3QgaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSA9IG11bHRpdmFsdWVGaWVsZC5kYXRhKFwiaW5zZXJ0YWJsZUFuZERlbGV0YWJsZVwiKTtcblx0XHRpZiAodGhpcy5yZWFkT25seSA9PT0gdHJ1ZSB8fCAhaW5zZXJ0YWJsZUFuZERlbGV0YWJsZSkge1xuXHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRGlzcGxheVwiO1xuXHRcdFx0bXVsdGl2YWx1ZUZpZWxkLnNldEVkaXRNb2RlKFwiRGlzcGxheVwiKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMucmVhZE9ubHkgPT09IGZhbHNlICYmIGluc2VydGFibGVBbmREZWxldGFibGUpIHtcblx0XHRcdC8vcmVhZE9ubHkgZmFsc2UgY2FuIG9ubHkgaGF2ZSBpbXBhY3QgaWYgaXRlbXMgYXJlIHByb3ZpZGVkXG5cdFx0XHRpZiAodGhpcy5faXNJbkVkaXRNb2RlKSB7XG5cdFx0XHRcdHRoaXMuZWRpdE1vZGUgPSBcIkVkaXRhYmxlXCI7XG5cdFx0XHRcdG11bHRpdmFsdWVGaWVsZC5zZXRFZGl0TW9kZShcIkVkaXRhYmxlXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5lZGl0TW9kZSA9IFwiRGlzcGxheVwiO1xuXHRcdFx0XHRtdWx0aXZhbHVlRmllbGQuc2V0RWRpdE1vZGUoXCJEaXNwbGF5XCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBpZiByZWFkT25seSBpcyBub3QgZXhwbGljaXRseSBzZXQgd2Uga2VlcCB0ZWggc3RhbmRhcmQgYmVoYXZpb3Jcblx0fVxuXG5cdC8qKlxuXHQgKiBPbiBCZWZvcmUgcmVuZGVyaW5nIGZyb3dhcmQgdGhlIGFyaWFMYWJlbGxlZEJ5IHRvIHRoZSBtZGMgTXVsdGlWYWx1ZUZpZWxkLlxuXHQgKi9cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudCkge1xuXHRcdFx0Y29uc3QgbXVsdGlWYWx1ZUZpZWxkID0gdGhpcy5nZXRNdWx0aVZhbHVlRmllbGQoKTtcblx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeSA9ICh0aGlzIGFzIHVua25vd24gYXMgRW5oYW5jZVdpdGhVSTU8TXVsdGlWYWx1ZUZpZWxkQmxvY2s+KS5nZXRBcmlhTGFiZWxsZWRCeSgpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IHNJZCBvZiBhQXJpYUxhYmVsbGVkQnkpIHtcblx0XHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5cyA9IG11bHRpVmFsdWVGaWVsZC5nZXRBcmlhTGFiZWxsZWRCeSgpO1xuXHRcdFx0XHRpZiAoIWFBcmlhTGFiZWxsZWRCeXMuaW5jbHVkZXMoc0lkKSkge1xuXHRcdFx0XHRcdG11bHRpVmFsdWVGaWVsZC5hZGRBcmlhTGFiZWxsZWRCeShzSWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUErRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBakJBLElBb0JxQkEsb0JBQW9CLElBQUFDLElBQUEsR0FEeENDLGNBQWMsQ0FBQywrQkFBK0IsQ0FBQyxFQUFBQyxLQUFBLEdBRTlDQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxFQUFBQyxLQUFBLEdBTTlDQyxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNREMsV0FBVyxDQUFDO0lBQ1pGLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBRyxLQUFBLEdBTURELFdBQVcsQ0FBQztJQUNaRixJQUFJLEVBQUU7RUFDUCxDQUFDLENBQUMsRUFBQUksS0FBQSxHQVFETCxRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFLFFBQVE7SUFDZEssUUFBUSxFQUFFO0VBQ1gsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FPRFAsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVLLFFBQVEsRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBTzlDUixRQUFRLENBQUM7SUFDVEMsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFD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
|
|
@@ -173,12 +173,15 @@ export default class MultiValueFieldBlock extends BuildingBlock<Control> {
|
|
|
173
173
|
@property({ type: "boolean" })
|
|
174
174
|
_isInEditMode: boolean | CompiledBindingToolkitExpression = false;
|
|
175
175
|
|
|
176
|
+
@property({ type: "boolean" })
|
|
177
|
+
useParentBindingCache = false;
|
|
178
|
+
|
|
176
179
|
// Computed properties
|
|
177
180
|
|
|
178
181
|
private item!: MultiInputSettings;
|
|
179
182
|
|
|
180
183
|
/**
|
|
181
|
-
* Pointed at dataField
|
|
184
|
+
* Pointed at a dataField. This can be DataFieldDefault from a property.
|
|
182
185
|
*/
|
|
183
186
|
private convertedDataField!: DataField;
|
|
184
187
|
|
|
@@ -285,7 +288,9 @@ export default class MultiValueFieldBlock extends BuildingBlock<Control> {
|
|
|
285
288
|
formatOptions: FormatOptions | undefined
|
|
286
289
|
): MultiInputSettings {
|
|
287
290
|
const { collectionPath, itemDataModelObjectPath } = MultiValueFieldBlock._getPathStructure(propertyDataModelObjectPath);
|
|
288
|
-
const collectionBinding =
|
|
291
|
+
const collectionBinding = this.useParentBindingCache
|
|
292
|
+
? { path: collectionPath, templateShareable: false }
|
|
293
|
+
: { path: collectionPath, parameters: { $$ownRequest: true }, templateShareable: false };
|
|
289
294
|
|
|
290
295
|
const propertyPathOrProperty = propertyDataModelObjectPath.targetObject as PropertyPath | Property;
|
|
291
296
|
const propertyDefinition = isPropertyPathExpression(propertyPathOrProperty)
|