@sapui5/sap.fe.macros 1.139.0 → 1.139.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Chart.js +1 -1
- package/src/sap/fe/macros/Chart.tsx +1 -1
- package/src/sap/fe/macros/RichTextEditor.js +1 -2
- package/src/sap/fe/macros/RichTextEditor.tsx +0 -1
- package/src/sap/fe/macros/ValueHelp.js +4 -28
- package/src/sap/fe/macros/ValueHelp.tsx +2 -42
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +2 -4
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +1 -4
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/Section.js +3 -2
- package/src/sap/fe/macros/controls/Section.ts +2 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +8 -8
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +7 -7
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +2 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +1 -1
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +13 -7
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +12 -8
- package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/filter/FilterUtils.js +7 -1
- package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +5 -3
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +13 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +6 -2
- package/src/sap/fe/macros/form/Form.block.ts +4 -1
- package/src/sap/fe/macros/form/FormDelegate.js +20 -1
- package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +4 -2
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +3 -1
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +5 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +4 -0
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/table/MdcTableTemplate.js +3 -1
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +2 -1
- package/src/sap/fe/macros/table/Table.js +7 -1
- package/src/sap/fe/macros/table/Table.tsx +7 -1
- package/src/sap/fe/macros/table/TableAPI.js +8 -1
- package/src/sap/fe/macros/table/TableAPI.ts +15 -2
- package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
- package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
- package/src/sap/fe/macros/table/TreeTable.js +7 -1
- package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +3 -2
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +10 -3
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +27 -3
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +28 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
|
@@ -124,11 +124,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/viewState/IView
|
|
|
124
124
|
if (!filterBar || !sv) {
|
|
125
125
|
resolve();
|
|
126
126
|
}
|
|
127
|
-
await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
127
|
+
const appliedCondition = await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
128
|
+
const selectionVariantWasApplied = Array.isArray(appliedCondition) && appliedCondition.length > 0;
|
|
128
129
|
let bPreventInitialSearch = false;
|
|
129
130
|
const variantManagement = this._getFilterBarVM(view);
|
|
130
131
|
if (filterBar) {
|
|
131
|
-
if (navigationParameter.navigationType !== NavType.initial && reqStdVariant || !variantManagement && view.getViewData().initialLoad === InitialLoadMode.Enabled || controller._shouldAutoTriggerSearch(variantManagement)) {
|
|
132
|
+
if (navigationParameter.navigationType !== NavType.initial && reqStdVariant && selectionVariantWasApplied || !variantManagement && view.getViewData().initialLoad === InitialLoadMode.Enabled || controller._shouldAutoTriggerSearch(variantManagement)) {
|
|
132
133
|
const filterBarAPI = filterBar.getParent();
|
|
133
134
|
filterBarAPI.triggerSearch();
|
|
134
135
|
} else {
|
|
@@ -156,4 +157,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/controllerextensions/viewState/IView
|
|
|
156
157
|
_exports = FilterBarAPIStateHandler;
|
|
157
158
|
return _exports;
|
|
158
159
|
}, false);
|
|
159
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJCYXJBUElTdGF0ZUhhbmRsZXIiLCJfSVZpZXdTdGF0ZUNvbnRyaWJ1dG8iLCJhcHBseSIsImFyZ3VtZW50cyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseUxlZ2FjeVN0YXRlIiwiZ2V0Q29udHJvbFN0YXRlIiwiX25hdlBhcmFtZXRlcnMiLCJzaG91bGRBcHBseURpZmZTdGF0ZSIsInNraXBNZXJnZSIsImZpbHRlckJhciIsImNvbnRlbnQiLCJmaWx0ZXJCYXJTdGF0ZSIsImNvbnRyb2xTdGF0ZSIsImlubmVyU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYXBwbHlTdGF0ZSIsIm5hdlBhcmFtZXRlciIsIm5hdmlnYXRpb25UeXBlIiwiTmF2VHlwZSIsImh5YnJpZCIsInVuZGVmaW5lZCIsInhBcHBTdGF0ZUZpbHRlcnMiLCJjb252ZXJ0U2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzIiwic2VsZWN0aW9uVmFyaWFudCIsIm1lcmdlZEZ1bGxTdGF0ZSIsImZpbHRlciIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY2xlYXJFZGl0RmlsdGVyIiwiU3RhdGVVdGlsIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZGlmZlN0YXRlIiwiZXJyb3IiLCJMb2ciLCJfaW5pdGlhbFN0YXRlUHJvbWlzZSIsInJlc29sdmUiLCJyZXRyaWV2ZVN0YXRlIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwicHJvcGVydGllc0luZm8iLCJnZXRQcm9wZXJ0eUluZm9TZXQiLCJwcm9wZXJ0eUluZm8iLCJwYXRoIiwicmVtb3ZlRnJvbUFwcFN0YXRlIiwiZm9yRWFjaCIsIlByb3BlcnR5SW5mbyIsInNldEluaXRpYWxTdGF0ZSIsImluaXRpYWxDb250cm9sU3RhdGUiLCJlIiwiYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm5hdmlnYXRpb25QYXJhbWV0ZXIiLCJQcm9taXNlIiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJjb21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwidmFyaWFudFN0YXR1cyIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImZpbHRlclZhcmlhbnRBcHBsaWVkIiwiZ2V0Q29udGVudCIsInN2IiwicmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJyZXFTdGRWYXJpYW50IiwiX2FwcGx5U2VsZWN0aW9uVmFyaWFudCIsImJQcmV2ZW50SW5pdGlhbFNlYXJjaCIsInZhcmlhbnRNYW5hZ2VtZW50IiwiX2dldEZpbHRlckJhclZNIiwiaW5pdGlhbCIsImdldFZpZXdEYXRhIiwiaW5pdGlhbExvYWQiLCJJbml0aWFsTG9hZE1vZGUiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInNldFByb3BlcnR5IiwiX2VuYWJsZUZpbHRlckJhciIsIndhcm5pbmciLCJJVmlld1N0YXRlQ29udHJpYnV0b3JNaXhpbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyQmFyQVBJU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUsIExlZ2FjeUZpbHRlckJhclN0YXRlLCBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IElWaWV3U3RhdGVDb250cmlidXRvck1peGluIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yTWl4aW5cIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgSW5pdGlhbExvYWRNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvUHJvcGVydHlJbmZvXCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgeyBOYXZUeXBlIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCIuLi9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyQmFyU3RhdGUgfSBmcm9tIFwiLi4vRmlsdGVyQmFyQVBJXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckJhckFQSVN0YXRlSGFuZGxlciBleHRlbmRzIElWaWV3U3RhdGVDb250cmlidXRvck1peGluPEZpbHRlckJhclN0YXRlPiB7XG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0dGhpczogRmlsdGVyQmFyQVBJLFxuXHRcdGdldENvbnRyb2xTdGF0ZTogKGNvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IENvbnRyb2xTdGF0ZSxcblx0XHRfbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2hvdWxkQXBwbHlEaWZmU3RhdGU/OiBib29sZWFuLFxuXHRcdHNraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5jb250ZW50O1xuXHRcdGNvbnN0IGZpbHRlckJhclN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGZpbHRlckJhcikgYXMgeyBpbml0aWFsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTsgZnVsbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGUgfTtcblx0XHRjb25zdCBjb250cm9sU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cblx0XHRpZiAoZmlsdGVyQmFyU3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlID0ge1xuXHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5mdWxsU3RhdGVcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5pdGlhbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5pbml0aWFsU3RhdGVcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSAmJiBPYmplY3Qua2V5cyhjb250cm9sU3RhdGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuYXBwbHlTdGF0ZShjb250cm9sU3RhdGUgYXMgb2JqZWN0LCBfbmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUsIHNraXBNZXJnZSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgYXBwbHlTdGF0ZShcblx0XHR0aGlzOiBGaWx0ZXJCYXJBUEksXG5cdFx0Y29udHJvbFN0YXRlOiBGaWx0ZXJCYXJTdGF0ZSxcblx0XHRuYXZQYXJhbWV0ZXI/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdHNob3VsZEFwcGx5RGlmZlN0YXRlPzogYm9vbGVhbixcblx0XHRza2lwTWVyZ2U/OiBib29sZWFuXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY29udHJvbFN0YXRlICYmIG5hdlBhcmFtZXRlcikge1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uVHlwZSA9IG5hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZTtcblx0XHRcdFx0Ly9XaGVuIG5hdmlnYXRpb24gdHlwZSBpcyBoeWJyaWQsIHdlIG92ZXJyaWRlIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyBpbiBJQXBwU3RhdGUgd2l0aCBTViByZWNlaXZlZCBmcm9tIFhhcHBTdGF0ZVxuXHRcdFx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUuaHlicmlkICYmIGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGNvbnN0IHhBcHBTdGF0ZUZpbHRlcnMgPSBhd2FpdCB0aGlzLmNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0XHRcdFx0XHRuYXZQYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudCBhcyBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRjb25zdCBtZXJnZWRGdWxsU3RhdGUgPSB7XG5cdFx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlLFxuXHRcdFx0XHRcdFx0ZmlsdGVyOiB7XG5cdFx0XHRcdFx0XHRcdC4uLmNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUuZmlsdGVyLFxuXHRcdFx0XHRcdFx0XHQuLi54QXBwU3RhdGVGaWx0ZXJzXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQvL3doZW4gbmF2aWdhdGluZyBmcm9tIGNhcmQsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKSBhbmQgdGhlbiBhcHBseSB0aGUgc3RhdGVcblx0XHRcdFx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKHRoaXMuY29udGVudCwgeyBjbGVhckVkaXRGaWx0ZXI6IHRydWUgfSk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBtZXJnZWRGdWxsU3RhdGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNob3VsZEFwcGx5RGlmZlN0YXRlKSB7XG5cdFx0XHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBvYmplY3QgPSBhd2FpdCBTdGF0ZVV0aWwuZGlmZlN0YXRlKFxuXHRcdFx0XHRcdFx0dGhpcy5jb250ZW50LFxuXHRcdFx0XHRcdFx0Y29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0XHRjb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlIGFzIG9iamVjdFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBkaWZmU3RhdGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHNraXBNZXJnZSkge1xuXHRcdFx0XHRcdC8vc2tpcE1lcmdlIGlzIHRydWUgd2hlbiBjb21pbmcgZnJvbSB0aGUgZHluYW1pYyB0aWxlLCBpbiB0aGlzIGNhc2UsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKVxuXHRcdFx0XHRcdGF3YWl0IHRoaXMuX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnModGhpcy5jb250ZW50LCB7IGNsZWFyRWRpdEZpbHRlcjogdHJ1ZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGNvbnRyb2xTdGF0ZT8uaW5uZXJTdGF0ZT8uZnVsbFN0YXRlID8/IGNvbnRyb2xTdGF0ZSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsU3RhdGVQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyByZXRyaWV2ZVN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8RmlsdGVyQmFyU3RhdGUgfCBudWxsPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cdFx0ZmlsdGVyQmFyU3RhdGUuaW5uZXJTdGF0ZSA9IHRoaXMuZ2V0Q29udHJvbFN0YXRlKGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50KSkgYXMge1xuXHRcdFx0aW5pdGlhbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGU7XG5cdFx0XHRmdWxsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTtcblx0XHR9O1xuXHRcdC8vIHJlbW92ZSBzZW5zaXRpdmUgb3IgdmlldyBzdGF0ZSBpcnJlbGV2YW50IGZpZWxkc1xuXHRcdGNvbnN0IHByb3BlcnRpZXNJbmZvID0gdGhpcy5jb250ZW50LmdldFByb3BlcnR5SW5mb1NldCgpO1xuXHRcdGNvbnN0IGZpbHRlciA9IGZpbHRlckJhclN0YXRlLmlubmVyU3RhdGU/LmZpbHRlciB8fCB7fTtcblx0XHRwcm9wZXJ0aWVzSW5mb1xuXHRcdFx0LmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gJiB7IHJlbW92ZUZyb21BcHBTdGF0ZT86IGJvb2xlYW4gfSkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdHByb3BlcnR5SW5mby5wYXRoICYmXG5cdFx0XHRcdFx0ZmlsdGVyW3Byb3BlcnR5SW5mby5wYXRoXSAmJlxuXHRcdFx0XHRcdChwcm9wZXJ0eUluZm8ucmVtb3ZlRnJvbUFwcFN0YXRlIHx8IGZpbHRlcltwcm9wZXJ0eUluZm8ucGF0aF0ubGVuZ3RoID09PSAwKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChQcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbykge1xuXHRcdFx0XHRpZiAoUHJvcGVydHlJbmZvLnBhdGgpIHtcblx0XHRcdFx0XHRkZWxldGUgZmlsdGVyW1Byb3BlcnR5SW5mby5wYXRoXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlckJhclN0YXRlO1xuXHR9XG5cblx0YXN5bmMgc2V0SW5pdGlhbFN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0dGhpcy5pbml0aWFsQ29udHJvbFN0YXRlID0gaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIGFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnModGhpczogRmlsdGVyQmFyQVBJLCBuYXZpZ2F0aW9uUGFyYW1ldGVyOiBOYXZpZ2F0aW9uUGFyYW1ldGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0XHRcdGNvbnN0IGNvbXBvbmVudERhdGEgPSBhcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdFx0XHRjb25zdCBzdGFydHVwUGFyYW1ldGVycyA9IChjb21wb25lbnREYXRhICYmIGNvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdFx0XHRjb25zdCB2YXJpYW50U3RhdHVzID0gYXdhaXQgdGhpcy5oYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXMoc3RhcnR1cFBhcmFtZXRlcnMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblx0XHRcdFx0bGV0IGZpbHRlclZhcmlhbnRBcHBsaWVkID0gZmFsc2U7XG5cdFx0XHRcdGlmICh2YXJpYW50U3RhdHVzICYmICh2YXJpYW50U3RhdHVzIGFzIFtdKT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdC8vIGNoZWNrIGlmIGZpbHRlciBiYXIgdmFyaWFudCBpcyBhcHBsaWVkIG9yIG5vdC5cblx0XHRcdFx0XHRpZiAoKHZhcmlhbnRTdGF0dXMgYXMgYm9vbGVhbltdKVswXSA9PT0gdHJ1ZSB8fCAodmFyaWFudFN0YXR1cyBhcyBib29sZWFuW10pWzFdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgdmFyaWFudCBmcm9tIFVSTCBkb2VzIG5vdCBleGlzdCBvciBkaWQgbm90IGFwcGx5IHByb3Blcmx5IHRoZW4gYXBwbHkgdG8gTFIgZWl0aGVyIGRlZmF1bHQgdmFyaWFudCBvciBzdGFuZGFyZCB2YXJpYW50IHJlcXVpcmVkLlxuXHRcdFx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRcdFx0Y29uc3QgeyBzZWxlY3Rpb25WYXJpYW50OiBzdiwgcmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6IHJlcVN0ZFZhcmlhbnQgPSBmYWxzZSB9ID0gbmF2aWdhdGlvblBhcmFtZXRlcjtcblxuXHRcdFx0XHRpZiAoIWZpbHRlckJhciB8fCAhc3YpIHtcblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YXdhaXQgdGhpcy5fYXBwbHlTZWxlY3Rpb25WYXJpYW50KHZpZXcsIG5hdmlnYXRpb25QYXJhbWV0ZXIsIGZpbHRlclZhcmlhbnRBcHBsaWVkKTtcblx0XHRcdFx0bGV0IGJQcmV2ZW50SW5pdGlhbFNlYXJjaCA9IGZhbHNlO1xuXHRcdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IHRoaXMuX2dldEZpbHRlckJhclZNKHZpZXcpIGFzIFZhcmlhbnRNYW5hZ2VtZW50O1xuXHRcdFx0XHRpZiAoZmlsdGVyQmFyKSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KG5hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUgIT09IE5hdlR5cGUuaW5pdGlhbCAmJiByZXFTdGRWYXJpYW50KSB8fFxuXHRcdFx0XHRcdFx0KCF2YXJpYW50TWFuYWdlbWVudCAmJiB2aWV3LmdldFZpZXdEYXRhKCkuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5FbmFibGVkKSB8fFxuXHRcdFx0XHRcdFx0KGNvbnRyb2xsZXIgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaCh2YXJpYW50TWFuYWdlbWVudClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IGZpbHRlckJhci5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0XHRcdFx0XHRmaWx0ZXJCYXJBUEkudHJpZ2dlclNlYXJjaCgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRiUHJldmVudEluaXRpYWxTZWFyY2ggPSB0aGlzLl9wcmV2ZW50SW5pdGlhbFNlYXJjaCh2YXJpYW50TWFuYWdlbWVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vY29sbGFwc2Ugb3IgZXhwYW5kIHNoYWxsIGJlIGF2YWlsYWJsZSBvbmx5IGZvciBub24tZGVza3RvcCBzeXN0ZW1zXG5cdFx0XHRcdFx0aWYgKCFEZXZpY2Uuc3lzdGVtLmRlc2t0b3ApIHtcblx0XHRcdFx0XHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCA9IHRoaXMuaXNTZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkKG5hdmlnYXRpb25QYXJhbWV0ZXIubmF2aWdhdGlvblR5cGUpO1xuXHRcdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkXCIsIHNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl9lbmFibGVGaWx0ZXJCYXIoZmlsdGVyQmFyIGFzIEZpbHRlckJhciwgYlByZXZlbnRJbml0aWFsU2VhcmNoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRMb2cud2FybmluZyhcIkRpZCBub3QgZmluaXNoIGFwcGx5aW5nIG5hdmlnYXRpb24gcGFyYW1ldGVycyAtIEZpbHRlciBiYXIgbm90IGZvdW5kLlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHRMb2cud2FybmluZyhcIkNvdWxkIG5vdCBhcHBseSBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMuXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztNQWlCcUJBLHdCQUF3QiwwQkFBQUMscUJBQUE7SUFBQSxTQUFBRCx5QkFBQTtNQUFBLE9BQUFDLHFCQUFBLENBQUFDLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0lBQUFDLFFBQUEsR0FBQUosd0JBQUE7SUFBQUssY0FBQSxDQUFBTCx3QkFBQSxFQUFBQyxxQkFBQTtJQUFBLElBQUFLLE1BQUEsR0FBQU4sd0JBQUEsQ0FBQU8sU0FBQTtJQUFBRCxNQUFBLENBQ3RDRSxnQkFBZ0IsR0FBdEIsZUFBTUEsZ0JBQWdCQSxDQUVyQkMsZUFBeUQsRUFDekRDLGNBQW9DLEVBQ3BDQyxvQkFBOEIsRUFDOUJDLFNBQW1CLEVBQ0g7TUFDaEIsTUFBTUMsU0FBUyxHQUFHLElB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
|
|
160
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJCYXJBUElTdGF0ZUhhbmRsZXIiLCJfSVZpZXdTdGF0ZUNvbnRyaWJ1dG8iLCJhcHBseSIsImFyZ3VtZW50cyIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseUxlZ2FjeVN0YXRlIiwiZ2V0Q29udHJvbFN0YXRlIiwiX25hdlBhcmFtZXRlcnMiLCJzaG91bGRBcHBseURpZmZTdGF0ZSIsInNraXBNZXJnZSIsImZpbHRlckJhciIsImNvbnRlbnQiLCJmaWx0ZXJCYXJTdGF0ZSIsImNvbnRyb2xTdGF0ZSIsImlubmVyU3RhdGUiLCJmdWxsU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYXBwbHlTdGF0ZSIsIm5hdlBhcmFtZXRlciIsIm5hdmlnYXRpb25UeXBlIiwiTmF2VHlwZSIsImh5YnJpZCIsInVuZGVmaW5lZCIsInhBcHBTdGF0ZUZpbHRlcnMiLCJjb252ZXJ0U2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzIiwic2VsZWN0aW9uVmFyaWFudCIsIm1lcmdlZEZ1bGxTdGF0ZSIsImZpbHRlciIsIl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zIiwiY2xlYXJFZGl0RmlsdGVyIiwiU3RhdGVVdGlsIiwiYXBwbHlFeHRlcm5hbFN0YXRlIiwiZGlmZlN0YXRlIiwiZXJyb3IiLCJMb2ciLCJfaW5pdGlhbFN0YXRlUHJvbWlzZSIsInJlc29sdmUiLCJyZXRyaWV2ZVN0YXRlIiwicmV0cmlldmVFeHRlcm5hbFN0YXRlIiwicHJvcGVydGllc0luZm8iLCJnZXRQcm9wZXJ0eUluZm9TZXQiLCJwcm9wZXJ0eUluZm8iLCJwYXRoIiwicmVtb3ZlRnJvbUFwcFN0YXRlIiwiZm9yRWFjaCIsIlByb3BlcnR5SW5mbyIsInNldEluaXRpYWxTdGF0ZSIsImluaXRpYWxDb250cm9sU3RhdGUiLCJlIiwiYXBwbHlOYXZpZ2F0aW9uUGFyYW1ldGVycyIsIm5hdmlnYXRpb25QYXJhbWV0ZXIiLCJQcm9taXNlIiwidmlldyIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0VmlldyIsImNvbnRyb2xsZXIiLCJhcHBDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJjb21wb25lbnREYXRhIiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwidmFyaWFudFN0YXR1cyIsImhhbmRsZVZhcmlhbnRJZFBhc3NlZFZpYVVSTFBhcmFtcyIsImZpbHRlclZhcmlhbnRBcHBsaWVkIiwiZ2V0Q29udGVudCIsInN2IiwicmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQiLCJyZXFTdGRWYXJpYW50IiwiYXBwbGllZENvbmRpdGlvbiIsIl9hcHBseVNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50V2FzQXBwbGllZCIsIkFycmF5IiwiaXNBcnJheSIsImJQcmV2ZW50SW5pdGlhbFNlYXJjaCIsInZhcmlhbnRNYW5hZ2VtZW50IiwiX2dldEZpbHRlckJhclZNIiwiaW5pdGlhbCIsImdldFZpZXdEYXRhIiwiaW5pdGlhbExvYWQiLCJJbml0aWFsTG9hZE1vZGUiLCJFbmFibGVkIiwiX3Nob3VsZEF1dG9UcmlnZ2VyU2VhcmNoIiwiZmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50IiwidHJpZ2dlclNlYXJjaCIsIl9wcmV2ZW50SW5pdGlhbFNlYXJjaCIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsImlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZCIsInNldFByb3BlcnR5IiwiX2VuYWJsZUZpbHRlckJhciIsIndhcm5pbmciLCJJVmlld1N0YXRlQ29udHJpYnV0b3JNaXhpbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyQmFyQVBJU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb250cm9sU3RhdGUsIExlZ2FjeUZpbHRlckJhclN0YXRlLCBOYXZpZ2F0aW9uUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IElWaWV3U3RhdGVDb250cmlidXRvck1peGluIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yTWl4aW5cIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgSW5pdGlhbExvYWRNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvUHJvcGVydHlJbmZvXCI7XG5pbXBvcnQgdHlwZSBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgeyBOYXZUeXBlIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgVmFyaWFudE1hbmFnZW1lbnQgZnJvbSBcInNhcC91aS9mbC92YXJpYW50cy9WYXJpYW50TWFuYWdlbWVudFwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCIuLi9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyQmFyU3RhdGUgfSBmcm9tIFwiLi4vRmlsdGVyQmFyQVBJXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckJhckFQSVN0YXRlSGFuZGxlciBleHRlbmRzIElWaWV3U3RhdGVDb250cmlidXRvck1peGluPEZpbHRlckJhclN0YXRlPiB7XG5cdGFzeW5jIGFwcGx5TGVnYWN5U3RhdGUoXG5cdFx0dGhpczogRmlsdGVyQmFyQVBJLFxuXHRcdGdldENvbnRyb2xTdGF0ZTogKGNvbnRyb2w6IE1hbmFnZWRPYmplY3QpID0+IENvbnRyb2xTdGF0ZSxcblx0XHRfbmF2UGFyYW1ldGVycz86IE5hdmlnYXRpb25QYXJhbWV0ZXIsXG5cdFx0c2hvdWxkQXBwbHlEaWZmU3RhdGU/OiBib29sZWFuLFxuXHRcdHNraXBNZXJnZT86IGJvb2xlYW5cblx0KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyID0gdGhpcy5jb250ZW50O1xuXHRcdGNvbnN0IGZpbHRlckJhclN0YXRlID0gZ2V0Q29udHJvbFN0YXRlKGZpbHRlckJhcikgYXMgeyBpbml0aWFsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTsgZnVsbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGUgfTtcblx0XHRjb25zdCBjb250cm9sU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cblx0XHRpZiAoZmlsdGVyQmFyU3RhdGUpIHtcblx0XHRcdGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlID0ge1xuXHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZSxcblx0XHRcdFx0ZnVsbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmZ1bGxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5mdWxsU3RhdGVcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5pdGlhbFN0YXRlOiB7XG5cdFx0XHRcdFx0Li4uY29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSxcblx0XHRcdFx0XHQuLi5maWx0ZXJCYXJTdGF0ZS5pbml0aWFsU3RhdGVcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0aWYgKGNvbnRyb2xTdGF0ZSAmJiBPYmplY3Qua2V5cyhjb250cm9sU3RhdGUpLmxlbmd0aCA+IDApIHtcblx0XHRcdGF3YWl0IHRoaXMuYXBwbHlTdGF0ZShjb250cm9sU3RhdGUgYXMgb2JqZWN0LCBfbmF2UGFyYW1ldGVycywgc2hvdWxkQXBwbHlEaWZmU3RhdGUsIHNraXBNZXJnZSk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgYXBwbHlTdGF0ZShcblx0XHR0aGlzOiBGaWx0ZXJCYXJBUEksXG5cdFx0Y29udHJvbFN0YXRlOiBGaWx0ZXJCYXJTdGF0ZSxcblx0XHRuYXZQYXJhbWV0ZXI/OiBOYXZpZ2F0aW9uUGFyYW1ldGVyLFxuXHRcdHNob3VsZEFwcGx5RGlmZlN0YXRlPzogYm9vbGVhbixcblx0XHRza2lwTWVyZ2U/OiBib29sZWFuXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRpZiAoY29udHJvbFN0YXRlICYmIG5hdlBhcmFtZXRlcikge1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uVHlwZSA9IG5hdlBhcmFtZXRlci5uYXZpZ2F0aW9uVHlwZTtcblx0XHRcdFx0Ly9XaGVuIG5hdmlnYXRpb24gdHlwZSBpcyBoeWJyaWQsIHdlIG92ZXJyaWRlIHRoZSBmaWx0ZXIgY29uZGl0aW9ucyBpbiBJQXBwU3RhdGUgd2l0aCBTViByZWNlaXZlZCBmcm9tIFhhcHBTdGF0ZVxuXHRcdFx0XHRpZiAobmF2aWdhdGlvblR5cGUgPT09IE5hdlR5cGUuaHlicmlkICYmIGNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGNvbnN0IHhBcHBTdGF0ZUZpbHRlcnMgPSBhd2FpdCB0aGlzLmNvbnZlcnRTZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMoXG5cdFx0XHRcdFx0XHRuYXZQYXJhbWV0ZXIuc2VsZWN0aW9uVmFyaWFudCBhcyBTZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRjb25zdCBtZXJnZWRGdWxsU3RhdGUgPSB7XG5cdFx0XHRcdFx0XHQuLi5jb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlLFxuXHRcdFx0XHRcdFx0ZmlsdGVyOiB7XG5cdFx0XHRcdFx0XHRcdC4uLmNvbnRyb2xTdGF0ZS5pbm5lclN0YXRlPy5mdWxsU3RhdGUuZmlsdGVyLFxuXHRcdFx0XHRcdFx0XHQuLi54QXBwU3RhdGVGaWx0ZXJzXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHQvL3doZW4gbmF2aWdhdGluZyBmcm9tIGNhcmQsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKSBhbmQgdGhlbiBhcHBseSB0aGUgc3RhdGVcblx0XHRcdFx0XHRhd2FpdCB0aGlzLl9jbGVhckZpbHRlclZhbHVlc1dpdGhPcHRpb25zKHRoaXMuY29udGVudCwgeyBjbGVhckVkaXRGaWx0ZXI6IHRydWUgfSk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBtZXJnZWRGdWxsU3RhdGUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNob3VsZEFwcGx5RGlmZlN0YXRlKSB7XG5cdFx0XHRcdFx0Y29uc3QgZGlmZlN0YXRlOiBvYmplY3QgPSBhd2FpdCBTdGF0ZVV0aWwuZGlmZlN0YXRlKFxuXHRcdFx0XHRcdFx0dGhpcy5jb250ZW50LFxuXHRcdFx0XHRcdFx0Y29udHJvbFN0YXRlLmlubmVyU3RhdGU/LmluaXRpYWxTdGF0ZSBhcyBvYmplY3QsXG5cdFx0XHRcdFx0XHRjb250cm9sU3RhdGUuaW5uZXJTdGF0ZT8uZnVsbFN0YXRlIGFzIG9iamVjdFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cmV0dXJuIGF3YWl0IFN0YXRlVXRpbC5hcHBseUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50LCBkaWZmU3RhdGUpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHNraXBNZXJnZSkge1xuXHRcdFx0XHRcdC8vc2tpcE1lcmdlIGlzIHRydWUgd2hlbiBjb21pbmcgZnJvbSB0aGUgZHluYW1pYyB0aWxlLCBpbiB0aGlzIGNhc2UsIHJlbW92ZSBhbGwgZXhpc3RpbmcgZmlsdGVycyB2YWx1ZXMgKGRlZmF1bHQgb3Igb3RoZXJ3aXNlKVxuXHRcdFx0XHRcdGF3YWl0IHRoaXMuX2NsZWFyRmlsdGVyVmFsdWVzV2l0aE9wdGlvbnModGhpcy5jb250ZW50LCB7IGNsZWFyRWRpdEZpbHRlcjogdHJ1ZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYXdhaXQgU3RhdGVVdGlsLmFwcGx5RXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQsIGNvbnRyb2xTdGF0ZT8uaW5uZXJTdGF0ZT8uZnVsbFN0YXRlID8/IGNvbnRyb2xTdGF0ZSk7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdExvZy5lcnJvcihlcnJvciBhcyBzdHJpbmcpO1xuXHRcdH0gZmluYWxseSB7XG5cdFx0XHR0aGlzLl9pbml0aWFsU3RhdGVQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyByZXRyaWV2ZVN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8RmlsdGVyQmFyU3RhdGUgfCBudWxsPiB7XG5cdFx0Y29uc3QgZmlsdGVyQmFyU3RhdGU6IEZpbHRlckJhclN0YXRlID0ge307XG5cdFx0ZmlsdGVyQmFyU3RhdGUuaW5uZXJTdGF0ZSA9IHRoaXMuZ2V0Q29udHJvbFN0YXRlKGF3YWl0IFN0YXRlVXRpbC5yZXRyaWV2ZUV4dGVybmFsU3RhdGUodGhpcy5jb250ZW50KSkgYXMge1xuXHRcdFx0aW5pdGlhbFN0YXRlPzogTGVnYWN5RmlsdGVyQmFyU3RhdGU7XG5cdFx0XHRmdWxsU3RhdGU/OiBMZWdhY3lGaWx0ZXJCYXJTdGF0ZTtcblx0XHR9O1xuXHRcdC8vIHJlbW92ZSBzZW5zaXRpdmUgb3IgdmlldyBzdGF0ZSBpcnJlbGV2YW50IGZpZWxkc1xuXHRcdGNvbnN0IHByb3BlcnRpZXNJbmZvID0gdGhpcy5jb250ZW50LmdldFByb3BlcnR5SW5mb1NldCgpO1xuXHRcdGNvbnN0IGZpbHRlciA9IGZpbHRlckJhclN0YXRlLmlubmVyU3RhdGU/LmZpbHRlciB8fCB7fTtcblx0XHRwcm9wZXJ0aWVzSW5mb1xuXHRcdFx0LmZpbHRlcihmdW5jdGlvbiAocHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8gJiB7IHJlbW92ZUZyb21BcHBTdGF0ZT86IGJvb2xlYW4gfSkge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCAmJlxuXHRcdFx0XHRcdHByb3BlcnR5SW5mby5wYXRoICYmXG5cdFx0XHRcdFx0ZmlsdGVyW3Byb3BlcnR5SW5mby5wYXRoXSAmJlxuXHRcdFx0XHRcdChwcm9wZXJ0eUluZm8ucmVtb3ZlRnJvbUFwcFN0YXRlIHx8IGZpbHRlcltwcm9wZXJ0eUluZm8ucGF0aF0ubGVuZ3RoID09PSAwKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC5mb3JFYWNoKGZ1bmN0aW9uIChQcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbykge1xuXHRcdFx0XHRpZiAoUHJvcGVydHlJbmZvLnBhdGgpIHtcblx0XHRcdFx0XHRkZWxldGUgZmlsdGVyW1Byb3BlcnR5SW5mby5wYXRoXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIGZpbHRlckJhclN0YXRlO1xuXHR9XG5cblx0YXN5bmMgc2V0SW5pdGlhbFN0YXRlKHRoaXM6IEZpbHRlckJhckFQSSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQ29udHJvbFN0YXRlID0gYXdhaXQgU3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZSh0aGlzLmNvbnRlbnQpO1xuXHRcdFx0dGhpcy5pbml0aWFsQ29udHJvbFN0YXRlID0gaW5pdGlhbENvbnRyb2xTdGF0ZTtcblx0XHR9IGNhdGNoIChlOiB1bmtub3duKSB7XG5cdFx0XHRMb2cuZXJyb3IoZSBhcyBzdHJpbmcpO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIGFwcGx5TmF2aWdhdGlvblBhcmFtZXRlcnModGhpczogRmlsdGVyQmFyQVBJLCBuYXZpZ2F0aW9uUGFyYW1ldGVyOiBOYXZpZ2F0aW9uUGFyYW1ldGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2aWV3ID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy5nZXRWaWV3KCk7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk7XG5cdFx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IGNvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0XHRcdGNvbnN0IGNvbXBvbmVudERhdGEgPSBhcHBDb21wb25lbnQuZ2V0Q29tcG9uZW50RGF0YSgpO1xuXHRcdFx0XHRjb25zdCBzdGFydHVwUGFyYW1ldGVycyA9IChjb21wb25lbnREYXRhICYmIGNvbXBvbmVudERhdGEuc3RhcnR1cFBhcmFtZXRlcnMpIHx8IHt9O1xuXHRcdFx0XHRjb25zdCB2YXJpYW50U3RhdHVzID0gYXdhaXQgdGhpcy5oYW5kbGVWYXJpYW50SWRQYXNzZWRWaWFVUkxQYXJhbXMoc3RhcnR1cFBhcmFtZXRlcnMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblx0XHRcdFx0bGV0IGZpbHRlclZhcmlhbnRBcHBsaWVkID0gZmFsc2U7XG5cdFx0XHRcdGlmICh2YXJpYW50U3RhdHVzICYmICh2YXJpYW50U3RhdHVzIGFzIFtdKT8ubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdC8vIGNoZWNrIGlmIGZpbHRlciBiYXIgdmFyaWFudCBpcyBhcHBsaWVkIG9yIG5vdC5cblx0XHRcdFx0XHRpZiAoKHZhcmlhbnRTdGF0dXMgYXMgYm9vbGVhbltdKVswXSA9PT0gdHJ1ZSB8fCAodmFyaWFudFN0YXR1cyBhcyBib29sZWFuW10pWzFdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXJWYXJpYW50QXBwbGllZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gaWYgdmFyaWFudCBmcm9tIFVSTCBkb2VzIG5vdCBleGlzdCBvciBkaWQgbm90IGFwcGx5IHByb3Blcmx5IHRoZW4gYXBwbHkgdG8gTFIgZWl0aGVyIGRlZmF1bHQgdmFyaWFudCBvciBzdGFuZGFyZCB2YXJpYW50IHJlcXVpcmVkLlxuXHRcdFx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLmdldENvbnRlbnQoKTtcblx0XHRcdFx0Y29uc3QgeyBzZWxlY3Rpb25WYXJpYW50OiBzdiwgcmVxdWlyZXNTdGFuZGFyZFZhcmlhbnQ6IHJlcVN0ZFZhcmlhbnQgPSBmYWxzZSB9ID0gbmF2aWdhdGlvblBhcmFtZXRlcjtcblxuXHRcdFx0XHRpZiAoIWZpbHRlckJhciB8fCAhc3YpIHtcblx0XHRcdFx0XHRyZXNvbHZlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgYXBwbGllZENvbmRpdGlvbiA9IGF3YWl0IHRoaXMuX2FwcGx5U2VsZWN0aW9uVmFyaWFudCh2aWV3LCBuYXZpZ2F0aW9uUGFyYW1ldGVyLCBmaWx0ZXJWYXJpYW50QXBwbGllZCk7XG5cdFx0XHRcdGNvbnN0IHNlbGVjdGlvblZhcmlhbnRXYXNBcHBsaWVkID0gQXJyYXkuaXNBcnJheShhcHBsaWVkQ29uZGl0aW9uKSAmJiBhcHBsaWVkQ29uZGl0aW9uLmxlbmd0aCA+IDA7XG5cdFx0XHRcdGxldCBiUHJldmVudEluaXRpYWxTZWFyY2ggPSBmYWxzZTtcblx0XHRcdFx0Y29uc3QgdmFyaWFudE1hbmFnZW1lbnQgPSB0aGlzLl9nZXRGaWx0ZXJCYXJWTSh2aWV3KSBhcyBWYXJpYW50TWFuYWdlbWVudDtcblx0XHRcdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdChuYXZpZ2F0aW9uUGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlICE9PSBOYXZUeXBlLmluaXRpYWwgJiYgcmVxU3RkVmFyaWFudCAmJiBzZWxlY3Rpb25WYXJpYW50V2FzQXBwbGllZCkgfHxcblx0XHRcdFx0XHRcdCghdmFyaWFudE1hbmFnZW1lbnQgJiYgdmlldy5nZXRWaWV3RGF0YSgpLmluaXRpYWxMb2FkID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZCkgfHxcblx0XHRcdFx0XHRcdChjb250cm9sbGVyIGFzIExpc3RSZXBvcnRDb250cm9sbGVyKS5fc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2godmFyaWFudE1hbmFnZW1lbnQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSBmaWx0ZXJCYXIuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdFx0XHRcdFx0ZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YlByZXZlbnRJbml0aWFsU2VhcmNoID0gdGhpcy5fcHJldmVudEluaXRpYWxTZWFyY2godmFyaWFudE1hbmFnZW1lbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvL2NvbGxhcHNlIG9yIGV4cGFuZCBzaGFsbCBiZSBhdmFpbGFibGUgb25seSBmb3Igbm9uLWRlc2t0b3Agc3lzdGVtc1xuXHRcdFx0XHRcdGlmICghRGV2aWNlLnN5c3RlbS5kZXNrdG9wKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdFx0XHRcdGNvbnN0IHNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWQgPSB0aGlzLmlzU2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZChuYXZpZ2F0aW9uUGFyYW1ldGVyLm5hdmlnYXRpb25UeXBlKTtcblx0XHRcdFx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZFwiLCBzZWFyY2hUcmlnZ2VyZWRCeUluaXRpYWxMb2FkKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5fZW5hYmxlRmlsdGVyQmFyKGZpbHRlckJhciBhcyBGaWx0ZXJCYXIsIGJQcmV2ZW50SW5pdGlhbFNlYXJjaCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXCJEaWQgbm90IGZpbmlzaCBhcHBseWluZyBuYXZpZ2F0aW9uIHBhcmFtZXRlcnMgLSBGaWx0ZXIgYmFyIG5vdCBmb3VuZC5cIik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0TG9nLndhcm5pbmcoXCJDb3VsZCBub3QgYXBwbHkgbmF2aWdhdGlvbiBwYXJhbWV0ZXJzLlwiKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7TUFpQnFCQSx3QkFBd0IsMEJBQUFDLHFCQUFBO0lBQUEsU0FBQUQseUJBQUE7TUFBQSxPQUFBQyxxQkFBQSxDQUFBQyxLQUFBLE9BQUFDLFNBQUE7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
|
|
@@ -153,12 +153,13 @@ export default class FilterBarAPIStateHandler extends IViewStateContributorMixin
|
|
|
153
153
|
if (!filterBar || !sv) {
|
|
154
154
|
resolve();
|
|
155
155
|
}
|
|
156
|
-
await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
156
|
+
const appliedCondition = await this._applySelectionVariant(view, navigationParameter, filterVariantApplied);
|
|
157
|
+
const selectionVariantWasApplied = Array.isArray(appliedCondition) && appliedCondition.length > 0;
|
|
157
158
|
let bPreventInitialSearch = false;
|
|
158
159
|
const variantManagement = this._getFilterBarVM(view) as VariantManagement;
|
|
159
160
|
if (filterBar) {
|
|
160
161
|
if (
|
|
161
|
-
(navigationParameter.navigationType !== NavType.initial && reqStdVariant) ||
|
|
162
|
+
(navigationParameter.navigationType !== NavType.initial && reqStdVariant && selectionVariantWasApplied) ||
|
|
162
163
|
(!variantManagement && view.getViewData().initialLoad === InitialLoadMode.Enabled) ||
|
|
163
164
|
(controller as ListReportController)._shouldAutoTriggerSearch(variantManagement)
|
|
164
165
|
) {
|
|
@@ -229,7 +229,11 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/buildingBlocks/templat
|
|
|
229
229
|
}
|
|
230
230
|
const titleLevel = FormHelper.getFormContainerTitleLevel(this.title, this.titleLevel);
|
|
231
231
|
const title = this.useFormContainerLabels && facet.Label ? getExpressionFromAnnotation(facet.Label) : "";
|
|
232
|
-
|
|
232
|
+
|
|
233
|
+
// Enhance: generate a stable form container id whenever we have a derived idPart even if this.id is undefined.
|
|
234
|
+
// Previous logic only generated when (implicitly) guarding by one condition; now we allow fallback to idPart.
|
|
235
|
+
// We still protect getFormContainerID from being called with an undefined idPart.
|
|
236
|
+
const id = (this.id !== undefined || idPart) && idPart ? getFormContainerID(idPart) : undefined;
|
|
233
237
|
return xml`
|
|
234
238
|
<macro:FormContainer
|
|
235
239
|
xmlns:macro="sap.fe.macros"
|
|
@@ -491,4 +495,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/buildingBlocks/templat
|
|
|
491
495
|
_exports = FormBlock;
|
|
492
496
|
return _exports;
|
|
493
497
|
}, false);
|
|
494
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtQmxvY2siLCJfZGVjIiwiZGVmaW5lQnVpbGRpbmdCbG9jayIsIm5hbWUiLCJuYW1lc3BhY2UiLCJwdWJsaWNOYW1lc3BhY2UiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwiYmxvY2tBdHRyaWJ1dGUiLCJ0eXBlIiwiaXNQdWJsaWMiLCJyZXF1aXJlZCIsIl9kZWMzIiwiZXhwZWN0ZWRUeXBlcyIsIl9kZWM0IiwiZXhwZWN0ZWRBbm5vdGF0aW9uVHlwZXMiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiYmxvY2tFdmVudCIsIl9kZWMxNCIsImJsb2NrQWdncmVnYXRpb24iLCJzbG90IiwiaXNEZWZhdWx0IiwiX2RlYzE1IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrVGVtcGxhdCIsInByb3BzIiwiY29uZmlndXJhdGlvbiIsIm1TZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJmb3JtQ29udGFpbmVycyIsInVuZGVmaW5lZCIsIm9Db250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1FeHRyYVNldHRpbmdzIiwib0ZhY2V0RGVmaW5pdGlvbiIsInRhcmdldE9iamVjdCIsImhhc0ZpZWxkR3JvdXAiLCIkVHlwZSIsIkxhYmVsIiwiVGFyZ2V0IiwiJHRhcmdldCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInBhdGgiLCJ0ZXJtIiwidmFsdWUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiYW5ub3RhdGlvbnMiLCJmaWVsZHMiLCJmb3JtRWxlbWVudHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJvRm9ybURlZmluaXRpb24iLCJjcmVhdGVGb3JtRGVmaW5pdGlvbiIsImlzVmlzaWJsZSIsImFubm90YXRpb25QYXRoIiwiZ2V0UGF0aCIsInVzZUZvcm1Db250YWluZXJMYWJlbHMiLCJmYWNldFR5cGUiLCJnZXRPYmplY3QiLCJfYXBpSWQiLCJjcmVhdGVJZCIsIl9jb250ZW50SWQiLCJpZCIsImRpc3BsYXlNb2RlIiwiX2VkaXRhYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJlcXVhbCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiVUkiLCJJc0VkaXRhYmxlIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldERhdGFGaWVsZENvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVyIiwiZmFjZXRDb250ZXh0IiwiZmFjZXQiLCJuYXZpZ2F0aW9uUGF0aCIsImlkUGFydCIsIkFubm90YXRpb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsImNvbnRleHRQYXRoUGF0aCIsImZhY2V0UGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJjaGFyQXQiLCJzbGljZSIsInRpdGxlTGV2ZWwiLCJGb3JtSGVscGVyIiwiZ2V0Rm9ybUNvbnRhaW5lclRpdGxlTGV2ZWwiLCJ0aXRsZSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldEZvcm1Db250YWluZXJJRCIsInhtbCIsImF0dHIiLCJlbnRpdHlTZXQiLCJvbkNoYW5nZSIsImFjdGlvbnMiLCJ1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3RlcyIsImFubm90YXRpb25IaWRkZW4iLCJnZXRGb3JtQ29udGFpbmVycyIsImluY2x1ZGVzIiwibWFwIiwiZm9ybUNvbnRhaW5lcklkeCIsImdldE1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJpc1JlZmVyZW5jZUZhY2V0UGFydE9mUHJldmlldyIsInBhcnRPZlByZXZpZXciLCIkQW5ub3RhdGlvblBhdGgiLCJjaGVja0lmVGV4dEFyZWFJc0Fsb25lIiwiZmllbGRHcm91cCIsImlkZW50aWZpY2F0aW9uIiwiaGFzRmllbGRHcm91cFRhcmdldCIsImhhc0lkZW50aWZpY2F0aW9uVGFyZ2V0IiwiRGF0YSIsIlZhbHVlIiwiTXVsdGlMaW5lVGV4dCIsInZhbHVlT2YiLCJnZXRMYXlvdXRJbmZvcm1hdGlvbiIsImlzVGV4dEFyZWFBbG9uZSIsImxheW91dCIsImFkanVzdExhYmVsU3BhbiIsImJyZWFrcG9pbnRMIiwiYnJlYWtwb2ludE0iLCJicmVha3BvaW50WEwiLCJjb2x1bW5zTCIsImNvbHVtbnNNIiwiY29sdW1uc1hMIiwiZW1wdHlTcGFuTCIsImVtcHR5U3Bhbk0iLCJlbXB0eVNwYW5TIiwiZW1wdHlTcGFuWEwiLCJsYWJlbFNwYW5MIiwibGFiZWxTcGFuTSIsImxhYmVsU3BhblMiLCJsYWJlbFNwYW5YTCIsInNpbmdsZUNvbnRhaW5lckZ1bGxTaXplIiwiYmFja2dyb3VuZERlc2lnbiIsImxhYmVsQ2VsbHNMYXJnZSIsImVtcHR5Q2VsbHNMYXJnZSIsImdldFRlbXBsYXRlIiwib25DaGFuZ2VTdHIiLCJyZXBsYWNlIiwibWV0YVBhdGhQYXRoIiwiY29udGV4dE9iamVjdFBhdGgiLCJjb250ZXh0TG9jYXRpb24iLCJ0YXJnZXRFbnRpdHlTZXQiLCJfdHlwZSIsImFyaWFMYWJlbGxlZEJ5IiwiYWRkQ29uZGl0aW9uYWxseSIsIkJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIlRpdGxlTGV2ZWwiLCJBdXRvIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGb3JtLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sbGVjdGlvbkZhY2V0LFxuXHREYXRhRmllbGQsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXBUeXBlLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UmVmZXJlbmNlRmFjZXRcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCByZXNvbHZlQmluZGluZ1N0cmluZyB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQge1xuXHRibG9ja0FnZ3JlZ2F0aW9uLFxuXHRibG9ja0F0dHJpYnV0ZSxcblx0YmxvY2tFdmVudCxcblx0ZGVmaW5lQnVpbGRpbmdCbG9ja1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyB4bWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGhhc0ZpZWxkR3JvdXBUYXJnZXQsIGhhc0lkZW50aWZpY2F0aW9uVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1Db250YWluZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgY3JlYXRlRm9ybURlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUNvbnRhaW5lcklEIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEZvcm1IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtSGVscGVyXCI7XG5pbXBvcnQgeyBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgJENvbHVtbkxheW91dFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Db2x1bW5MYXlvdXRcIjtcbmltcG9ydCB0eXBlIHsgJFJlc3BvbnNpdmVHcmlkTGF5b3V0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL1Jlc3BvbnNpdmVHcmlkTGF5b3V0XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IEFubm90YXRpb25IZWxwZXIgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Bbm5vdGF0aW9uSGVscGVyXCI7XG5cbnR5cGUgQ29sdW1uTGF5b3V0ID0gJENvbHVtbkxheW91dFNldHRpbmdzICYge1xuXHR0eXBlOiBcIkNvbHVtbkxheW91dFwiO1xufTtcbnR5cGUgUmVzcG9uc2l2ZUdyaWRMYXlvdXQgPSAkUmVzcG9uc2l2ZUdyaWRMYXlvdXRTZXR0aW5ncyAmIHtcblx0dHlwZTogXCJSZXNwb25zaXZlR3JpZExheW91dFwiO1xufTtcbnR5cGUgRm9ybUxheW91dEluZm9ybWF0aW9uID0gQ29sdW1uTGF5b3V0IHwgUmVzcG9uc2l2ZUdyaWRMYXlvdXQ7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRm9ybSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBJdCBpcyBkZXNpZ25lZCB0byB3b3JrIGJhc2VkIG9uIGEgRmllbGRHcm91cCBhbm5vdGF0aW9uIGJ1dCBjYW4gYWxzbyB3b3JrIGlmIHlvdSBwcm92aWRlIGEgUmVmZXJlbmNlRmFjZXQgb3IgYSBDb2xsZWN0aW9uRmFjZXRcbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZvcm0gaWQ9XCJNeUZvcm1cIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwI0dlbmVyYWxJbmZvcm1hdGlvblwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLkZvcm1cbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZUJ1aWxkaW5nQmxvY2soe1xuXHRuYW1lOiBcIkZvcm1cIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuZm9ybS5Gb3JtQVBJXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9ybUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0LyoqXG5cdCAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBmb3JtIGNvbnRyb2wuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiwgXCJTaW5nbGV0b25cIiwgXCJFbnRpdHlUeXBlXCJdXG5cdH0pXG5cdGNvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvblR5cGVzOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBUeXBlXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiXG5cdFx0XSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdXG5cdH0pXG5cdG1ldGFQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogVGhlIG1hbmlmZXN0IGRlZmluZWQgZm9ybSBjb250YWluZXJzIHRvIGJlIHNob3duIGluIHRoZSBhY3Rpb24gYXJlYSBvZiB0aGUgdGFibGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRmb3JtQ29udGFpbmVycz86IEZvcm1Db250YWluZXJbXTtcblxuXHQvKipcblx0ICogQ29udHJvbCB0aGUgcmVuZGVyaW5nIG9mIHRoZSBmb3JtIGNvbnRhaW5lciBsYWJlbHNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBUb2dnbGUgUHJldmlldzogUGFydCBvZiBQcmV2aWV3IC8gUHJldmlldyB2aWEgJ1Nob3cgTW9yZScgQnV0dG9uXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRwYXJ0T2ZQcmV2aWV3ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogVGhlIHRpdGxlIG9mIHRoZSBmb3JtIGNvbnRyb2wuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHRpdGxlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBcImFyaWEtbGV2ZWxcIiBvZiB0aGUgZm9ybSB0aXRsZSwgdGl0bGVzIG9mIGludGVybmFsbHkgdXNlZCBmb3JtIGNvbnRhaW5lcnMgYXJlIG5lc3RlZCBzdWJzZXF1ZW50bHlcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aXRsZUxldmVsOiBUaXRsZUxldmVsID0gVGl0bGVMZXZlbC5BdXRvO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSBhZGRlZCB0byBhc3NvY2lhdGUgdGhlIHN1cGVyb3JkaW5hdGUgdGl0bGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cHVibGljIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nW107XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRkaXNwbGF5TW9kZT86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBcdElmIHNldCB0byBmYWxzZSwgdGhlIEZvcm0gaXMgbm90IHJlbmRlcmVkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpc1Zpc2libGUgPSBcInRydWVcIjtcblx0Ly8gSW5kZXBlbmRlbnQgZnJvbSB0aGUgZm9ybSB0aXRsZSwgY2FuIGJlIGEgYml0IGNvbmZ1c2luZyBpbiBzdGFuZGFsb25lIHVzYWdlIGF0IGlzIG5vdCBzaG93aW5nIGFueXRoaW5nIGJ5IGRlZmF1bHRcblxuXHQvLyBKdXN0IHByb3hpZWQgZG93biB0byB0aGUgRmllbGQgbWF5IG5lZWQgdG8gc2VlIGlmIG5lZWRlZCBvciBub3Rcblx0QGJsb2NrRXZlbnQoKVxuXHRvbkNoYW5nZT86IHN0cmluZztcblxuXHRAYmxvY2tBZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1FbGVtZW50XCIsIGlzUHVibGljOiB0cnVlLCBzbG90OiBcImZvcm1FbGVtZW50c1wiLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Zm9ybUVsZW1lbnRzPzogb2JqZWN0W107XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCB0byBiZSB1c2VkIHdpdGhpbiB0aGUgZm9ybS5cblx0ICogSXQgZGVmYXVsdHMgdG8gdGhlIENvbHVtbkxheW91dCwgYnV0IHlvdSBjYW4gYWxzbyB1c2UgYSBSZXNwb25zaXZlR3JpZExheW91dC5cblx0ICogQWxsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBSZXNwb25zaXZlR3JpZExheW91dCBjYW4gYmUgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcIm9iamVjdFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRsYXlvdXQ6IEZvcm1MYXlvdXRJbmZvcm1hdGlvbiA9IHsgdHlwZTogXCJDb2x1bW5MYXlvdXRcIiwgY29sdW1uc006IDMsIGNvbHVtbnNYTDogNiwgY29sdW1uc0w6IDQsIGxhYmVsQ2VsbHNMYXJnZTogMTIgfTtcblxuXHQvLyBVc2VmdWwgZm9yIG91ciBkeW5hbWljIHRoaW5nIGJ1dCBhbHNvIGRlcGVuZHMgb24gdGhlIG1ldGFkYXRhIC0+IG1ha2Ugc3VyZSB0aGlzIGlzIHRha2VuIGludG8gYWNjb3VudFxuXHRfZWRpdGFibGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdF9hcGlJZDogc3RyaW5nO1xuXG5cdF9jb250ZW50SWQ6IHN0cmluZztcblxuXHRmYWNldFR5cGU/OiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxGb3JtQmxvY2s+LCBjb25maWd1cmF0aW9uOiB1bmtub3duLCBtU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29uZmlndXJhdGlvbiwgbVNldHRpbmdzKTtcblx0XHRpZiAodGhpcy5tZXRhUGF0aCAmJiB0aGlzLmNvbnRleHRQYXRoICYmICh0aGlzLmZvcm1Db250YWluZXJzID09PSB1bmRlZmluZWQgfHwgdGhpcy5mb3JtQ29udGFpbmVycyA9PT0gbnVsbCkpIHtcblx0XHRcdGNvbnN0IG9Db250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxGaWVsZEdyb3VwVHlwZSB8IENvbGxlY3Rpb25GYWNldCB8IFJlZmVyZW5jZUZhY2V0Pihcblx0XHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IG1FeHRyYVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0bGV0IG9GYWNldERlZmluaXRpb24gPSBvQ29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRcdFx0bGV0IGhhc0ZpZWxkR3JvdXAgPSBmYWxzZTtcblx0XHRcdGlmIChvRmFjZXREZWZpbml0aW9uICYmIG9GYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkZpZWxkR3JvdXBUeXBlKSB7XG5cdFx0XHRcdC8vIFdyYXAgdGhlIGZhY2V0IGluIGEgZmFrZSBGYWNldCBhbm5vdGF0aW9uXG5cdFx0XHRcdGhhc0ZpZWxkR3JvdXAgPSB0cnVlO1xuXHRcdFx0XHRvRmFjZXREZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdCRUeXBlOiBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCxcblx0XHRcdFx0XHRMYWJlbDogb0ZhY2V0RGVmaW5pdGlvbi5MYWJlbCxcblx0XHRcdFx0XHRUYXJnZXQ6IHtcblx0XHRcdFx0XHRcdCR0YXJnZXQ6IG9GYWNldERlZmluaXRpb24sXG5cdFx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IG9GYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0cGF0aDogXCJcIixcblx0XHRcdFx0XHRcdHRlcm06IFwiXCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChvQ29udGV4dE9iamVjdFBhdGgpXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uczoge30sXG5cdFx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBvRmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHR9IGFzIHVua25vd24gYXMgUmVmZXJlbmNlRmFjZXQ7XG5cdFx0XHRcdG1FeHRyYVNldHRpbmdzW29GYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlXSA9IHsgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50cyB9O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBvQ29udmVydGVyQ29udGV4dCA9IHRoaXMuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHRcdFx0b0NvbnRleHRPYmplY3RQYXRoLFxuXHRcdFx0XHQvKnRoaXMuY29udGV4dFBhdGgqLyB1bmRlZmluZWQsXG5cdFx0XHRcdG1TZXR0aW5ncyxcblx0XHRcdFx0bUV4dHJhU2V0dGluZ3Ncblx0XHRcdCk7XG5cdFx0XHRjb25zdCBvRm9ybURlZmluaXRpb24gPSBjcmVhdGVGb3JtRGVmaW5pdGlvbihvRmFjZXREZWZpbml0aW9uLCB0aGlzLmlzVmlzaWJsZSwgb0NvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0aWYgKGhhc0ZpZWxkR3JvdXApIHtcblx0XHRcdFx0b0Zvcm1EZWZpbml0aW9uLmZvcm1Db250YWluZXJzWzBdLmFubm90YXRpb25QYXRoID0gdGhpcy5tZXRhUGF0aC5nZXRQYXRoKCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmZvcm1Db250YWluZXJzID0gb0Zvcm1EZWZpbml0aW9uLmZvcm1Db250YWluZXJzO1xuXHRcdFx0dGhpcy51c2VGb3JtQ29udGFpbmVyTGFiZWxzID0gb0Zvcm1EZWZpbml0aW9uLnVzZUZvcm1Db250YWluZXJMYWJlbHM7XG5cdFx0XHR0aGlzLmZhY2V0VHlwZSA9IG9GYWNldERlZmluaXRpb24gJiYgKG9GYWNldERlZmluaXRpb24uJFR5cGUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5mYWNldFR5cGUgPSB0aGlzLm1ldGFQYXRoLmdldE9iamVjdCgpPy4kVHlwZTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuaXNQdWJsaWMpIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5jcmVhdGVJZChcIkZvcm1cIikhO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gdGhpcy5pZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gYCR7dGhpcy5pZH0tY29udGVudGA7XG5cdFx0fVxuXHRcdC8vIGlmIGRpc3BsYXlNb2RlID09PSB0cnVlIC0+IF9lZGl0YWJsZSA9IGZhbHNlXG5cdFx0Ly8gaWYgZGlzcGxheU1vZGUgPT09IGZhbHNlIC0+IF9lZGl0YWJsZSA9IHRydWVcblx0XHQvLyAgPT4gaWYgZGlzcGxheU1vZGUgPT09IHtteUJpbmRpbmdWYWx1ZX0gLT4gX2VkaXRhYmxlID0ge215QmluZGluZ1ZhbHVlfSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZVxuXHRcdC8vIGlmIERpc3BsYXlNb2RlID09PSB1bmRlZmluZWQgLT4gX2VkaXRhYmxlID0ge3VpPi9pc0VkaXRhYmxlfVxuXHRcdGlmICh0aGlzLmRpc3BsYXlNb2RlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMuX2VkaXRhYmxlID0gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGVxdWFsKHJlc29sdmVCaW5kaW5nU3RyaW5nKHRoaXMuZGlzcGxheU1vZGUsIFwiYm9vbGVhblwiKSwgZmFsc2UpLCB0cnVlLCBmYWxzZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9lZGl0YWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKFVJLklzRWRpdGFibGUpO1xuXHRcdH1cblx0fVxuXG5cdGdldERhdGFGaWVsZENvbGxlY3Rpb24oZm9ybUNvbnRhaW5lcjogRm9ybUNvbnRhaW5lciwgZmFjZXRDb250ZXh0OiBDb250ZXh0KTogc3RyaW5nIHtcblx0XHRjb25zdCBmYWNldCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhmYWNldENvbnRleHQpLnRhcmdldE9iamVjdCBhcyBGYWNldFR5cGVzO1xuXHRcdGxldCBuYXZpZ2F0aW9uUGF0aDtcblx0XHRsZXQgaWRQYXJ0O1xuXHRcdGlmIChmYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQpIHtcblx0XHRcdG5hdmlnYXRpb25QYXRoID0gQW5ub3RhdGlvbkhlbHBlci5nZXROYXZpZ2F0aW9uUGF0aChmYWNldC5UYXJnZXQudmFsdWUpO1xuXHRcdFx0aWRQYXJ0ID0gZmFjZXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoUGF0aCA9IHRoaXMuY29udGV4dFBhdGguZ2V0UGF0aCgpO1xuXHRcdFx0bGV0IGZhY2V0UGF0aCA9IGZhY2V0Q29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRpZiAoZmFjZXRQYXRoLnN0YXJ0c1dpdGgoY29udGV4dFBhdGhQYXRoKSkge1xuXHRcdFx0XHRmYWNldFBhdGggPSBmYWNldFBhdGguc3Vic3RyaW5nKGNvbnRleHRQYXRoUGF0aC5sZW5ndGgpO1xuXHRcdFx0XHRpZiAoZmFjZXRQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0XHRmYWNldFBhdGggPSBmYWNldFBhdGguc2xpY2UoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG5hdmlnYXRpb25QYXRoID0gQW5ub3RhdGlvbkhlbHBlci5nZXROYXZpZ2F0aW9uUGF0aChmYWNldFBhdGgpO1xuXHRcdFx0aWRQYXJ0ID0gZmFjZXRQYXRoO1xuXHRcdH1cblx0XHRjb25zdCB0aXRsZUxldmVsID0gRm9ybUhlbHBlci5nZXRGb3JtQ29udGFpbmVyVGl0bGVMZXZlbCh0aGlzLnRpdGxlLCB0aGlzLnRpdGxlTGV2ZWwpO1xuXHRcdGNvbnN0IHRpdGxlID0gdGhpcy51c2VGb3JtQ29udGFpbmVyTGFiZWxzICYmIGZhY2V0LkxhYmVsID8gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZhY2V0LkxhYmVsKSA6IFwiXCI7XG5cblx0XHRjb25zdCBpZCA9IHRoaXMuaWQgPyBnZXRGb3JtQ29udGFpbmVySUQoaWRQYXJ0KSA6IHVuZGVmaW5lZDtcblxuXHRcdHJldHVybiB4bWxgXG5cdFx0XHRcdFx0PG1hY3JvOkZvcm1Db250YWluZXJcblx0XHRcdFx0XHR4bWxuczptYWNybz1cInNhcC5mZS5tYWNyb3NcIlxuXHRcdFx0XHRcdCR7dGhpcy5hdHRyKFwiaWRcIiwgaWQpfVxuXHRcdFx0XHRcdHRpdGxlPVwiJHt0aXRsZX1cIlxuXHRcdFx0XHRcdHRpdGxlTGV2ZWw9XCIke3RpdGxlTGV2ZWx9XCJcblx0XHRcdFx0XHRjb250ZXh0UGF0aD1cIiR7bmF2aWdhdGlvblBhdGggPyBmb3JtQ29udGFpbmVyLmVudGl0eVNldCA6IHRoaXMuY29udGV4dFBhdGh9XCJcblx0XHRcdFx0XHRtZXRhUGF0aD1cIiR7ZmFjZXRDb250ZXh0fVwiXG5cdFx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbj1cIiR7Zm9ybUNvbnRhaW5lci5mb3JtRWxlbWVudHN9XCJcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUGF0aD1cIiR7bmF2aWdhdGlvblBhdGh9XCJcblx0XHRcdFx0XHR2aXNpYmxlPVwiJHtmb3JtQ29udGFpbmVyLmlzVmlzaWJsZX1cIlxuXHRcdFx0XHRcdGRpc3BsYXlNb2RlPVwiJHt0aGlzLmRpc3BsYXlNb2RlfVwiXG5cdFx0XHRcdFx0b25DaGFuZ2U9XCIke3RoaXMub25DaGFuZ2V9XCJcblx0XHRcdFx0XHRhY3Rpb25zPVwiJHtmb3JtQ29udGFpbmVyLmFjdGlvbnN9XCJcblx0XHRcdFx0XHR1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlcz1cIiR7Zm9ybUNvbnRhaW5lci51c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlc31cIlxuXHRcdFx0XHRcdGhhc1VpSGlkZGVuQW5ub3RhdGlvbj1cIiR7Zm9ybUNvbnRhaW5lci5hbm5vdGF0aW9uSGlkZGVufVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0PG1hY3JvOmZvcm1FbGVtZW50cz5cblx0XHRcdFx0XHQ8c2xvdCBuYW1lPVwiZm9ybUVsZW1lbnRzXCIgLz5cblx0XHRcdFx0PC9tYWNybzpmb3JtRWxlbWVudHM+XG5cdFx0XHQ8L21hY3JvOkZvcm1Db250YWluZXI+YDtcblx0fVxuXG5cdGdldEZvcm1Db250YWluZXJzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcblx0XHRpZiAodGhpcy5mb3JtQ29udGFpbmVycyEubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZmFjZXRUeXBlPy5pbmNsdWRlcyhcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZm9ybUNvbnRhaW5lcnMhLm1hcCgoZm9ybUNvbnRhaW5lciwgZm9ybUNvbnRhaW5lcklkeCkgPT4ge1xuXHRcdFx0XHRpZiAoZm9ybUNvbnRhaW5lci5pc1Zpc2libGUpIHtcblx0XHRcdFx0XHRjb25zdCBmYWNldENvbnRleHQgPSB0aGlzLmNvbnRleHRQYXRoLmdldE1vZGVsKCkuY3JlYXRlQmluZGluZ0NvbnRleHQoZm9ybUNvbnRhaW5lci5hbm5vdGF0aW9uUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0Y29uc3QgZmFjZXQgPSBmYWNldENvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0ZmFjZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0ICYmXG5cdFx0XHRcdFx0XHRGb3JtSGVscGVyLmlzUmVmZXJlbmNlRmFjZXRQYXJ0T2ZQcmV2aWV3KGZhY2V0LCB0aGlzLnBhcnRPZlByZXZpZXcpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRpZiAoZmFjZXQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aC4kVHlwZSA9PT0gQ29tbXVuaWNhdGlvbkFubm90YXRpb25UeXBlcy5BZGRyZXNzVHlwZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4geG1sYDx0ZW1wbGF0ZTp3aXRoIHBhdGg9XCJmb3JtQ29udGFpbmVycz4ke2Zvcm1Db250YWluZXJJZHh9XCIgdmFyPVwiZm9ybUNvbnRhaW5lclwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZW1wbGF0ZTp3aXRoIHBhdGg9XCJmb3JtQ29udGFpbmVycz4ke2Zvcm1Db250YWluZXJJZHh9L2Fubm90YXRpb25QYXRoXCIgdmFyPVwiZmFjZXRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cInNhcC5mZS5tYWNyb3MuZm9ybS5BZGRyZXNzU2VjdGlvblwiIHR5cGU9XCJYTUxcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdGVtcGxhdGU6d2l0aD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC90ZW1wbGF0ZTp3aXRoPmA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXREYXRhRmllbGRDb2xsZWN0aW9uKGZvcm1Db250YWluZXIsIGZhY2V0Q29udGV4dCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmZhY2V0VHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5mb3JtQ29udGFpbmVycyEubWFwKChmb3JtQ29udGFpbmVyKSA9PiB7XG5cdFx0XHRcdGlmIChmb3JtQ29udGFpbmVyLmlzVmlzaWJsZSkge1xuXHRcdFx0XHRcdGNvbnN0IGZhY2V0Q29udGV4dCA9IHRoaXMuY29udGV4dFBhdGguZ2V0TW9kZWwoKS5jcmVhdGVCaW5kaW5nQ29udGV4dChmb3JtQ29udGFpbmVyLmFubm90YXRpb25QYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXREYXRhRmllbGRDb2xsZWN0aW9uKGZvcm1Db250YWluZXIsIGZhY2V0Q29udGV4dCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGEgdGV4dGFyZWEgaXMgYWxvbmUgaW4gYSBmb3JtXG5cdCAqL1xuXHRjaGVja0lmVGV4dEFyZWFJc0Fsb25lKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmZvcm1Db250YWluZXJzIS5sZW5ndGggPT09IDEpIHtcblx0XHRcdGlmICh0aGlzLmZvcm1Db250YWluZXJzIVswXS5mb3JtRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdGNvbnN0IGZhY2V0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKFxuXHRcdFx0XHRcdHRoaXMuY29udGV4dFBhdGguZ2V0TW9kZWwoKS5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLmZvcm1Db250YWluZXJzIVswXS5hbm5vdGF0aW9uUGF0aCwgdGhpcy5jb250ZXh0UGF0aClcblx0XHRcdFx0KS50YXJnZXRPYmplY3QgYXMgRmllbGRHcm91cFR5cGUgfCBSZWZlcmVuY2VGYWNldDtcblx0XHRcdFx0bGV0IGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBUeXBlIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRsZXQgaWRlbnRpZmljYXRpb246IElkZW50aWZpY2F0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHQvLyBUaGlzIGlzIG9ubHkgZm9yIG1hY3Jvczpmb3JtIHdpdGggYSBGaWVsZEdyb3VwIHRoYXQgY29udGFpbnMgb25seSBhIFRleHRBcmVhXG5cdFx0XHRcdGlmIChmYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwVHlwZVwiKSB7XG5cdFx0XHRcdFx0ZmllbGRHcm91cCA9IGZhY2V0O1xuXHRcdFx0XHR9IGVsc2UgaWYgKGhhc0ZpZWxkR3JvdXBUYXJnZXQoZmFjZXQpKSB7XG5cdFx0XHRcdFx0ZmllbGRHcm91cCA9IGZhY2V0Py5UYXJnZXQ/LiR0YXJnZXQgYXMgRmllbGRHcm91cFR5cGU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaGFzSWRlbnRpZmljYXRpb25UYXJnZXQoZmFjZXQpKSB7XG5cdFx0XHRcdFx0aWRlbnRpZmljYXRpb24gPSBmYWNldD8uVGFyZ2V0Py4kdGFyZ2V0IGFzIElkZW50aWZpY2F0aW9uO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGZpZWxkR3JvdXA/LkRhdGEubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0cmV0dXJuIChmaWVsZEdyb3VwLkRhdGFbMF0gYXMgRGF0YUZpZWxkKT8uVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uTXVsdGlMaW5lVGV4dD8udmFsdWVPZigpID09PSB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlkZW50aWZpY2F0aW9uPy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRyZXR1cm4gKGlkZW50aWZpY2F0aW9uWzBdIGFzIERhdGFGaWVsZCk/LlZhbHVlPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ/LnZhbHVlT2YoKSA9PT0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBwcm9wZXIgbGF5b3V0IGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBgbGF5b3V0YCBwcm9wZXJ0eSBkZWZpbmVkIGV4dGVybmFsbHkuXG5cdCAqIEBwYXJhbSBpc1RleHRBcmVhQWxvbmUgV2hldGhlciB0aGUgc2VjdGlvbiBjb250YWlucyBhIGxvbmVseSBUZXh0QXJlYSBpbnNpZGVcblx0ICogQHJldHVybnMgVGhlIGxheW91dCBpbmZvcm1hdGlvbiBmb3IgdGhlIHhtbC5cblx0ICovXG5cdGdldExheW91dEluZm9ybWF0aW9uKGlzVGV4dEFyZWFBbG9uZTogYm9vbGVhbik6IHN0cmluZyB7XG5cdFx0c3dpdGNoICh0aGlzLmxheW91dC50eXBlKSB7XG5cdFx0XHRjYXNlIFwiUmVzcG9uc2l2ZUdyaWRMYXlvdXRcIjpcblx0XHRcdFx0cmV0dXJuIHhtbGA8ZjpSZXNwb25zaXZlR3JpZExheW91dCBhZGp1c3RMYWJlbFNwYW49XCIke3RoaXMubGF5b3V0LmFkanVzdExhYmVsU3Bhbn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha3BvaW50TD1cIiR7dGhpcy5sYXlvdXQuYnJlYWtwb2ludEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtwb2ludE09XCIke3RoaXMubGF5b3V0LmJyZWFrcG9pbnRNfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrcG9pbnRYTD1cIiR7dGhpcy5sYXlvdXQuYnJlYWtwb2ludFhMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNMPVwiJHtpc1RleHRBcmVhQWxvbmUgPyAxIDogdGhpcy5sYXlvdXQuY29sdW1uc0x9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sdW1uc009XCIke2lzVGV4dEFyZWFBbG9uZSA/IDEgOiB0aGlzLmxheW91dC5jb2x1bW5zTX1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2x1bW5zWEw9XCIke2lzVGV4dEFyZWFBbG9uZSA/IDEgOiB0aGlzLmxheW91dC5jb2x1bW5zWEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW1wdHlTcGFuTD1cIiR7dGhpcy5sYXlvdXQuZW1wdHlTcGFuTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbXB0eVNwYW5NPVwiJHt0aGlzLmxheW91dC5lbXB0eVNwYW5NfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVtcHR5U3BhblM9XCIke3RoaXMubGF5b3V0LmVtcHR5U3BhblN9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW1wdHlTcGFuWEw9XCIke3RoaXMubGF5b3V0LmVtcHR5U3BhblhMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsU3Bhbkw9XCIke3RoaXMubGF5b3V0LmxhYmVsU3Bhbkx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWxTcGFuTT1cIiR7dGhpcy5sYXlvdXQubGFiZWxTcGFuTX1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbFNwYW5TPVwiJHt0aGlzLmxheW91dC5sYWJlbFNwYW5TfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsU3BhblhMPVwiJHt0aGlzLmxheW91dC5sYWJlbFNwYW5YTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaW5nbGVDb250YWluZXJGdWxsU2l6ZT1cIiR7dGhpcy5sYXlvdXQuc2luZ2xlQ29udGFpbmVyRnVsbFNpemV9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZERlc2lnbj1cIiR7dGhpcy5sYXlvdXQuYmFja2dyb3VuZERlc2lnbn1cIiAvPmA7XG5cdFx0XHRjYXNlIFwiQ29sdW1uTGF5b3V0XCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4geG1sYDxmOkNvbHVtbkxheW91dFxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNNPVwiJHtpc1RleHRBcmVhQWxvbmUgPyAxIDogdGhpcy5sYXlvdXQuY29sdW1uc019XCJcblx0XHRcdFx0XHRcdFx0XHRjb2x1bW5zTD1cIiR7aXNUZXh0QXJlYUFsb25lID8gMSA6IHRoaXMubGF5b3V0LmNvbHVtbnNMfVwiXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uc1hMPVwiJHtpc1RleHRBcmVhQWxvbmUgPyAxIDogdGhpcy5sYXlvdXQuY29sdW1uc1hMfVwiXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWxDZWxsc0xhcmdlPVwiJHt0aGlzLmxheW91dC5sYWJlbENlbGxzTGFyZ2V9XCJcblx0XHRcdFx0XHRcdFx0XHRlbXB0eUNlbGxzTGFyZ2U9XCIke3RoaXMubGF5b3V0LmVtcHR5Q2VsbHNMYXJnZX1cIlxuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmREZXNpZ249XCIke3RoaXMubGF5b3V0LmJhY2tncm91bmREZXNpZ259XCIgLz5gO1xuXHRcdH1cblx0fVxuXG5cdGdldFRlbXBsYXRlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgb25DaGFuZ2VTdHIgPSAodGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlLnJlcGxhY2UoXCJ7XCIsIFwiXFxcXHtcIikucmVwbGFjZShcIn1cIiwgXCJcXFxcfVwiKSkgfHwgXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhdGggPSB0aGlzLm1ldGFQYXRoLmdldFBhdGgoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFBhdGggPSB0aGlzLmNvbnRleHRQYXRoLmdldFBhdGgoKTtcblx0XHRjb25zdCBjb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCBlbnRpdHlTZXQgPVxuXHRcdFx0Y29udGV4dE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy50YXJnZXRFbnRpdHlTZXQ/Ll90eXBlID09PSBcIkVudGl0eVNldFwiID8gXCJ7Y29udGV4dFBhdGg+QHNhcHVpLm5hbWV9XCIgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgaXNUZXh0QXJlYUFsb25lID0gdGhpcy5jaGVja0lmVGV4dEFyZWFJc0Fsb25lKCk7XG5cblx0XHRpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHhtbGA8bWFjcm86Rm9ybUFQSSB4bWxuczptYWNybz1cInNhcC5mZS5tYWNyb3MuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm9kYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0XHRcdFx0eG1sbnM6Zj1cInNhcC51aS5sYXlvdXQuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6Zmw9XCJzYXAudWkuZmxcIlxuXHRcdFx0XHRcdHhtbG5zOmR0PVwic2FwLnVpLmR0XCJcblx0XHRcdFx0XHR4bWxuczpjb3JlQ29udHJvbHM9XCJzYXAuZmUuY29yZS5jb250cm9sc1wiXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMuX2FwaUlkfVwiXG5cdFx0XHRcdFx0bWV0YVBhdGg9XCIke21ldGFQYXRoUGF0aH1cIlxuXHRcdFx0XHRcdGNvbnRleHRQYXRoPVwiJHtjb250ZXh0UGF0aFBhdGh9XCI+XG5cdFx0XHRcdDxmOkZvcm1cblx0XHRcdFx0XHRmbDpkZWxlZ2F0ZT0ne1xuXHRcdFx0XHRcdFx0XCJuYW1lXCI6IFwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm1EZWxlZ2F0ZVwiLFxuXHRcdFx0XHRcdFx0XCJkZWxlZ2F0ZVR5cGVcIjogXCJjb21wbGV0ZVwiXG5cdFx0XHRcdFx0fSdcblx0XHRcdFx0XHRkdDpkZXNpZ250aW1lPVwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm0uZGVzaWdudGltZVwiXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMuX2NvbnRlbnRJZH1cIlxuXHRcdFx0XHRcdGVkaXRhYmxlPVwiJHt0aGlzLl9lZGl0YWJsZX1cIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTplbnRpdHlTZXQ9XCIke2VudGl0eVNldH1cIlxuXHRcdFx0XHRcdHZpc2libGU9XCIke3RoaXMuaXNWaXNpYmxlfVwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJzYXBVeEFQT2JqZWN0UGFnZVN1YlNlY3Rpb25BbGlnbkNvbnRlbnRcIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTpuYXZpZ2F0aW9uUGF0aD1cIiR7Y29udGV4dFBhdGhQYXRofVwiXG5cdFx0XHRcdFx0bWFjcm9kYXRhOm9uQ2hhbmdlPVwiJHtvbkNoYW5nZVN0cn1cIlxuXHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PVwiJHt0aGlzLmFyaWFMYWJlbGxlZEJ5fVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0XHQke3RoaXMuYWRkQ29uZGl0aW9uYWxseShcblx0XHRcdFx0XHRcdHRoaXMudGl0bGUgIT09IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdHhtbGA8Zjp0aXRsZT5cblx0XHRcdFx0XHRcdFx0PGNvcmU6VGl0bGUgbGV2ZWw9XCIke3RoaXMudGl0bGVMZXZlbH1cIiB0ZXh0PVwiJHt0aGlzLnRpdGxlfVwiIC8+XG5cdFx0XHRcdFx0XHQ8L2Y6dGl0bGU+YFxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0PGY6bGF5b3V0PlxuXHRcdFx0XHRcdCR7dGhpcy5nZXRMYXlvdXRJbmZvcm1hdGlvbihpc1RleHRBcmVhQWxvbmUpfVxuXG5cdFx0XHRcdFx0PC9mOmxheW91dD5cblx0XHRcdFx0XHQ8Zjpmb3JtQ29udGFpbmVycz5cblx0XHRcdFx0XHRcdCR7dGhpcy5nZXRGb3JtQ29udGFpbmVycygpfVxuXHRcdFx0XHRcdDwvZjpmb3JtQ29udGFpbmVycz5cblx0XHRcdFx0XHQ8ZjpkZXBlbmRlbnRzPlxuXHRcdFx0XHRcdFx0PGNvcmVDb250cm9sczpIaWRlRm9ybUdyb3VwQXV0b21hdGljYWxseSAvPlxuXHRcdFx0XHRcdDwvZjpkZXBlbmRlbnRzPlxuXHRcdFx0XHQ8L2Y6Rm9ybT5cblx0XHRcdDwvbWFjcm86Rm9ybUFQST5gO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTRDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVpBLElBbUJxQkEsU0FBUyxJQUFBQyxJQUFBLEdBTjdCQyxtQkFBbUIsQ0FBQztJQUNwQkMsSUFBSSxFQUFFLE1BQU07SUFDWkMsU0FBUyxFQUFFLHdCQUF3QjtJQUNuQ0MsZUFBZSxFQUFFLGVBQWU7SUFDaENDLFdBQVcsRUFBRSxDQUFDLDRCQUE0QjtFQUMzQyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUtBQyxjQUFjLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsUUFBUSxFQUFFLElBQUk7SUFBRUMsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FRbEVKLGNBQWMsQ0FBQztJQUNmQyxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCRSxRQUFRLEVBQUUsSUFBSTtJQUNkRCxRQUFRLEVBQUUsSUFBSTtJQUNkRyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLFlBQVk7RUFDN0UsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FPRE4sY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxzQkFBc0I7SUFDNUJDLFFBQVEsRUFBRSxJQUFJO0lBQ2RDLFFBQVEsRUFBRSxJQUFJO0lBQ2RJLHVCQUF1QixFQUFFLENBQ3hCLDJDQUEyQyxFQUMzQyw0Q0FBNEMsRUFDNUMsMkNBQTJDLENBQzNDO0lBQ0RGLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQjtFQUM3RSxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQU1EUixjQUFjLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVEsQ0FBQyxDQUFDLEVBQUFRLEtBQUEsR0FNakNULGNBQWMsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQVMsS0FBQSxHQU1uQ1YsY0FBYyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBVSxLQUFBLEdBT25DWCxjQUFjLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFVLEtBQUEsR0FNbERaLGNBQWMsQ0FBQztJQUFFQyxJQUFJLEVBQUUsd0JBQXdCO0lBQUVDLFFBQVEsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBVyxNQUFBLEdBTWxFYixjQUFjLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFhLE1BQUEsR0FHbENkLGNBQWMsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQWMsTUFBQSxHQU1sQ2YsY0FBYyxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBZSxNQUFBLEdBS2xDQyxVQUFVLENBQUMsQ0FBQyxFQUFBQyxNQUFBLEdBR1pDLGdCQUFnQixDQUFDO0lBQUVsQixJQUFJLEVBQUUsZ0NBQWdDO0lBQUVDLFFBQVEsRUFBRSxJQUFJO0lBQUVrQixJQUFJLEVBQUUsY0FBYztJQUFFQyxTQUFTLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsTUFBQSxHQVFuSHRCLGNBQWMsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFQyxRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQVQsSUFBQSxDQUFBOEIsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxxQkFBQTtJQUduRDs7SUFTQSxTQUFBakMsVUFBWWtDLEtBQThCLEVBQUVDLGFBQXNCLEVBQUVDLFNBQW9DLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ3pHQSxLQUFBLEdBQUFKLHFCQUFBLENBQUFLLElBQUEsT0FBTUosS0FBSyxFQUFFQyxhQUFhLEVBQUVDLFNBQVMsQ0FBQztNQTVHdkM7QUFDRDtBQUNBO01BRkNHLDBCQUFBLENBQUFGLEtBQUEsUUFBQUcsV0FBQSxFQUFBSCxLQUFBO01BTUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLGlCQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFhQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLGNBQUFLLFlBQUEsRUFBQUwsS0FBQTtNQWlCQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxvQkFBQU0sWUFBQSxFQUFBTixLQUFBO01BTUE7QUFDRDtBQUNBO01BRkNFLDBCQUFBLENBQUFGLEtBQUEsNEJBQUFPLFlBQUEsRUFBQVAsS0FBQTtNQU1BO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLG1CQUFBUSxZQUFBLEVBQUFSLEtBQUE7TUFNQTtBQUNEO0FBQ0E7QUFDQTtNQUhDRSwwQkFBQSxDQUFBRixLQUFBLFdBQUFTLFlBQUEsRUFBQVQsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLGdCQUFBVSxZQUFBLEVBQUFWLEtBQUE7TUFNQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxvQkFBQVcsWUFBQSxFQUFBWCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsaUJBQUFZLGFBQUEsRUFBQVosS0FBQTtNQVNBO0FBQ0Q7QUFDQTtNQUZDRSwwQkFBQSxDQUFBRixLQUFBLGVBQUFhLGFBQUEsRUFBQWIsS0FBQTtNQUtBO01BRUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBYyxhQUFBLEVBQUFkLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxrQkFBQWUsYUFBQSxFQUFBZixLQUFBO01BT0E7QUFDRDtBQUNBO0FBQ0E7QUFDQTtNQUpDRSwwQkFBQSxDQUFBRixLQUFBLFlBQUFnQixhQUFBLEVBQUFoQixLQUFBO01BbUJDLElBQUlBLEtBQUEsQ0FBS2lCLFFBQVEsSUFBSWpCLEtBQUEsQ0FBS2tCLFdBQVcsS0FBS2xCLEtBQUEsQ0FBS21CLGNBQWMsS0FBS0MsU0FBUyxJQUFJcEIsS0FBQSxDQUFLbUIsY0FBYyxLQUFLLElBQUksQ0FBQyxFQUFFO1FBQzdHLE1BQU1FLGtCQUFrQixHQUFHQywyQkFBMkIsQ0FDckR0QixLQUFBLENBQUtpQixRQUFRLEVBQ2JqQixLQUFBLENBQUtrQixXQUNOLENBQUM7UUFDRCxNQUFNSyxjQUF1QyxHQUFHLENBQUMsQ0FBQztRQUNsRCxJQUFJQyxnQkFBZ0IsR0FBR0gsa0JBQWtCLENBQUNJLFlBQVk7UUFDdEQsSUFBSUMsYUFBYSxHQUFHLEtBQUs7UUFDekIsSUFBSUYsZ0JBQWdCLElBQUlBLGdCQUFnQixDQUFDRyxLQUFLLGdEQUFxQyxFQUFFO1VBQ3BGO1VBQ0FELGFBQWEsR0FBRyxJQUFJO1VBQ3BCRixnQkFBZ0IsR0FBRztZQUNsQkcsS0FBSyw2Q0FBa0M7WUFDdkNDLEtBQUssRUFBRUosZ0JBQWdCLENBQUNJLEtBQUs7WUFDN0JDLE1BQU0sRUFBRTtjQUNQQyxPQUFPLEVBQUVOLGdCQUFnQjtjQUN6Qk8sa0JBQWtCLEVBQUVQLGdCQUFnQixDQUFDTyxrQkFBa0I7Y0FDdkRDLElBQUksRUFBRSxFQUFFO2NBQ1JDLElBQUksRUFBRSxFQUFFO2NBQ1I3RCxJQUFJLEVBQUUsZ0JBQWdCO2NBQ3RCOEQsS0FBSyxFQUFFQyxrQ0FBa0MsQ0FBQ2Qsa0JBQWtCO1lBQzdELENBQUM7WUFDRGUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNmTCxrQkFBa0IsRUFBRVAsZ0JBQWdCLENBQUNPO1VBQ3RDLENBQThCO1VBQzlCUixjQUFjLENBQUNDLGdCQUFnQixDQUFDSyxNQUFNLENBQUNLLEtBQUssQ0FBQyxHQUFHO1lBQUVHLE1BQU0sRUFBRXJDLEtBQUEsQ0FBS3NDO1VBQWEsQ0FBQztRQUM5RTtRQUVBLE1BQU1DLGlCQUFpQixHQUFHdkMsS0FBQSxDQUFLd0MsbUJBQW1CLENBQ2pEbkIsa0JBQWtCLEVBQ2xCLG9CQUFxQkQsU0FBUyxFQUM5QnJCLFNBQVMsRUFDVHdCLGNBQ0QsQ0FBQztRQUNELE1BQU1rQixlQUFlLEdBQUdDLG9CQUFvQixDQUFDbEIsZ0JBQWdCLEVBQUV4QixLQUFBLENBQUsyQyxTQUFTLEVBQUVKLGlCQUFpQixDQUFDO1FBQ2pHLElBQUliLGFBQWEsRUFBRTtVQUNsQmUsZUFBZSxDQUFDdEIsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDeUIsY0FBYyxHQUFHNUMsS0FBQSxDQUFLaUIsUUFBUSxDQUFDNEIsT0FBTyxDQUFDLENBQUM7UUFDM0U7UUFDQTdDLEtBQUEsQ0FBS21CLGNBQWMsR0FBR3NCLGVBQWUsQ0FBQ3RCLGNBQWM7UUFDcERuQixLQUFBLENBQUs4QyxzQkFBc0IsR0FBR0wsZUFBZSxDQUFDSyxzQkFBc0I7UUFDcEU5QyxLQUFBLENBQUsrQyxTQUFTLEdBQUd2QixnQkFBZ0IsSUFBS0EsZ0JBQWdCLENBQUNHLEtBQWdCO01BQ3hFLENBQUMsTUFBTTtRQUNOM0IsS0FBQSxDQUFLK0MsU0FBUyxHQUFHL0MsS0FBQSxDQUFLaUIsUUFBUSxDQUFDK0IsU0FBUyxDQUFDLENBQUMsRUFBRXJCLEtBQUs7TUFDbEQ7TUFFQSxJQUFJLENBQUMzQixLQUFBLENBQUszQixRQUFRLEVBQUU7UUFDbkIyQixLQUFBLENBQUtpRCxNQUFNLEdBQUdqRCxLQUFBLENBQUtrRCxRQUFRLENBQUMsTUFBTSxDQUFFO1FBQ3BDbEQsS0FBQSxDQUFLbUQsVUFBVSxHQUFHbkQsS0FBQSxDQUFLb0QsRUFBRTtNQUMxQixDQUFDLE1BQU07UUFDTnBELEtBQUEsQ0FBS2lELE1BQU0sR0FBR2pELEtBQUEsQ0FBS29ELEVBQUU7UUFDckJwRCxLQUFBLENBQUttRCxVQUFVLEdBQUcsR0FBR25ELEtBQUEsQ0FBS29ELEVBQUUsVUFBVTtNQUN2QztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsSUFBSXBELEtBQUEsQ0FBS3FELFdBQVcsS0FBS2pDLFNBQVMsRUFBRTtRQUNuQ3BCLEtBQUEsQ0FBS3NELFNBQVMsR0FBR0MsaUJBQWlCLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDQyxvQkFBb0IsQ0FBQzFELEtBQUEsQ0FBS3FELFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7TUFDekgsQ0FBQyxNQUFNO1FBQ05yRCxLQUFBLENBQUtzRCxTQUFTLEdBQUdDLGlCQUFpQixDQUFDSSxFQUFFLENBQUNDLFVBQVUsQ0FBQztNQUNsRDtNQUFDLE9BQUE1RCxLQUFBO0lBQ0Y7SUFBQzZELFFBQUEsR0FBQWxHLFNBQUE7SUFBQW1HLGNBQUEsQ0FBQW5HLFNBQUEsRUFBQWlDLHFCQUFBO0lBQUEsSUFBQW1FLE1BQUEsR0FBQXBHLFNBQUEsQ0FBQXFHLFNBQUE7SUFBQUQsTUFBQSxDQUVERSxzQkFBc0IsR0FBdEIsU0FBQUEsc0JBQXNCQSxDQUFDQyxhQUE0QixFQUFFQyxZQUFxQixFQUFVO01BQ25GLE1BQU1DLEtBQUssR0FBRzlDLDJCQUEyQixDQUFDNkMsWUFBWSxDQUFDLENBQUMxQyxZQUEwQjtNQUNsRixJQUFJNEMsY0FBYztNQUNsQixJQUFJQyxNQUFNO01BQ1YsSUFBSUYsS0FBSyxDQUFDekMsS0FBSyxnREFBcUMsRUFBRTtRQUNyRDBDLGNBQWMsR0FBR0UsZ0JBQWdCLENBQUNDLGlCQUFpQixDQUFDSixLQUFLLENBQUN2QyxNQUFNLENBQUNLLEtBQUssQ0FBQztRQUN2RW9DLE1BQU0sR0FBR0YsS0FBSztNQUNmLENBQUMsTUFBTTtRQUNOLE1BQU1LLGVBQWUsR0FBRyxJQUFJLENBQUN2RCxXQUFXLENBQUMyQixPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJNkIsU0FBUyxHQUFHUCxZQUFZLENBQUN0QixPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJNkIsU0FBUyxDQUFDQyxVQUFVLENBQUNGLGVBQWUsQ0FBQyxFQUFFO1VBQzFDQyxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0UsU0FBUyxDQUFDSCxlQUFlLENBQUNJLE1BQU0sQ0FBQztVQUN2RCxJQUFJSCxTQUFTLENBQUNJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDaENKLFNBQVMsR0FBR0EsU0FBUyxDQUFDSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1VBQy9CO1FBQ0Q7UUFDQVYsY0FBYyxHQUFHRSxnQkFBZ0IsQ0FBQ0MsaUJBQWlCLENBQUNFLFNBQVMsQ0FBQztRQUM5REosTUFBTSxHQUFHSSxTQUFTO01BQ25CO01BQ0EsTUFBTU0sVUFBVSxHQUFHQyxVQUFVLENBQUNDLDBCQUEwQixDQUFDLElBQUksQ0FBQ0MsS0FBSyxFQUFFLElBQUksQ0FBQ0gsVUFBVSxDQUFDO01BQ3JGLE1BQU1HLEtBQUssR0FBRyxJQUFJLENBQUNyQyxzQkFBc0IsSUFBSXNCLEtBQUssQ0FBQ3hDLEtBQUssR0FBR3dELDJCQUEyQixDQUFDaEIsS0FBSyxDQUFDeEMsS0FBSyxDQUFDLEdBQUcsRUFBRTtNQUV4RyxNQUFNd0IsRUFBRSxHQUFHLElBQUksQ0FBQ0EsRUFBRSxHQUFHaUMsa0JBQWtCLENBQUNmLE1BQU0sQ0FBQyxHQUFHbEQsU0FBUztNQUUzRCxPQUFPa0UsR0FBRztBQUNaO0FBQ0E7QUFDQSxPQUFPLElBQUksQ0FBQ0MsSUFBSSxDQUFDLElBQUksRUFBRW5DLEVBQUUsQ0FBQztBQUMxQixjQUFjK0IsS0FBSztBQUNuQixtQkFBbUJILFVBQVU7QUFDN0Isb0JBQW9CWCxjQUFjLEdBQUdILGFBQWEsQ0FBQ3NCLFNBQVMsR0FBRyxJQUFJLENBQUN0RSxXQUFXO0FBQy9FLGlCQUFpQmlELFlBQVk7QUFDN0IsNEJBQTRCRCxhQUFhLENBQUM1QixZQUFZO0FBQ3RELHVCQUF1QitCLGNBQWM7QUFDckMsZ0JBQWdCSCxhQUFhLENBQUN2QixTQUFTO0FBQ3ZDLG9CQUFvQixJQUFJLENBQUNVLFdBQVc7QUFDcEMsaUJBQWlCLElBQUksQ0FBQ29DLFFBQVE7QUFDOUIsZ0JBQWdCdkIsYUFBYSxDQUFDd0IsT0FBTztBQUNyQyxzQ0FBc0N4QixhQUFhLENBQUN5Qiw2QkFBNkI7QUFDakYsOEJBQThCekIsYUFBYSxDQUFDMEIsZ0JBQWdCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0lBQ3pCLENBQUM7SUFBQTdCLE1BQUEsQ0FFRDhCLGlCQUFpQixHQUFqQixTQUFBQSxpQkFBaUJBLENBQUEsRUFBc0I7TUFDdEMsSUFBSSxJQUFJLENBQUMxRSxjQUFjLENBQUUwRCxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RDLE9BQU8sRUFBRTtNQUNWO01BQ0EsSUFBSSxJQUFJLENBQUM5QixTQUFTLEVBQUUrQyxRQUFRLENBQUMsNENBQTRDLENBQUMsRUFBRTtRQUMzRSxPQUFPLElBQUksQ0FBQzNFLGNBQWMsQ0FBRTRFLEdBQUcsQ0FBQyxDQUFDN0IsYUFBYSxFQUFFOEIsZ0JBQWdCLEtBQUs7VUFDcEUsSUFBSTlCLGFBQWEsQ0FBQ3ZCLFNBQVMsRUFBRTtZQUM1QixNQUFNd0IsWUFBWSxHQUFHLElBQUksQ0FBQ2pELFdBQVcsQ0FBQytFLFFBQVEsQ0FBQyxDQUFDLENBQUNDLG9CQUFvQixDQUFDaEMsYUFBYSxDQUFDdEIsY0FBYyxFQUFFLElBQUksQ0FBQzFCLFdBQVcsQ0FBQztZQUNySCxNQUFNa0QsS0FBSyxHQUFHRCxZQUFZLENBQUNuQixTQUFTLENBQUMsQ0FBQztZQUN0QyxJQUNDb0IsS0FBSyxDQUFDekMsS0FBSyxnREFBcUMsSUFDaERzRCxVQUFVLENBQUNrQiw2QkFBNkIsQ0FBQy9CLEtBQUssRUFBRSxJQUFJLENBQUNnQyxhQUFhLENBQUMsRUFDbEU7Y0FDRCxJQUFJaEMsS0FBSyxDQUFDdkMsTUFBTSxDQUFDd0UsZUFBZSxDQUFDMUUsS0FBSyx3REFBNkMsRUFBRTtnQkFDcEYsT0FBTzJELEdBQUcsdUNBQXVDVSxnQkFBZ0I7QUFDeEUsaURBQWlEQSxnQkFBZ0I7QUFDakU7QUFDQTtBQUNBLDJCQUEyQjtjQUNyQjtjQUNBLE9BQU8sSUFBSSxDQUFDL0Isc0JBQXNCLENBQUNDLGFBQWEsRUFBRUMsWUFBWSxDQUFDO1lBQ2hFO1VBQ0Q7VUFDQSxPQUFPLEVBQUU7UUFDVixDQUFDLENBQUM7TUFDSCxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUNwQixTQUFTLEtBQUssMkNBQTJDLEVBQUU7UUFDMUUsT0FBTyxJQUFJLENBQUM1QixjQUFjLENBQUU0RSxHQUFHLENBQUU3QixhQUFhLElBQUs7VUFDbEQsSUFBSUEsYUFBYSxDQUFDdkIsU0FBUyxFQUFFO1lBQzVCLE1BQU13QixZQUFZLEdBQUcsSUFBSSxDQUFDakQsV0FBVyxDQUFDK0UsUUFBUSxDQUFDLENBQUMsQ0FBQ0Msb0JBQW9CLENBQUNoQyxhQUFhLENBQUN0QixjQUFjLEVBQUUsSUFBSSxDQUFDMUIsV0FBVyxDQUFDO1lBQ3JILE9BQU8sSUFBSSxDQUFDK0Msc0JBQXNCLENBQUNDLGFBQWEsRUFBRUMsWUFBWSxDQUFDO1VBQ2hFLENBQUMsTUFBTTtZQUNOLE9BQU8sRUFBRTtVQUNWO1FBQ0QsQ0FBQyxDQUFDO01BQ0g7TUFDQSxPQUFPLEVBQUU7SUFDVjs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBSixNQUFBLENBR0F1QyxzQkFBc0IsR0FBdEIsU0FBQUEsc0JBQXNCQSxDQUFBLEVBQVk7TUFDakMsSUFBSSxJQUFJLENBQUNuRixjQUFjLENBQUUwRCxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RDLElBQUksSUFBSSxDQUFDMUQsY0FBYyxDQUFFLENBQUMsQ0FBQyxDQUFDbUIsWUFBWSxDQUFDdUMsTUFBTSxLQUFLLENBQUMsRUFBRTtVQUN0RCxNQUFNVCxLQUFLLEdBQUc5QywyQkFBMkIsQ0FDeEMsSUFBSSxDQUFDSixXQUFXLENBQUMrRSxRQUFRLENBQUMsQ0FBQyxDQUFDQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMvRSxjQUFjLENBQUUsQ0FBQyxDQUFDLENBQUN5QixjQUFjLEVBQUUsSUFBSSxDQUFDMUIsV0FBVyxDQUMxRyxDQUFDLENBQUNPLFlBQStDO1VBQ2pELElBQUk4RSxVQUFzQztVQUMxQyxJQUFJQyxjQUEwQztVQUM5QztVQUNBLElBQUlwQyxLQUFLLENBQUN6QyxLQUFLLEtBQUssMkNBQTJDLEVBQUU7WUFDaEU0RSxVQUFVLEdBQUduQyxLQUFLO1VBQ25CLENBQUMsTUFBTSxJQUFJcUMsbUJBQW1CLENBQUNyQyxLQUFLLENBQUMsRUFBRTtZQUN0Q21DLFVBQVUsR0FBR25DLEtBQUssRUFBRXZDLE1BQU0sRUFBRUMsT0FBeUI7VUFDdEQsQ0FBQyxNQUFNLElBQUk0RSx1QkFBdUIsQ0FBQ3RDLEtBQUssQ0FBQyxFQUFFO1lBQzFDb0MsY0FBYyxHQUFHcEMsS0FBSyxFQUFFdkMsTUFBTSxFQUFFQyxPQUF5QjtVQUMxRDtVQUVBLElBQUl5RSxVQUFVLEVBQUVJLElBQUksQ0FBQzlCLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEMsT0FBUTBCLFVBQVUsQ0FBQ0ksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFnQkMsS0FBSyxFQUFFOUUsT0FBTyxFQUFFTSxXQUFXLEVBQUV1QixFQUFFLEVBQUVrRCxhQUFhLEVBQUVDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSTtVQUM3RztVQUVBLElBQUlOLGNBQWMsRUFBRTNCLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDakMsT0FBUTJCLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBZ0JJLEtBQUssRUFBRTlFLE9BQU8sRUFBRU0sV0FBVyxFQUFFdUIsRUFBRSxFQUFFa0QsYUFBYSxFQUFFQyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUk7VUFDNUc7UUFDRDtNQUNEO01BQ0EsT0FBTyxLQUFLO0lBQ2I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUEvQyxNQUFBLENBS0FnRCxvQkFBb0IsR0FBcEIsU0FBQUEsb0JBQW9CQSxDQUFDQyxlQUF3QixFQUFVO01BQ3RELFFBQVEsSUFBSSxDQUFDQyxNQUFNLENBQUM3SSxJQUFJO1FBQ3ZCLEtBQUssc0JBQXNCO1VBQzFCLE9BQU9rSCxHQUFHLDRDQUE0QyxJQUFJLENBQUMyQixNQUFNLENBQUNDLGVBQWU7QUFDckYsNEJBQTRCLElBQUksQ0FBQ0QsTUFBTSxDQUFDRSxXQUFXO0FBQ25ELDRCQUE0QixJQUFJLENBQUNGLE1BQU0sQ0FBQ0csV0FBVztBQUNuRCw2QkFBNkIsSUFBSSxDQUFDSCxNQUFNLENBQUNJLFlBQVk7QUFDckQseUJBQXlCTCxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsTUFBTSxDQUFDSyxRQUFRO0FBQ25FLHlCQUF5Qk4sZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUNDLE1BQU0sQ0FBQ00sUUFBUTtBQUNuRSwwQkFBMEJQLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDQyxNQUFNLENBQUNPLFNBQVM7QUFDckUsMkJBQTJCLElBQUksQ0FBQ1AsTUFBTSxDQUFDUSxVQUFVO0FBQ2pELDJCQUEyQixJQUFJLENBQUNSLE1BQU0sQ0FBQ1MsVUFBVTtBQUNqRCwyQkFBMkIsSUFBSSxDQUFDVCxNQUFNLENBQUNVLFVBQVU7QUFDakQsNEJBQTRCLElBQUksQ0FBQ1YsTUFBTSxDQUFDVyxXQUFXO0FBQ25ELDJCQUEyQixJQUFJLENBQUNYLE1BQU0sQ0FBQ1ksVUFBVTtBQUNqRCwyQkFBMkIsSUFBSSxDQUFDWixNQUFNLENBQUNhLFVBQVU7QUFDakQsMkJBQTJCLElBQUksQ0FBQ2IsTUFBTSxDQUFDYyxVQUFVO0FBQ2pELDRCQUE0QixJQUFJLENBQUNkLE1BQU0sQ0FBQ2UsV0FBVztBQUNuRCx3Q0FBd0MsSUFBSSxDQUFDZixNQUFNLENBQUNnQix1QkFBdUI7QUFDM0UsaUNBQWlDLElBQUksQ0FBQ2hCLE1BQU0sQ0FBQ2lCLGdCQUFnQixNQUFNO1FBQ2hFLEtBQUssY0FBYztRQUNuQjtVQUNDLE9BQU81QyxHQUFHO0FBQ2Qsb0JBQW9CMEIsZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUNDLE1BQU0sQ0FBQ00sUUFBUTtBQUM5RCxvQkFBb0JQLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDQyxNQUFNLENBQUNLLFFBQVE7QUFDOUQscUJBQXFCTixlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsTUFBTSxDQUFDTyxTQUFTO0FBQ2hFLDJCQUEyQixJQUFJLENBQUNQLE1BQU0sQ0FBQ2tCLGVBQWU7QUFDdEQsMkJBQTJCLElBQUksQ0FBQ2xCLE1BQU0sQ0FBQ21CLGVBQWU7QUFDdEQsNEJBQTRCLElBQUksQ0FBQ25CLE1BQU0sQ0FBQ2lCLGdCQUFnQixNQUFNO01BQzVEO0lBQ0QsQ0FBQztJQUFBbkUsTUFBQSxDQUVEc0UsV0FBVyxHQUFYLFNBQUFBLFdBQVdBLENBQUEsRUFBVztNQUNyQixNQUFNQyxXQUFXLEdBQUksSUFBSSxDQUFDN0MsUUFBUSxJQUFJLElBQUksQ0FBQ0EsUUFBUSxDQUFDOEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSyxFQUFFO01BQ2xHLE1BQU1DLFlBQVksR0FBRyxJQUFJLENBQUN2SCxRQUFRLENBQUM0QixPQUFPLENBQUMsQ0FBQztNQUM1QyxNQUFNNEIsZUFBZSxHQUFHLElBQUksQ0FBQ3ZELFdBQVcsQ0FBQzJCLE9BQU8sQ0FBQyxDQUFDO01BQ2xELE1BQU00RixpQkFBaUIsR0FBR25ILDJCQUEyQixDQUFDLElBQUksQ0FBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQ0MsV0FBVyxDQUFDO01BQ3RGLE1BQU1zRSxTQUFTLEdBQ2RpRCxpQkFBaUIsQ0FBQ0MsZUFBZSxFQUFFQyxlQUFlLEVBQUVDLEtBQUssS0FBSyxXQUFXLEdBQUcsMkJBQTJCLEdBQUd4SCxTQUFTO01BQ3BILE1BQU00RixlQUFlLEdBQUcsSUFBSSxDQUFDVixzQkFBc0IsQ0FBQyxDQUFDO01BRXJELElBQUksQ0FBQyxJQUFJLENBQUMzRCxTQUFTLEVBQUU7UUFDcEIsT0FBTyxFQUFFO01BQ1YsQ0FBQyxNQUFNO1FBQ04sT0FBTzJDLEdBQUc7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxJQUFJLENBQUNyQyxNQUFNO0FBQ3RCLGlCQUFpQnVGLFlBQVk7QUFDN0Isb0JBQW9CL0QsZUFBZTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLElBQUksQ0FBQ3RCLFVBQVU7QUFDMUIsaUJBQWlCLElBQUksQ0FBQ0csU0FBUztBQUMvQiw0QkFBNEJrQyxTQUFTO0FBQ3JDLGdCQUFnQixJQUFJLENBQUM3QyxTQUFTO0FBQzlCO0FBQ0EsaUNBQWlDOEIsZUFBZTtBQUNoRCwyQkFBMkI2RCxXQUFXO0FBQ3RDLHVCQUF1QixJQUFJLENBQUNPLGNBQWM7QUFDMUM7QUFDQSxPQUFPLElBQUksQ0FBQ0MsZ0JBQWdCLENBQ3RCLElBQUksQ0FBQzNELEtBQUssS0FBSy9ELFNBQVMsRUFDeEJrRSxHQUFHO0FBQ1QsNEJBQTRCLElBQUksQ0FBQ04sVUFBVSxXQUFXLElBQUksQ0FBQ0csS0FBSztBQUNoRSxpQkFDSyxDQUFDO0FBQ047QUFDQSxPQUFPLElBQUksQ0FBQzRCLG9CQUFvQixDQUFDQyxlQUFlLENBQUM7QUFDakQ7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFJLENBQUNuQixpQkFBaUIsQ0FBQyxDQUFDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7TUFDbEI7SUFDRCxDQUFDO0lBQUEsT0FBQWxJLFNBQUE7RUFBQSxFQTlYcUNvTCwyQkFBMkIsR0FBQTVJLFdBQUEsR0FBQTZJLHlCQUFBLENBQUFySixPQUFBLENBQUFxRSxTQUFBLFNBQUE5RixLQUFBO0lBQUErSyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWhKLFlBQUEsR0FBQTRJLHlCQUFBLENBQUFySixPQUFBLENBQUFxRSxTQUFBLGtCQUFBekYsS0FBQTtJQUFBMEssWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUEvSSxZQUFBLEdBQUEySSx5QkFBQSxDQUFBckosT0FBQSxDQUFBcUUsU0FBQSxlQUFBdkYsS0FBQTtJQUFBd0ssWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUE5SSxZQUFBLEdBQUEwSSx5QkFBQSxDQUFBckosT0FBQSxDQUFBcUUsU0FBQSxxQkFBQXJGLEtBQUE7SUFBQXNLLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN0ksWUFBQSxHQUFBeUkseUJBQUEsQ0FBQXJKLE9BQUEsQ0FBQXFFLFNBQUEsNkJBQUFwRixLQUFBO0lBQUFxSyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTVJLFlBQUEsR0FBQXdJLHlCQUFBLENBQUFySixPQUFBLENBQUFxRSxTQUFBLG9CQUFBbkYsS0FBQTtJQUFBb0ssWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FxRGpELElBQUk7SUFBQTtFQUFBLElBQUEzSSxZQUFBLEdBQUF1SSx5QkFBQSxDQUFBckosT0FBQSxDQUFBcUUsU0FBQSxZQUFBbEYsS0FBQTtJQUFBbUssWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUExSSxZQUFBLEdBQUFzSSx5QkFBQSxDQUFBckosT0FBQSxDQUFBcUUsU0FBQSxpQkFBQWpGLEtBQUE7SUFBQWtLLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BYUtDLFVBQVUsQ0FBQ0MsSUFBSTtJQUFBO0VBQUEsSUFBQTNJLFlBQUEsR0FBQXFJLHlCQUFBLENBQUFySixPQUFBLENBQUFxRSxTQUFBLHFCQUFBaEYsTUFBQTtJQUFBaUssWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF4SSxhQUFBLEdBQUFvSSx5QkFBQSxDQUFBckosT0FBQSxDQUFBcUUsU0FBQSxrQkFBQS9FLE1BQUE7SUFBQWdLLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdkksYUFBQSxHQUFBbUkseUJBQUEsQ0FBQXJKLE9BQUEsQ0FBQXFFLFNBQUEsZ0JBQUE5RSxNQUFBO0lBQUErSixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQWU1QixNQUFNO0lBQUE7RUFBQSxJQUFBdEksYUFBQSxHQUFBa0kseUJBQUEsQ0FBQXJKLE9BQUEsQ0FBQXFFLFNBQUEsZUFBQTdFLE1BQUE7SUFBQThKLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBckksYUFBQSxHQUFBaUkseUJBQUEsQ0FBQXJKLE9BQUEsQ0FBQXFFLFNBQUEsbUJBQUEzRSxNQUFBO0lBQUE0SixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBJLGFBQUEsR0FBQWdJLHlCQUFBLENBQUFySixPQUFBLENBQUFxRSxTQUFBLGFBQUF2RSxNQUFBO0lBQUF3SixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQWdCYztRQUFFaEwsSUFBSSxFQUFFLGNBQWM7UUFBRW1KLFFBQVEsRUFBRSxDQUFDO1FBQUVDLFNBQVMsRUFBRSxDQUFDO1FBQUVGLFFBQVEsRUFBRSxDQUFDO1FBQUVhLGVBQWUsRUFBRTtNQUFHLENBQUM7SUFBQTtFQUFBLElBQUF4SSxPQUFBLE1BQUFELE1BQUE7RUFBQW1FLFFBQUEsR0FBQWxHLFNBQUE7RUFBQSxPQUFBa0csUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
498
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtQmxvY2siLCJfZGVjIiwiZGVmaW5lQnVpbGRpbmdCbG9jayIsIm5hbWUiLCJuYW1lc3BhY2UiLCJwdWJsaWNOYW1lc3BhY2UiLCJyZXR1cm5UeXBlcyIsIl9kZWMyIiwiYmxvY2tBdHRyaWJ1dGUiLCJ0eXBlIiwiaXNQdWJsaWMiLCJyZXF1aXJlZCIsIl9kZWMzIiwiZXhwZWN0ZWRUeXBlcyIsIl9kZWM0IiwiZXhwZWN0ZWRBbm5vdGF0aW9uVHlwZXMiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiX2RlYzExIiwiX2RlYzEyIiwiX2RlYzEzIiwiYmxvY2tFdmVudCIsIl9kZWMxNCIsImJsb2NrQWdncmVnYXRpb24iLCJzbG90IiwiaXNEZWZhdWx0IiwiX2RlYzE1IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrVGVtcGxhdCIsInByb3BzIiwiY29uZmlndXJhdGlvbiIsIm1TZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwiX2Rlc2NyaXB0b3IxMSIsIl9kZXNjcmlwdG9yMTIiLCJfZGVzY3JpcHRvcjEzIiwiX2Rlc2NyaXB0b3IxNCIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJmb3JtQ29udGFpbmVycyIsInVuZGVmaW5lZCIsIm9Db250ZXh0T2JqZWN0UGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIm1FeHRyYVNldHRpbmdzIiwib0ZhY2V0RGVmaW5pdGlvbiIsInRhcmdldE9iamVjdCIsImhhc0ZpZWxkR3JvdXAiLCIkVHlwZSIsIkxhYmVsIiwiVGFyZ2V0IiwiJHRhcmdldCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInBhdGgiLCJ0ZXJtIiwidmFsdWUiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiYW5ub3RhdGlvbnMiLCJmaWVsZHMiLCJmb3JtRWxlbWVudHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJvRm9ybURlZmluaXRpb24iLCJjcmVhdGVGb3JtRGVmaW5pdGlvbiIsImlzVmlzaWJsZSIsImFubm90YXRpb25QYXRoIiwiZ2V0UGF0aCIsInVzZUZvcm1Db250YWluZXJMYWJlbHMiLCJmYWNldFR5cGUiLCJnZXRPYmplY3QiLCJfYXBpSWQiLCJjcmVhdGVJZCIsIl9jb250ZW50SWQiLCJpZCIsImRpc3BsYXlNb2RlIiwiX2VkaXRhYmxlIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJlcXVhbCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwiVUkiLCJJc0VkaXRhYmxlIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldERhdGFGaWVsZENvbGxlY3Rpb24iLCJmb3JtQ29udGFpbmVyIiwiZmFjZXRDb250ZXh0IiwiZmFjZXQiLCJuYXZpZ2F0aW9uUGF0aCIsImlkUGFydCIsIkFubm90YXRpb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsImNvbnRleHRQYXRoUGF0aCIsImZhY2V0UGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJjaGFyQXQiLCJzbGljZSIsInRpdGxlTGV2ZWwiLCJGb3JtSGVscGVyIiwiZ2V0Rm9ybUNvbnRhaW5lclRpdGxlTGV2ZWwiLCJ0aXRsZSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldEZvcm1Db250YWluZXJJRCIsInhtbCIsImF0dHIiLCJlbnRpdHlTZXQiLCJvbkNoYW5nZSIsImFjdGlvbnMiLCJ1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3RlcyIsImFubm90YXRpb25IaWRkZW4iLCJnZXRGb3JtQ29udGFpbmVycyIsImluY2x1ZGVzIiwibWFwIiwiZm9ybUNvbnRhaW5lcklkeCIsImdldE1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJpc1JlZmVyZW5jZUZhY2V0UGFydE9mUHJldmlldyIsInBhcnRPZlByZXZpZXciLCIkQW5ub3RhdGlvblBhdGgiLCJjaGVja0lmVGV4dEFyZWFJc0Fsb25lIiwiZmllbGRHcm91cCIsImlkZW50aWZpY2F0aW9uIiwiaGFzRmllbGRHcm91cFRhcmdldCIsImhhc0lkZW50aWZpY2F0aW9uVGFyZ2V0IiwiRGF0YSIsIlZhbHVlIiwiTXVsdGlMaW5lVGV4dCIsInZhbHVlT2YiLCJnZXRMYXlvdXRJbmZvcm1hdGlvbiIsImlzVGV4dEFyZWFBbG9uZSIsImxheW91dCIsImFkanVzdExhYmVsU3BhbiIsImJyZWFrcG9pbnRMIiwiYnJlYWtwb2ludE0iLCJicmVha3BvaW50WEwiLCJjb2x1bW5zTCIsImNvbHVtbnNNIiwiY29sdW1uc1hMIiwiZW1wdHlTcGFuTCIsImVtcHR5U3Bhbk0iLCJlbXB0eVNwYW5TIiwiZW1wdHlTcGFuWEwiLCJsYWJlbFNwYW5MIiwibGFiZWxTcGFuTSIsImxhYmVsU3BhblMiLCJsYWJlbFNwYW5YTCIsInNpbmdsZUNvbnRhaW5lckZ1bGxTaXplIiwiYmFja2dyb3VuZERlc2lnbiIsImxhYmVsQ2VsbHNMYXJnZSIsImVtcHR5Q2VsbHNMYXJnZSIsImdldFRlbXBsYXRlIiwib25DaGFuZ2VTdHIiLCJyZXBsYWNlIiwibWV0YVBhdGhQYXRoIiwiY29udGV4dE9iamVjdFBhdGgiLCJjb250ZXh0TG9jYXRpb24iLCJ0YXJnZXRFbnRpdHlTZXQiLCJfdHlwZSIsImFyaWFMYWJlbGxlZEJ5IiwiYWRkQ29uZGl0aW9uYWxseSIsIkJ1aWxkaW5nQmxvY2tUZW1wbGF0aW5nQmFzZSIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIlRpdGxlTGV2ZWwiLCJBdXRvIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGb3JtLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sbGVjdGlvbkZhY2V0LFxuXHREYXRhRmllbGQsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXBUeXBlLFxuXHRJZGVudGlmaWNhdGlvbixcblx0UmVmZXJlbmNlRmFjZXRcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaWZFbHNlLCByZXNvbHZlQmluZGluZ1N0cmluZyB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQge1xuXHRibG9ja0FnZ3JlZ2F0aW9uLFxuXHRibG9ja0F0dHJpYnV0ZSxcblx0YmxvY2tFdmVudCxcblx0ZGVmaW5lQnVpbGRpbmdCbG9ja1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZVByb2Nlc3NvclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyB4bWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvdGVtcGxhdGluZy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrVGVtcGxhdGluZ0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL3RlbXBsYXRpbmcvQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGhhc0ZpZWxkR3JvdXBUYXJnZXQsIGhhc0lkZW50aWZpY2F0aW9uVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IEZvcm1Db250YWluZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgY3JlYXRlRm9ybURlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgZ2V0Rm9ybUNvbnRhaW5lcklEIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IEZvcm1IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtSGVscGVyXCI7XG5pbXBvcnQgeyBUaXRsZUxldmVsIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgJENvbHVtbkxheW91dFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Db2x1bW5MYXlvdXRcIjtcbmltcG9ydCB0eXBlIHsgJFJlc3BvbnNpdmVHcmlkTGF5b3V0U2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL1Jlc3BvbnNpdmVHcmlkTGF5b3V0XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IEFubm90YXRpb25IZWxwZXIgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Bbm5vdGF0aW9uSGVscGVyXCI7XG5cbnR5cGUgQ29sdW1uTGF5b3V0ID0gJENvbHVtbkxheW91dFNldHRpbmdzICYge1xuXHR0eXBlOiBcIkNvbHVtbkxheW91dFwiO1xufTtcbnR5cGUgUmVzcG9uc2l2ZUdyaWRMYXlvdXQgPSAkUmVzcG9uc2l2ZUdyaWRMYXlvdXRTZXR0aW5ncyAmIHtcblx0dHlwZTogXCJSZXNwb25zaXZlR3JpZExheW91dFwiO1xufTtcbnR5cGUgRm9ybUxheW91dEluZm9ybWF0aW9uID0gQ29sdW1uTGF5b3V0IHwgUmVzcG9uc2l2ZUdyaWRMYXlvdXQ7XG5cbi8qKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRm9ybSBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBJdCBpcyBkZXNpZ25lZCB0byB3b3JrIGJhc2VkIG9uIGEgRmllbGRHcm91cCBhbm5vdGF0aW9uIGJ1dCBjYW4gYWxzbyB3b3JrIGlmIHlvdSBwcm92aWRlIGEgUmVmZXJlbmNlRmFjZXQgb3IgYSBDb2xsZWN0aW9uRmFjZXRcbiAqXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiAmbHQ7bWFjcm9zOkZvcm0gaWQ9XCJNeUZvcm1cIiBtZXRhUGF0aD1cIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwI0dlbmVyYWxJbmZvcm1hdGlvblwiIC8mZ3Q7XG4gKiA8L3ByZT5cbiAqIEBhbGlhcyBzYXAuZmUubWFjcm9zLkZvcm1cbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZUJ1aWxkaW5nQmxvY2soe1xuXHRuYW1lOiBcIkZvcm1cIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuZm9ybS5Gb3JtQVBJXCJdXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9ybUJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja1RlbXBsYXRpbmdCYXNlIHtcblx0LyoqXG5cdCAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBmb3JtIGNvbnRyb2wuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiLCBpc1B1YmxpYzogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSlcblx0aWQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIHBhdGggb2YgdGhlIGNvbnRleHQgdXNlZCBpbiB0aGUgY3VycmVudCBwYWdlIG9yIGJsb2NrLlxuXHQgKiBUaGlzIHNldHRpbmcgaXMgZGVmaW5lZCBieSB0aGUgZnJhbWV3b3JrLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiwgXCJTaW5nbGV0b25cIiwgXCJFbnRpdHlUeXBlXCJdXG5cdH0pXG5cdGNvbnRleHRQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG1ldGFtb2RlbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dFBhdGguXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdGV4cGVjdGVkQW5ub3RhdGlvblR5cGVzOiBbXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkZpZWxkR3JvdXBUeXBlXCIsXG5cdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiLFxuXHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiXG5cdFx0XSxcblx0XHRleHBlY3RlZFR5cGVzOiBbXCJFbnRpdHlTZXRcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCJdXG5cdH0pXG5cdG1ldGFQYXRoITogQ29udGV4dDtcblxuXHQvKipcblx0ICogVGhlIG1hbmlmZXN0IGRlZmluZWQgZm9ybSBjb250YWluZXJzIHRvIGJlIHNob3duIGluIHRoZSBhY3Rpb24gYXJlYSBvZiB0aGUgdGFibGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRmb3JtQ29udGFpbmVycz86IEZvcm1Db250YWluZXJbXTtcblxuXHQvKipcblx0ICogQ29udHJvbCB0aGUgcmVuZGVyaW5nIG9mIHRoZSBmb3JtIGNvbnRhaW5lciBsYWJlbHNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHVzZUZvcm1Db250YWluZXJMYWJlbHM/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBUb2dnbGUgUHJldmlldzogUGFydCBvZiBQcmV2aWV3IC8gUHJldmlldyB2aWEgJ1Nob3cgTW9yZScgQnV0dG9uXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRwYXJ0T2ZQcmV2aWV3ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogVGhlIHRpdGxlIG9mIHRoZSBmb3JtIGNvbnRyb2wuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIsIGlzUHVibGljOiB0cnVlIH0pXG5cdHRpdGxlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBcImFyaWEtbGV2ZWxcIiBvZiB0aGUgZm9ybSB0aXRsZSwgdGl0bGVzIG9mIGludGVybmFsbHkgdXNlZCBmb3JtIGNvbnRhaW5lcnMgYXJlIG5lc3RlZCBzdWJzZXF1ZW50bHlcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic2FwLnVpLmNvcmUuVGl0bGVMZXZlbFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHR0aXRsZUxldmVsOiBUaXRsZUxldmVsID0gVGl0bGVMZXZlbC5BdXRvO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSBhZGRlZCB0byBhc3NvY2lhdGUgdGhlIHN1cGVyb3JkaW5hdGUgdGl0bGVcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cHVibGljIGFyaWFMYWJlbGxlZEJ5Pzogc3RyaW5nW107XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRkaXNwbGF5TW9kZT86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBcdElmIHNldCB0byBmYWxzZSwgdGhlIEZvcm0gaXMgbm90IHJlbmRlcmVkLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRpc1Zpc2libGUgPSBcInRydWVcIjtcblx0Ly8gSW5kZXBlbmRlbnQgZnJvbSB0aGUgZm9ybSB0aXRsZSwgY2FuIGJlIGEgYml0IGNvbmZ1c2luZyBpbiBzdGFuZGFsb25lIHVzYWdlIGF0IGlzIG5vdCBzaG93aW5nIGFueXRoaW5nIGJ5IGRlZmF1bHRcblxuXHQvLyBKdXN0IHByb3hpZWQgZG93biB0byB0aGUgRmllbGQgbWF5IG5lZWQgdG8gc2VlIGlmIG5lZWRlZCBvciBub3Rcblx0QGJsb2NrRXZlbnQoKVxuXHRvbkNoYW5nZT86IHN0cmluZztcblxuXHRAYmxvY2tBZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1FbGVtZW50XCIsIGlzUHVibGljOiB0cnVlLCBzbG90OiBcImZvcm1FbGVtZW50c1wiLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Zm9ybUVsZW1lbnRzPzogb2JqZWN0W107XG5cblx0LyoqXG5cdCAqIERlZmluZXMgdGhlIGxheW91dCB0byBiZSB1c2VkIHdpdGhpbiB0aGUgZm9ybS5cblx0ICogSXQgZGVmYXVsdHMgdG8gdGhlIENvbHVtbkxheW91dCwgYnV0IHlvdSBjYW4gYWxzbyB1c2UgYSBSZXNwb25zaXZlR3JpZExheW91dC5cblx0ICogQWxsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBSZXNwb25zaXZlR3JpZExheW91dCBjYW4gYmUgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcIm9iamVjdFwiLCBpc1B1YmxpYzogdHJ1ZSB9KVxuXHRsYXlvdXQ6IEZvcm1MYXlvdXRJbmZvcm1hdGlvbiA9IHsgdHlwZTogXCJDb2x1bW5MYXlvdXRcIiwgY29sdW1uc006IDMsIGNvbHVtbnNYTDogNiwgY29sdW1uc0w6IDQsIGxhYmVsQ2VsbHNMYXJnZTogMTIgfTtcblxuXHQvLyBVc2VmdWwgZm9yIG91ciBkeW5hbWljIHRoaW5nIGJ1dCBhbHNvIGRlcGVuZHMgb24gdGhlIG1ldGFkYXRhIC0+IG1ha2Ugc3VyZSB0aGlzIGlzIHRha2VuIGludG8gYWNjb3VudFxuXHRfZWRpdGFibGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdF9hcGlJZDogc3RyaW5nO1xuXG5cdF9jb250ZW50SWQ6IHN0cmluZztcblxuXHRmYWNldFR5cGU/OiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IocHJvcHM6IFByb3BlcnRpZXNPZjxGb3JtQmxvY2s+LCBjb25maWd1cmF0aW9uOiB1bmtub3duLCBtU2V0dGluZ3M6IFRlbXBsYXRlUHJvY2Vzc29yU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wcywgY29uZmlndXJhdGlvbiwgbVNldHRpbmdzKTtcblx0XHRpZiAodGhpcy5tZXRhUGF0aCAmJiB0aGlzLmNvbnRleHRQYXRoICYmICh0aGlzLmZvcm1Db250YWluZXJzID09PSB1bmRlZmluZWQgfHwgdGhpcy5mb3JtQ29udGFpbmVycyA9PT0gbnVsbCkpIHtcblx0XHRcdGNvbnN0IG9Db250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxGaWVsZEdyb3VwVHlwZSB8IENvbGxlY3Rpb25GYWNldCB8IFJlZmVyZW5jZUZhY2V0Pihcblx0XHRcdFx0dGhpcy5tZXRhUGF0aCxcblx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IG1FeHRyYVNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXHRcdFx0bGV0IG9GYWNldERlZmluaXRpb24gPSBvQ29udGV4dE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRcdFx0bGV0IGhhc0ZpZWxkR3JvdXAgPSBmYWxzZTtcblx0XHRcdGlmIChvRmFjZXREZWZpbml0aW9uICYmIG9GYWNldERlZmluaXRpb24uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkZpZWxkR3JvdXBUeXBlKSB7XG5cdFx0XHRcdC8vIFdyYXAgdGhlIGZhY2V0IGluIGEgZmFrZSBGYWNldCBhbm5vdGF0aW9uXG5cdFx0XHRcdGhhc0ZpZWxkR3JvdXAgPSB0cnVlO1xuXHRcdFx0XHRvRmFjZXREZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdCRUeXBlOiBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldCxcblx0XHRcdFx0XHRMYWJlbDogb0ZhY2V0RGVmaW5pdGlvbi5MYWJlbCxcblx0XHRcdFx0XHRUYXJnZXQ6IHtcblx0XHRcdFx0XHRcdCR0YXJnZXQ6IG9GYWNldERlZmluaXRpb24sXG5cdFx0XHRcdFx0XHRmdWxseVF1YWxpZmllZE5hbWU6IG9GYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdFx0cGF0aDogXCJcIixcblx0XHRcdFx0XHRcdHRlcm06IFwiXCIsXG5cdFx0XHRcdFx0XHR0eXBlOiBcIkFubm90YXRpb25QYXRoXCIsXG5cdFx0XHRcdFx0XHR2YWx1ZTogZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChvQ29udGV4dE9iamVjdFBhdGgpXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRhbm5vdGF0aW9uczoge30sXG5cdFx0XHRcdFx0ZnVsbHlRdWFsaWZpZWROYW1lOiBvRmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZVxuXHRcdFx0XHR9IGFzIHVua25vd24gYXMgUmVmZXJlbmNlRmFjZXQ7XG5cdFx0XHRcdG1FeHRyYVNldHRpbmdzW29GYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlXSA9IHsgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50cyB9O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBvQ29udmVydGVyQ29udGV4dCA9IHRoaXMuZ2V0Q29udmVydGVyQ29udGV4dChcblx0XHRcdFx0b0NvbnRleHRPYmplY3RQYXRoLFxuXHRcdFx0XHQvKnRoaXMuY29udGV4dFBhdGgqLyB1bmRlZmluZWQsXG5cdFx0XHRcdG1TZXR0aW5ncyxcblx0XHRcdFx0bUV4dHJhU2V0dGluZ3Ncblx0XHRcdCk7XG5cdFx0XHRjb25zdCBvRm9ybURlZmluaXRpb24gPSBjcmVhdGVGb3JtRGVmaW5pdGlvbihvRmFjZXREZWZpbml0aW9uLCB0aGlzLmlzVmlzaWJsZSwgb0NvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0aWYgKGhhc0ZpZWxkR3JvdXApIHtcblx0XHRcdFx0b0Zvcm1EZWZpbml0aW9uLmZvcm1Db250YWluZXJzWzBdLmFubm90YXRpb25QYXRoID0gdGhpcy5tZXRhUGF0aC5nZXRQYXRoKCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmZvcm1Db250YWluZXJzID0gb0Zvcm1EZWZpbml0aW9uLmZvcm1Db250YWluZXJzO1xuXHRcdFx0dGhpcy51c2VGb3JtQ29udGFpbmVyTGFiZWxzID0gb0Zvcm1EZWZpbml0aW9uLnVzZUZvcm1Db250YWluZXJMYWJlbHM7XG5cdFx0XHR0aGlzLmZhY2V0VHlwZSA9IG9GYWNldERlZmluaXRpb24gJiYgKG9GYWNldERlZmluaXRpb24uJFR5cGUgYXMgc3RyaW5nKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5mYWNldFR5cGUgPSB0aGlzLm1ldGFQYXRoLmdldE9iamVjdCgpPy4kVHlwZTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuaXNQdWJsaWMpIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5jcmVhdGVJZChcIkZvcm1cIikhO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gdGhpcy5pZDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fYXBpSWQgPSB0aGlzLmlkO1xuXHRcdFx0dGhpcy5fY29udGVudElkID0gYCR7dGhpcy5pZH0tY29udGVudGA7XG5cdFx0fVxuXHRcdC8vIGlmIGRpc3BsYXlNb2RlID09PSB0cnVlIC0+IF9lZGl0YWJsZSA9IGZhbHNlXG5cdFx0Ly8gaWYgZGlzcGxheU1vZGUgPT09IGZhbHNlIC0+IF9lZGl0YWJsZSA9IHRydWVcblx0XHQvLyAgPT4gaWYgZGlzcGxheU1vZGUgPT09IHtteUJpbmRpbmdWYWx1ZX0gLT4gX2VkaXRhYmxlID0ge215QmluZGluZ1ZhbHVlfSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZVxuXHRcdC8vIGlmIERpc3BsYXlNb2RlID09PSB1bmRlZmluZWQgLT4gX2VkaXRhYmxlID0ge3VpPi9pc0VkaXRhYmxlfVxuXHRcdGlmICh0aGlzLmRpc3BsYXlNb2RlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHRoaXMuX2VkaXRhYmxlID0gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGVxdWFsKHJlc29sdmVCaW5kaW5nU3RyaW5nKHRoaXMuZGlzcGxheU1vZGUsIFwiYm9vbGVhblwiKSwgZmFsc2UpLCB0cnVlLCBmYWxzZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9lZGl0YWJsZSA9IGNvbXBpbGVFeHByZXNzaW9uKFVJLklzRWRpdGFibGUpO1xuXHRcdH1cblx0fVxuXG5cdGdldERhdGFGaWVsZENvbGxlY3Rpb24oZm9ybUNvbnRhaW5lcjogRm9ybUNvbnRhaW5lciwgZmFjZXRDb250ZXh0OiBDb250ZXh0KTogc3RyaW5nIHtcblx0XHRjb25zdCBmYWNldCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhmYWNldENvbnRleHQpLnRhcmdldE9iamVjdCBhcyBGYWNldFR5cGVzO1xuXHRcdGxldCBuYXZpZ2F0aW9uUGF0aDtcblx0XHRsZXQgaWRQYXJ0O1xuXHRcdGlmIChmYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQpIHtcblx0XHRcdG5hdmlnYXRpb25QYXRoID0gQW5ub3RhdGlvbkhlbHBlci5nZXROYXZpZ2F0aW9uUGF0aChmYWNldC5UYXJnZXQudmFsdWUpO1xuXHRcdFx0aWRQYXJ0ID0gZmFjZXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGNvbnRleHRQYXRoUGF0aCA9IHRoaXMuY29udGV4dFBhdGguZ2V0UGF0aCgpO1xuXHRcdFx0bGV0IGZhY2V0UGF0aCA9IGZhY2V0Q29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRpZiAoZmFjZXRQYXRoLnN0YXJ0c1dpdGgoY29udGV4dFBhdGhQYXRoKSkge1xuXHRcdFx0XHRmYWNldFBhdGggPSBmYWNldFBhdGguc3Vic3RyaW5nKGNvbnRleHRQYXRoUGF0aC5sZW5ndGgpO1xuXHRcdFx0XHRpZiAoZmFjZXRQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0XHRmYWNldFBhdGggPSBmYWNldFBhdGguc2xpY2UoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG5hdmlnYXRpb25QYXRoID0gQW5ub3RhdGlvbkhlbHBlci5nZXROYXZpZ2F0aW9uUGF0aChmYWNldFBhdGgpO1xuXHRcdFx0aWRQYXJ0ID0gZmFjZXRQYXRoO1xuXHRcdH1cblx0XHRjb25zdCB0aXRsZUxldmVsID0gRm9ybUhlbHBlci5nZXRGb3JtQ29udGFpbmVyVGl0bGVMZXZlbCh0aGlzLnRpdGxlLCB0aGlzLnRpdGxlTGV2ZWwpO1xuXHRcdGNvbnN0IHRpdGxlID0gdGhpcy51c2VGb3JtQ29udGFpbmVyTGFiZWxzICYmIGZhY2V0LkxhYmVsID8gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZhY2V0LkxhYmVsKSA6IFwiXCI7XG5cblx0XHQvLyBFbmhhbmNlOiBnZW5lcmF0ZSBhIHN0YWJsZSBmb3JtIGNvbnRhaW5lciBpZCB3aGVuZXZlciB3ZSBoYXZlIGEgZGVyaXZlZCBpZFBhcnQgZXZlbiBpZiB0aGlzLmlkIGlzIHVuZGVmaW5lZC5cblx0XHQvLyBQcmV2aW91cyBsb2dpYyBvbmx5IGdlbmVyYXRlZCB3aGVuIChpbXBsaWNpdGx5KSBndWFyZGluZyBieSBvbmUgY29uZGl0aW9uOyBub3cgd2UgYWxsb3cgZmFsbGJhY2sgdG8gaWRQYXJ0LlxuXHRcdC8vIFdlIHN0aWxsIHByb3RlY3QgZ2V0Rm9ybUNvbnRhaW5lcklEIGZyb20gYmVpbmcgY2FsbGVkIHdpdGggYW4gdW5kZWZpbmVkIGlkUGFydC5cblx0XHRjb25zdCBpZCA9ICh0aGlzLmlkICE9PSB1bmRlZmluZWQgfHwgaWRQYXJ0KSAmJiBpZFBhcnQgPyBnZXRGb3JtQ29udGFpbmVySUQoaWRQYXJ0KSA6IHVuZGVmaW5lZDtcblxuXHRcdHJldHVybiB4bWxgXG5cdFx0XHRcdFx0PG1hY3JvOkZvcm1Db250YWluZXJcblx0XHRcdFx0XHR4bWxuczptYWNybz1cInNhcC5mZS5tYWNyb3NcIlxuXHRcdFx0XHRcdCR7dGhpcy5hdHRyKFwiaWRcIiwgaWQpfVxuXHRcdFx0XHRcdHRpdGxlPVwiJHt0aXRsZX1cIlxuXHRcdFx0XHRcdHRpdGxlTGV2ZWw9XCIke3RpdGxlTGV2ZWx9XCJcblx0XHRcdFx0XHRjb250ZXh0UGF0aD1cIiR7bmF2aWdhdGlvblBhdGggPyBmb3JtQ29udGFpbmVyLmVudGl0eVNldCA6IHRoaXMuY29udGV4dFBhdGh9XCJcblx0XHRcdFx0XHRtZXRhUGF0aD1cIiR7ZmFjZXRDb250ZXh0fVwiXG5cdFx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbj1cIiR7Zm9ybUNvbnRhaW5lci5mb3JtRWxlbWVudHN9XCJcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUGF0aD1cIiR7bmF2aWdhdGlvblBhdGh9XCJcblx0XHRcdFx0XHR2aXNpYmxlPVwiJHtmb3JtQ29udGFpbmVyLmlzVmlzaWJsZX1cIlxuXHRcdFx0XHRcdGRpc3BsYXlNb2RlPVwiJHt0aGlzLmRpc3BsYXlNb2RlfVwiXG5cdFx0XHRcdFx0b25DaGFuZ2U9XCIke3RoaXMub25DaGFuZ2V9XCJcblx0XHRcdFx0XHRhY3Rpb25zPVwiJHtmb3JtQ29udGFpbmVyLmFjdGlvbnN9XCJcblx0XHRcdFx0XHR1c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlcz1cIiR7Zm9ybUNvbnRhaW5lci51c2VTaW5nbGVUZXh0QXJlYUZpZWxkQXNOb3Rlc31cIlxuXHRcdFx0XHRcdGhhc1VpSGlkZGVuQW5ub3RhdGlvbj1cIiR7Zm9ybUNvbnRhaW5lci5hbm5vdGF0aW9uSGlkZGVufVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0PG1hY3JvOmZvcm1FbGVtZW50cz5cblx0XHRcdFx0XHQ8c2xvdCBuYW1lPVwiZm9ybUVsZW1lbnRzXCIgLz5cblx0XHRcdFx0PC9tYWNybzpmb3JtRWxlbWVudHM+XG5cdFx0XHQ8L21hY3JvOkZvcm1Db250YWluZXI+YDtcblx0fVxuXG5cdGdldEZvcm1Db250YWluZXJzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcblx0XHRpZiAodGhpcy5mb3JtQ29udGFpbmVycyEubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZmFjZXRUeXBlPy5pbmNsdWRlcyhcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNvbGxlY3Rpb25GYWNldFwiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZm9ybUNvbnRhaW5lcnMhLm1hcCgoZm9ybUNvbnRhaW5lciwgZm9ybUNvbnRhaW5lcklkeCkgPT4ge1xuXHRcdFx0XHRpZiAoZm9ybUNvbnRhaW5lci5pc1Zpc2libGUpIHtcblx0XHRcdFx0XHRjb25zdCBmYWNldENvbnRleHQgPSB0aGlzLmNvbnRleHRQYXRoLmdldE1vZGVsKCkuY3JlYXRlQmluZGluZ0NvbnRleHQoZm9ybUNvbnRhaW5lci5hbm5vdGF0aW9uUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0Y29uc3QgZmFjZXQgPSBmYWNldENvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0ZmFjZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0ICYmXG5cdFx0XHRcdFx0XHRGb3JtSGVscGVyLmlzUmVmZXJlbmNlRmFjZXRQYXJ0T2ZQcmV2aWV3KGZhY2V0LCB0aGlzLnBhcnRPZlByZXZpZXcpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRpZiAoZmFjZXQuVGFyZ2V0LiRBbm5vdGF0aW9uUGF0aC4kVHlwZSA9PT0gQ29tbXVuaWNhdGlvbkFubm90YXRpb25UeXBlcy5BZGRyZXNzVHlwZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4geG1sYDx0ZW1wbGF0ZTp3aXRoIHBhdGg9XCJmb3JtQ29udGFpbmVycz4ke2Zvcm1Db250YWluZXJJZHh9XCIgdmFyPVwiZm9ybUNvbnRhaW5lclwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZW1wbGF0ZTp3aXRoIHBhdGg9XCJmb3JtQ29udGFpbmVycz4ke2Zvcm1Db250YWluZXJJZHh9L2Fubm90YXRpb25QYXRoXCIgdmFyPVwiZmFjZXRcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cInNhcC5mZS5tYWNyb3MuZm9ybS5BZGRyZXNzU2VjdGlvblwiIHR5cGU9XCJYTUxcIiAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvdGVtcGxhdGU6d2l0aD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC90ZW1wbGF0ZTp3aXRoPmA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXREYXRhRmllbGRDb2xsZWN0aW9uKGZvcm1Db250YWluZXIsIGZhY2V0Q29udGV4dCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBcIlwiO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmZhY2V0VHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5SZWZlcmVuY2VGYWNldFwiKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5mb3JtQ29udGFpbmVycyEubWFwKChmb3JtQ29udGFpbmVyKSA9PiB7XG5cdFx0XHRcdGlmIChmb3JtQ29udGFpbmVyLmlzVmlzaWJsZSkge1xuXHRcdFx0XHRcdGNvbnN0IGZhY2V0Q29udGV4dCA9IHRoaXMuY29udGV4dFBhdGguZ2V0TW9kZWwoKS5jcmVhdGVCaW5kaW5nQ29udGV4dChmb3JtQ29udGFpbmVyLmFubm90YXRpb25QYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXREYXRhRmllbGRDb2xsZWN0aW9uKGZvcm1Db250YWluZXIsIGZhY2V0Q29udGV4dCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGEgdGV4dGFyZWEgaXMgYWxvbmUgaW4gYSBmb3JtXG5cdCAqL1xuXHRjaGVja0lmVGV4dEFyZWFJc0Fsb25lKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmZvcm1Db250YWluZXJzIS5sZW5ndGggPT09IDEpIHtcblx0XHRcdGlmICh0aGlzLmZvcm1Db250YWluZXJzIVswXS5mb3JtRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdGNvbnN0IGZhY2V0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKFxuXHRcdFx0XHRcdHRoaXMuY29udGV4dFBhdGguZ2V0TW9kZWwoKS5jcmVhdGVCaW5kaW5nQ29udGV4dCh0aGlzLmZvcm1Db250YWluZXJzIVswXS5hbm5vdGF0aW9uUGF0aCwgdGhpcy5jb250ZXh0UGF0aClcblx0XHRcdFx0KS50YXJnZXRPYmplY3QgYXMgRmllbGRHcm91cFR5cGUgfCBSZWZlcmVuY2VGYWNldDtcblx0XHRcdFx0bGV0IGZpZWxkR3JvdXA6IEZpZWxkR3JvdXBUeXBlIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRsZXQgaWRlbnRpZmljYXRpb246IElkZW50aWZpY2F0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHQvLyBUaGlzIGlzIG9ubHkgZm9yIG1hY3Jvczpmb3JtIHdpdGggYSBGaWVsZEdyb3VwIHRoYXQgY29udGFpbnMgb25seSBhIFRleHRBcmVhXG5cdFx0XHRcdGlmIChmYWNldC4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5GaWVsZEdyb3VwVHlwZVwiKSB7XG5cdFx0XHRcdFx0ZmllbGRHcm91cCA9IGZhY2V0O1xuXHRcdFx0XHR9IGVsc2UgaWYgKGhhc0ZpZWxkR3JvdXBUYXJnZXQoZmFjZXQpKSB7XG5cdFx0XHRcdFx0ZmllbGRHcm91cCA9IGZhY2V0Py5UYXJnZXQ/LiR0YXJnZXQgYXMgRmllbGRHcm91cFR5cGU7XG5cdFx0XHRcdH0gZWxzZSBpZiAoaGFzSWRlbnRpZmljYXRpb25UYXJnZXQoZmFjZXQpKSB7XG5cdFx0XHRcdFx0aWRlbnRpZmljYXRpb24gPSBmYWNldD8uVGFyZ2V0Py4kdGFyZ2V0IGFzIElkZW50aWZpY2F0aW9uO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGZpZWxkR3JvdXA/LkRhdGEubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdFx0cmV0dXJuIChmaWVsZEdyb3VwLkRhdGFbMF0gYXMgRGF0YUZpZWxkKT8uVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uTXVsdGlMaW5lVGV4dD8udmFsdWVPZigpID09PSB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlkZW50aWZpY2F0aW9uPy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0XHRyZXR1cm4gKGlkZW50aWZpY2F0aW9uWzBdIGFzIERhdGFGaWVsZCk/LlZhbHVlPy4kdGFyZ2V0Py5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQ/LnZhbHVlT2YoKSA9PT0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlIHRoZSBwcm9wZXIgbGF5b3V0IGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBgbGF5b3V0YCBwcm9wZXJ0eSBkZWZpbmVkIGV4dGVybmFsbHkuXG5cdCAqIEBwYXJhbSBpc1RleHRBcmVhQWxvbmUgV2hldGhlciB0aGUgc2VjdGlvbiBjb250YWlucyBhIGxvbmVseSBUZXh0QXJlYSBpbnNpZGVcblx0ICogQHJldHVybnMgVGhlIGxheW91dCBpbmZvcm1hdGlvbiBmb3IgdGhlIHhtbC5cblx0ICovXG5cdGdldExheW91dEluZm9ybWF0aW9uKGlzVGV4dEFyZWFBbG9uZTogYm9vbGVhbik6IHN0cmluZyB7XG5cdFx0c3dpdGNoICh0aGlzLmxheW91dC50eXBlKSB7XG5cdFx0XHRjYXNlIFwiUmVzcG9uc2l2ZUdyaWRMYXlvdXRcIjpcblx0XHRcdFx0cmV0dXJuIHhtbGA8ZjpSZXNwb25zaXZlR3JpZExheW91dCBhZGp1c3RMYWJlbFNwYW49XCIke3RoaXMubGF5b3V0LmFkanVzdExhYmVsU3Bhbn1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha3BvaW50TD1cIiR7dGhpcy5sYXlvdXQuYnJlYWtwb2ludEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtwb2ludE09XCIke3RoaXMubGF5b3V0LmJyZWFrcG9pbnRNfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrcG9pbnRYTD1cIiR7dGhpcy5sYXlvdXQuYnJlYWtwb2ludFhMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNMPVwiJHtpc1RleHRBcmVhQWxvbmUgPyAxIDogdGhpcy5sYXlvdXQuY29sdW1uc0x9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sdW1uc009XCIke2lzVGV4dEFyZWFBbG9uZSA/IDEgOiB0aGlzLmxheW91dC5jb2x1bW5zTX1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2x1bW5zWEw9XCIke2lzVGV4dEFyZWFBbG9uZSA/IDEgOiB0aGlzLmxheW91dC5jb2x1bW5zWEx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW1wdHlTcGFuTD1cIiR7dGhpcy5sYXlvdXQuZW1wdHlTcGFuTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbXB0eVNwYW5NPVwiJHt0aGlzLmxheW91dC5lbXB0eVNwYW5NfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVtcHR5U3BhblM9XCIke3RoaXMubGF5b3V0LmVtcHR5U3BhblN9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZW1wdHlTcGFuWEw9XCIke3RoaXMubGF5b3V0LmVtcHR5U3BhblhMfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsU3Bhbkw9XCIke3RoaXMubGF5b3V0LmxhYmVsU3Bhbkx9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWxTcGFuTT1cIiR7dGhpcy5sYXlvdXQubGFiZWxTcGFuTX1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbFNwYW5TPVwiJHt0aGlzLmxheW91dC5sYWJlbFNwYW5TfVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsU3BhblhMPVwiJHt0aGlzLmxheW91dC5sYWJlbFNwYW5YTH1cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzaW5nbGVDb250YWluZXJGdWxsU2l6ZT1cIiR7dGhpcy5sYXlvdXQuc2luZ2xlQ29udGFpbmVyRnVsbFNpemV9XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZERlc2lnbj1cIiR7dGhpcy5sYXlvdXQuYmFja2dyb3VuZERlc2lnbn1cIiAvPmA7XG5cdFx0XHRjYXNlIFwiQ29sdW1uTGF5b3V0XCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4geG1sYDxmOkNvbHVtbkxheW91dFxuXHRcdFx0XHRcdFx0XHRcdGNvbHVtbnNNPVwiJHtpc1RleHRBcmVhQWxvbmUgPyAxIDogdGhpcy5sYXlvdXQuY29sdW1uc019XCJcblx0XHRcdFx0XHRcdFx0XHRjb2x1bW5zTD1cIiR7aXNUZXh0QXJlYUFsb25lID8gMSA6IHRoaXMubGF5b3V0LmNvbHVtbnNMfVwiXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uc1hMPVwiJHtpc1RleHRBcmVhQWxvbmUgPyAxIDogdGhpcy5sYXlvdXQuY29sdW1uc1hMfVwiXG5cdFx0XHRcdFx0XHRcdFx0bGFiZWxDZWxsc0xhcmdlPVwiJHt0aGlzLmxheW91dC5sYWJlbENlbGxzTGFyZ2V9XCJcblx0XHRcdFx0XHRcdFx0XHRlbXB0eUNlbGxzTGFyZ2U9XCIke3RoaXMubGF5b3V0LmVtcHR5Q2VsbHNMYXJnZX1cIlxuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmREZXNpZ249XCIke3RoaXMubGF5b3V0LmJhY2tncm91bmREZXNpZ259XCIgLz5gO1xuXHRcdH1cblx0fVxuXG5cdGdldFRlbXBsYXRlKCk6IHN0cmluZyB7XG5cdFx0Y29uc3Qgb25DaGFuZ2VTdHIgPSAodGhpcy5vbkNoYW5nZSAmJiB0aGlzLm9uQ2hhbmdlLnJlcGxhY2UoXCJ7XCIsIFwiXFxcXHtcIikucmVwbGFjZShcIn1cIiwgXCJcXFxcfVwiKSkgfHwgXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhdGggPSB0aGlzLm1ldGFQYXRoLmdldFBhdGgoKTtcblx0XHRjb25zdCBjb250ZXh0UGF0aFBhdGggPSB0aGlzLmNvbnRleHRQYXRoLmdldFBhdGgoKTtcblx0XHRjb25zdCBjb250ZXh0T2JqZWN0UGF0aCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKTtcblx0XHRjb25zdCBlbnRpdHlTZXQgPVxuXHRcdFx0Y29udGV4dE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy50YXJnZXRFbnRpdHlTZXQ/Ll90eXBlID09PSBcIkVudGl0eVNldFwiID8gXCJ7Y29udGV4dFBhdGg+QHNhcHVpLm5hbWV9XCIgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgaXNUZXh0QXJlYUFsb25lID0gdGhpcy5jaGVja0lmVGV4dEFyZWFJc0Fsb25lKCk7XG5cblx0XHRpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHhtbGA8bWFjcm86Rm9ybUFQSSB4bWxuczptYWNybz1cInNhcC5mZS5tYWNyb3MuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6bWFjcm9kYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0XHRcdFx0eG1sbnM6Zj1cInNhcC51aS5sYXlvdXQuZm9ybVwiXG5cdFx0XHRcdFx0eG1sbnM6Zmw9XCJzYXAudWkuZmxcIlxuXHRcdFx0XHRcdHhtbG5zOmR0PVwic2FwLnVpLmR0XCJcblx0XHRcdFx0XHR4bWxuczpjb3JlQ29udHJvbHM9XCJzYXAuZmUuY29yZS5jb250cm9sc1wiXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMuX2FwaUlkfVwiXG5cdFx0XHRcdFx0bWV0YVBhdGg9XCIke21ldGFQYXRoUGF0aH1cIlxuXHRcdFx0XHRcdGNvbnRleHRQYXRoPVwiJHtjb250ZXh0UGF0aFBhdGh9XCI+XG5cdFx0XHRcdDxmOkZvcm1cblx0XHRcdFx0XHRmbDpkZWxlZ2F0ZT0ne1xuXHRcdFx0XHRcdFx0XCJuYW1lXCI6IFwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm1EZWxlZ2F0ZVwiLFxuXHRcdFx0XHRcdFx0XCJkZWxlZ2F0ZVR5cGVcIjogXCJjb21wbGV0ZVwiXG5cdFx0XHRcdFx0fSdcblx0XHRcdFx0XHRkdDpkZXNpZ250aW1lPVwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm0uZGVzaWdudGltZVwiXG5cdFx0XHRcdFx0aWQ9XCIke3RoaXMuX2NvbnRlbnRJZH1cIlxuXHRcdFx0XHRcdGVkaXRhYmxlPVwiJHt0aGlzLl9lZGl0YWJsZX1cIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTplbnRpdHlTZXQ9XCIke2VudGl0eVNldH1cIlxuXHRcdFx0XHRcdHZpc2libGU9XCIke3RoaXMuaXNWaXNpYmxlfVwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJzYXBVeEFQT2JqZWN0UGFnZVN1YlNlY3Rpb25BbGlnbkNvbnRlbnRcIlxuXHRcdFx0XHRcdG1hY3JvZGF0YTpuYXZpZ2F0aW9uUGF0aD1cIiR7Y29udGV4dFBhdGhQYXRofVwiXG5cdFx0XHRcdFx0bWFjcm9kYXRhOm9uQ2hhbmdlPVwiJHtvbkNoYW5nZVN0cn1cIlxuXHRcdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PVwiJHt0aGlzLmFyaWFMYWJlbGxlZEJ5fVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0XHQke3RoaXMuYWRkQ29uZGl0aW9uYWxseShcblx0XHRcdFx0XHRcdHRoaXMudGl0bGUgIT09IHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdHhtbGA8Zjp0aXRsZT5cblx0XHRcdFx0XHRcdFx0PGNvcmU6VGl0bGUgbGV2ZWw9XCIke3RoaXMudGl0bGVMZXZlbH1cIiB0ZXh0PVwiJHt0aGlzLnRpdGxlfVwiIC8+XG5cdFx0XHRcdFx0XHQ8L2Y6dGl0bGU+YFxuXHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0PGY6bGF5b3V0PlxuXHRcdFx0XHRcdCR7dGhpcy5nZXRMYXlvdXRJbmZvcm1hdGlvbihpc1RleHRBcmVhQWxvbmUpfVxuXG5cdFx0XHRcdFx0PC9mOmxheW91dD5cblx0XHRcdFx0XHQ8Zjpmb3JtQ29udGFpbmVycz5cblx0XHRcdFx0XHRcdCR7dGhpcy5nZXRGb3JtQ29udGFpbmVycygpfVxuXHRcdFx0XHRcdDwvZjpmb3JtQ29udGFpbmVycz5cblx0XHRcdFx0XHQ8ZjpkZXBlbmRlbnRzPlxuXHRcdFx0XHRcdFx0PGNvcmVDb250cm9sczpIaWRlRm9ybUdyb3VwQXV0b21hdGljYWxseSAvPlxuXHRcdFx0XHRcdDwvZjpkZXBlbmRlbnRzPlxuXHRcdFx0XHQ8L2Y6Rm9ybT5cblx0XHRcdDwvbWFjcm86Rm9ybUFQST5gO1xuXHRcdH1cblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTRDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVpBLElBbUJxQkEsU0FBUyxJQUFBQyxJQUFBLEdBTjdCQyxtQkFBbUIsQ0FBQztJQUNwQkMsSUFBSSxFQUFFLE1BQU07SUFDWkMsU0FBUyxFQUFF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
|
|
@@ -256,7 +256,10 @@ export default class FormBlock extends BuildingBlockTemplatingBase {
|
|
|
256
256
|
const titleLevel = FormHelper.getFormContainerTitleLevel(this.title, this.titleLevel);
|
|
257
257
|
const title = this.useFormContainerLabels && facet.Label ? getExpressionFromAnnotation(facet.Label) : "";
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
// Enhance: generate a stable form container id whenever we have a derived idPart even if this.id is undefined.
|
|
260
|
+
// Previous logic only generated when (implicitly) guarding by one condition; now we allow fallback to idPart.
|
|
261
|
+
// We still protect getFormContainerID from being called with an undefined idPart.
|
|
262
|
+
const id = (this.id !== undefined || idPart) && idPart ? getFormContainerID(idPart) : undefined;
|
|
260
263
|
|
|
261
264
|
return xml`
|
|
262
265
|
<macro:FormContainer
|
|
@@ -26,6 +26,25 @@ sap.ui.define(["sap/fe/macros/CommonHelper", "sap/fe/macros/DelegateUtil", "sap/
|
|
|
26
26
|
const oModifier = mPropertyBag.modifier,
|
|
27
27
|
oMetaModel = mPropertyBag.appComponent?.getMetaModel(),
|
|
28
28
|
oForm = mPropertyBag.element;
|
|
29
|
+
|
|
30
|
+
// Check for existing fields with the same _flexId
|
|
31
|
+
if (oModifier.targets === "xmlTree") {
|
|
32
|
+
// at preprocessing time
|
|
33
|
+
const fieldsInView = mPropertyBag.view?.getElementsByTagNameNS("sap.fe.macros", "Field");
|
|
34
|
+
if (fieldsInView) {
|
|
35
|
+
for (const field of Array.from(fieldsInView)) {
|
|
36
|
+
if (field.getAttribute("_flexId") === mPropertyBag.fieldSelector?.id) {
|
|
37
|
+
// Field with same _flexId already exists, reject Promise to avoid duplicates
|
|
38
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
} else if (oModifier.targets === "jsControlTree") {
|
|
43
|
+
// at runtime
|
|
44
|
+
if (mPropertyBag.fieldSelector?.id && mPropertyBag.view && mPropertyBag.view.byId(mPropertyBag.fieldSelector?.id)) {
|
|
45
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
29
48
|
let sEntitySet = await DelegateUtil.getCustomDataWithModifier(oForm, "entitySet", oModifier);
|
|
30
49
|
if (!sEntitySet) {
|
|
31
50
|
sEntitySet = await DelegateUtil.getCustomDataWithModifier(oForm, "navigationPath", oModifier);
|
|
@@ -197,4 +216,4 @@ sap.ui.define(["sap/fe/macros/CommonHelper", "sap/fe/macros/DelegateUtil", "sap/
|
|
|
197
216
|
};
|
|
198
217
|
return Delegate;
|
|
199
218
|
}, false);
|
|
200
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWxlZ2F0ZSIsImNyZWF0ZUxheW91dCIsIm1Qcm9wZXJ0eUJhZyIsIm9Nb2RpZmllciIsIm1vZGlmaWVyIiwib01ldGFNb2RlbCIsImFwcENvbXBvbmVudCIsImdldE1ldGFNb2RlbCIsIm9Gb3JtIiwiZWxlbWVudCIsInNFbnRpdHlTZXQiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyIiwic1BhdGgiLCJzdGFydHNXaXRoIiwib0Zvcm1Db250YWluZXIiLCJwYXJlbnRTZWxlY3RvciIsImJ5U2VsZWN0b3IiLCJ2aWV3IiwidW5kZWZpbmVkIiwic05hdmlnYXRpb25QYXRoIiwic0JpbmRpbmdQYXRoIiwib01ldGFNb2RlbENvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsIm9Qcm9wZXJ0eUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImJpbmRpbmdQYXRoIiwiZm5UZW1wbGF0ZUZvcm1FbGVtZW50Iiwic0ZyYWdtZW50TmFtZSIsIm9WaWV3IiwibmF2aWdhdGlvblBhdGgiLCJzT25DaGFuZ2VDdXN0b21EYXRhIiwic0Rpc3BsYXlNb2RlQ3VzdG9tRGF0YSIsIm9UaGlzIiwiSlNPTk1vZGVsIiwiX2ZsZXhJZCIsImZpZWxkU2VsZWN0b3IiLCJpZCIsIm9uQ2hhbmdlIiwiQ29tbW9uIiwicmVtb3ZlRXNjYXBlQ2hhcmFjdGVycyIsImRpc3BsYXlNb2RlIiwib1ByZXByb2Nlc3NvclNldHRpbmdzIiwiYmluZGluZ0NvbnRleHRzIiwiZW50aXR5U2V0IiwiZGF0YUZpZWxkIiwidGhpcyIsIm1vZGVscyIsIm1ldGFNb2RlbCIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50Iiwib0ZpZWxkIiwiY29udHJvbCIsImdldFByb3BlcnR5SW5mbyIsIl9pc0NvbXBsZXhUeXBlIiwibVByb3BlcnR5IiwiJFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImluZGV4T2YiLCJfc3RhcnRzV2l0aE5hdmlnYXRpb25Qcm9wZXJ0eSIsInNQcm9wZXJ0eVBhdGgiLCJhTmF2aWdhdGlvblByb3BlcnRpZXMiLCJzb21lIiwic05hdlByb3AiLCJfZW5yaWNoUHJvcGVydHkiLCJtRWxlbWVudCIsIm1Qcm9wZXJ0eUFubm90YXRpb25zIiwic0VudGl0eVR5cGUiLCJvRWxlbWVudCIsInNBZ2dyZWdhdGlvbk5hbWUiLCJtUHJvcCIsIm5hbWUiLCJlbnRpdHlUeXBlIiwibURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uIiwic0xhYmVsIiwiTGFiZWwiLCJsYWJlbCIsIm1IaWRkZW5Bbm5vdGF0aW9uIiwiaGlkZUZyb21SZXZlYWwiLCIkUGF0aCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJtRmllbGRDb250cm9sQW5ub3RhdGlvbiIsIiRFbnVtTWVtYmVyIiwic0ZpZWxkQ29udHJvbFBhdGgiLCJiTGlzdEJpbmRpbmciLCJnZXRCaW5kaW5nIiwiTGlzdEJpbmRpbmciLCJpRmllbGRDb250cm9sVmFsdWUiLCJ1bnN1cHBvcnRlZCIsIl9jb252ZXJ0TWV0YWRhdGFUb0RlbGVnYXRlRm9ybWF0IiwibU9EYXRhRW50aXR5VHlwZSIsImFQcm9wZXJ0aWVzIiwic0VsZW1lbnROYW1lIiwiJGtpbmQiLCJwdXNoIiwibVByb3BBbm5vdGF0aW9ucyIsImdldE9iamVjdCIsIl9nZXRCaW5kaW5nUGF0aCIsIm1QYXlsb2FkIiwicGF0aCIsInZCaW5kaW5nIiwiZGF0YSIsImdldFBhdGgiLCJfZ2V0T0RhdGFQcm9wZXJ0aWVzT2ZNb2RlbCIsIm9Nb2RlbCIsImdldE1vZGVsIiwibW9kZWxOYW1lIiwiaXNBIiwic0JpbmRpbmdDb250ZXh0UGF0aCIsIm9NZXRhTW9kZWxDb250ZXh0T2JqZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiYWdncmVnYXRpb25OYW1lIiwicGF5bG9hZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRm9ybURlbGVnYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkRGVmYXVsdCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlVHJlZU1vZGlmaWVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFByb3BlcnR5QW5ub3RhdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBDb21tb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IExpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvTGlzdEJpbmRpbmdcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxFbnRpdHlUeXBlLCBNZXRhTW9kZWxQcm9wZXJ0eSwgTWV0YU1vZGVsVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbnR5cGUgRGVsZWdhdGVQcm9wZXJ0eSA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRiaW5kaW5nUGF0aDogc3RyaW5nO1xuXHRlbnRpdHlUeXBlOiBzdHJpbmc7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRoaWRlRnJvbVJldmVhbD86IGJvb2xlYW47XG5cdHVuc3VwcG9ydGVkPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERlbGVnYXRlID0ge1xuXHQvKipcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZyBPYmplY3Qgd2l0aCBwYXJhbWV0ZXJzIGFzIHByb3BlcnRpZXNcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5tb2RpZmllciBNb2RpZmllciB0byBoYXJtb25pemUgYWNjZXNzLCBjcmVhdGlvbiBhbmQgbWFuaXB1bGF0aW9uIHRvIGNvbnRyb2xzIGluIFhNTCBWaWV3cyBhbmQgSlMgQ29udHJvbHNcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50XSBOZWVkZWQgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IElEIGluIGNhc2UgeW91IHByb3ZpZGUgYSBzZWxlY3RvclxuXHQgKiBAcGFyYW0gW21Qcm9wZXJ0eUJhZy52aWV3XSBYTUwgbm9kZSBvZiB0aGUgdmlldywgcmVxdWlyZWQgZm9yIFhNTCBjYXNlIHRvIGNyZWF0ZSBub2RlcyBhbmQgdG8gZmluZCBlbGVtZW50c1xuXHQgKiBAcGFyYW0gW21Qcm9wZXJ0eUJhZy5maWVsZFNlbGVjdG9yXSBTZWxlY3RvciB0byBjYWxjdWxhdGUgdGhlIElEIGZvciB0aGUgY29udHJvbCB0aGF0IGlzIGNyZWF0ZWRcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvci5pZF1cblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvci5pc0xvY2FsSWRdXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcuYmluZGluZ1BhdGggUnVudGltZSBiaW5kaW5nIHBhdGggdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGJvdW5kIHRvXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcucGF5bG9hZCBQYXlsb2FkIHBhcmFtZXRlciBhdHRhY2hlZCB0byB0aGUgZGVsZWdhdGUsIHVuZGVmaW5lZCBpZiBubyBwYXlsb2FkIHdhcyBhc3NpZ25lZFxuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLmNvbnRyb2xUeXBlIENvbnRyb2wgdHlwZSBvZiB0aGUgZWxlbWVudCB0aGUgZGVsZWdhdGUgaXMgYXR0YWNoZWQgdG9cblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5hZ2dyZWdhdGlvbk5hbWUgTmFtZSBvZiB0aGUgYWdncmVnYXRpb24gdGhlIGRlbGVnYXRlIHNob3VsZCBwcm92aWRlIGFkZGl0aW9uYWwgZWxlbWVudHNcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5lbGVtZW50XG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcucGFyZW50U2VsZWN0b3Jcblx0ICogQHJldHVybnMgTWFwIGNvbnRhaW5pbmcgdGhlIGNvbnRyb2xzIHRvIGFkZFxuXHQgKi9cblx0Y3JlYXRlTGF5b3V0OiBhc3luYyBmdW5jdGlvbiAobVByb3BlcnR5QmFnOiB7XG5cdFx0bW9kaWZpZXI6IEJhc2VUcmVlTW9kaWZpZXI7XG5cdFx0YXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50O1xuXHRcdHZpZXc/OiBFbGVtZW50O1xuXHRcdGZpZWxkU2VsZWN0b3I/OiB7IGlkPzogc3RyaW5nOyBpc0xvY2FsSWQ/OiBib29sZWFuIH07XG5cdFx0YmluZGluZ1BhdGg6IHN0cmluZztcblx0XHRwYXlsb2FkOiBvYmplY3Q7XG5cdFx0Y29udHJvbFR5cGU6IHN0cmluZztcblx0XHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZztcblx0XHRlbGVtZW50OiBVSTVFbGVtZW50IHwgRWxlbWVudDtcblx0XHRwYXJlbnRTZWxlY3Rvcj86IG9iamVjdDtcblx0fSk6IFByb21pc2U8e1xuXHRcdGNvbnRyb2w6IEVsZW1lbnQgfCBVSTVFbGVtZW50IHwgRWxlbWVudFtdIHwgVUk1RWxlbWVudFtdO1xuXHR9PiB7XG5cdFx0Y29uc3Qgb01vZGlmaWVyID0gbVByb3BlcnR5QmFnLm1vZGlmaWVyLFxuXHRcdFx0b01ldGFNb2RlbCA9IG1Qcm9wZXJ0eUJhZy5hcHBDb21wb25lbnQ/LmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0b0Zvcm0gPSBtUHJvcGVydHlCYWcuZWxlbWVudDtcblxuXHRcdGxldCBzRW50aXR5U2V0ID0gYXdhaXQgRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGFXaXRoTW9kaWZpZXI8c3RyaW5nPihvRm9ybSwgXCJlbnRpdHlTZXRcIiwgb01vZGlmaWVyKTtcblx0XHRpZiAoIXNFbnRpdHlTZXQpIHtcblx0XHRcdHNFbnRpdHlTZXQgPSBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtLCBcIm5hdmlnYXRpb25QYXRoXCIsIG9Nb2RpZmllcik7XG5cdFx0fVxuXHRcdGNvbnN0IHNQYXRoID0gc0VudGl0eVNldCEuc3RhcnRzV2l0aChcIi9cIikgPyBgJHtzRW50aXR5U2V0fWAgOiBgLyR7c0VudGl0eVNldH1gO1xuXHRcdGNvbnN0IG9Gb3JtQ29udGFpbmVyID0gbVByb3BlcnR5QmFnLnBhcmVudFNlbGVjdG9yXG5cdFx0XHQ/IG1Qcm9wZXJ0eUJhZy5tb2RpZmllci5ieVNlbGVjdG9yKG1Qcm9wZXJ0eUJhZy5wYXJlbnRTZWxlY3RvciwgbVByb3BlcnR5QmFnLmFwcENvbXBvbmVudCwgbVByb3BlcnR5QmFnLnZpZXcpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBzTmF2aWdhdGlvblBhdGggPSBvRm9ybUNvbnRhaW5lclxuXHRcdFx0PyBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtQ29udGFpbmVyIGFzIFVJNUVsZW1lbnQgfCBFbGVtZW50LCBcIm5hdmlnYXRpb25QYXRoXCIsIG9Nb2RpZmllcilcblx0XHRcdDogXCJcIjtcblx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBzTmF2aWdhdGlvblBhdGggPyBgJHtzUGF0aH0vJHtzTmF2aWdhdGlvblBhdGh9YCA6IHNQYXRoO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWxDb250ZXh0ID0gb01ldGFNb2RlbD8uZ2V0TWV0YUNvbnRleHQoc0JpbmRpbmdQYXRoKTtcblx0XHRjb25zdCBvUHJvcGVydHlDb250ZXh0ID0gb01ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7c0JpbmRpbmdQYXRofS8ke21Qcm9wZXJ0eUJhZy5iaW5kaW5nUGF0aH1gKTtcblxuXHRcdGFzeW5jIGZ1bmN0aW9uIGZuVGVtcGxhdGVGb3JtRWxlbWVudChcblx0XHRcdHNGcmFnbWVudE5hbWU6IHN0cmluZyxcblx0XHRcdG9WaWV3OiBGRVZpZXcgfCB1bmRlZmluZWQsXG5cdFx0XHRuYXZpZ2F0aW9uUGF0aDogc3RyaW5nXG5cdFx0KTogUHJvbWlzZTxFbGVtZW50IHwgVUk1RWxlbWVudCB8IEVsZW1lbnRbXSB8IFVJNUVsZW1lbnRbXT4ge1xuXHRcdFx0Y29uc3Qgc09uQ2hhbmdlQ3VzdG9tRGF0YSA9IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm0sIFwib25DaGFuZ2VcIiwgb01vZGlmaWVyKTtcblx0XHRcdGNvbnN0IHNEaXNwbGF5TW9kZUN1c3RvbURhdGEgPSBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtLCBcImRpc3BsYXlNb2RlXCIsIG9Nb2RpZmllcik7XG5cdFx0XHRjb25zdCBvVGhpcyA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0XHQvLyBwcm9wZXJ0aWVzIGFuZCBldmVudHMgb2YgRmllbGQgbWFjcm9cblx0XHRcdFx0X2ZsZXhJZDogbVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3I/LmlkLFxuXHRcdFx0XHRvbkNoYW5nZTogQ29tbW9uLnJlbW92ZUVzY2FwZUNoYXJhY3RlcnMoc09uQ2hhbmdlQ3VzdG9tRGF0YSksXG5cdFx0XHRcdGRpc3BsYXlNb2RlOiBDb21tb24ucmVtb3ZlRXNjYXBlQ2hhcmFjdGVycyhzRGlzcGxheU1vZGVDdXN0b21EYXRhKSxcblx0XHRcdFx0bmF2aWdhdGlvblBhdGg6IG5hdmlnYXRpb25QYXRoXG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0ZW50aXR5U2V0OiBvTWV0YU1vZGVsQ29udGV4dCxcblx0XHRcdFx0XHRkYXRhRmllbGQ6IG9Qcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRcdFx0dGhpczogb1RoaXMuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdHRoaXM6IG9UaGlzLFxuXHRcdFx0XHRcdGVudGl0eVNldDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0ZGF0YUZpZWxkOiBvTWV0YU1vZGVsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFwcENvbXBvbmVudDogbVByb3BlcnR5QmFnLmFwcENvbXBvbmVudFxuXHRcdFx0fTtcblxuXHRcdFx0cmV0dXJuIERlbGVnYXRlVXRpbC50ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChzRnJhZ21lbnROYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIHsgdmlldzogb1ZpZXcgfSwgb01vZGlmaWVyKTtcblx0XHR9XG5cblx0XHRjb25zdCBvRmllbGQgPSBhd2FpdCBmblRlbXBsYXRlRm9ybUVsZW1lbnQoXG5cdFx0XHRcInNhcC5mZS5tYWNyb3MuZm9ybS5Gb3JtRWxlbWVudEZsZXhpYmlsaXR5XCIsXG5cdFx0XHRtUHJvcGVydHlCYWcudmlldyBhcyB1bmtub3duIGFzIEZFVmlldyxcblx0XHRcdHNOYXZpZ2F0aW9uUGF0aCFcblx0XHQpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb250cm9sOiBvRmllbGRcblx0XHR9O1xuXHR9LFxuXHQvLyBnZXRQcm9wZXJ0eUluZm8gaXMgYSBwYXRjaGVkIHZlcnNpb24gb2YgT0RhdGFWNFJlYWREZWxlZ2F0ZXMgdG8gZGVsYSB3aXRoIG5hdmlnYXRpb25QYXRoXG5cdGdldFByb3BlcnR5SW5mbzogYXN5bmMgZnVuY3Rpb24gKG1Qcm9wZXJ0eUJhZzoge1xuXHRcdGVsZW1lbnQ6IENvbnRyb2w7XG5cdFx0YWdncmVnYXRpb25OYW1lOiBzdHJpbmc7XG5cdFx0cGF5bG9hZDoge1xuXHRcdFx0bW9kZWxOYW1lPzogc3RyaW5nO1xuXHRcdFx0cGF0aD86IHN0cmluZztcblx0XHR9O1xuXHR9KTogUHJvbWlzZTxEZWxlZ2F0ZVByb3BlcnR5W10+IHtcblx0XHRmdW5jdGlvbiBfaXNDb21wbGV4VHlwZShtUHJvcGVydHk6IE1ldGFNb2RlbFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdFx0XHRpZiAobVByb3BlcnR5ICYmIG1Qcm9wZXJ0eS4kVHlwZSkge1xuXHRcdFx0XHRpZiAobVByb3BlcnR5LiRUeXBlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImVkbVwiKSAhPT0gMCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly9DaGVjayBpZiBhIGdpdmVuIHByb3BlcnR5IHBhdGggc3RhcnRzIHdpdGggYSBuYXZpZ2F0aW9uIHByb3BlcnR5LlxuXHRcdGZ1bmN0aW9uIF9zdGFydHNXaXRoTmF2aWdhdGlvblByb3BlcnR5KHNQcm9wZXJ0eVBhdGg6IHN0cmluZywgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIGFOYXZpZ2F0aW9uUHJvcGVydGllcy5zb21lKGZ1bmN0aW9uIChzTmF2UHJvcCkge1xuXHRcdFx0XHRyZXR1cm4gc1Byb3BlcnR5UGF0aC5zdGFydHNXaXRoKHNOYXZQcm9wKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9lbnJpY2hQcm9wZXJ0eShcblx0XHRcdHNQcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0XHRcdG1FbGVtZW50OiBNZXRhTW9kZWxQcm9wZXJ0eSxcblx0XHRcdG1Qcm9wZXJ0eUFubm90YXRpb25zOiBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0c0VudGl0eVR5cGU6IHN0cmluZyxcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLFxuXHRcdFx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBzdHJpbmdbXVxuXHRcdCk6IERlbGVnYXRlUHJvcGVydHkge1xuXHRcdFx0Y29uc3QgbVByb3A6IERlbGVnYXRlUHJvcGVydHkgPSB7XG5cdFx0XHRcdG5hbWU6IHNQcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdGJpbmRpbmdQYXRoOiBzUHJvcGVydHlQYXRoLFxuXHRcdFx0XHRlbnRpdHlUeXBlOiBzRW50aXR5VHlwZVxuXHRcdFx0fTtcblx0XHRcdC8vIGdldCBsYWJlbCBpbmZvcm1hdGlvbiwgZWl0aGVyIHZpYSBEYXRhRmllbGREZWZhdWx0IGFubm90YXRpb24gKGlmIGV4aXN0cykgb3IgTGFiZWwgYW5ub3RhdGlvblxuXHRcdFx0Y29uc3QgbURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXG5cdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZERlZmF1bHRcIlxuXHRcdFx0XSBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZERlZmF1bHQ+O1xuXHRcdFx0Y29uc3Qgc0xhYmVsID1cblx0XHRcdFx0KG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbiAmJiBtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24uTGFiZWwpIHx8XG5cdFx0XHRcdG1Qcm9wZXJ0eUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiXTtcblx0XHRcdG1Qcm9wLmxhYmVsID0gKHNMYWJlbCBhcyBzdHJpbmcpIHx8IFwiW0xBQkVMX01JU1NJTkc6IFwiICsgc1Byb3BlcnR5UGF0aCArIFwiXVwiO1xuXHRcdFx0Ly8gZXZhbHVhdGUgSGlkZGVuIGFubm90YXRpb25cblx0XHRcdGNvbnN0IG1IaWRkZW5Bbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGlkZGVuXCJdO1xuXHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPSBtSGlkZGVuQW5ub3RhdGlvbiBhcyBib29sZWFuO1xuXHRcdFx0aWYgKG1IaWRkZW5Bbm5vdGF0aW9uICYmIChtSGlkZGVuQW5ub3RhdGlvbiBhcyB7ICRQYXRoPzogc3RyaW5nIH0pLiRQYXRoKSB7XG5cdFx0XHRcdG1Qcm9wLmhpZGVGcm9tUmV2ZWFsID0gb0VsZW1lbnQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UHJvcGVydHkoKG1IaWRkZW5Bbm5vdGF0aW9uIGFzIHsgJFBhdGg/OiBzdHJpbmcgfSkuJFBhdGghKTtcblx0XHRcdH1cblx0XHRcdC8vIGV2YWx1YXRlIEFkYXB0YXRpb25IaWRkZW4gYW5ub3RhdGlvblxuXHRcdFx0aWYgKCFtUHJvcC5oaWRlRnJvbVJldmVhbCkge1xuXHRcdFx0XHRtUHJvcC5oaWRlRnJvbVJldmVhbCA9IG1Qcm9wZXJ0eUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkFkYXB0YXRpb25IaWRkZW5cIl0gYXMgYm9vbGVhbjtcblx0XHRcdH1cblx0XHRcdC8vIGV2YWx1YXRlIEZpZWxkQ29udHJvbCBhbm5vdGF0aW9uXG5cdFx0XHRsZXQgbUZpZWxkQ29udHJvbEFubm90YXRpb247XG5cdFx0XHRpZiAoIW1Qcm9wLmhpZGVGcm9tUmV2ZWFsKSB7XG5cdFx0XHRcdG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFwiXTtcblx0XHRcdFx0aWYgKG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPVxuXHRcdFx0XHRcdFx0KG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uIGFzIHsgJEVudW1NZW1iZXI/OiBzdHJpbmcgfSkuJEVudW1NZW1iZXIgPT09XG5cdFx0XHRcdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWVsZENvbnRyb2xUeXBlL0hpZGRlblwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBAcnVudGltZSBoaWRkZW4gYnkgZmllbGQgY29udHJvbCB2YWx1ZSA9IDBcblx0XHRcdG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFwiXTtcblx0XHRcdGNvbnN0IHNGaWVsZENvbnRyb2xQYXRoID0gbUZpZWxkQ29udHJvbEFubm90YXRpb24gJiYgKG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uIGFzIHsgJFBhdGg/OiBzdHJpbmcgfSkuJFBhdGg7XG5cdFx0XHRpZiAoc0ZpZWxkQ29udHJvbFBhdGggJiYgIW1Qcm9wLmhpZGVGcm9tUmV2ZWFsKSB7XG5cdFx0XHRcdC8vIGlmIHRoZSBiaW5kaW5nIGlzIGEgbGlzdCBiaW5kaW5nLCBza2lwIHRoZSBjaGVjayBmb3IgZmllbGQgY29udHJvbFxuXHRcdFx0XHRjb25zdCBiTGlzdEJpbmRpbmcgPSBvRWxlbWVudC5nZXRCaW5kaW5nKHNBZ2dyZWdhdGlvbk5hbWUpIGluc3RhbmNlb2YgTGlzdEJpbmRpbmc7XG5cdFx0XHRcdGlmICghYkxpc3RCaW5kaW5nKSB7XG5cdFx0XHRcdFx0Y29uc3QgaUZpZWxkQ29udHJvbFZhbHVlID0gb0VsZW1lbnQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UHJvcGVydHkoc0ZpZWxkQ29udHJvbFBhdGgpO1xuXHRcdFx0XHRcdG1Qcm9wLmhpZGVGcm9tUmV2ZWFsID0gaUZpZWxkQ29udHJvbFZhbHVlID09PSAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBubyBzdXBwb3J0IGZvciBEYXRhRmllbGRGb3IvV2l0aEFjdGlvbiBhbmQgRGF0YUZpZWxkRm9yL1dpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24gd2l0aGluIERhdGFGaWVsZERlZmF1bHQgYW5ub3RhdGlvblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24gJiZcblx0XHRcdFx0KG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIiB8fFxuXHRcdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB8fFxuXHRcdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoQWN0aW9uXCIgfHxcblx0XHRcdFx0XHRtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdG1Qcm9wLnVuc3VwcG9ydGVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdC8vIG5vIHN1cHBvcnQgZm9yIG5hdmlnYXRpb24gcHJvcGVydGllcyBhbmQgY29tcGxleCBwcm9wZXJ0aWVzXG5cdFx0XHRpZiAoX3N0YXJ0c1dpdGhOYXZpZ2F0aW9uUHJvcGVydHkoc1Byb3BlcnR5UGF0aCwgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzKSB8fCBfaXNDb21wbGV4VHlwZShtRWxlbWVudCkpIHtcblx0XHRcdFx0bVByb3AudW5zdXBwb3J0ZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1Qcm9wO1xuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgbWV0YWRhdGEgZm9ybWF0IHRvIGRlbGVnYXRlIGZvcm1hdC5cblx0XHRmdW5jdGlvbiBfY29udmVydE1ldGFkYXRhVG9EZWxlZ2F0ZUZvcm1hdChcblx0XHRcdG1PRGF0YUVudGl0eVR5cGU6IE1ldGFNb2RlbEVudGl0eVR5cGUsXG5cdFx0XHRzRW50aXR5VHlwZTogc3RyaW5nLFxuXHRcdFx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRvRWxlbWVudDogQ29udHJvbCxcblx0XHRcdHNBZ2dyZWdhdGlvbk5hbWU6IHN0cmluZ1xuXHRcdCk6IERlbGVnYXRlUHJvcGVydHlbXSB7XG5cdFx0XHRjb25zdCBhUHJvcGVydGllcyA9IFtdO1xuXHRcdFx0bGV0IHNFbGVtZW50TmFtZSA9IFwiXCI7XG5cdFx0XHRjb25zdCBhTmF2aWdhdGlvblByb3BlcnRpZXMgPSBbXTtcblx0XHRcdGxldCBtRWxlbWVudDtcblx0XHRcdGZvciAoc0VsZW1lbnROYW1lIGluIG1PRGF0YUVudGl0eVR5cGUpIHtcblx0XHRcdFx0bUVsZW1lbnQgPSBtT0RhdGFFbnRpdHlUeXBlW3NFbGVtZW50TmFtZV07XG5cdFx0XHRcdGlmIChtRWxlbWVudC4ka2luZCA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIikge1xuXHRcdFx0XHRcdGFOYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHNFbGVtZW50TmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAoc0VsZW1lbnROYW1lIGluIG1PRGF0YUVudGl0eVR5cGUpIHtcblx0XHRcdFx0bUVsZW1lbnQgPSBtT0RhdGFFbnRpdHlUeXBlW3NFbGVtZW50TmFtZV07XG5cdFx0XHRcdGlmIChtRWxlbWVudC4ka2luZCA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgbVByb3BBbm5vdGF0aW9ucyA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgc0VudGl0eVR5cGUgKyBcIi9cIiArIHNFbGVtZW50TmFtZSArIFwiQFwiKTtcblx0XHRcdFx0XHRjb25zdCBtUHJvcCA9IF9lbnJpY2hQcm9wZXJ0eShcblx0XHRcdFx0XHRcdHNFbGVtZW50TmFtZSxcblx0XHRcdFx0XHRcdG1FbGVtZW50IGFzIE1ldGFNb2RlbFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0bVByb3BBbm5vdGF0aW9ucyxcblx0XHRcdFx0XHRcdHNFbnRpdHlUeXBlLFxuXHRcdFx0XHRcdFx0b0VsZW1lbnQsXG5cdFx0XHRcdFx0XHRzQWdncmVnYXRpb25OYW1lLFxuXHRcdFx0XHRcdFx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRhUHJvcGVydGllcy5wdXNoKG1Qcm9wKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFQcm9wZXJ0aWVzO1xuXHRcdH1cblxuXHRcdC8vR2V0IGJpbmRpbmcgcGF0aCBlaXRoZXIgZnJvbSBwYXlsb2FkIChpZiBhdmFpbGFibGUpIG9yIHRoZSBlbGVtZW50J3MgYmluZGluZyBjb250ZXh0LlxuXHRcdGZ1bmN0aW9uIF9nZXRCaW5kaW5nUGF0aChcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0bVBheWxvYWQ6IHtcblx0XHRcdFx0cGF0aD86IHN0cmluZztcblx0XHRcdH1cblx0XHQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdFx0aWYgKG1QYXlsb2FkLnBhdGgpIHtcblx0XHRcdFx0cmV0dXJuIG1QYXlsb2FkLnBhdGg7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB2QmluZGluZyA9IG9FbGVtZW50LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRpZiAodkJpbmRpbmcpIHtcblx0XHRcdFx0aWYgKG9FbGVtZW50LmRhdGEoXCJuYXZpZ2F0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHRcdHJldHVybiB2QmluZGluZy5nZXRQYXRoKCkgKyBcIi9cIiArIG9FbGVtZW50LmRhdGEoXCJuYXZpZ2F0aW9uUGF0aFwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdkJpbmRpbmcuZ2V0UGF0aCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vR2V0IGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBlbGVtZW50J3MgbW9kZWwuXG5cdFx0YXN5bmMgZnVuY3Rpb24gX2dldE9EYXRhUHJvcGVydGllc09mTW9kZWwoXG5cdFx0XHRvRWxlbWVudDogQ29udHJvbCxcblx0XHRcdHNBZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyxcblx0XHRcdG1QYXlsb2FkOiB7XG5cdFx0XHRcdG1vZGVsTmFtZT86IHN0cmluZztcblx0XHRcdFx0cGF0aD86IHN0cmluZztcblx0XHRcdH1cblx0XHQpOiBQcm9taXNlPERlbGVnYXRlUHJvcGVydHlbXT4ge1xuXHRcdFx0Y29uc3Qgb01vZGVsID0gb0VsZW1lbnQuZ2V0TW9kZWwobVBheWxvYWQubW9kZWxOYW1lKTtcblx0XHRcdGlmIChvTW9kZWwpIHtcblx0XHRcdFx0aWYgKG9Nb2RlbC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNb2RlbFwiKSkge1xuXHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgc0JpbmRpbmdDb250ZXh0UGF0aCA9IF9nZXRCaW5kaW5nUGF0aChvRWxlbWVudCwgbVBheWxvYWQpO1xuXHRcdFx0XHRcdGlmIChzQmluZGluZ0NvbnRleHRQYXRoKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsQ29udGV4dCA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQoc0JpbmRpbmdDb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsQ29udGV4dE9iamVjdCA9IG9NZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0Y29uc3QgbU9EYXRhRW50aXR5VHlwZSA9IG9NZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChvTWV0YU1vZGVsQ29udGV4dE9iamVjdC4kVHlwZSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gX2NvbnZlcnRNZXRhZGF0YVRvRGVsZWdhdGVGb3JtYXQoXG5cdFx0XHRcdFx0XHRcdG1PRGF0YUVudGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRcdG9NZXRhTW9kZWxDb250ZXh0T2JqZWN0LiRUeXBlLFxuXHRcdFx0XHRcdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRvRWxlbWVudCxcblx0XHRcdFx0XHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuXHRcdH1cblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBfZ2V0T0RhdGFQcm9wZXJ0aWVzT2ZNb2RlbChtUHJvcGVydHlCYWcuZWxlbWVudCwgbVByb3BlcnR5QmFnLmFnZ3JlZ2F0aW9uTmFtZSwgbVByb3BlcnR5QmFnLnBheWxvYWQpO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQXNCQSxNQUFNQSxRQUFRLEdBQUc7SUFDaEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsWUFBWSxFQUFFLGVBQUFBLENBQWdCQyxZQVc3QixFQUVFO01BQ0YsTUFBTUMsU0FBUyxHQUFHRCxZQUFZLENBQUNFLFFBQVE7UUFDdENDLFVBQVUsR0FBR0gsWUFBWSxDQUFDSSxZQUFZLEVBQUVDLFlBQVksQ0FB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
|
|
219
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWxlZ2F0ZSIsImNyZWF0ZUxheW91dCIsIm1Qcm9wZXJ0eUJhZyIsIm9Nb2RpZmllciIsIm1vZGlmaWVyIiwib01ldGFNb2RlbCIsImFwcENvbXBvbmVudCIsImdldE1ldGFNb2RlbCIsIm9Gb3JtIiwiZWxlbWVudCIsInRhcmdldHMiLCJmaWVsZHNJblZpZXciLCJ2aWV3IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyIsImZpZWxkIiwiQXJyYXkiLCJmcm9tIiwiZ2V0QXR0cmlidXRlIiwiZmllbGRTZWxlY3RvciIsImlkIiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwiYnlJZCIsInNFbnRpdHlTZXQiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyIiwic1BhdGgiLCJzdGFydHNXaXRoIiwib0Zvcm1Db250YWluZXIiLCJwYXJlbnRTZWxlY3RvciIsImJ5U2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJzTmF2aWdhdGlvblBhdGgiLCJzQmluZGluZ1BhdGgiLCJvTWV0YU1vZGVsQ29udGV4dCIsImdldE1ldGFDb250ZXh0Iiwib1Byb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiYmluZGluZ1BhdGgiLCJmblRlbXBsYXRlRm9ybUVsZW1lbnQiLCJzRnJhZ21lbnROYW1lIiwib1ZpZXciLCJuYXZpZ2F0aW9uUGF0aCIsInNPbkNoYW5nZUN1c3RvbURhdGEiLCJzRGlzcGxheU1vZGVDdXN0b21EYXRhIiwib1RoaXMiLCJKU09OTW9kZWwiLCJfZmxleElkIiwib25DaGFuZ2UiLCJDb21tb24iLCJyZW1vdmVFc2NhcGVDaGFyYWN0ZXJzIiwiZGlzcGxheU1vZGUiLCJvUHJlcHJvY2Vzc29yU2V0dGluZ3MiLCJiaW5kaW5nQ29udGV4dHMiLCJlbnRpdHlTZXQiLCJkYXRhRmllbGQiLCJ0aGlzIiwibW9kZWxzIiwibWV0YU1vZGVsIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJvRmllbGQiLCJjb250cm9sIiwiZ2V0UHJvcGVydHlJbmZvIiwiX2lzQ29tcGxleFR5cGUiLCJtUHJvcGVydHkiLCIkVHlwZSIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsIl9zdGFydHNXaXRoTmF2aWdhdGlvblByb3BlcnR5Iiwic1Byb3BlcnR5UGF0aCIsImFOYXZpZ2F0aW9uUHJvcGVydGllcyIsInNvbWUiLCJzTmF2UHJvcCIsIl9lbnJpY2hQcm9wZXJ0eSIsIm1FbGVtZW50IiwibVByb3BlcnR5QW5ub3RhdGlvbnMiLCJzRW50aXR5VHlwZSIsIm9FbGVtZW50Iiwic0FnZ3JlZ2F0aW9uTmFtZSIsIm1Qcm9wIiwibmFtZSIsImVudGl0eVR5cGUiLCJtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24iLCJzTGFiZWwiLCJMYWJlbCIsImxhYmVsIiwibUhpZGRlbkFubm90YXRpb24iLCJoaWRlRnJvbVJldmVhbCIsIiRQYXRoIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm1GaWVsZENvbnRyb2xBbm5vdGF0aW9uIiwiJEVudW1NZW1iZXIiLCJzRmllbGRDb250cm9sUGF0aCIsImJMaXN0QmluZGluZyIsImdldEJpbmRpbmciLCJMaXN0QmluZGluZyIsImlGaWVsZENvbnRyb2xWYWx1ZSIsInVuc3VwcG9ydGVkIiwiX2NvbnZlcnRNZXRhZGF0YVRvRGVsZWdhdGVGb3JtYXQiLCJtT0RhdGFFbnRpdHlUeXBlIiwiYVByb3BlcnRpZXMiLCJzRWxlbWVudE5hbWUiLCIka2luZCIsInB1c2giLCJtUHJvcEFubm90YXRpb25zIiwiZ2V0T2JqZWN0IiwiX2dldEJpbmRpbmdQYXRoIiwibVBheWxvYWQiLCJwYXRoIiwidkJpbmRpbmciLCJkYXRhIiwiZ2V0UGF0aCIsIl9nZXRPRGF0YVByb3BlcnRpZXNPZk1vZGVsIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJtb2RlbE5hbWUiLCJpc0EiLCJzQmluZGluZ0NvbnRleHRQYXRoIiwib01ldGFNb2RlbENvbnRleHRPYmplY3QiLCJyZXNvbHZlIiwidGhlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsInBheWxvYWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZvcm1EZWxlZ2F0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERhdGFGaWVsZERlZmF1bHQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBGRVZpZXcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgQmFzZVRyZWVNb2RpZmllciB9IGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgQ29tbW9uIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIFhNTFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9YTUxWaWV3XCI7XG5pbXBvcnQgTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9MaXN0QmluZGluZ1wiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbEVudGl0eVR5cGUsIE1ldGFNb2RlbFByb3BlcnR5LCBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuXG50eXBlIERlbGVnYXRlUHJvcGVydHkgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0YmluZGluZ1BhdGg6IHN0cmluZztcblx0ZW50aXR5VHlwZTogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0aGlkZUZyb21SZXZlYWw/OiBib29sZWFuO1xuXHR1bnN1cHBvcnRlZD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEZWxlZ2F0ZSA9IHtcblx0LyoqXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcgT2JqZWN0IHdpdGggcGFyYW1ldGVycyBhcyBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcubW9kaWZpZXIgTW9kaWZpZXIgdG8gaGFybW9uaXplIGFjY2VzcywgY3JlYXRpb24gYW5kIG1hbmlwdWxhdGlvbiB0byBjb250cm9scyBpbiBYTUwgVmlld3MgYW5kIEpTIENvbnRyb2xzXG5cdCAqIEBwYXJhbSBbbVByb3BlcnR5QmFnLmFwcENvbXBvbmVudF0gTmVlZGVkIHRvIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCBJRCBpbiBjYXNlIHlvdSBwcm92aWRlIGEgc2VsZWN0b3Jcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcudmlld10gWE1MIG5vZGUgb2YgdGhlIHZpZXcsIHJlcXVpcmVkIGZvciBYTUwgY2FzZSB0byBjcmVhdGUgbm9kZXMgYW5kIHRvIGZpbmQgZWxlbWVudHNcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvcl0gU2VsZWN0b3IgdG8gY2FsY3VsYXRlIHRoZSBJRCBmb3IgdGhlIGNvbnRyb2wgdGhhdCBpcyBjcmVhdGVkXG5cdCAqIEBwYXJhbSBbbVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3IuaWRdXG5cdCAqIEBwYXJhbSBbbVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3IuaXNMb2NhbElkXVxuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLmJpbmRpbmdQYXRoIFJ1bnRpbWUgYmluZGluZyBwYXRoIHRoZSBjb250cm9sIHNob3VsZCBiZSBib3VuZCB0b1xuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLnBheWxvYWQgUGF5bG9hZCBwYXJhbWV0ZXIgYXR0YWNoZWQgdG8gdGhlIGRlbGVnYXRlLCB1bmRlZmluZWQgaWYgbm8gcGF5bG9hZCB3YXMgYXNzaWduZWRcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5jb250cm9sVHlwZSBDb250cm9sIHR5cGUgb2YgdGhlIGVsZW1lbnQgdGhlIGRlbGVnYXRlIGlzIGF0dGFjaGVkIHRvXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcuYWdncmVnYXRpb25OYW1lIE5hbWUgb2YgdGhlIGFnZ3JlZ2F0aW9uIHRoZSBkZWxlZ2F0ZSBzaG91bGQgcHJvdmlkZSBhZGRpdGlvbmFsIGVsZW1lbnRzXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcuZWxlbWVudFxuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLnBhcmVudFNlbGVjdG9yXG5cdCAqIEByZXR1cm5zIE1hcCBjb250YWluaW5nIHRoZSBjb250cm9scyB0byBhZGRcblx0ICovXG5cdGNyZWF0ZUxheW91dDogYXN5bmMgZnVuY3Rpb24gKG1Qcm9wZXJ0eUJhZzoge1xuXHRcdG1vZGlmaWVyOiBCYXNlVHJlZU1vZGlmaWVyO1xuXHRcdGFwcENvbXBvbmVudD86IEFwcENvbXBvbmVudDtcblx0XHR2aWV3PzogRWxlbWVudDtcblx0XHRmaWVsZFNlbGVjdG9yPzogeyBpZD86IHN0cmluZzsgaXNMb2NhbElkPzogYm9vbGVhbiB9O1xuXHRcdGJpbmRpbmdQYXRoOiBzdHJpbmc7XG5cdFx0cGF5bG9hZDogb2JqZWN0O1xuXHRcdGNvbnRyb2xUeXBlOiBzdHJpbmc7XG5cdFx0YWdncmVnYXRpb25OYW1lOiBzdHJpbmc7XG5cdFx0ZWxlbWVudDogVUk1RWxlbWVudCB8IEVsZW1lbnQ7XG5cdFx0cGFyZW50U2VsZWN0b3I/OiBvYmplY3Q7XG5cdH0pOiBQcm9taXNlPHtcblx0XHRjb250cm9sOiBFbGVtZW50IHwgVUk1RWxlbWVudCB8IEVsZW1lbnRbXSB8IFVJNUVsZW1lbnRbXTtcblx0fT4ge1xuXHRcdGNvbnN0IG9Nb2RpZmllciA9IG1Qcm9wZXJ0eUJhZy5tb2RpZmllcixcblx0XHRcdG9NZXRhTW9kZWwgPSBtUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50Py5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdG9Gb3JtID0gbVByb3BlcnR5QmFnLmVsZW1lbnQ7XG5cblx0XHQvLyBDaGVjayBmb3IgZXhpc3RpbmcgZmllbGRzIHdpdGggdGhlIHNhbWUgX2ZsZXhJZFxuXHRcdGlmIChvTW9kaWZpZXIudGFyZ2V0cyA9PT0gXCJ4bWxUcmVlXCIpIHtcblx0XHRcdC8vIGF0IHByZXByb2Nlc3NpbmcgdGltZVxuXHRcdFx0Y29uc3QgZmllbGRzSW5WaWV3ID0gbVByb3BlcnR5QmFnLnZpZXc/LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoXCJzYXAuZmUubWFjcm9zXCIsIFwiRmllbGRcIik7XG5cdFx0XHRpZiAoZmllbGRzSW5WaWV3KSB7XG5cdFx0XHRcdGZvciAoY29uc3QgZmllbGQgb2YgQXJyYXkuZnJvbShmaWVsZHNJblZpZXcpKSB7XG5cdFx0XHRcdFx0aWYgKGZpZWxkLmdldEF0dHJpYnV0ZShcIl9mbGV4SWRcIikgPT09IG1Qcm9wZXJ0eUJhZy5maWVsZFNlbGVjdG9yPy5pZCkge1xuXHRcdFx0XHRcdFx0Ly8gRmllbGQgd2l0aCBzYW1lIF9mbGV4SWQgYWxyZWFkeSBleGlzdHMsIHJlamVjdCBQcm9taXNlIHRvIGF2b2lkIGR1cGxpY2F0ZXNcblx0XHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJGb3JtRGVsZWdhdGUuY3JlYXRlTGF5b3V0OiBmaWVsZCBhbHJlYWR5IGV4aXN0c1wiKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChvTW9kaWZpZXIudGFyZ2V0cyA9PT0gXCJqc0NvbnRyb2xUcmVlXCIpIHtcblx0XHRcdC8vIGF0IHJ1bnRpbWVcblx0XHRcdGlmIChcblx0XHRcdFx0bVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3I/LmlkICYmXG5cdFx0XHRcdG1Qcm9wZXJ0eUJhZy52aWV3ICYmXG5cdFx0XHRcdChtUHJvcGVydHlCYWcudmlldyBhcyB1bmtub3duIGFzIFhNTFZpZXcpLmJ5SWQobVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3I/LmlkKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJGb3JtRGVsZWdhdGUuY3JlYXRlTGF5b3V0OiBmaWVsZCBhbHJlYWR5IGV4aXN0c1wiKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IHNFbnRpdHlTZXQgPSBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtLCBcImVudGl0eVNldFwiLCBvTW9kaWZpZXIpO1xuXHRcdGlmICghc0VudGl0eVNldCkge1xuXHRcdFx0c0VudGl0eVNldCA9IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm0sIFwibmF2aWdhdGlvblBhdGhcIiwgb01vZGlmaWVyKTtcblx0XHR9XG5cdFx0Y29uc3Qgc1BhdGggPSBzRW50aXR5U2V0IS5zdGFydHNXaXRoKFwiL1wiKSA/IGAke3NFbnRpdHlTZXR9YCA6IGAvJHtzRW50aXR5U2V0fWA7XG5cdFx0Y29uc3Qgb0Zvcm1Db250YWluZXIgPSBtUHJvcGVydHlCYWcucGFyZW50U2VsZWN0b3Jcblx0XHRcdD8gbVByb3BlcnR5QmFnLm1vZGlmaWVyLmJ5U2VsZWN0b3IobVByb3BlcnR5QmFnLnBhcmVudFNlbGVjdG9yLCBtUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50LCBtUHJvcGVydHlCYWcudmlldylcblx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHNOYXZpZ2F0aW9uUGF0aCA9IG9Gb3JtQ29udGFpbmVyXG5cdFx0XHQ/IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm1Db250YWluZXIgYXMgVUk1RWxlbWVudCB8IEVsZW1lbnQsIFwibmF2aWdhdGlvblBhdGhcIiwgb01vZGlmaWVyKVxuXHRcdFx0OiBcIlwiO1xuXHRcdGNvbnN0IHNCaW5kaW5nUGF0aCA9IHNOYXZpZ2F0aW9uUGF0aCA/IGAke3NQYXRofS8ke3NOYXZpZ2F0aW9uUGF0aH1gIDogc1BhdGg7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbENvbnRleHQgPSBvTWV0YU1vZGVsPy5nZXRNZXRhQ29udGV4dChzQmluZGluZ1BhdGgpO1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChgJHtzQmluZGluZ1BhdGh9LyR7bVByb3BlcnR5QmFnLmJpbmRpbmdQYXRofWApO1xuXG5cdFx0YXN5bmMgZnVuY3Rpb24gZm5UZW1wbGF0ZUZvcm1FbGVtZW50KFxuXHRcdFx0c0ZyYWdtZW50TmFtZTogc3RyaW5nLFxuXHRcdFx0b1ZpZXc6IEZFVmlldyB8IHVuZGVmaW5lZCxcblx0XHRcdG5hdmlnYXRpb25QYXRoOiBzdHJpbmdcblx0XHQpOiBQcm9taXNlPEVsZW1lbnQgfCBVSTVFbGVtZW50IHwgRWxlbWVudFtdIHwgVUk1RWxlbWVudFtdPiB7XG5cdFx0XHRjb25zdCBzT25DaGFuZ2VDdXN0b21EYXRhID0gYXdhaXQgRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGFXaXRoTW9kaWZpZXI8c3RyaW5nPihvRm9ybSwgXCJvbkNoYW5nZVwiLCBvTW9kaWZpZXIpO1xuXHRcdFx0Y29uc3Qgc0Rpc3BsYXlNb2RlQ3VzdG9tRGF0YSA9IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm0sIFwiZGlzcGxheU1vZGVcIiwgb01vZGlmaWVyKTtcblx0XHRcdGNvbnN0IG9UaGlzID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRcdC8vIHByb3BlcnRpZXMgYW5kIGV2ZW50cyBvZiBGaWVsZCBtYWNyb1xuXHRcdFx0XHRfZmxleElkOiBtUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvcj8uaWQsXG5cdFx0XHRcdG9uQ2hhbmdlOiBDb21tb24ucmVtb3ZlRXNjYXBlQ2hhcmFjdGVycyhzT25DaGFuZ2VDdXN0b21EYXRhKSxcblx0XHRcdFx0ZGlzcGxheU1vZGU6IENvbW1vbi5yZW1vdmVFc2NhcGVDaGFyYWN0ZXJzKHNEaXNwbGF5TW9kZUN1c3RvbURhdGEpLFxuXHRcdFx0XHRuYXZpZ2F0aW9uUGF0aDogbmF2aWdhdGlvblBhdGhcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgb1ByZXByb2Nlc3NvclNldHRpbmdzID0ge1xuXHRcdFx0XHRiaW5kaW5nQ29udGV4dHM6IHtcblx0XHRcdFx0XHRlbnRpdHlTZXQ6IG9NZXRhTW9kZWxDb250ZXh0LFxuXHRcdFx0XHRcdGRhdGFGaWVsZDogb1Byb3BlcnR5Q29udGV4dCxcblx0XHRcdFx0XHR0aGlzOiBvVGhpcy5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIilcblx0XHRcdFx0fSxcblx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0dGhpczogb1RoaXMsXG5cdFx0XHRcdFx0ZW50aXR5U2V0OiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRkYXRhRmllbGQ6IG9NZXRhTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBtUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50XG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gRGVsZWdhdGVVdGlsLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KHNGcmFnbWVudE5hbWUsIG9QcmVwcm9jZXNzb3JTZXR0aW5ncywgeyB2aWV3OiBvVmlldyB9LCBvTW9kaWZpZXIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9GaWVsZCA9IGF3YWl0IGZuVGVtcGxhdGVGb3JtRWxlbWVudChcblx0XHRcdFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1FbGVtZW50RmxleGliaWxpdHlcIixcblx0XHRcdG1Qcm9wZXJ0eUJhZy52aWV3IGFzIHVua25vd24gYXMgRkVWaWV3LFxuXHRcdFx0c05hdmlnYXRpb25QYXRoIVxuXHRcdCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvbnRyb2w6IG9GaWVsZFxuXHRcdH07XG5cdH0sXG5cdC8vIGdldFByb3BlcnR5SW5mbyBpcyBhIHBhdGNoZWQgdmVyc2lvbiBvZiBPRGF0YVY0UmVhZERlbGVnYXRlcyB0byBkZWxhIHdpdGggbmF2aWdhdGlvblBhdGhcblx0Z2V0UHJvcGVydHlJbmZvOiBhc3luYyBmdW5jdGlvbiAobVByb3BlcnR5QmFnOiB7XG5cdFx0ZWxlbWVudDogQ29udHJvbDtcblx0XHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZztcblx0XHRwYXlsb2FkOiB7XG5cdFx0XHRtb2RlbE5hbWU/OiBzdHJpbmc7XG5cdFx0XHRwYXRoPzogc3RyaW5nO1xuXHRcdH07XG5cdH0pOiBQcm9taXNlPERlbGVnYXRlUHJvcGVydHlbXT4ge1xuXHRcdGZ1bmN0aW9uIF9pc0NvbXBsZXhUeXBlKG1Qcm9wZXJ0eTogTWV0YU1vZGVsUHJvcGVydHkpOiBib29sZWFuIHtcblx0XHRcdGlmIChtUHJvcGVydHkgJiYgbVByb3BlcnR5LiRUeXBlKSB7XG5cdFx0XHRcdGlmIChtUHJvcGVydHkuJFR5cGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZWRtXCIpICE9PSAwKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvL0NoZWNrIGlmIGEgZ2l2ZW4gcHJvcGVydHkgcGF0aCBzdGFydHMgd2l0aCBhIG5hdmlnYXRpb24gcHJvcGVydHkuXG5cdFx0ZnVuY3Rpb24gX3N0YXJ0c1dpdGhOYXZpZ2F0aW9uUHJvcGVydHkoc1Byb3BlcnR5UGF0aDogc3RyaW5nLCBhTmF2aWdhdGlvblByb3BlcnRpZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gYU5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNvbWUoZnVuY3Rpb24gKHNOYXZQcm9wKSB7XG5cdFx0XHRcdHJldHVybiBzUHJvcGVydHlQYXRoLnN0YXJ0c1dpdGgoc05hdlByb3ApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gX2VucmljaFByb3BlcnR5KFxuXHRcdFx0c1Byb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdFx0bUVsZW1lbnQ6IE1ldGFNb2RlbFByb3BlcnR5LFxuXHRcdFx0bVByb3BlcnR5QW5ub3RhdGlvbnM6IE1ldGFNb2RlbFByb3BlcnR5QW5ub3RhdGlvbnMsXG5cdFx0XHRzRW50aXR5VHlwZTogc3RyaW5nLFxuXHRcdFx0b0VsZW1lbnQ6IENvbnRyb2wsXG5cdFx0XHRzQWdncmVnYXRpb25OYW1lOiBzdHJpbmcsXG5cdFx0XHRhTmF2aWdhdGlvblByb3BlcnRpZXM6IHN0cmluZ1tdXG5cdFx0KTogRGVsZWdhdGVQcm9wZXJ0eSB7XG5cdFx0XHRjb25zdCBtUHJvcDogRGVsZWdhdGVQcm9wZXJ0eSA9IHtcblx0XHRcdFx0bmFtZTogc1Byb3BlcnR5UGF0aCxcblx0XHRcdFx0YmluZGluZ1BhdGg6IHNQcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdGVudGl0eVR5cGU6IHNFbnRpdHlUeXBlXG5cdFx0XHR9O1xuXHRcdFx0Ly8gZ2V0IGxhYmVsIGluZm9ybWF0aW9uLCBlaXRoZXIgdmlhIERhdGFGaWVsZERlZmF1bHQgYW5ub3RhdGlvbiAoaWYgZXhpc3RzKSBvciBMYWJlbCBhbm5vdGF0aW9uXG5cdFx0XHRjb25zdCBtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcblx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRGVmYXVsdFwiXG5cdFx0XHRdIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkRGVmYXVsdD47XG5cdFx0XHRjb25zdCBzTGFiZWwgPVxuXHRcdFx0XHQobURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uICYmIG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi5MYWJlbCkgfHxcblx0XHRcdFx0bVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJdO1xuXHRcdFx0bVByb3AubGFiZWwgPSAoc0xhYmVsIGFzIHN0cmluZykgfHwgXCJbTEFCRUxfTUlTU0lORzogXCIgKyBzUHJvcGVydHlQYXRoICsgXCJdXCI7XG5cdFx0XHQvLyBldmFsdWF0ZSBIaWRkZW4gYW5ub3RhdGlvblxuXHRcdFx0Y29uc3QgbUhpZGRlbkFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5cIl07XG5cdFx0XHRtUHJvcC5oaWRlRnJvbVJldmVhbCA9IG1IaWRkZW5Bbm5vdGF0aW9uIGFzIGJvb2xlYW47XG5cdFx0XHRpZiAobUhpZGRlbkFubm90YXRpb24gJiYgKG1IaWRkZW5Bbm5vdGF0aW9uIGFzIHsgJFBhdGg/OiBzdHJpbmcgfSkuJFBhdGgpIHtcblx0XHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPSBvRWxlbWVudC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQcm9wZXJ0eSgobUhpZGRlbkFubm90YXRpb24gYXMgeyAkUGF0aD86IHN0cmluZyB9KS4kUGF0aCEpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gZXZhbHVhdGUgQWRhcHRhdGlvbkhpZGRlbiBhbm5vdGF0aW9uXG5cdFx0XHRpZiAoIW1Qcm9wLmhpZGVGcm9tUmV2ZWFsKSB7XG5cdFx0XHRcdG1Qcm9wLmhpZGVGcm9tUmV2ZWFsID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQWRhcHRhdGlvbkhpZGRlblwiXSBhcyBib29sZWFuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gZXZhbHVhdGUgRmllbGRDb250cm9sIGFubm90YXRpb25cblx0XHRcdGxldCBtRmllbGRDb250cm9sQW5ub3RhdGlvbjtcblx0XHRcdGlmICghbVByb3AuaGlkZUZyb21SZXZlYWwpIHtcblx0XHRcdFx0bUZpZWxkQ29udHJvbEFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sXCJdO1xuXHRcdFx0XHRpZiAobUZpZWxkQ29udHJvbEFubm90YXRpb24pIHtcblx0XHRcdFx0XHRtUHJvcC5oaWRlRnJvbVJldmVhbCA9XG5cdFx0XHRcdFx0XHQobUZpZWxkQ29udHJvbEFubm90YXRpb24gYXMgeyAkRW51bU1lbWJlcj86IHN0cmluZyB9KS4kRW51bU1lbWJlciA9PT1cblx0XHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFR5cGUvSGlkZGVuXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIEBydW50aW1lIGhpZGRlbiBieSBmaWVsZCBjb250cm9sIHZhbHVlID0gMFxuXHRcdFx0bUZpZWxkQ29udHJvbEFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sXCJdO1xuXHRcdFx0Y29uc3Qgc0ZpZWxkQ29udHJvbFBhdGggPSBtRmllbGRDb250cm9sQW5ub3RhdGlvbiAmJiAobUZpZWxkQ29udHJvbEFubm90YXRpb24gYXMgeyAkUGF0aD86IHN0cmluZyB9KS4kUGF0aDtcblx0XHRcdGlmIChzRmllbGRDb250cm9sUGF0aCAmJiAhbVByb3AuaGlkZUZyb21SZXZlYWwpIHtcblx0XHRcdFx0Ly8gaWYgdGhlIGJpbmRpbmcgaXMgYSBsaXN0IGJpbmRpbmcsIHNraXAgdGhlIGNoZWNrIGZvciBmaWVsZCBjb250cm9sXG5cdFx0XHRcdGNvbnN0IGJMaXN0QmluZGluZyA9IG9FbGVtZW50LmdldEJpbmRpbmcoc0FnZ3JlZ2F0aW9uTmFtZSkgaW5zdGFuY2VvZiBMaXN0QmluZGluZztcblx0XHRcdFx0aWYgKCFiTGlzdEJpbmRpbmcpIHtcblx0XHRcdFx0XHRjb25zdCBpRmllbGRDb250cm9sVmFsdWUgPSBvRWxlbWVudC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQcm9wZXJ0eShzRmllbGRDb250cm9sUGF0aCk7XG5cdFx0XHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPSBpRmllbGRDb250cm9sVmFsdWUgPT09IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIG5vIHN1cHBvcnQgZm9yIERhdGFGaWVsZEZvci9XaXRoQWN0aW9uIGFuZCBEYXRhRmllbGRGb3IvV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbiB3aXRoaW4gRGF0YUZpZWxkRGVmYXVsdCBhbm5vdGF0aW9uXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbiAmJlxuXHRcdFx0XHQobURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiIHx8XG5cdFx0XHRcdFx0bURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiIHx8XG5cdFx0XHRcdFx0bURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIiB8fFxuXHRcdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0bVByb3AudW5zdXBwb3J0ZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gbm8gc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIGFuZCBjb21wbGV4IHByb3BlcnRpZXNcblx0XHRcdGlmIChfc3RhcnRzV2l0aE5hdmlnYXRpb25Qcm9wZXJ0eShzUHJvcGVydHlQYXRoLCBhTmF2aWdhdGlvblByb3BlcnRpZXMpIHx8IF9pc0NvbXBsZXhUeXBlKG1FbGVtZW50KSkge1xuXHRcdFx0XHRtUHJvcC51bnN1cHBvcnRlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbVByb3A7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBtZXRhZGF0YSBmb3JtYXQgdG8gZGVsZWdhdGUgZm9ybWF0LlxuXHRcdGZ1bmN0aW9uIF9jb252ZXJ0TWV0YWRhdGFUb0RlbGVnYXRlRm9ybWF0KFxuXHRcdFx0bU9EYXRhRW50aXR5VHlwZTogTWV0YU1vZGVsRW50aXR5VHlwZSxcblx0XHRcdHNFbnRpdHlUeXBlOiBzdHJpbmcsXG5cdFx0XHRvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nXG5cdFx0KTogRGVsZWdhdGVQcm9wZXJ0eVtdIHtcblx0XHRcdGNvbnN0IGFQcm9wZXJ0aWVzID0gW107XG5cdFx0XHRsZXQgc0VsZW1lbnROYW1lID0gXCJcIjtcblx0XHRcdGNvbnN0IGFOYXZpZ2F0aW9uUHJvcGVydGllcyA9IFtdO1xuXHRcdFx0bGV0IG1FbGVtZW50O1xuXHRcdFx0Zm9yIChzRWxlbWVudE5hbWUgaW4gbU9EYXRhRW50aXR5VHlwZSkge1xuXHRcdFx0XHRtRWxlbWVudCA9IG1PRGF0YUVudGl0eVR5cGVbc0VsZW1lbnROYW1lXTtcblx0XHRcdFx0aWYgKG1FbGVtZW50LiRraW5kID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdFx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2goc0VsZW1lbnROYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChzRWxlbWVudE5hbWUgaW4gbU9EYXRhRW50aXR5VHlwZSkge1xuXHRcdFx0XHRtRWxlbWVudCA9IG1PRGF0YUVudGl0eVR5cGVbc0VsZW1lbnROYW1lXTtcblx0XHRcdFx0aWYgKG1FbGVtZW50LiRraW5kID09PSBcIlByb3BlcnR5XCIpIHtcblx0XHRcdFx0XHRjb25zdCBtUHJvcEFubm90YXRpb25zID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvXCIgKyBzRW50aXR5VHlwZSArIFwiL1wiICsgc0VsZW1lbnROYW1lICsgXCJAXCIpO1xuXHRcdFx0XHRcdGNvbnN0IG1Qcm9wID0gX2VucmljaFByb3BlcnR5KFxuXHRcdFx0XHRcdFx0c0VsZW1lbnROYW1lLFxuXHRcdFx0XHRcdFx0bUVsZW1lbnQgYXMgTWV0YU1vZGVsUHJvcGVydHksXG5cdFx0XHRcdFx0XHRtUHJvcEFubm90YXRpb25zLFxuXHRcdFx0XHRcdFx0c0VudGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRvRWxlbWVudCxcblx0XHRcdFx0XHRcdHNBZ2dyZWdhdGlvbk5hbWUsXG5cdFx0XHRcdFx0XHRhTmF2aWdhdGlvblByb3BlcnRpZXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGFQcm9wZXJ0aWVzLnB1c2gobVByb3ApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYVByb3BlcnRpZXM7XG5cdFx0fVxuXG5cdFx0Ly9HZXQgYmluZGluZyBwYXRoIGVpdGhlciBmcm9tIHBheWxvYWQgKGlmIGF2YWlsYWJsZSkgb3IgdGhlIGVsZW1lbnQncyBiaW5kaW5nIGNvbnRleHQuXG5cdFx0ZnVuY3Rpb24gX2dldEJpbmRpbmdQYXRoKFxuXHRcdFx0b0VsZW1lbnQ6IENvbnRyb2wsXG5cdFx0XHRtUGF5bG9hZDoge1xuXHRcdFx0XHRwYXRoPzogc3RyaW5nO1xuXHRcdFx0fVxuXHRcdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0XHRpZiAobVBheWxvYWQucGF0aCkge1xuXHRcdFx0XHRyZXR1cm4gbVBheWxvYWQucGF0aDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHZCaW5kaW5nID0gb0VsZW1lbnQuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRcdGlmICh2QmluZGluZykge1xuXHRcdFx0XHRpZiAob0VsZW1lbnQuZGF0YShcIm5hdmlnYXRpb25QYXRoXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZCaW5kaW5nLmdldFBhdGgoKSArIFwiL1wiICsgb0VsZW1lbnQuZGF0YShcIm5hdmlnYXRpb25QYXRoXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2QmluZGluZy5nZXRQYXRoKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly9HZXQgYWxsIHByb3BlcnRpZXMgb2YgdGhlIGVsZW1lbnQncyBtb2RlbC5cblx0XHRhc3luYyBmdW5jdGlvbiBfZ2V0T0RhdGFQcm9wZXJ0aWVzT2ZNb2RlbChcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLFxuXHRcdFx0bVBheWxvYWQ6IHtcblx0XHRcdFx0bW9kZWxOYW1lPzogc3RyaW5nO1xuXHRcdFx0XHRwYXRoPzogc3RyaW5nO1xuXHRcdFx0fVxuXHRcdCk6IFByb21pc2U8RGVsZWdhdGVQcm9wZXJ0eVtdPiB7XG5cdFx0XHRjb25zdCBvTW9kZWwgPSBvRWxlbWVudC5nZXRNb2RlbChtUGF5bG9hZC5tb2RlbE5hbWUpO1xuXHRcdFx0aWYgKG9Nb2RlbCkge1xuXHRcdFx0XHRpZiAob01vZGVsLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1vZGVsXCIpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRcdFx0XHRjb25zdCBzQmluZGluZ0NvbnRleHRQYXRoID0gX2dldEJpbmRpbmdQYXRoKG9FbGVtZW50LCBtUGF5bG9hZCk7XG5cdFx0XHRcdFx0aWYgKHNCaW5kaW5nQ29udGV4dFBhdGgpIHtcblx0XHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWxDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChzQmluZGluZ0NvbnRleHRQYXRoKTtcblx0XHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWxDb250ZXh0T2JqZWN0ID0gb01ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdFx0XHRjb25zdCBtT0RhdGFFbnRpdHlUeXBlID0gb01ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KG9NZXRhTW9kZWxDb250ZXh0T2JqZWN0LiRUeXBlKTtcblx0XHRcdFx0XHRcdHJldHVybiBfY29udmVydE1ldGFkYXRhVG9EZWxlZ2F0ZUZvcm1hdChcblx0XHRcdFx0XHRcdFx0bU9EYXRhRW50aXR5VHlwZSxcblx0XHRcdFx0XHRcdFx0b01ldGFNb2RlbENvbnRleHRPYmplY3QuJFR5cGUsXG5cdFx0XHRcdFx0XHRcdG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdG9FbGVtZW50LFxuXHRcdFx0XHRcdFx0XHRzQWdncmVnYXRpb25OYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIF9nZXRPRGF0YVByb3BlcnRpZXNPZk1vZGVsKG1Qcm9wZXJ0eUJhZy5lbGVtZW50LCBtUHJvcGVydHlCYWcuYWdncmVnYXRpb25OYW1lLCBtUHJvcGVydHlCYWcucGF5bG9hZCk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4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
|
|
@@ -7,10 +7,12 @@ import Common from "sap/fe/macros/CommonHelper";
|
|
|
7
7
|
import DelegateUtil from "sap/fe/macros/DelegateUtil";
|
|
8
8
|
import type Control from "sap/ui/core/Control";
|
|
9
9
|
import type UI5Element from "sap/ui/core/Element";
|
|
10
|
+
import type XMLView from "sap/ui/core/mvc/XMLView";
|
|
10
11
|
import ListBinding from "sap/ui/model/ListBinding";
|
|
11
12
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
12
13
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
13
14
|
import type { MetaModelEntityType, MetaModelProperty, MetaModelType } from "../../../../../../../types/metamodel_types";
|
|
15
|
+
|
|
14
16
|
type DelegateProperty = {
|
|
15
17
|
name: string;
|
|
16
18
|
bindingPath: string;
|
|
@@ -55,6 +57,29 @@ const Delegate = {
|
|
|
55
57
|
oMetaModel = mPropertyBag.appComponent?.getMetaModel(),
|
|
56
58
|
oForm = mPropertyBag.element;
|
|
57
59
|
|
|
60
|
+
// Check for existing fields with the same _flexId
|
|
61
|
+
if (oModifier.targets === "xmlTree") {
|
|
62
|
+
// at preprocessing time
|
|
63
|
+
const fieldsInView = mPropertyBag.view?.getElementsByTagNameNS("sap.fe.macros", "Field");
|
|
64
|
+
if (fieldsInView) {
|
|
65
|
+
for (const field of Array.from(fieldsInView)) {
|
|
66
|
+
if (field.getAttribute("_flexId") === mPropertyBag.fieldSelector?.id) {
|
|
67
|
+
// Field with same _flexId already exists, reject Promise to avoid duplicates
|
|
68
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} else if (oModifier.targets === "jsControlTree") {
|
|
73
|
+
// at runtime
|
|
74
|
+
if (
|
|
75
|
+
mPropertyBag.fieldSelector?.id &&
|
|
76
|
+
mPropertyBag.view &&
|
|
77
|
+
(mPropertyBag.view as unknown as XMLView).byId(mPropertyBag.fieldSelector?.id)
|
|
78
|
+
) {
|
|
79
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
58
83
|
let sEntitySet = await DelegateUtil.getCustomDataWithModifier<string>(oForm, "entitySet", oModifier);
|
|
59
84
|
if (!sEntitySet) {
|
|
60
85
|
sEntitySet = await DelegateUtil.getCustomDataWithModifier<string>(oForm, "navigationPath", oModifier);
|