@sapui5/sap.fe.macros 1.120.10 → 1.120.11
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/filterBar/adapter/SelectionVariantToStateFilters.js +2 -22
- package/src/sap/fe/macros/filterBar/adapter/SelectionVariantToStateFilters.ts +0 -22
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/messages/MessageButton.js +109 -61
- package/src/sap/fe/macros/messages/MessageButton.ts +125 -66
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DisplayModeFormatter", "sap/fe/core/templating/FilterHelper", "sap/fe/macros/filter/FilterFieldHelper", "sap/ui/mdc/
|
|
5
|
+
sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/DisplayModeFormatter", "sap/fe/core/templating/FilterHelper", "sap/fe/macros/filter/FilterFieldHelper", "sap/ui/mdc/util/FilterUtil"], function (CommonUtils, BindingToolkit, DisplayModeFormatter, FilterHelper, FilterFieldHelper, FilterUtil) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var maxConditions = FilterFieldHelper.maxConditions;
|
|
@@ -366,9 +366,6 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit",
|
|
|
366
366
|
}
|
|
367
367
|
} else if (condition) {
|
|
368
368
|
if (validOperators.length === 0 || validOperators.includes(condition.operator)) {
|
|
369
|
-
if (hasValueHelp) {
|
|
370
|
-
selectionVariantToStateFilters._adjustValueHelpCondition(condition);
|
|
371
|
-
}
|
|
372
369
|
cumulativeConditions.push(condition);
|
|
373
370
|
}
|
|
374
371
|
}
|
|
@@ -406,25 +403,8 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/helpers/BindingToolkit",
|
|
|
406
403
|
return [v.type, k];
|
|
407
404
|
}));
|
|
408
405
|
return TYPE_EDM_MAPPING[dataType];
|
|
409
|
-
},
|
|
410
|
-
/**
|
|
411
|
-
* Change value depending on condition operator(Empty and NotEmpty) for properties with value helps.
|
|
412
|
-
*
|
|
413
|
-
* @param condition Condition to change
|
|
414
|
-
*/
|
|
415
|
-
_adjustValueHelpCondition: condition => {
|
|
416
|
-
// in case the condition is meant for a field having a VH, the format required by MDC differs
|
|
417
|
-
condition.validated = ConditionValidated.Validated;
|
|
418
|
-
if (condition.operator === "Empty") {
|
|
419
|
-
condition.operator = "EQ";
|
|
420
|
-
condition.values = [""];
|
|
421
|
-
} else if (condition.operator === "NotEmpty") {
|
|
422
|
-
condition.operator = "NE";
|
|
423
|
-
condition.values = [""];
|
|
424
|
-
}
|
|
425
|
-
delete condition.isEmpty;
|
|
426
406
|
}
|
|
427
407
|
};
|
|
428
408
|
return selectionVariantToStateFilters;
|
|
429
409
|
}, false);
|
|
430
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJR05PUkVEX1BST1BFUlRZTkFNRVMiLCJzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJnZXRTdGF0ZUZpbHRlcnNGcm9tU1YiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb24iLCJmaWx0ZXJCYXJQcm9wZXJ0eUluZm9zIiwiY29udGV4dFBhdGgiLCJjb25kaXRpb25zIiwiZm9yRWFjaCIsInByb3BlcnR5TWV0YWRhdGEiLCJpbmNsdWRlcyIsIm5hbWUiLCJmaWx0ZXJQYXRoQ29uZGl0aW9ucyIsImNvbmRpdGlvblBhdGgiLCJhbm5vdGF0aW9uUGF0aCIsInByb3BQYXRoIiwicmVwbGFjZUFsbCIsIm5hdlBhdGgiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsInByb3BlcnR5TmFtZSIsInByb3BlcnR5Q29udmVyc2lvbkluZm8iLCJwcm9wZXJ0eUNvbnRleHRQYXRoIiwiZmlsdGVyQmFySW5mbyIsImlzUGFyYW1ldGVyIiwiX2dldENvbmRpdGlvbnNGb3JQYXJhbWV0ZXIiLCJfZ2V0Q29uZGl0aW9uc0Zvck5hdlByb3BlcnR5IiwiX2dldENvbmRpdGlvbnNGb3JQcm9wZXJ0eSIsImxlbmd0aCIsImdldFN0YXRlVG9BcHBseSIsInByb3BlcnR5SW5mb3MiLCJpdGVtcyIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJjdW1tdWxhdGl2ZUl0ZW1zIiwicGF0aCIsInByb3BlcnR5SW5mbyIsIkZpbHRlclV0aWwiLCJnZXRQcm9wZXJ0eUJ5S2V5IiwiaGlkZGVuRmlsdGVyIiwidW5kZWZpbmVkIiwicHVzaCIsImZpbHRlciIsIl9nZXRQcm9wZXJ0eUZpbHRlckNvbmZpZ3VyYXRpb25TZXR0aW5nIiwicHJvcGVydHkiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJzZXR0aW5ncyIsImNvbmRpdGlvbk9iamVjdHMiLCJzZWxlY3RPcHRpb25OYW1lIiwiX2dldFNlbGVjdE9wdGlvbk5hbWUiLCJfZ2V0UHJvcGVydHlDb25kaXRpb25zIiwiY29uZGl0b25QYXRoIiwic2VsZWN0T3B0aW9uUGF0aFByZWZpeCIsIm5hdmlnYXRpb25QYXRoIiwicG9zc2libGVTZWxlY3RPcHRpb25OYW1lcyIsInNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJzdGFydHNXaXRoIiwic2xpY2UiLCJ0ZW1wMSIsInRlbXAyIiwic29tZSIsInRlc3ROYW1lIiwicGF0aFRvQ2hlY2siLCJfZ2V0TWF4Q29uZGl0aW9ucyIsIm1ldGFNb2RlbCIsImNvbXBsZXRlUHJvcGVydHlQYXRoIiwicHJvcGVydHlDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJtYXhpbXVtQ29uZGl0aW9ucyIsIm1heENvbmRpdGlvbnMiLCJjb250ZXh0Iiwic2VsZWN0T3B0aW9ucyIsImdldFNlbGVjdE9wdGlvbiIsInNlbWFudGljRGF0ZU9wZXJhdG9ycyIsIl9nZXRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJwcm9wZXJ0eUVudGl0eVNldFBhdGgiLCJ2YWxpZE9wZXJhdG9ycyIsIkNvbW1vblV0aWxzIiwiZ2V0T3BlcmF0b3JzRm9yUHJvcGVydHkiLCJfZ2V0Q29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb25zIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJmaWx0ZXJTZXR0aW5ncyIsIk9EQVRBX1RZUEVfTUFQUElORyIsImRhdGFUeXBlIiwic2luZ2xlQ29uZGl0aW9uIiwiX2FkZENvbmRpdGlvbkZyb21TZWxlY3RPcHRpb24iLCJiaW5kIiwiY3VtdWxhdGl2ZUNvbmRpdGlvbnMiLCJzZWxlY3RPcHRpb24iLCJoYXNWYWx1ZUhlbHAiLCJlZG1UeXBlIiwiX2dldEVkbVR5cGUiLCJjb25kaXRpb24iLCJnZXRDb25kaXRpb25zIiwiU2VtYW50aWNEYXRlcyIsIm9wZXJhdG9yIiwic2VtYW50aWNEYXRlcyIsIl9hZGRTZW1hbnRpY0RhdGVzVG9Db25kaXRpb25zIiwiX2FkanVzdFZhbHVlSGVscENvbmRpdGlvbiIsInZhbHVlcyIsImhpZ2giLCJsb3ciLCJpc0VtcHR5IiwiVFlQRV9FRE1fTUFQUElORyIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsIkVETV9UWVBFX01BUFBJTkciLCJtYXAiLCJrIiwidiIsInR5cGUiLCJ2YWxpZGF0ZWQiLCJDb25kaXRpb25WYWxpZGF0ZWQiLCJWYWxpZGF0ZWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uLCBGaWx0ZXJTZXR0aW5ncyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEVETV9UWVBFX01BUFBJTkcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgT0RBVEFfVFlQRV9NQVBQSU5HIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7IGdldENvbmRpdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWx0ZXJIZWxwZXJcIjtcbmltcG9ydCB7IG1heENvbmRpdGlvbnMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyRmllbGRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyRmllbGRQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyRGVsZWdhdGVcIjtcbmltcG9ydCB0eXBlIFNlbGVjdGlvblZhcmlhbnQgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZW1hbnRpY0RhdGVDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL1NlbGVjdGlvblZhcmlhbnRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZGl0aW9uT2JqZWN0IH0gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IENvbmRpdGlvblZhbGlkYXRlZCBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9Db25kaXRpb25WYWxpZGF0ZWRcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyIGFzIFN0YXRlVXRpbEZpbHRlciB9IGZyb20gXCJzYXAvdWkvbWRjL3AxM24vU3RhdGVVdGlsXCI7XG5pbXBvcnQgRmlsdGVyVXRpbCBmcm9tIFwic2FwL3VpL21kYy91dGlsL0ZpbHRlclV0aWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcblxuZXhwb3J0IHR5cGUgRmlsdGVyRmllbGRzQ29uZmlnID0gUmVjb3JkPHN0cmluZywgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24+O1xuXG5leHBvcnQgdHlwZSBDb252ZXJzaW9uSW5mbyA9IHtcblx0bWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbDtcblx0Y29udGV4dFBhdGg6IHN0cmluZztcblx0dXNlU2VtYW50aWNEYXRlUmFuZ2U/OiBib29sZWFuO1xuXHRmaWx0ZXJGaWVsZHNDb25maWc/OiBGaWx0ZXJGaWVsZHNDb25maWc7XG59O1xuXG50eXBlIFByb3BlcnR5Q29udmVyc2lvbkluZm8gPSB7XG5cdHByb3BlcnR5TmFtZTogc3RyaW5nO1xuXHRuYXZQYXRoOiBzdHJpbmc7XG5cdHByb3BlcnR5TWV0YWRhdGE6IEZpbHRlckZpZWxkUHJvcGVydHlJbmZvO1xuXHRwcm9wZXJ0eUNvbnRleHRQYXRoOiBzdHJpbmc7XG5cdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdGZpbHRlckJhckluZm86IENvbnZlcnNpb25JbmZvO1xufTtcblxuY29uc3QgSUdOT1JFRF9QUk9QRVJUWU5BTUVTOiBzdHJpbmdbXSA9IFtcIiRzZWFyY2hcIiwgXCIkZWRpdFN0YXRlXCJdO1xuXG5jb25zdCBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMgPSB7XG5cdC8qKlxuXHQgKiBHZXQgY29uZGl0aW9ucyBmcm9tIHRoZSBzZWxlY3Rpb24gdmFyaWFudC5cblx0ICpcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgU2VsZWN0aW9uIHZhcmlhbnRcblx0ICogQHBhcmFtIGZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uIEZpbHRlciBiYXIgaW5mbyBuZWVkZWQgZm9yIGNvbnZlcnNpb24gb2Ygc2VsZWN0aW9uIHZhcmlhbnQgdG8gY29uZGl0aW9uc1xuXHQgKiBAcGFyYW0gZmlsdGVyQmFyUHJvcGVydHlJbmZvcyBQcm9wZXJ0eSBpbmZvcyBvZiB0aGUgZmlsdGVyYmFyXG5cdCAqIEByZXR1cm5zIENvbmRpdGlvbnMgYWZ0ZXIgY29udmVyc2lvbiBvZiBzZWxlY3Rpb24gdmFyaWFudFxuXHQgKi9cblx0Z2V0U3RhdGVGaWx0ZXJzRnJvbVNWOiBmdW5jdGlvbiAoXG5cdFx0c2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbjogQ29udmVyc2lvbkluZm8sXG5cdFx0ZmlsdGVyQmFyUHJvcGVydHlJbmZvczogRmlsdGVyRmllbGRQcm9wZXJ0eUluZm9bXVxuXHQpOiBTdGF0ZVV0aWxGaWx0ZXIge1xuXHRcdGNvbnN0IHsgY29udGV4dFBhdGggfSA9IGZpbHRlckJhckluZm9Gb3JDb252ZXJzaW9uO1xuXHRcdGNvbnN0IGNvbmRpdGlvbnM6IFN0YXRlVXRpbEZpbHRlciA9IHt9O1xuXG5cdFx0ZmlsdGVyQmFyUHJvcGVydHlJbmZvcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wZXJ0eU1ldGFkYXRhOiBGaWx0ZXJGaWVsZFByb3BlcnR5SW5mbykge1xuXHRcdFx0aWYgKCFJR05PUkVEX1BST1BFUlRZTkFNRVMuaW5jbHVkZXMocHJvcGVydHlNZXRhZGF0YS5uYW1lKSkge1xuXHRcdFx0XHRsZXQgZmlsdGVyUGF0aENvbmRpdGlvbnM6IENvbmRpdGlvbk9iamVjdFtdID0gW107XG5cdFx0XHRcdGNvbnN0IHsgY29uZGl0aW9uUGF0aCwgYW5ub3RhdGlvblBhdGggfSA9IHByb3BlcnR5TWV0YWRhdGE7XG5cdFx0XHRcdGNvbnN0IHByb3BQYXRoID0gY29uZGl0aW9uUGF0aC5yZXBsYWNlQWxsKFwiKlwiLCBcIlwiKTtcblx0XHRcdFx0Y29uc3QgbmF2UGF0aCA9IHByb3BQYXRoLnN1YnN0cmluZygwLCBwcm9wUGF0aC5sYXN0SW5kZXhPZihcIi9cIikpO1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eU5hbWUgPSBwcm9wUGF0aC5zdWJzdHJpbmcocHJvcFBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cblx0XHRcdFx0Ly8gTm90ZTogQ29udmVyc2lvbiBwYXJhbWV0ZXJzXG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5Q29udmVyc2lvbkluZm86IFByb3BlcnR5Q29udmVyc2lvbkluZm8gPSB7XG5cdFx0XHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0XHRcdG5hdlBhdGgsXG5cdFx0XHRcdFx0cHJvcGVydHlDb250ZXh0UGF0aDogYCR7Y29udGV4dFBhdGh9JHtuYXZQYXRoID8gbmF2UGF0aCArIFwiL1wiIDogXCJcIn1gLFxuXHRcdFx0XHRcdHByb3BlcnR5TWV0YWRhdGEsXG5cdFx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdFx0XHRmaWx0ZXJCYXJJbmZvOiBmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvblxuXHRcdFx0XHR9O1xuXHRcdFx0XHRpZiAocHJvcGVydHlNZXRhZGF0YS5pc1BhcmFtZXRlciAmJiBhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0XHRcdC8vIHBhcmFtZXRlclxuXHRcdFx0XHRcdHByb3BlcnR5Q29udmVyc2lvbkluZm8ucHJvcGVydHlDb250ZXh0UGF0aCA9IGFubm90YXRpb25QYXRoLnN1YnN0cmluZygwLCBhbm5vdGF0aW9uUGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHRcdFx0XHRmaWx0ZXJQYXRoQ29uZGl0aW9ucyA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0Q29uZGl0aW9uc0ZvclBhcmFtZXRlcihwcm9wZXJ0eUNvbnZlcnNpb25JbmZvKTtcblx0XHRcdFx0fSBlbHNlIGlmIChjb25kaXRpb25QYXRoLmluY2x1ZGVzKFwiL1wiKSkge1xuXHRcdFx0XHRcdC8vIG5hdmlnYXRpb24gcHJvcGVydHlcblx0XHRcdFx0XHRmaWx0ZXJQYXRoQ29uZGl0aW9ucyA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0Q29uZGl0aW9uc0Zvck5hdlByb3BlcnR5KHByb3BlcnR5Q29udmVyc2lvbkluZm8pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIG5vcm1hbCBwcm9wZXJ0eVxuXHRcdFx0XHRcdGZpbHRlclBhdGhDb25kaXRpb25zID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9nZXRDb25kaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHlDb252ZXJzaW9uSW5mbyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZmlsdGVyUGF0aENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGNvbmRpdGlvbnNbY29uZGl0aW9uUGF0aF0gPSBmaWx0ZXJQYXRoQ29uZGl0aW9ucztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBjb25kaXRpb25zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgcmV0dXJucyBmaWx0ZXJzIGFuZCBmaWx0ZXJmaWVsZCBpdGVtcyB0byBhcHBseSBhbmQgYWRkLiBBbHNvIGNoZWNrcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBjb25maWd1cmVkIHdpdGggaGlkZGVuRmlsdGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlJbmZvcyBQcm9wZXJ0eSBJbmZvcyBvZiB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcGFyYW0gY29uZGl0aW9ucyBDb25kdGlvbnMgdG8gYXBwbHkgYXMgZmlsdGVycyB0byB0aGUgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgZmlsdGVycyBhbmQgaXRlbXMuXG5cdCAqL1xuXHRnZXRTdGF0ZVRvQXBwbHk6IChwcm9wZXJ0eUluZm9zOiBGaWx0ZXJGaWVsZFByb3BlcnR5SW5mb1tdLCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIpOiBvYmplY3QgPT4ge1xuXHRcdGNvbnN0IGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W10gPSBPYmplY3Qua2V5cyhjb25kaXRpb25zKS5yZWR1Y2UoXG5cdFx0XHQoY3VtbXVsYXRpdmVJdGVtcywgcGF0aCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eUluZm8gPSBGaWx0ZXJVdGlsLmdldFByb3BlcnR5QnlLZXkocHJvcGVydHlJbmZvcywgcGF0aCkgYXMgRmlsdGVyRmllbGRQcm9wZXJ0eUluZm87XG5cdFx0XHRcdGlmIChwcm9wZXJ0eUluZm8uaGlkZGVuRmlsdGVyID09PSB1bmRlZmluZWQgfHwgIXByb3BlcnR5SW5mby5oaWRkZW5GaWx0ZXIpIHtcblx0XHRcdFx0XHRjdW1tdWxhdGl2ZUl0ZW1zLnB1c2goe1xuXHRcdFx0XHRcdFx0bmFtZTogcGF0aFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBjdW1tdWxhdGl2ZUl0ZW1zO1xuXHRcdFx0fSxcblx0XHRcdFtdIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXVxuXHRcdCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpbHRlcjogY29uZGl0aW9ucyxcblx0XHRcdGl0ZW1zOiBpdGVtc1xuXHRcdH07XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZmlsdGVyIGZpZWxkIGNvbmZpZ3VyYXRpb24gb2YgYSBwcm9wZXJ0eS5cblx0ICpcblx0ICogQHBhcmFtIHByb3BlcnR5IEZpbHRlciBmaWVsZCBQYXRoXG5cdCAqIEBwYXJhbSBmaWx0ZXJGaWVsZHNDb25maWcgTWFuaWZlc3QgQ29uZmlndXJhdGlvbiBvZiBmaWx0ZXIgYmFyXG5cdCAqIEByZXR1cm5zIFRoZSBGaWx0ZXIgRmllbGQgQ29uZmlndXJhdGlvblxuXHQgKi9cblx0X2dldFByb3BlcnR5RmlsdGVyQ29uZmlndXJhdGlvblNldHRpbmc6IGZ1bmN0aW9uIChwcm9wZXJ0eTogc3RyaW5nLCBmaWx0ZXJGaWVsZHNDb25maWc/OiBGaWx0ZXJGaWVsZHNDb25maWcpOiBGaWx0ZXJTZXR0aW5ncyB7XG5cdFx0cmV0dXJuIGZpbHRlckZpZWxkc0NvbmZpZz8uW3Byb3BlcnR5XT8uc2V0dGluZ3MgPz8ge307XG5cdH0sXG5cblx0LyoqXG5cdCAqIENyZWF0ZSBmaWx0ZXIgY29uZGl0aW9ucyBmb3IgYSBwYXJhbWV0ZXIgcHJvcGVydHkuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvIFByb3BlcnR5IGluZm8gdXNlZCBmb3IgY29udmVyc2lvblxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbmR0aW9ucyBmb3IgcGFyYW1ldGVyIHByb3BlcnR5XG5cdCAqL1xuXHRfZ2V0Q29uZGl0aW9uc0ZvclBhcmFtZXRlcjogZnVuY3Rpb24gKHByb3BlcnR5Q29udmVyc2lvbkluZm86IFByb3BlcnR5Q29udmVyc2lvbkluZm8pOiBDb25kaXRpb25PYmplY3RbXSB7XG5cdFx0bGV0IGNvbmRpdGlvbk9iamVjdHM6IENvbmRpdGlvbk9iamVjdFtdID0gW107XG5cdFx0Y29uc3QgeyBwcm9wZXJ0eU1ldGFkYXRhLCBzZWxlY3Rpb25WYXJpYW50IH0gPSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvO1xuXHRcdGNvbnN0IGNvbmRpdGlvblBhdGggPSBwcm9wZXJ0eU1ldGFkYXRhLm5hbWU7XG5cdFx0Y29uc3Qgc2VsZWN0T3B0aW9uTmFtZSA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0U2VsZWN0T3B0aW9uTmFtZShzZWxlY3Rpb25WYXJpYW50LCBjb25kaXRpb25QYXRoLCB0cnVlKTtcblx0XHRpZiAoc2VsZWN0T3B0aW9uTmFtZSkge1xuXHRcdFx0Y29uZGl0aW9uT2JqZWN0cyA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0UHJvcGVydHlDb25kaXRpb25zKHByb3BlcnR5Q29udmVyc2lvbkluZm8sIHNlbGVjdE9wdGlvbk5hbWUsIHRydWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29uZGl0aW9uT2JqZWN0cztcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlIGZpbHRlciBjb25kaXRpb25zIGZvciBhIG5vcm1hbCBwcm9wZXJ0eS5cblx0ICpcblx0ICogQHBhcmFtIHByb3BlcnR5Q29udmVyc2lvbkluZm8gUHJvcGVydHkgaW5mbyB1c2VkIGZvciBjb252ZXJzaW9uXG5cdCAqIEByZXR1cm5zIFRoZSBmaWx0ZXIgY29uZGl0aW9ucyBmb3IgYSBub3JtYWwgcHJvcGVydHlcblx0ICovXG5cdF9nZXRDb25kaXRpb25zRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChwcm9wZXJ0eUNvbnZlcnNpb25JbmZvOiBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvKTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGNvbnN0IHsgcHJvcGVydHlNZXRhZGF0YSwgc2VsZWN0aW9uVmFyaWFudCB9ID0gcHJvcGVydHlDb252ZXJzaW9uSW5mbztcblx0XHRjb25zdCBjb25kaXRvblBhdGggPSBwcm9wZXJ0eU1ldGFkYXRhLm5hbWU7XG5cdFx0Y29uc3Qgc2VsZWN0T3B0aW9uTmFtZSA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0U2VsZWN0T3B0aW9uTmFtZShzZWxlY3Rpb25WYXJpYW50LCBjb25kaXRvblBhdGgpO1xuXG5cdFx0bGV0IGNvbmRpdGlvbk9iamVjdHM6IENvbmRpdGlvbk9iamVjdFtdID0gW107XG5cdFx0aWYgKHNlbGVjdE9wdGlvbk5hbWUpIHtcblx0XHRcdGNvbmRpdGlvbk9iamVjdHMgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldFByb3BlcnR5Q29uZGl0aW9ucyhwcm9wZXJ0eUNvbnZlcnNpb25JbmZvLCBzZWxlY3RPcHRpb25OYW1lLCBmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBjb25kaXRpb25PYmplY3RzO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgZmlsdGVyIGNvbmRpdGlvbnMgZnJvbSBuYXZpZ2F0aW9uIHByb3BlcnRpZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvIFByb3BlcnR5IGluZm8gdXNlZCBmb3IgY29udmVyc2lvblxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbmR0aW9ucyBmb3IgbmF2aWdhdGlvbiBwcm9wZXJ0eVxuXHQgKi9cblx0X2dldENvbmRpdGlvbnNGb3JOYXZQcm9wZXJ0eTogZnVuY3Rpb24gKHByb3BlcnR5Q29udmVyc2lvbkluZm86IFByb3BlcnR5Q29udmVyc2lvbkluZm8pOiBDb25kaXRpb25PYmplY3RbXSB7XG5cdFx0Y29uc3QgeyBmaWx0ZXJCYXJJbmZvLCBzZWxlY3Rpb25WYXJpYW50LCBwcm9wZXJ0eU5hbWUsIG5hdlBhdGggfSA9IHByb3BlcnR5Q29udmVyc2lvbkluZm87XG5cdFx0Y29uc3QgeyBjb250ZXh0UGF0aCB9ID0gZmlsdGVyQmFySW5mbztcblxuXHRcdGxldCBjb25kaXRpb25PYmplY3RzOiBDb25kaXRpb25PYmplY3RbXSA9IFtdO1xuXG5cdFx0Ly8gV2UgY2hlY2sgd2l0aCAnL1NhbGVzT3JkZXJNYW5hZ2UvX0l0ZW0vTmFtZScuXG5cdFx0Ly8gJy9TYWxlc09yZGVyTWFuYWdlL19JdGVtJyA9PiAnU2FsZXNPcmRlck1hbmFnZS5fSXRlbSdcblx0XHRsZXQgc2VsZWN0T3B0aW9uUGF0aFByZWZpeCA9IGAke2NvbnRleHRQYXRoLnN1YnN0cmluZygxKX0ke25hdlBhdGh9YC5yZXBsYWNlQWxsKFwiL1wiLCBcIi5cIik7XG5cdFx0bGV0IHNlbGVjdE9wdGlvbk5hbWUgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldFNlbGVjdE9wdGlvbk5hbWUoXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRzZWxlY3RPcHRpb25QYXRoUHJlZml4XG5cdFx0KTtcblxuXHRcdGlmICghc2VsZWN0T3B0aW9uTmFtZSkge1xuXHRcdFx0Ly8gV2UgY2hlY2sgd2l0aCAnX0l0ZW0vTmFtZScuXG5cdFx0XHRzZWxlY3RPcHRpb25QYXRoUHJlZml4ID0gbmF2UGF0aC5yZXBsYWNlQWxsKFwiL1wiLCBcIi5cIik7XG5cdFx0XHRzZWxlY3RPcHRpb25OYW1lID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9nZXRTZWxlY3RPcHRpb25OYW1lKFxuXHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50LFxuXHRcdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRzZWxlY3RPcHRpb25QYXRoUHJlZml4XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmIChzZWxlY3RPcHRpb25OYW1lKSB7XG5cdFx0XHRjb25kaXRpb25PYmplY3RzID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9nZXRQcm9wZXJ0eUNvbmRpdGlvbnMocHJvcGVydHlDb252ZXJzaW9uSW5mbywgc2VsZWN0T3B0aW9uTmFtZSwgZmFsc2UpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb25kaXRpb25PYmplY3RzO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHBvc3NpYmxlIHNlbGVjdCBvcHRpb24gbmFtZSBiYXNlZCBvbiBwcmlvcml0eSBvcmRlci5cblx0ICpcblx0ICogQHBhcmFtIHNlbGVjdGlvblZhcmlhbnQgU2VsZWN0aW9uVmFyaWFudCB0byBiZSBjb252ZXJ0ZWQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgTWV0YWRhdGEgcHJvcGVydHkgbmFtZVxuXHQgKiBAcGFyYW0gaXNQYXJhbWV0ZXIgUHJvcGVydHkgaXMgYSBwYXJhbWV0ZXJcblx0ICogQHBhcmFtIG5hdmlnYXRpb25QYXRoIE5hdmlnYXRpb24gcGF0aCB0byBiZSBjb25zaWRlcmVkXG5cdCAqIEByZXR1cm5zIFRoZSBjb3JyZWN0IHNlbGVjdCBvcHRpb24gbmFtZSBvZiBhIHByb3BlcnR5IHRvIGZldGNoIHRoZSBzZWxlY3Qgb3B0aW9ucyBmb3IgY29udmVyc2lvbi5cblx0ICovXG5cdF9nZXRTZWxlY3RPcHRpb25OYW1lOiBmdW5jdGlvbiAoXG5cdFx0c2VsZWN0aW9uVmFyaWFudDogU2VsZWN0aW9uVmFyaWFudCxcblx0XHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0XHRpc1BhcmFtZXRlcj86IGJvb2xlYW4sXG5cdFx0bmF2aWdhdGlvblBhdGg/OiBzdHJpbmdcblx0KTogc3RyaW5nIHtcblx0XHQvLyBwb3NzaWJsZSBTZWxlY3RPcHRpb24gTmFtZXMgYmFzZWQgb24gcHJpb3JpdHkuXG5cdFx0Y29uc3QgcG9zc2libGVTZWxlY3RPcHRpb25OYW1lczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBzZWxlY3RPcHRpb25zUHJvcGVydHlOYW1lcyA9IHNlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMoKTtcblxuXHRcdGlmIChpc1BhcmFtZXRlcikge1xuXHRcdFx0Ly8gQ3VycmVuY3kgPT0+ICRQYXJhbWV0ZXIuQ3VycmVuY3lcblx0XHRcdC8vIFBfQ3VycmVuY3kgPT0+ICRQYXJhbWV0ZXIuUF9DdXJyZW5jeVxuXHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKGAkUGFyYW1ldGVyLiR7cHJvcGVydHlOYW1lfWApO1xuXG5cdFx0XHQvLyBDdXJyZW5jeSA9PT4gQ3VycmVuY3lcblx0XHRcdC8vIFBfQ3VycmVuY3kgPT0+IFBfQ3VycmVuY3lcblx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChwcm9wZXJ0eU5hbWUpO1xuXG5cdFx0XHRpZiAocHJvcGVydHlOYW1lLnN0YXJ0c1dpdGgoXCJQX1wiKSkge1xuXHRcdFx0XHQvLyBQX0N1cnJlbmN5ID09PiAkUGFyYW1ldGVyLkN1cnJlbmN5XG5cdFx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChgJFBhcmFtZXRlci4ke3Byb3BlcnR5TmFtZS5zbGljZSgyLCBwcm9wZXJ0eU5hbWUubGVuZ3RoKX1gKTtcblxuXHRcdFx0XHQvLyBQX0N1cnJlbmN5ID09PiBDdXJyZW5jeVxuXHRcdFx0XHRwb3NzaWJsZVNlbGVjdE9wdGlvbk5hbWVzLnB1c2gocHJvcGVydHlOYW1lLnNsaWNlKDIsIHByb3BlcnR5TmFtZS5sZW5ndGgpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIEN1cnJlbmN5ID09PiAkUGFyYW1ldGVyLlBfQ3VycmVuY3lcblx0XHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKGAkUGFyYW1ldGVyLlBfJHtwcm9wZXJ0eU5hbWV9YCk7XG5cblx0XHRcdFx0Ly8gQ3VycmVuY3kgPT0+IFBfQ3VycmVuY3lcblx0XHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKGBQXyR7cHJvcGVydHlOYW1lfWApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBOYW1lID0+IE5hbWVcblx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChwcm9wZXJ0eU5hbWUpO1xuXHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKGAkUGFyYW1ldGVyLiR7cHJvcGVydHlOYW1lfWApO1xuXG5cdFx0XHRpZiAocHJvcGVydHlOYW1lLnN0YXJ0c1dpdGgoXCJQX1wiKSkge1xuXHRcdFx0XHQvLyBQX05hbWUgPT4gTmFtZVxuXHRcdFx0XHRjb25zdCB0ZW1wMSA9IHByb3BlcnR5TmFtZS5zbGljZSgyLCBwcm9wZXJ0eU5hbWUubGVuZ3RoKTtcblxuXHRcdFx0XHQvLyBOYW1lID0+ICRQYXJhbWV0ZXIuTmFtZVxuXHRcdFx0XHRwb3NzaWJsZVNlbGVjdE9wdGlvbk5hbWVzLnB1c2goYCRQYXJhbWV0ZXIuJHt0ZW1wMX1gKTtcblxuXHRcdFx0XHQvLyBOYW1lID0+IE5hbWVcblx0XHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKHRlbXAxKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIE5hbWUgPT4gUF9OYW1lXG5cdFx0XHRcdGNvbnN0IHRlbXAyID0gYFBfJHtwcm9wZXJ0eU5hbWV9YDtcblxuXHRcdFx0XHQvLyBQX05hbWUgPT4gJFBhcmFtZXRlci5QX05hbWVcblx0XHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKGAkUGFyYW1ldGVyLiR7dGVtcDJ9YCk7XG5cblx0XHRcdFx0Ly8gUF9OYW1lID0+IFBfTmFtZVxuXHRcdFx0XHRwb3NzaWJsZVNlbGVjdE9wdGlvbk5hbWVzLnB1c2godGVtcDIpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBzZWxlY3RPcHRpb25OYW1lID0gXCJcIjtcblx0XHQvLyBGaW5kIHRoZSBjb3JyZWN0IHNlbGVjdCBvcHRpb24gbmFtZSBiYXNlZCBvbiB0aGUgcHJpb3JpdHlcblx0XHRwb3NzaWJsZVNlbGVjdE9wdGlvbk5hbWVzLnNvbWUoKHRlc3ROYW1lOiBzdHJpbmcpID0+IHtcblx0XHRcdGNvbnN0IHBhdGhUb0NoZWNrID0gbmF2aWdhdGlvblBhdGggPyBgJHtuYXZpZ2F0aW9uUGF0aH0uJHt0ZXN0TmFtZX1gIDogdGVzdE5hbWU7XG5cdFx0XHQvLyBOYW1lID0+IE5hbWVcblx0XHRcdC8vIE5hbWUgPT4gX0l0ZW0uTmFtZSAoaW5jYXNlIF9JdGVtIGlzIG5hdmlnYXRpb25QYXRoKVxuXG5cdFx0XHRyZXR1cm4gc2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMuaW5jbHVkZXMocGF0aFRvQ2hlY2spID8gKHNlbGVjdE9wdGlvbk5hbWUgPSBwYXRoVG9DaGVjaykgOiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBzZWxlY3RPcHRpb25OYW1lO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgbWF4aW11bSBjb25kaXRpb25zIHN1cHBvcnRlZCBmb3IgYSBwcm9wZXJ0eSBhcyBmaWx0ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvIFByb3BlcnR5IGluZm8gdXNlZCBmb3IgY29udmVyc2lvblxuXHQgKiBAcmV0dXJucyBOdW1iZXIgb2YgbWF4aW11bSBjb25kaXRpb25zXG5cdCAqL1xuXHRfZ2V0TWF4Q29uZGl0aW9ucyhwcm9wZXJ0eUNvbnZlcnNpb25JbmZvOiBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvKTogbnVtYmVyIHtcblx0XHRjb25zdCB7IGZpbHRlckJhckluZm8sIHByb3BlcnR5Q29udGV4dFBhdGgsIHByb3BlcnR5TmFtZSB9ID0gcHJvcGVydHlDb252ZXJzaW9uSW5mbztcblx0XHRjb25zdCB7IG1ldGFNb2RlbCB9ID0gZmlsdGVyQmFySW5mbztcblx0XHRjb25zdCBjb21wbGV0ZVByb3BlcnR5UGF0aCA9IGAke3Byb3BlcnR5Q29udGV4dFBhdGh9JHtwcm9wZXJ0eU5hbWV9YDtcblx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoY29tcGxldGVQcm9wZXJ0eVBhdGgpO1xuXG5cdFx0bGV0IG1heGltdW1Db25kaXRpb25zID0gMDtcblx0XHRpZiAocHJvcGVydHlDb250ZXh0KSB7XG5cdFx0XHRtYXhpbXVtQ29uZGl0aW9ucyA9IG1heENvbmRpdGlvbnMocHJvcGVydHlOYW1lLCB7IGNvbnRleHQ6IHByb3BlcnR5Q29udGV4dCB9KTtcblx0XHR9XG5cdFx0cmV0dXJuIG1heGltdW1Db25kaXRpb25zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0IHNlbGVjdCBvcHRpb25zIHRvIHByb3BlcnR5IGNvbmRpdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvIFByb3BlcnR5IGluZm8gdXNlZCBmb3IgY29udmVyc2lvblxuXHQgKiBAcGFyYW0gc2VsZWN0T3B0aW9uTmFtZSBTZWxlY3Qgb3B0aW9uIG5hbWVcblx0ICogQHBhcmFtIGlzUGFyYW1ldGVyIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyBpZiBhIHByb3BlcnR5IGlzIHBhcmFtZXRlcml6ZWRcblx0ICogQHJldHVybnMgVGhlIGNvbmRpdGlvbnMgb2YgYSBwcm9wZXJ0eSBmb3IgZmlsdGVyIGJhclxuXHQgKi9cblx0X2dldFByb3BlcnR5Q29uZGl0aW9uczogZnVuY3Rpb24gKFxuXHRcdHByb3BlcnR5Q29udmVyc2lvbkluZm86IFByb3BlcnR5Q29udmVyc2lvbkluZm8sXG5cdFx0c2VsZWN0T3B0aW9uTmFtZTogc3RyaW5nLFxuXHRcdGlzUGFyYW1ldGVyPzogYm9vbGVhblxuXHQpOiBDb25kaXRpb25PYmplY3RbXSB7XG5cdFx0Y29uc3QgeyBmaWx0ZXJCYXJJbmZvLCBwcm9wZXJ0eU1ldGFkYXRhLCBzZWxlY3Rpb25WYXJpYW50LCBwcm9wZXJ0eUNvbnRleHRQYXRoLCBwcm9wZXJ0eU5hbWUgfSA9IHByb3BlcnR5Q29udmVyc2lvbkluZm87XG5cdFx0Y29uc3Qgc2VsZWN0T3B0aW9ucyA9IHNlbGVjdGlvblZhcmlhbnQuZ2V0U2VsZWN0T3B0aW9uKHNlbGVjdE9wdGlvbk5hbWUpO1xuXHRcdGNvbnN0IHsgbWV0YU1vZGVsIH0gPSBmaWx0ZXJCYXJJbmZvO1xuXHRcdGNvbnN0IG1heGltdW1Db25kaXRpb25zID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9nZXRNYXhDb25kaXRpb25zKHByb3BlcnR5Q29udmVyc2lvbkluZm8pO1xuXG5cdFx0bGV0IGNvbmRpdGlvbk9iamVjdHM6IENvbmRpdGlvbk9iamVjdFtdID0gW107XG5cdFx0aWYgKHNlbGVjdE9wdGlvbnM/Lmxlbmd0aCAmJiBtYXhpbXVtQ29uZGl0aW9ucyAhPT0gMCkge1xuXHRcdFx0Y29uc3Qgc2VtYW50aWNEYXRlT3BlcmF0b3JzOiBzdHJpbmdbXSA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0U2VtYW50aWNEYXRlT3BlcmF0b3JzKFxuXHRcdFx0XHRwcm9wZXJ0eUNvbnZlcnNpb25JbmZvLFxuXHRcdFx0XHRpc1BhcmFtZXRlclxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IHByb3BlcnR5RW50aXR5U2V0UGF0aCA9IHByb3BlcnR5Q29udGV4dFBhdGguc3Vic3RyaW5nKDAsIHByb3BlcnR5Q29udGV4dFBhdGgubGVuZ3RoIC0gMSk7XG5cblx0XHRcdGNvbnN0IHZhbGlkT3BlcmF0b3JzID0gaXNQYXJhbWV0ZXJcblx0XHRcdFx0PyBbXCJFUVwiXVxuXHRcdFx0XHQ6IENvbW1vblV0aWxzLmdldE9wZXJhdG9yc0ZvclByb3BlcnR5KHByb3BlcnR5TmFtZSwgcHJvcGVydHlFbnRpdHlTZXRQYXRoLCBtZXRhTW9kZWwpO1xuXG5cdFx0XHQvLyBtdWx0aXBsZSBzZWxlY3Qgb3B0aW9ucyA9PiBtdWx0aXBsZSBjb25kaXRpb25zXG5cblx0XHRcdGNvbmRpdGlvbk9iamVjdHMgPSB0aGlzLl9nZXRDb25kaXRpb25zRnJvbVNlbGVjdE9wdGlvbnMoXG5cdFx0XHRcdHNlbGVjdE9wdGlvbnMsXG5cdFx0XHRcdHByb3BlcnR5TWV0YWRhdGEsXG5cdFx0XHRcdHZhbGlkT3BlcmF0b3JzLFxuXHRcdFx0XHRzZW1hbnRpY0RhdGVPcGVyYXRvcnMsXG5cdFx0XHRcdG1heGltdW1Db25kaXRpb25zID09PSAxXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29uZGl0aW9uT2JqZWN0cztcblx0fSxcblxuXHQvKipcblx0ICogRmV0Y2ggc2VtYW50aWMgZGF0ZSBvcGVyYXRvcnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvIE9iamVjdCB3aGljaCBpcyB1c2VkIGZvciBjb252ZXJzaW9uXG5cdCAqIEBwYXJhbSBpc1BhcmFtZXRlciBCb29sZWFuIHdoaWNoIGRldGVybWluZXMgaWYgYSBwcm9wZXJ0eSBpcyBwYXJhbWV0ZXJpemVkXG5cdCAqIEByZXR1cm5zIFRoZSBzZW1hbnRpYyBkYXRlIG9wZXJhdG9ycyBzdXBwb3J0ZWQgZm9yIGEgcHJvcGVydHlcblx0ICovXG5cdF9nZXRTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uIChwcm9wZXJ0eUNvbnZlcnNpb25JbmZvOiBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvLCBpc1BhcmFtZXRlcj86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgeyBmaWx0ZXJCYXJJbmZvLCBwcm9wZXJ0eU1ldGFkYXRhLCBwcm9wZXJ0eU5hbWUsIHByb3BlcnR5Q29udGV4dFBhdGggfSA9IHByb3BlcnR5Q29udmVyc2lvbkluZm87XG5cdFx0Y29uc3QgY29uZGl0aW9uUGF0aCA9IHByb3BlcnR5TWV0YWRhdGEubmFtZTtcblx0XHRsZXQgc2VtYW50aWNEYXRlT3BlcmF0b3JzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGNvbnN0IHsgdXNlU2VtYW50aWNEYXRlUmFuZ2UsIGZpbHRlckZpZWxkc0NvbmZpZywgbWV0YU1vZGVsIH0gPSBmaWx0ZXJCYXJJbmZvO1xuXHRcdGlmICh1c2VTZW1hbnRpY0RhdGVSYW5nZSkge1xuXHRcdFx0aWYgKGlzUGFyYW1ldGVyKSB7XG5cdFx0XHRcdHNlbWFudGljRGF0ZU9wZXJhdG9ycyA9IFtcIkVRXCJdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlFbnRpdHlTZXRQYXRoID0gcHJvcGVydHlDb250ZXh0UGF0aC5zdWJzdHJpbmcoMCwgcHJvcGVydHlDb250ZXh0UGF0aC5sZW5ndGggLSAxKSxcblx0XHRcdFx0XHRmaWx0ZXJTZXR0aW5ncyA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0UHJvcGVydHlGaWx0ZXJDb25maWd1cmF0aW9uU2V0dGluZyhcblx0XHRcdFx0XHRcdGNvbmRpdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRmaWx0ZXJGaWVsZHNDb25maWdcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRzZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSBDb21tb25VdGlscy5nZXRPcGVyYXRvcnNGb3JQcm9wZXJ0eShcblx0XHRcdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdFx0cHJvcGVydHlFbnRpdHlTZXRQYXRoLFxuXHRcdFx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdFx0XHQoT0RBVEFfVFlQRV9NQVBQSU5HIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pW3Byb3BlcnR5TWV0YWRhdGEuZGF0YVR5cGVdLFxuXHRcdFx0XHRcdHVzZVNlbWFudGljRGF0ZVJhbmdlLFxuXHRcdFx0XHRcdGZpbHRlclNldHRpbmdzXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzZW1hbnRpY0RhdGVPcGVyYXRvcnM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZmlsdGVyIGNvbmRpdGlvbnMgZnJvbSBzZWxlY3Rpb24gb3B0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHNlbGVjdE9wdGlvbnMgU2VsZWN0IG9wdGlvbnMgYXJyYXlcblx0ICogQHBhcmFtIHByb3BlcnR5TWV0YWRhdGEgUHJvcGVydHkgbWV0YWRhdGEgaW5mb3JtYXRpb25cblx0ICogQHBhcmFtIHZhbGlkT3BlcmF0b3JzIEFsbCB2YWxpZCBvcGVyYXRvcnNcblx0ICogQHBhcmFtIHNlbWFudGljRGF0ZU9wZXJhdG9ycyBTZW1hbnRpYyBkYXRlIG9wZXJhdG9yc1xuXHQgKiBAcGFyYW0gc2luZ2xlQ29uZGl0aW9uIEJvb2xlYW4gd2hpY2ggZGV0ZXJtaW5lcyBpZiBhIHByb3BlcnR5IHRha2VzIG9ubHkgb25lIGNvbmR0aXRpb25cblx0ICogQHJldHVybnMgQ29udmVydGVkIGZpbHRlciBjb25kaXRpb25zXG5cdCAqL1xuXHRfZ2V0Q29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb25zOiBmdW5jdGlvbiAoXG5cdFx0c2VsZWN0T3B0aW9uczogU2VsZWN0T3B0aW9uW10sXG5cdFx0cHJvcGVydHlNZXRhZGF0YTogRmlsdGVyRmllbGRQcm9wZXJ0eUluZm8sXG5cdFx0dmFsaWRPcGVyYXRvcnM6IHN0cmluZ1tdLFxuXHRcdHNlbWFudGljRGF0ZU9wZXJhdG9yczogc3RyaW5nW10sXG5cdFx0c2luZ2xlQ29uZGl0aW9uPzogYm9vbGVhblxuXHQpOiBDb25kaXRpb25PYmplY3RbXSB7XG5cdFx0bGV0IGNvbmRpdGlvbk9iamVjdHM6IENvbmRpdGlvbk9iamVjdFtdID0gW107XG5cdFx0Ly8gQ3JlYXRlIGNvbmRpdGlvbnMgZm9yIGFsbCB0aGUgc2VsZWN0T3B0aW9ucyBvZiB0aGUgcHJvcGVydHlcblx0XHRpZiAoc2VsZWN0T3B0aW9ucy5sZW5ndGgpIHtcblx0XHRcdGNvbmRpdGlvbk9iamVjdHMgPSBzaW5nbGVDb25kaXRpb25cblx0XHRcdFx0PyBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2FkZENvbmRpdGlvbkZyb21TZWxlY3RPcHRpb24oXG5cdFx0XHRcdFx0XHRwcm9wZXJ0eU1ldGFkYXRhLFxuXHRcdFx0XHRcdFx0dmFsaWRPcGVyYXRvcnMsXG5cdFx0XHRcdFx0XHRzZW1hbnRpY0RhdGVPcGVyYXRvcnMsXG5cdFx0XHRcdFx0XHRjb25kaXRpb25PYmplY3RzLFxuXHRcdFx0XHRcdFx0c2VsZWN0T3B0aW9uc1swXVxuXHRcdFx0XHQgIClcblx0XHRcdFx0OiBzZWxlY3RPcHRpb25zLnJlZHVjZShcblx0XHRcdFx0XHRcdHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fYWRkQ29uZGl0aW9uRnJvbVNlbGVjdE9wdGlvbi5iaW5kKFxuXHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eU1ldGFkYXRhLFxuXHRcdFx0XHRcdFx0XHR2YWxpZE9wZXJhdG9ycyxcblx0XHRcdFx0XHRcdFx0c2VtYW50aWNEYXRlT3BlcmF0b3JzXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uT2JqZWN0c1xuXHRcdFx0XHQgICk7XG5cdFx0fVxuXHRcdHJldHVybiBjb25kaXRpb25PYmplY3RzO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDdW11bGF0aXZlbHkgYWRkIHNlbGVjdCBvcHRpb24gdG8gY29uZGl0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlNZXRhZGF0YSBQcm9wZXJ0eSBtZXRhZGF0YSBpbmZvcm1hdGlvblxuXHQgKiBAcGFyYW0gdmFsaWRPcGVyYXRvcnMgT3BlcmF0b3JzIGZvciBhbGwgdGhlIGRhdGEgdHlwZXNcblx0ICogQHBhcmFtIHNlbWFudGljRGF0ZU9wZXJhdG9ycyBPcGVyYXRvcnMgZm9yIHRoZSBEYXRlIHR5cGVcblx0ICogQHBhcmFtIGN1bXVsYXRpdmVDb25kaXRpb25zIEZpbHRlciBjb25kaXRpb25zXG5cdCAqIEBwYXJhbSBzZWxlY3RPcHRpb24gU2VsZWN0b3B0aW9uIG9mIHNlbGVjdGlvbiB2YXJpYW50XG5cdCAqIEByZXR1cm5zIFRoZSBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKi9cblx0X2FkZENvbmRpdGlvbkZyb21TZWxlY3RPcHRpb246IGZ1bmN0aW9uIChcblx0XHRwcm9wZXJ0eU1ldGFkYXRhOiBGaWx0ZXJGaWVsZFByb3BlcnR5SW5mbyxcblx0XHR2YWxpZE9wZXJhdG9yczogc3RyaW5nW10sXG5cdFx0c2VtYW50aWNEYXRlT3BlcmF0b3JzOiBzdHJpbmdbXSxcblx0XHRjdW11bGF0aXZlQ29uZGl0aW9uczogQ29uZGl0aW9uT2JqZWN0W10sXG5cdFx0c2VsZWN0T3B0aW9uOiBTZWxlY3RPcHRpb25cblx0KTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGNvbnN0IHsgaGFzVmFsdWVIZWxwLCBkYXRhVHlwZSB9ID0gcHJvcGVydHlNZXRhZGF0YTtcblxuXHRcdGNvbnN0IGVkbVR5cGUgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldEVkbVR5cGUoZGF0YVR5cGUpO1xuXHRcdGNvbnN0IGNvbmRpdGlvbiA9IGdldENvbmRpdGlvbnMoc2VsZWN0T3B0aW9uLCBlZG1UeXBlLCAhIWhhc1ZhbHVlSGVscCk7XG5cdFx0aWYgKFxuXHRcdFx0c2VsZWN0T3B0aW9uLlNlbWFudGljRGF0ZXMgJiZcblx0XHRcdHNlbWFudGljRGF0ZU9wZXJhdG9ycy5sZW5ndGggJiZcblx0XHRcdHNlbWFudGljRGF0ZU9wZXJhdG9ycy5pbmNsdWRlcyhzZWxlY3RPcHRpb24uU2VtYW50aWNEYXRlcy5vcGVyYXRvcilcblx0XHQpIHtcblx0XHRcdGNvbnN0IHNlbWFudGljRGF0ZXMgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2FkZFNlbWFudGljRGF0ZXNUb0NvbmRpdGlvbnMoc2VsZWN0T3B0aW9uLlNlbWFudGljRGF0ZXMpO1xuXHRcdFx0aWYgKE9iamVjdC5rZXlzKHNlbWFudGljRGF0ZXMpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y3VtdWxhdGl2ZUNvbmRpdGlvbnMucHVzaChzZW1hbnRpY0RhdGVzKTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbmRpdGlvbikge1xuXHRcdFx0aWYgKHZhbGlkT3BlcmF0b3JzLmxlbmd0aCA9PT0gMCB8fCB2YWxpZE9wZXJhdG9ycy5pbmNsdWRlcyhjb25kaXRpb24ub3BlcmF0b3IpKSB7XG5cdFx0XHRcdGlmIChoYXNWYWx1ZUhlbHApIHtcblx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2FkanVzdFZhbHVlSGVscENvbmRpdGlvbihjb25kaXRpb24pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGN1bXVsYXRpdmVDb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGN1bXVsYXRpdmVDb25kaXRpb25zO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgZmlsdGVyIGNvbmRpdGlvbnMgZm9yIGEgcGFyYW1ldGVyIHByb3BlcnR5LlxuXHQgKlxuXHQgKiBAcGFyYW0gc2VtYW50aWNEYXRlcyBTZW1hbnRpYyBkYXRlIGluZm9tYXRpb25cblx0ICogQHJldHVybnMgVGhlIGZpbHRlciBjb25kaXRpb25zIGNvbnRhaW5pbmcgc2VtYW50aWMgZGF0ZXNcblx0ICovXG5cdF9hZGRTZW1hbnRpY0RhdGVzVG9Db25kaXRpb25zOiAoc2VtYW50aWNEYXRlczogU2VtYW50aWNEYXRlQ29uZmlndXJhdGlvbik6IENvbmRpdGlvbk9iamVjdCA9PiB7XG5cdFx0Y29uc3QgdmFsdWVzOiB1bmtub3duW10gPSBbXTtcblx0XHRpZiAoc2VtYW50aWNEYXRlcy5oaWdoICE9PSBudWxsKSB7XG5cdFx0XHR2YWx1ZXMucHVzaChzZW1hbnRpY0RhdGVzLmhpZ2gpO1xuXHRcdH1cblx0XHRpZiAoc2VtYW50aWNEYXRlcy5sb3cgIT09IG51bGwpIHtcblx0XHRcdHZhbHVlcy5wdXNoKHNlbWFudGljRGF0ZXMubG93KTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHZhbHVlczogdmFsdWVzLFxuXHRcdFx0b3BlcmF0b3I6IHNlbWFudGljRGF0ZXMub3BlcmF0b3IsXG5cdFx0XHRpc0VtcHR5OiB1bmRlZmluZWRcblx0XHR9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgRURNIHR5cGUgZnJvbSBkYXRhIHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSBkYXRhVHlwZSBWNCBtb2RlbCBkYXRhIHR5cGVcblx0ICogQHJldHVybnMgRURNIHR5cGUgZXF1aXZhbGVudCBvZiBkYXRhIHR5cGVcblx0ICovXG5cdF9nZXRFZG1UeXBlOiAoZGF0YVR5cGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG5cdFx0Y29uc3QgVFlQRV9FRE1fTUFQUElORyA9IE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRcdE9iamVjdC5lbnRyaWVzKEVETV9UWVBFX01BUFBJTkcpLm1hcCgoW2ssIHZdKSA9PiBbKHYgYXMgeyB0eXBlOiB1bmtub3duIH0pLnR5cGUsIGtdKVxuXHRcdCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0cmV0dXJuIFRZUEVfRURNX01BUFBJTkdbZGF0YVR5cGVdIGFzIHN0cmluZztcblx0fSxcblxuXHQvKipcblx0ICogQ2hhbmdlIHZhbHVlIGRlcGVuZGluZyBvbiBjb25kaXRpb24gb3BlcmF0b3IoRW1wdHkgYW5kIE5vdEVtcHR5KSBmb3IgcHJvcGVydGllcyB3aXRoIHZhbHVlIGhlbHBzLlxuXHQgKlxuXHQgKiBAcGFyYW0gY29uZGl0aW9uIENvbmRpdGlvbiB0byBjaGFuZ2Vcblx0ICovXG5cdF9hZGp1c3RWYWx1ZUhlbHBDb25kaXRpb246IChjb25kaXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCA9PiB7XG5cdFx0Ly8gaW4gY2FzZSB0aGUgY29uZGl0aW9uIGlzIG1lYW50IGZvciBhIGZpZWxkIGhhdmluZyBhIFZILCB0aGUgZm9ybWF0IHJlcXVpcmVkIGJ5IE1EQyBkaWZmZXJzXG5cdFx0Y29uZGl0aW9uLnZhbGlkYXRlZCA9IENvbmRpdGlvblZhbGlkYXRlZC5WYWxpZGF0ZWQ7XG5cdFx0aWYgKGNvbmRpdGlvbi5vcGVyYXRvciA9PT0gXCJFbXB0eVwiKSB7XG5cdFx0XHRjb25kaXRpb24ub3BlcmF0b3IgPSBcIkVRXCI7XG5cdFx0XHRjb25kaXRpb24udmFsdWVzID0gW1wiXCJdO1xuXHRcdH0gZWxzZSBpZiAoY29uZGl0aW9uLm9wZXJhdG9yID09PSBcIk5vdEVtcHR5XCIpIHtcblx0XHRcdGNvbmRpdGlvbi5vcGVyYXRvciA9IFwiTkVcIjtcblx0XHRcdGNvbmRpdGlvbi52YWx1ZXMgPSBbXCJcIl07XG5cdFx0fVxuXHRcdGRlbGV0ZSBjb25kaXRpb24uaXNFbXB0eTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztFQWlDQSxNQUFNQSxxQkFBK0IsR0FBRyxDQUFDLFNB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
|
|
410
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJR05PUkVEX1BST1BFUlRZTkFNRVMiLCJzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMiLCJnZXRTdGF0ZUZpbHRlcnNGcm9tU1YiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb24iLCJmaWx0ZXJCYXJQcm9wZXJ0eUluZm9zIiwiY29udGV4dFBhdGgiLCJjb25kaXRpb25zIiwiZm9yRWFjaCIsInByb3BlcnR5TWV0YWRhdGEiLCJpbmNsdWRlcyIsIm5hbWUiLCJmaWx0ZXJQYXRoQ29uZGl0aW9ucyIsImNvbmRpdGlvblBhdGgiLCJhbm5vdGF0aW9uUGF0aCIsInByb3BQYXRoIiwicmVwbGFjZUFsbCIsIm5hdlBhdGgiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsInByb3BlcnR5TmFtZSIsInByb3BlcnR5Q29udmVyc2lvbkluZm8iLCJwcm9wZXJ0eUNvbnRleHRQYXRoIiwiZmlsdGVyQmFySW5mbyIsImlzUGFyYW1ldGVyIiwiX2dldENvbmRpdGlvbnNGb3JQYXJhbWV0ZXIiLCJfZ2V0Q29uZGl0aW9uc0Zvck5hdlByb3BlcnR5IiwiX2dldENvbmRpdGlvbnNGb3JQcm9wZXJ0eSIsImxlbmd0aCIsImdldFN0YXRlVG9BcHBseSIsInByb3BlcnR5SW5mb3MiLCJpdGVtcyIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJjdW1tdWxhdGl2ZUl0ZW1zIiwicGF0aCIsInByb3BlcnR5SW5mbyIsIkZpbHRlclV0aWwiLCJnZXRQcm9wZXJ0eUJ5S2V5IiwiaGlkZGVuRmlsdGVyIiwidW5kZWZpbmVkIiwicHVzaCIsImZpbHRlciIsIl9nZXRQcm9wZXJ0eUZpbHRlckNvbmZpZ3VyYXRpb25TZXR0aW5nIiwicHJvcGVydHkiLCJmaWx0ZXJGaWVsZHNDb25maWciLCJzZXR0aW5ncyIsImNvbmRpdGlvbk9iamVjdHMiLCJzZWxlY3RPcHRpb25OYW1lIiwiX2dldFNlbGVjdE9wdGlvbk5hbWUiLCJfZ2V0UHJvcGVydHlDb25kaXRpb25zIiwiY29uZGl0b25QYXRoIiwic2VsZWN0T3B0aW9uUGF0aFByZWZpeCIsIm5hdmlnYXRpb25QYXRoIiwicG9zc2libGVTZWxlY3RPcHRpb25OYW1lcyIsInNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJzdGFydHNXaXRoIiwic2xpY2UiLCJ0ZW1wMSIsInRlbXAyIiwic29tZSIsInRlc3ROYW1lIiwicGF0aFRvQ2hlY2siLCJfZ2V0TWF4Q29uZGl0aW9ucyIsIm1ldGFNb2RlbCIsImNvbXBsZXRlUHJvcGVydHlQYXRoIiwicHJvcGVydHlDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJtYXhpbXVtQ29uZGl0aW9ucyIsIm1heENvbmRpdGlvbnMiLCJjb250ZXh0Iiwic2VsZWN0T3B0aW9ucyIsImdldFNlbGVjdE9wdGlvbiIsInNlbWFudGljRGF0ZU9wZXJhdG9ycyIsIl9nZXRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJwcm9wZXJ0eUVudGl0eVNldFBhdGgiLCJ2YWxpZE9wZXJhdG9ycyIsIkNvbW1vblV0aWxzIiwiZ2V0T3BlcmF0b3JzRm9yUHJvcGVydHkiLCJfZ2V0Q29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb25zIiwidXNlU2VtYW50aWNEYXRlUmFuZ2UiLCJmaWx0ZXJTZXR0aW5ncyIsIk9EQVRBX1RZUEVfTUFQUElORyIsImRhdGFUeXBlIiwic2luZ2xlQ29uZGl0aW9uIiwiX2FkZENvbmRpdGlvbkZyb21TZWxlY3RPcHRpb24iLCJiaW5kIiwiY3VtdWxhdGl2ZUNvbmRpdGlvbnMiLCJzZWxlY3RPcHRpb24iLCJoYXNWYWx1ZUhlbHAiLCJlZG1UeXBlIiwiX2dldEVkbVR5cGUiLCJjb25kaXRpb24iLCJnZXRDb25kaXRpb25zIiwiU2VtYW50aWNEYXRlcyIsIm9wZXJhdG9yIiwic2VtYW50aWNEYXRlcyIsIl9hZGRTZW1hbnRpY0RhdGVzVG9Db25kaXRpb25zIiwidmFsdWVzIiwiaGlnaCIsImxvdyIsImlzRW1wdHkiLCJUWVBFX0VETV9NQVBQSU5HIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwiRURNX1RZUEVfTUFQUElORyIsIm1hcCIsImsiLCJ2IiwidHlwZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24sIEZpbHRlclNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgRURNX1RZUEVfTUFQUElORyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBPREFUQV9UWVBFX01BUFBJTkcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EaXNwbGF5TW9kZUZvcm1hdHRlclwiO1xuaW1wb3J0IHsgZ2V0Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IHsgbWF4Q29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJGaWVsZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJGaWVsZFByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJEZWxlZ2F0ZVwiO1xuaW1wb3J0IHR5cGUgU2VsZWN0aW9uVmFyaWFudCBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbWFudGljRGF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlciBhcyBTdGF0ZVV0aWxGaWx0ZXIgfSBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IEZpbHRlclV0aWwgZnJvbSBcInNhcC91aS9tZGMvdXRpbC9GaWx0ZXJVdGlsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIEZpbHRlckZpZWxkc0NvbmZpZyA9IFJlY29yZDxzdHJpbmcsIEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uPjtcblxuZXhwb3J0IHR5cGUgQ29udmVyc2lvbkluZm8gPSB7XG5cdG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWw7XG5cdGNvbnRleHRQYXRoOiBzdHJpbmc7XG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlPzogYm9vbGVhbjtcblx0ZmlsdGVyRmllbGRzQ29uZmlnPzogRmlsdGVyRmllbGRzQ29uZmlnO1xufTtcblxudHlwZSBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvID0ge1xuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZztcblx0bmF2UGF0aDogc3RyaW5nO1xuXHRwcm9wZXJ0eU1ldGFkYXRhOiBGaWx0ZXJGaWVsZFByb3BlcnR5SW5mbztcblx0cHJvcGVydHlDb250ZXh0UGF0aDogc3RyaW5nO1xuXHRzZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRmaWx0ZXJCYXJJbmZvOiBDb252ZXJzaW9uSW5mbztcbn07XG5cbmNvbnN0IElHTk9SRURfUFJPUEVSVFlOQU1FUzogc3RyaW5nW10gPSBbXCIkc2VhcmNoXCIsIFwiJGVkaXRTdGF0ZVwiXTtcblxuY29uc3Qgc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzID0ge1xuXHQvKipcblx0ICogR2V0IGNvbmRpdGlvbnMgZnJvbSB0aGUgc2VsZWN0aW9uIHZhcmlhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFNlbGVjdGlvbiB2YXJpYW50XG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbiBGaWx0ZXIgYmFyIGluZm8gbmVlZGVkIGZvciBjb252ZXJzaW9uIG9mIHNlbGVjdGlvbiB2YXJpYW50IHRvIGNvbmRpdGlvbnNcblx0ICogQHBhcmFtIGZpbHRlckJhclByb3BlcnR5SW5mb3MgUHJvcGVydHkgaW5mb3Mgb2YgdGhlIGZpbHRlcmJhclxuXHQgKiBAcmV0dXJucyBDb25kaXRpb25zIGFmdGVyIGNvbnZlcnNpb24gb2Ygc2VsZWN0aW9uIHZhcmlhbnRcblx0ICovXG5cdGdldFN0YXRlRmlsdGVyc0Zyb21TVjogZnVuY3Rpb24gKFxuXHRcdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0ZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb246IENvbnZlcnNpb25JbmZvLFxuXHRcdGZpbHRlckJhclByb3BlcnR5SW5mb3M6IEZpbHRlckZpZWxkUHJvcGVydHlJbmZvW11cblx0KTogU3RhdGVVdGlsRmlsdGVyIHtcblx0XHRjb25zdCB7IGNvbnRleHRQYXRoIH0gPSBmaWx0ZXJCYXJJbmZvRm9yQ29udmVyc2lvbjtcblx0XHRjb25zdCBjb25kaXRpb25zOiBTdGF0ZVV0aWxGaWx0ZXIgPSB7fTtcblxuXHRcdGZpbHRlckJhclByb3BlcnR5SW5mb3MuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHlNZXRhZGF0YTogRmlsdGVyRmllbGRQcm9wZXJ0eUluZm8pIHtcblx0XHRcdGlmICghSUdOT1JFRF9QUk9QRVJUWU5BTUVTLmluY2x1ZGVzKHByb3BlcnR5TWV0YWRhdGEubmFtZSkpIHtcblx0XHRcdFx0bGV0IGZpbHRlclBhdGhDb25kaXRpb25zOiBDb25kaXRpb25PYmplY3RbXSA9IFtdO1xuXHRcdFx0XHRjb25zdCB7IGNvbmRpdGlvblBhdGgsIGFubm90YXRpb25QYXRoIH0gPSBwcm9wZXJ0eU1ldGFkYXRhO1xuXHRcdFx0XHRjb25zdCBwcm9wUGF0aCA9IGNvbmRpdGlvblBhdGgucmVwbGFjZUFsbChcIipcIiwgXCJcIik7XG5cdFx0XHRcdGNvbnN0IG5hdlBhdGggPSBwcm9wUGF0aC5zdWJzdHJpbmcoMCwgcHJvcFBhdGgubGFzdEluZGV4T2YoXCIvXCIpKTtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlOYW1lID0gcHJvcFBhdGguc3Vic3RyaW5nKHByb3BQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuXG5cdFx0XHRcdC8vIE5vdGU6IENvbnZlcnNpb24gcGFyYW1ldGVyc1xuXHRcdFx0XHRjb25zdCBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvOiBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvID0ge1xuXHRcdFx0XHRcdHByb3BlcnR5TmFtZSxcblx0XHRcdFx0XHRuYXZQYXRoLFxuXHRcdFx0XHRcdHByb3BlcnR5Q29udGV4dFBhdGg6IGAke2NvbnRleHRQYXRofSR7bmF2UGF0aCA/IG5hdlBhdGggKyBcIi9cIiA6IFwiXCJ9YCxcblx0XHRcdFx0XHRwcm9wZXJ0eU1ldGFkYXRhLFxuXHRcdFx0XHRcdHNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRcdFx0ZmlsdGVyQmFySW5mbzogZmlsdGVyQmFySW5mb0ZvckNvbnZlcnNpb25cblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKHByb3BlcnR5TWV0YWRhdGEuaXNQYXJhbWV0ZXIgJiYgYW5ub3RhdGlvblBhdGgpIHtcblx0XHRcdFx0XHQvLyBwYXJhbWV0ZXJcblx0XHRcdFx0XHRwcm9wZXJ0eUNvbnZlcnNpb25JbmZvLnByb3BlcnR5Q29udGV4dFBhdGggPSBhbm5vdGF0aW9uUGF0aC5zdWJzdHJpbmcoMCwgYW5ub3RhdGlvblBhdGgubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XG5cdFx0XHRcdFx0ZmlsdGVyUGF0aENvbmRpdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldENvbmRpdGlvbnNGb3JQYXJhbWV0ZXIocHJvcGVydHlDb252ZXJzaW9uSW5mbyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoY29uZGl0aW9uUGF0aC5pbmNsdWRlcyhcIi9cIikpIHtcblx0XHRcdFx0XHQvLyBuYXZpZ2F0aW9uIHByb3BlcnR5XG5cdFx0XHRcdFx0ZmlsdGVyUGF0aENvbmRpdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldENvbmRpdGlvbnNGb3JOYXZQcm9wZXJ0eShwcm9wZXJ0eUNvbnZlcnNpb25JbmZvKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBub3JtYWwgcHJvcGVydHlcblx0XHRcdFx0XHRmaWx0ZXJQYXRoQ29uZGl0aW9ucyA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0Q29uZGl0aW9uc0ZvclByb3BlcnR5KHByb3BlcnR5Q29udmVyc2lvbkluZm8pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGZpbHRlclBhdGhDb25kaXRpb25zLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRjb25kaXRpb25zW2NvbmRpdGlvblBhdGhdID0gZmlsdGVyUGF0aENvbmRpdGlvbnM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gY29uZGl0aW9ucztcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHJldHVybnMgZmlsdGVycyBhbmQgZmlsdGVyZmllbGQgaXRlbXMgdG8gYXBwbHkgYW5kIGFkZC4gQWxzbyBjaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgY29uZmlndXJlZCB3aXRoIGhpZGRlbkZpbHRlci5cblx0ICpcblx0ICogQHBhcmFtIHByb3BlcnR5SW5mb3MgUHJvcGVydHkgSW5mb3Mgb2YgdGhlIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIGNvbmRpdGlvbnMgQ29uZHRpb25zIHRvIGFwcGx5IGFzIGZpbHRlcnMgdG8gdGhlIGZpbHRlciBiYXJcblx0ICogQHJldHVybnMgVGhlIG9iamVjdCBjb250YWluaW5nIGZpbHRlcnMgYW5kIGl0ZW1zLlxuXHQgKi9cblx0Z2V0U3RhdGVUb0FwcGx5OiAocHJvcGVydHlJbmZvczogRmlsdGVyRmllbGRQcm9wZXJ0eUluZm9bXSwgY29uZGl0aW9uczogU3RhdGVVdGlsRmlsdGVyKTogb2JqZWN0ID0+IHtcblx0XHRjb25zdCBpdGVtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdID0gT2JqZWN0LmtleXMoY29uZGl0aW9ucykucmVkdWNlKFxuXHRcdFx0KGN1bW11bGF0aXZlSXRlbXMsIHBhdGgpID0+IHtcblx0XHRcdFx0Y29uc3QgcHJvcGVydHlJbmZvID0gRmlsdGVyVXRpbC5nZXRQcm9wZXJ0eUJ5S2V5KHByb3BlcnR5SW5mb3MsIHBhdGgpIGFzIEZpbHRlckZpZWxkUHJvcGVydHlJbmZvO1xuXHRcdFx0XHRpZiAocHJvcGVydHlJbmZvLmhpZGRlbkZpbHRlciA9PT0gdW5kZWZpbmVkIHx8ICFwcm9wZXJ0eUluZm8uaGlkZGVuRmlsdGVyKSB7XG5cdFx0XHRcdFx0Y3VtbXVsYXRpdmVJdGVtcy5wdXNoKHtcblx0XHRcdFx0XHRcdG5hbWU6IHBhdGhcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gY3VtbXVsYXRpdmVJdGVtcztcblx0XHRcdH0sXG5cdFx0XHRbXSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W11cblx0XHQpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRmaWx0ZXI6IGNvbmRpdGlvbnMsXG5cdFx0XHRpdGVtczogaXRlbXNcblx0XHR9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpbHRlciBmaWVsZCBjb25maWd1cmF0aW9uIG9mIGEgcHJvcGVydHkuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eSBGaWx0ZXIgZmllbGQgUGF0aFxuXHQgKiBAcGFyYW0gZmlsdGVyRmllbGRzQ29uZmlnIE1hbmlmZXN0IENvbmZpZ3VyYXRpb24gb2YgZmlsdGVyIGJhclxuXHQgKiBAcmV0dXJucyBUaGUgRmlsdGVyIEZpZWxkIENvbmZpZ3VyYXRpb25cblx0ICovXG5cdF9nZXRQcm9wZXJ0eUZpbHRlckNvbmZpZ3VyYXRpb25TZXR0aW5nOiBmdW5jdGlvbiAocHJvcGVydHk6IHN0cmluZywgZmlsdGVyRmllbGRzQ29uZmlnPzogRmlsdGVyRmllbGRzQ29uZmlnKTogRmlsdGVyU2V0dGluZ3Mge1xuXHRcdHJldHVybiBmaWx0ZXJGaWVsZHNDb25maWc/Lltwcm9wZXJ0eV0/LnNldHRpbmdzID8/IHt9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgZmlsdGVyIGNvbmRpdGlvbnMgZm9yIGEgcGFyYW1ldGVyIHByb3BlcnR5LlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlDb252ZXJzaW9uSW5mbyBQcm9wZXJ0eSBpbmZvIHVzZWQgZm9yIGNvbnZlcnNpb25cblx0ICogQHJldHVybnMgVGhlIGZpbHRlciBjb25kdGlvbnMgZm9yIHBhcmFtZXRlciBwcm9wZXJ0eVxuXHQgKi9cblx0X2dldENvbmRpdGlvbnNGb3JQYXJhbWV0ZXI6IGZ1bmN0aW9uIChwcm9wZXJ0eUNvbnZlcnNpb25JbmZvOiBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvKTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGxldCBjb25kaXRpb25PYmplY3RzOiBDb25kaXRpb25PYmplY3RbXSA9IFtdO1xuXHRcdGNvbnN0IHsgcHJvcGVydHlNZXRhZGF0YSwgc2VsZWN0aW9uVmFyaWFudCB9ID0gcHJvcGVydHlDb252ZXJzaW9uSW5mbztcblx0XHRjb25zdCBjb25kaXRpb25QYXRoID0gcHJvcGVydHlNZXRhZGF0YS5uYW1lO1xuXHRcdGNvbnN0IHNlbGVjdE9wdGlvbk5hbWUgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldFNlbGVjdE9wdGlvbk5hbWUoc2VsZWN0aW9uVmFyaWFudCwgY29uZGl0aW9uUGF0aCwgdHJ1ZSk7XG5cdFx0aWYgKHNlbGVjdE9wdGlvbk5hbWUpIHtcblx0XHRcdGNvbmRpdGlvbk9iamVjdHMgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldFByb3BlcnR5Q29uZGl0aW9ucyhwcm9wZXJ0eUNvbnZlcnNpb25JbmZvLCBzZWxlY3RPcHRpb25OYW1lLCB0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbmRpdGlvbk9iamVjdHM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENyZWF0ZSBmaWx0ZXIgY29uZGl0aW9ucyBmb3IgYSBub3JtYWwgcHJvcGVydHkuXG5cdCAqXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvIFByb3BlcnR5IGluZm8gdXNlZCBmb3IgY29udmVyc2lvblxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbmRpdGlvbnMgZm9yIGEgbm9ybWFsIHByb3BlcnR5XG5cdCAqL1xuXHRfZ2V0Q29uZGl0aW9uc0ZvclByb3BlcnR5OiBmdW5jdGlvbiAocHJvcGVydHlDb252ZXJzaW9uSW5mbzogUHJvcGVydHlDb252ZXJzaW9uSW5mbyk6IENvbmRpdGlvbk9iamVjdFtdIHtcblx0XHRjb25zdCB7IHByb3BlcnR5TWV0YWRhdGEsIHNlbGVjdGlvblZhcmlhbnQgfSA9IHByb3BlcnR5Q29udmVyc2lvbkluZm87XG5cdFx0Y29uc3QgY29uZGl0b25QYXRoID0gcHJvcGVydHlNZXRhZGF0YS5uYW1lO1xuXHRcdGNvbnN0IHNlbGVjdE9wdGlvbk5hbWUgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldFNlbGVjdE9wdGlvbk5hbWUoc2VsZWN0aW9uVmFyaWFudCwgY29uZGl0b25QYXRoKTtcblxuXHRcdGxldCBjb25kaXRpb25PYmplY3RzOiBDb25kaXRpb25PYmplY3RbXSA9IFtdO1xuXHRcdGlmIChzZWxlY3RPcHRpb25OYW1lKSB7XG5cdFx0XHRjb25kaXRpb25PYmplY3RzID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9nZXRQcm9wZXJ0eUNvbmRpdGlvbnMocHJvcGVydHlDb252ZXJzaW9uSW5mbywgc2VsZWN0T3B0aW9uTmFtZSwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29uZGl0aW9uT2JqZWN0cztcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlIGZpbHRlciBjb25kaXRpb25zIGZyb20gbmF2aWdhdGlvbiBwcm9wZXJ0aWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlDb252ZXJzaW9uSW5mbyBQcm9wZXJ0eSBpbmZvIHVzZWQgZm9yIGNvbnZlcnNpb25cblx0ICogQHJldHVybnMgVGhlIGZpbHRlciBjb25kdGlvbnMgZm9yIG5hdmlnYXRpb24gcHJvcGVydHlcblx0ICovXG5cdF9nZXRDb25kaXRpb25zRm9yTmF2UHJvcGVydHk6IGZ1bmN0aW9uIChwcm9wZXJ0eUNvbnZlcnNpb25JbmZvOiBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvKTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGNvbnN0IHsgZmlsdGVyQmFySW5mbywgc2VsZWN0aW9uVmFyaWFudCwgcHJvcGVydHlOYW1lLCBuYXZQYXRoIH0gPSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvO1xuXHRcdGNvbnN0IHsgY29udGV4dFBhdGggfSA9IGZpbHRlckJhckluZm87XG5cblx0XHRsZXQgY29uZGl0aW9uT2JqZWN0czogQ29uZGl0aW9uT2JqZWN0W10gPSBbXTtcblxuXHRcdC8vIFdlIGNoZWNrIHdpdGggJy9TYWxlc09yZGVyTWFuYWdlL19JdGVtL05hbWUnLlxuXHRcdC8vICcvU2FsZXNPcmRlck1hbmFnZS9fSXRlbScgPT4gJ1NhbGVzT3JkZXJNYW5hZ2UuX0l0ZW0nXG5cdFx0bGV0IHNlbGVjdE9wdGlvblBhdGhQcmVmaXggPSBgJHtjb250ZXh0UGF0aC5zdWJzdHJpbmcoMSl9JHtuYXZQYXRofWAucmVwbGFjZUFsbChcIi9cIiwgXCIuXCIpO1xuXHRcdGxldCBzZWxlY3RPcHRpb25OYW1lID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9nZXRTZWxlY3RPcHRpb25OYW1lKFxuXHRcdFx0c2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHByb3BlcnR5TmFtZSxcblx0XHRcdGZhbHNlLFxuXHRcdFx0c2VsZWN0T3B0aW9uUGF0aFByZWZpeFxuXHRcdCk7XG5cblx0XHRpZiAoIXNlbGVjdE9wdGlvbk5hbWUpIHtcblx0XHRcdC8vIFdlIGNoZWNrIHdpdGggJ19JdGVtL05hbWUnLlxuXHRcdFx0c2VsZWN0T3B0aW9uUGF0aFByZWZpeCA9IG5hdlBhdGgucmVwbGFjZUFsbChcIi9cIiwgXCIuXCIpO1xuXHRcdFx0c2VsZWN0T3B0aW9uTmFtZSA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0U2VsZWN0T3B0aW9uTmFtZShcblx0XHRcdFx0c2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0c2VsZWN0T3B0aW9uUGF0aFByZWZpeFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRpZiAoc2VsZWN0T3B0aW9uTmFtZSkge1xuXHRcdFx0Y29uZGl0aW9uT2JqZWN0cyA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0UHJvcGVydHlDb25kaXRpb25zKHByb3BlcnR5Q29udmVyc2lvbkluZm8sIHNlbGVjdE9wdGlvbk5hbWUsIGZhbHNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29uZGl0aW9uT2JqZWN0cztcblx0fSxcblxuXHQvKipcblx0ICogR2V0IHRoZSBwb3NzaWJsZSBzZWxlY3Qgb3B0aW9uIG5hbWUgYmFzZWQgb24gcHJpb3JpdHkgb3JkZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBzZWxlY3Rpb25WYXJpYW50IFNlbGVjdGlvblZhcmlhbnQgdG8gYmUgY29udmVydGVkLlxuXHQgKiBAcGFyYW0gcHJvcGVydHlOYW1lIE1ldGFkYXRhIHByb3BlcnR5IG5hbWVcblx0ICogQHBhcmFtIGlzUGFyYW1ldGVyIFByb3BlcnR5IGlzIGEgcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSBuYXZpZ2F0aW9uUGF0aCBOYXZpZ2F0aW9uIHBhdGggdG8gYmUgY29uc2lkZXJlZFxuXHQgKiBAcmV0dXJucyBUaGUgY29ycmVjdCBzZWxlY3Qgb3B0aW9uIG5hbWUgb2YgYSBwcm9wZXJ0eSB0byBmZXRjaCB0aGUgc2VsZWN0IG9wdGlvbnMgZm9yIGNvbnZlcnNpb24uXG5cdCAqL1xuXHRfZ2V0U2VsZWN0T3B0aW9uTmFtZTogZnVuY3Rpb24gKFxuXHRcdHNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0cHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdFx0aXNQYXJhbWV0ZXI/OiBib29sZWFuLFxuXHRcdG5hdmlnYXRpb25QYXRoPzogc3RyaW5nXG5cdCk6IHN0cmluZyB7XG5cdFx0Ly8gcG9zc2libGUgU2VsZWN0T3B0aW9uIE5hbWVzIGJhc2VkIG9uIHByaW9yaXR5LlxuXHRcdGNvbnN0IHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMgPSBzZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cblx0XHRpZiAoaXNQYXJhbWV0ZXIpIHtcblx0XHRcdC8vIEN1cnJlbmN5ID09PiAkUGFyYW1ldGVyLkN1cnJlbmN5XG5cdFx0XHQvLyBQX0N1cnJlbmN5ID09PiAkUGFyYW1ldGVyLlBfQ3VycmVuY3lcblx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChgJFBhcmFtZXRlci4ke3Byb3BlcnR5TmFtZX1gKTtcblxuXHRcdFx0Ly8gQ3VycmVuY3kgPT0+IEN1cnJlbmN5XG5cdFx0XHQvLyBQX0N1cnJlbmN5ID09PiBQX0N1cnJlbmN5XG5cdFx0XHRwb3NzaWJsZVNlbGVjdE9wdGlvbk5hbWVzLnB1c2gocHJvcGVydHlOYW1lKTtcblxuXHRcdFx0aWYgKHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKFwiUF9cIikpIHtcblx0XHRcdFx0Ly8gUF9DdXJyZW5jeSA9PT4gJFBhcmFtZXRlci5DdXJyZW5jeVxuXHRcdFx0XHRwb3NzaWJsZVNlbGVjdE9wdGlvbk5hbWVzLnB1c2goYCRQYXJhbWV0ZXIuJHtwcm9wZXJ0eU5hbWUuc2xpY2UoMiwgcHJvcGVydHlOYW1lLmxlbmd0aCl9YCk7XG5cblx0XHRcdFx0Ly8gUF9DdXJyZW5jeSA9PT4gQ3VycmVuY3lcblx0XHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKHByb3BlcnR5TmFtZS5zbGljZSgyLCBwcm9wZXJ0eU5hbWUubGVuZ3RoKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBDdXJyZW5jeSA9PT4gJFBhcmFtZXRlci5QX0N1cnJlbmN5XG5cdFx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChgJFBhcmFtZXRlci5QXyR7cHJvcGVydHlOYW1lfWApO1xuXG5cdFx0XHRcdC8vIEN1cnJlbmN5ID09PiBQX0N1cnJlbmN5XG5cdFx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChgUF8ke3Byb3BlcnR5TmFtZX1gKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gTmFtZSA9PiBOYW1lXG5cdFx0XHRwb3NzaWJsZVNlbGVjdE9wdGlvbk5hbWVzLnB1c2gocHJvcGVydHlOYW1lKTtcblx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChgJFBhcmFtZXRlci4ke3Byb3BlcnR5TmFtZX1gKTtcblxuXHRcdFx0aWYgKHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKFwiUF9cIikpIHtcblx0XHRcdFx0Ly8gUF9OYW1lID0+IE5hbWVcblx0XHRcdFx0Y29uc3QgdGVtcDEgPSBwcm9wZXJ0eU5hbWUuc2xpY2UoMiwgcHJvcGVydHlOYW1lLmxlbmd0aCk7XG5cblx0XHRcdFx0Ly8gTmFtZSA9PiAkUGFyYW1ldGVyLk5hbWVcblx0XHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKGAkUGFyYW1ldGVyLiR7dGVtcDF9YCk7XG5cblx0XHRcdFx0Ly8gTmFtZSA9PiBOYW1lXG5cdFx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaCh0ZW1wMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBOYW1lID0+IFBfTmFtZVxuXHRcdFx0XHRjb25zdCB0ZW1wMiA9IGBQXyR7cHJvcGVydHlOYW1lfWA7XG5cblx0XHRcdFx0Ly8gUF9OYW1lID0+ICRQYXJhbWV0ZXIuUF9OYW1lXG5cdFx0XHRcdHBvc3NpYmxlU2VsZWN0T3B0aW9uTmFtZXMucHVzaChgJFBhcmFtZXRlci4ke3RlbXAyfWApO1xuXG5cdFx0XHRcdC8vIFBfTmFtZSA9PiBQX05hbWVcblx0XHRcdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5wdXNoKHRlbXAyKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsZXQgc2VsZWN0T3B0aW9uTmFtZSA9IFwiXCI7XG5cdFx0Ly8gRmluZCB0aGUgY29ycmVjdCBzZWxlY3Qgb3B0aW9uIG5hbWUgYmFzZWQgb24gdGhlIHByaW9yaXR5XG5cdFx0cG9zc2libGVTZWxlY3RPcHRpb25OYW1lcy5zb21lKCh0ZXN0TmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRjb25zdCBwYXRoVG9DaGVjayA9IG5hdmlnYXRpb25QYXRoID8gYCR7bmF2aWdhdGlvblBhdGh9LiR7dGVzdE5hbWV9YCA6IHRlc3ROYW1lO1xuXHRcdFx0Ly8gTmFtZSA9PiBOYW1lXG5cdFx0XHQvLyBOYW1lID0+IF9JdGVtLk5hbWUgKGluY2FzZSBfSXRlbSBpcyBuYXZpZ2F0aW9uUGF0aClcblxuXHRcdFx0cmV0dXJuIHNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzLmluY2x1ZGVzKHBhdGhUb0NoZWNrKSA/IChzZWxlY3RPcHRpb25OYW1lID0gcGF0aFRvQ2hlY2spIDogZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gc2VsZWN0T3B0aW9uTmFtZTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IG1heGltdW0gY29uZGl0aW9ucyBzdXBwb3J0ZWQgZm9yIGEgcHJvcGVydHkgYXMgZmlsdGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlDb252ZXJzaW9uSW5mbyBQcm9wZXJ0eSBpbmZvIHVzZWQgZm9yIGNvbnZlcnNpb25cblx0ICogQHJldHVybnMgTnVtYmVyIG9mIG1heGltdW0gY29uZGl0aW9uc1xuXHQgKi9cblx0X2dldE1heENvbmRpdGlvbnMocHJvcGVydHlDb252ZXJzaW9uSW5mbzogUHJvcGVydHlDb252ZXJzaW9uSW5mbyk6IG51bWJlciB7XG5cdFx0Y29uc3QgeyBmaWx0ZXJCYXJJbmZvLCBwcm9wZXJ0eUNvbnRleHRQYXRoLCBwcm9wZXJ0eU5hbWUgfSA9IHByb3BlcnR5Q29udmVyc2lvbkluZm87XG5cdFx0Y29uc3QgeyBtZXRhTW9kZWwgfSA9IGZpbHRlckJhckluZm87XG5cdFx0Y29uc3QgY29tcGxldGVQcm9wZXJ0eVBhdGggPSBgJHtwcm9wZXJ0eUNvbnRleHRQYXRofSR7cHJvcGVydHlOYW1lfWA7XG5cdFx0Y29uc3QgcHJvcGVydHlDb250ZXh0ID0gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGNvbXBsZXRlUHJvcGVydHlQYXRoKTtcblxuXHRcdGxldCBtYXhpbXVtQ29uZGl0aW9ucyA9IDA7XG5cdFx0aWYgKHByb3BlcnR5Q29udGV4dCkge1xuXHRcdFx0bWF4aW11bUNvbmRpdGlvbnMgPSBtYXhDb25kaXRpb25zKHByb3BlcnR5TmFtZSwgeyBjb250ZXh0OiBwcm9wZXJ0eUNvbnRleHQgfSk7XG5cdFx0fVxuXHRcdHJldHVybiBtYXhpbXVtQ29uZGl0aW9ucztcblx0fSxcblxuXHQvKipcblx0ICogQ29udmVydCBzZWxlY3Qgb3B0aW9ucyB0byBwcm9wZXJ0eSBjb25kaXRpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlDb252ZXJzaW9uSW5mbyBQcm9wZXJ0eSBpbmZvIHVzZWQgZm9yIGNvbnZlcnNpb25cblx0ICogQHBhcmFtIHNlbGVjdE9wdGlvbk5hbWUgU2VsZWN0IG9wdGlvbiBuYW1lXG5cdCAqIEBwYXJhbSBpc1BhcmFtZXRlciBCb29sZWFuIHdoaWNoIGRldGVybWluZXMgaWYgYSBwcm9wZXJ0eSBpcyBwYXJhbWV0ZXJpemVkXG5cdCAqIEByZXR1cm5zIFRoZSBjb25kaXRpb25zIG9mIGEgcHJvcGVydHkgZm9yIGZpbHRlciBiYXJcblx0ICovXG5cdF9nZXRQcm9wZXJ0eUNvbmRpdGlvbnM6IGZ1bmN0aW9uIChcblx0XHRwcm9wZXJ0eUNvbnZlcnNpb25JbmZvOiBQcm9wZXJ0eUNvbnZlcnNpb25JbmZvLFxuXHRcdHNlbGVjdE9wdGlvbk5hbWU6IHN0cmluZyxcblx0XHRpc1BhcmFtZXRlcj86IGJvb2xlYW5cblx0KTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGNvbnN0IHsgZmlsdGVyQmFySW5mbywgcHJvcGVydHlNZXRhZGF0YSwgc2VsZWN0aW9uVmFyaWFudCwgcHJvcGVydHlDb250ZXh0UGF0aCwgcHJvcGVydHlOYW1lIH0gPSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvO1xuXHRcdGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBzZWxlY3Rpb25WYXJpYW50LmdldFNlbGVjdE9wdGlvbihzZWxlY3RPcHRpb25OYW1lKTtcblx0XHRjb25zdCB7IG1ldGFNb2RlbCB9ID0gZmlsdGVyQmFySW5mbztcblx0XHRjb25zdCBtYXhpbXVtQ29uZGl0aW9ucyA9IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycy5fZ2V0TWF4Q29uZGl0aW9ucyhwcm9wZXJ0eUNvbnZlcnNpb25JbmZvKTtcblxuXHRcdGxldCBjb25kaXRpb25PYmplY3RzOiBDb25kaXRpb25PYmplY3RbXSA9IFtdO1xuXHRcdGlmIChzZWxlY3RPcHRpb25zPy5sZW5ndGggJiYgbWF4aW11bUNvbmRpdGlvbnMgIT09IDApIHtcblx0XHRcdGNvbnN0IHNlbWFudGljRGF0ZU9wZXJhdG9yczogc3RyaW5nW10gPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldFNlbWFudGljRGF0ZU9wZXJhdG9ycyhcblx0XHRcdFx0cHJvcGVydHlDb252ZXJzaW9uSW5mbyxcblx0XHRcdFx0aXNQYXJhbWV0ZXJcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eUVudGl0eVNldFBhdGggPSBwcm9wZXJ0eUNvbnRleHRQYXRoLnN1YnN0cmluZygwLCBwcm9wZXJ0eUNvbnRleHRQYXRoLmxlbmd0aCAtIDEpO1xuXG5cdFx0XHRjb25zdCB2YWxpZE9wZXJhdG9ycyA9IGlzUGFyYW1ldGVyXG5cdFx0XHRcdD8gW1wiRVFcIl1cblx0XHRcdFx0OiBDb21tb25VdGlscy5nZXRPcGVyYXRvcnNGb3JQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHByb3BlcnR5RW50aXR5U2V0UGF0aCwgbWV0YU1vZGVsKTtcblxuXHRcdFx0Ly8gbXVsdGlwbGUgc2VsZWN0IG9wdGlvbnMgPT4gbXVsdGlwbGUgY29uZGl0aW9uc1xuXG5cdFx0XHRjb25kaXRpb25PYmplY3RzID0gdGhpcy5fZ2V0Q29uZGl0aW9uc0Zyb21TZWxlY3RPcHRpb25zKFxuXHRcdFx0XHRzZWxlY3RPcHRpb25zLFxuXHRcdFx0XHRwcm9wZXJ0eU1ldGFkYXRhLFxuXHRcdFx0XHR2YWxpZE9wZXJhdG9ycyxcblx0XHRcdFx0c2VtYW50aWNEYXRlT3BlcmF0b3JzLFxuXHRcdFx0XHRtYXhpbXVtQ29uZGl0aW9ucyA9PT0gMVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbmRpdGlvbk9iamVjdHM7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEZldGNoIHNlbWFudGljIGRhdGUgb3BlcmF0b3JzLlxuXHQgKlxuXHQgKiBAcGFyYW0gcHJvcGVydHlDb252ZXJzaW9uSW5mbyBPYmplY3Qgd2hpY2ggaXMgdXNlZCBmb3IgY29udmVyc2lvblxuXHQgKiBAcGFyYW0gaXNQYXJhbWV0ZXIgQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIGlmIGEgcHJvcGVydHkgaXMgcGFyYW1ldGVyaXplZFxuXHQgKiBAcmV0dXJucyBUaGUgc2VtYW50aWMgZGF0ZSBvcGVyYXRvcnMgc3VwcG9ydGVkIGZvciBhIHByb3BlcnR5XG5cdCAqL1xuXHRfZ2V0U2VtYW50aWNEYXRlT3BlcmF0b3JzOiBmdW5jdGlvbiAocHJvcGVydHlDb252ZXJzaW9uSW5mbzogUHJvcGVydHlDb252ZXJzaW9uSW5mbywgaXNQYXJhbWV0ZXI/OiBib29sZWFuKTogc3RyaW5nW10ge1xuXHRcdGNvbnN0IHsgZmlsdGVyQmFySW5mbywgcHJvcGVydHlNZXRhZGF0YSwgcHJvcGVydHlOYW1lLCBwcm9wZXJ0eUNvbnRleHRQYXRoIH0gPSBwcm9wZXJ0eUNvbnZlcnNpb25JbmZvO1xuXHRcdGNvbnN0IGNvbmRpdGlvblBhdGggPSBwcm9wZXJ0eU1ldGFkYXRhLm5hbWU7XG5cdFx0bGV0IHNlbWFudGljRGF0ZU9wZXJhdG9yczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCB7IHVzZVNlbWFudGljRGF0ZVJhbmdlLCBmaWx0ZXJGaWVsZHNDb25maWcsIG1ldGFNb2RlbCB9ID0gZmlsdGVyQmFySW5mbztcblx0XHRpZiAodXNlU2VtYW50aWNEYXRlUmFuZ2UpIHtcblx0XHRcdGlmIChpc1BhcmFtZXRlcikge1xuXHRcdFx0XHRzZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSBbXCJFUVwiXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHByb3BlcnR5RW50aXR5U2V0UGF0aCA9IHByb3BlcnR5Q29udGV4dFBhdGguc3Vic3RyaW5nKDAsIHByb3BlcnR5Q29udGV4dFBhdGgubGVuZ3RoIC0gMSksXG5cdFx0XHRcdFx0ZmlsdGVyU2V0dGluZ3MgPSBzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2dldFByb3BlcnR5RmlsdGVyQ29uZmlndXJhdGlvblNldHRpbmcoXG5cdFx0XHRcdFx0XHRjb25kaXRpb25QYXRoLFxuXHRcdFx0XHRcdFx0ZmlsdGVyRmllbGRzQ29uZmlnXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0c2VtYW50aWNEYXRlT3BlcmF0b3JzID0gQ29tbW9uVXRpbHMuZ2V0T3BlcmF0b3JzRm9yUHJvcGVydHkoXG5cdFx0XHRcdFx0cHJvcGVydHlOYW1lLFxuXHRcdFx0XHRcdHByb3BlcnR5RW50aXR5U2V0UGF0aCxcblx0XHRcdFx0XHRtZXRhTW9kZWwsXG5cdFx0XHRcdFx0KE9EQVRBX1RZUEVfTUFQUElORyBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KVtwcm9wZXJ0eU1ldGFkYXRhLmRhdGFUeXBlXSxcblx0XHRcdFx0XHR1c2VTZW1hbnRpY0RhdGVSYW5nZSxcblx0XHRcdFx0XHRmaWx0ZXJTZXR0aW5nc1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2VtYW50aWNEYXRlT3BlcmF0b3JzO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpbHRlciBjb25kaXRpb25zIGZyb20gc2VsZWN0aW9uIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSBzZWxlY3RPcHRpb25zIFNlbGVjdCBvcHRpb25zIGFycmF5XG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU1ldGFkYXRhIFByb3BlcnR5IG1ldGFkYXRhIGluZm9ybWF0aW9uXG5cdCAqIEBwYXJhbSB2YWxpZE9wZXJhdG9ycyBBbGwgdmFsaWQgb3BlcmF0b3JzXG5cdCAqIEBwYXJhbSBzZW1hbnRpY0RhdGVPcGVyYXRvcnMgU2VtYW50aWMgZGF0ZSBvcGVyYXRvcnNcblx0ICogQHBhcmFtIHNpbmdsZUNvbmRpdGlvbiBCb29sZWFuIHdoaWNoIGRldGVybWluZXMgaWYgYSBwcm9wZXJ0eSB0YWtlcyBvbmx5IG9uZSBjb25kdGl0aW9uXG5cdCAqIEByZXR1cm5zIENvbnZlcnRlZCBmaWx0ZXIgY29uZGl0aW9uc1xuXHQgKi9cblx0X2dldENvbmRpdGlvbnNGcm9tU2VsZWN0T3B0aW9uczogZnVuY3Rpb24gKFxuXHRcdHNlbGVjdE9wdGlvbnM6IFNlbGVjdE9wdGlvbltdLFxuXHRcdHByb3BlcnR5TWV0YWRhdGE6IEZpbHRlckZpZWxkUHJvcGVydHlJbmZvLFxuXHRcdHZhbGlkT3BlcmF0b3JzOiBzdHJpbmdbXSxcblx0XHRzZW1hbnRpY0RhdGVPcGVyYXRvcnM6IHN0cmluZ1tdLFxuXHRcdHNpbmdsZUNvbmRpdGlvbj86IGJvb2xlYW5cblx0KTogQ29uZGl0aW9uT2JqZWN0W10ge1xuXHRcdGxldCBjb25kaXRpb25PYmplY3RzOiBDb25kaXRpb25PYmplY3RbXSA9IFtdO1xuXHRcdC8vIENyZWF0ZSBjb25kaXRpb25zIGZvciBhbGwgdGhlIHNlbGVjdE9wdGlvbnMgb2YgdGhlIHByb3BlcnR5XG5cdFx0aWYgKHNlbGVjdE9wdGlvbnMubGVuZ3RoKSB7XG5cdFx0XHRjb25kaXRpb25PYmplY3RzID0gc2luZ2xlQ29uZGl0aW9uXG5cdFx0XHRcdD8gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9hZGRDb25kaXRpb25Gcm9tU2VsZWN0T3B0aW9uKFxuXHRcdFx0XHRcdFx0cHJvcGVydHlNZXRhZGF0YSxcblx0XHRcdFx0XHRcdHZhbGlkT3BlcmF0b3JzLFxuXHRcdFx0XHRcdFx0c2VtYW50aWNEYXRlT3BlcmF0b3JzLFxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uT2JqZWN0cyxcblx0XHRcdFx0XHRcdHNlbGVjdE9wdGlvbnNbMF1cblx0XHRcdFx0ICApXG5cdFx0XHRcdDogc2VsZWN0T3B0aW9ucy5yZWR1Y2UoXG5cdFx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50VG9TdGF0ZUZpbHRlcnMuX2FkZENvbmRpdGlvbkZyb21TZWxlY3RPcHRpb24uYmluZChcblx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0cHJvcGVydHlNZXRhZGF0YSxcblx0XHRcdFx0XHRcdFx0dmFsaWRPcGVyYXRvcnMsXG5cdFx0XHRcdFx0XHRcdHNlbWFudGljRGF0ZU9wZXJhdG9yc1xuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbmRpdGlvbk9iamVjdHNcblx0XHRcdFx0ICApO1xuXHRcdH1cblx0XHRyZXR1cm4gY29uZGl0aW9uT2JqZWN0cztcblx0fSxcblxuXHQvKipcblx0ICogQ3VtdWxhdGl2ZWx5IGFkZCBzZWxlY3Qgb3B0aW9uIHRvIGNvbmRpdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHByb3BlcnR5TWV0YWRhdGEgUHJvcGVydHkgbWV0YWRhdGEgaW5mb3JtYXRpb25cblx0ICogQHBhcmFtIHZhbGlkT3BlcmF0b3JzIE9wZXJhdG9ycyBmb3IgYWxsIHRoZSBkYXRhIHR5cGVzXG5cdCAqIEBwYXJhbSBzZW1hbnRpY0RhdGVPcGVyYXRvcnMgT3BlcmF0b3JzIGZvciB0aGUgRGF0ZSB0eXBlXG5cdCAqIEBwYXJhbSBjdW11bGF0aXZlQ29uZGl0aW9ucyBGaWx0ZXIgY29uZGl0aW9uc1xuXHQgKiBAcGFyYW0gc2VsZWN0T3B0aW9uIFNlbGVjdG9wdGlvbiBvZiBzZWxlY3Rpb24gdmFyaWFudFxuXHQgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGNvbmRpdGlvbnNcblx0ICovXG5cdF9hZGRDb25kaXRpb25Gcm9tU2VsZWN0T3B0aW9uOiBmdW5jdGlvbiAoXG5cdFx0cHJvcGVydHlNZXRhZGF0YTogRmlsdGVyRmllbGRQcm9wZXJ0eUluZm8sXG5cdFx0dmFsaWRPcGVyYXRvcnM6IHN0cmluZ1tdLFxuXHRcdHNlbWFudGljRGF0ZU9wZXJhdG9yczogc3RyaW5nW10sXG5cdFx0Y3VtdWxhdGl2ZUNvbmRpdGlvbnM6IENvbmRpdGlvbk9iamVjdFtdLFxuXHRcdHNlbGVjdE9wdGlvbjogU2VsZWN0T3B0aW9uXG5cdCk6IENvbmRpdGlvbk9iamVjdFtdIHtcblx0XHRjb25zdCB7IGhhc1ZhbHVlSGVscCwgZGF0YVR5cGUgfSA9IHByb3BlcnR5TWV0YWRhdGE7XG5cblx0XHRjb25zdCBlZG1UeXBlID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9nZXRFZG1UeXBlKGRhdGFUeXBlKTtcblx0XHRjb25zdCBjb25kaXRpb24gPSBnZXRDb25kaXRpb25zKHNlbGVjdE9wdGlvbiwgZWRtVHlwZSwgISFoYXNWYWx1ZUhlbHApO1xuXHRcdGlmIChcblx0XHRcdHNlbGVjdE9wdGlvbi5TZW1hbnRpY0RhdGVzICYmXG5cdFx0XHRzZW1hbnRpY0RhdGVPcGVyYXRvcnMubGVuZ3RoICYmXG5cdFx0XHRzZW1hbnRpY0RhdGVPcGVyYXRvcnMuaW5jbHVkZXMoc2VsZWN0T3B0aW9uLlNlbWFudGljRGF0ZXMub3BlcmF0b3IpXG5cdFx0KSB7XG5cdFx0XHRjb25zdCBzZW1hbnRpY0RhdGVzID0gc2VsZWN0aW9uVmFyaWFudFRvU3RhdGVGaWx0ZXJzLl9hZGRTZW1hbnRpY0RhdGVzVG9Db25kaXRpb25zKHNlbGVjdE9wdGlvbi5TZW1hbnRpY0RhdGVzKTtcblx0XHRcdGlmIChPYmplY3Qua2V5cyhzZW1hbnRpY0RhdGVzKS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGN1bXVsYXRpdmVDb25kaXRpb25zLnB1c2goc2VtYW50aWNEYXRlcyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChjb25kaXRpb24pIHtcblx0XHRcdGlmICh2YWxpZE9wZXJhdG9ycy5sZW5ndGggPT09IDAgfHwgdmFsaWRPcGVyYXRvcnMuaW5jbHVkZXMoY29uZGl0aW9uLm9wZXJhdG9yKSkge1xuXHRcdFx0XHRjdW11bGF0aXZlQ29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjdW11bGF0aXZlQ29uZGl0aW9ucztcblx0fSxcblxuXHQvKipcblx0ICogQ3JlYXRlIGZpbHRlciBjb25kaXRpb25zIGZvciBhIHBhcmFtZXRlciBwcm9wZXJ0eS5cblx0ICpcblx0ICogQHBhcmFtIHNlbWFudGljRGF0ZXMgU2VtYW50aWMgZGF0ZSBpbmZvbWF0aW9uXG5cdCAqIEByZXR1cm5zIFRoZSBmaWx0ZXIgY29uZGl0aW9ucyBjb250YWluaW5nIHNlbWFudGljIGRhdGVzXG5cdCAqL1xuXHRfYWRkU2VtYW50aWNEYXRlc1RvQ29uZGl0aW9uczogKHNlbWFudGljRGF0ZXM6IFNlbWFudGljRGF0ZUNvbmZpZ3VyYXRpb24pOiBDb25kaXRpb25PYmplY3QgPT4ge1xuXHRcdGNvbnN0IHZhbHVlczogdW5rbm93bltdID0gW107XG5cdFx0aWYgKHNlbWFudGljRGF0ZXMuaGlnaCAhPT0gbnVsbCkge1xuXHRcdFx0dmFsdWVzLnB1c2goc2VtYW50aWNEYXRlcy5oaWdoKTtcblx0XHR9XG5cdFx0aWYgKHNlbWFudGljRGF0ZXMubG93ICE9PSBudWxsKSB7XG5cdFx0XHR2YWx1ZXMucHVzaChzZW1hbnRpY0RhdGVzLmxvdyk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR2YWx1ZXM6IHZhbHVlcyxcblx0XHRcdG9wZXJhdG9yOiBzZW1hbnRpY0RhdGVzLm9wZXJhdG9yLFxuXHRcdFx0aXNFbXB0eTogdW5kZWZpbmVkXG5cdFx0fTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IEVETSB0eXBlIGZyb20gZGF0YSB0eXBlLlxuXHQgKlxuXHQgKiBAcGFyYW0gZGF0YVR5cGUgVjQgbW9kZWwgZGF0YSB0eXBlXG5cdCAqIEByZXR1cm5zIEVETSB0eXBlIGVxdWl2YWxlbnQgb2YgZGF0YSB0eXBlXG5cdCAqL1xuXHRfZ2V0RWRtVHlwZTogKGRhdGFUeXBlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IFRZUEVfRURNX01BUFBJTkcgPSBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRPYmplY3QuZW50cmllcyhFRE1fVFlQRV9NQVBQSU5HKS5tYXAoKFtrLCB2XSkgPT4gWyh2IGFzIHsgdHlwZTogdW5rbm93biB9KS50eXBlLCBrXSlcblx0XHQpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRcdHJldHVybiBUWVBFX0VETV9NQVBQSU5HW2RhdGFUeXBlXSBhcyBzdHJpbmc7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHNlbGVjdGlvblZhcmlhbnRUb1N0YXRlRmlsdGVycztcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7RUFnQ0EsTUFBTUEscUJBQStCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDO0VBRWpFLE1BQU1DLDhCQUE4QixHQUFHO0lBQ3RDO0FBQ0Q7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
|
|
@@ -8,7 +8,6 @@ import type { FilterFieldPropertyInfo } from "sap/fe/macros/filterBar/FilterBarD
|
|
|
8
8
|
import type SelectionVariant from "sap/fe/navigation/SelectionVariant";
|
|
9
9
|
import type { SelectOption, SemanticDateConfiguration } from "sap/fe/navigation/SelectionVariant";
|
|
10
10
|
import type { ConditionObject } from "sap/ui/mdc/condition/Condition";
|
|
11
|
-
import ConditionValidated from "sap/ui/mdc/enums/ConditionValidated";
|
|
12
11
|
import type { Filter as StateUtilFilter } from "sap/ui/mdc/p13n/StateUtil";
|
|
13
12
|
import FilterUtil from "sap/ui/mdc/util/FilterUtil";
|
|
14
13
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
@@ -448,9 +447,6 @@ const selectionVariantToStateFilters = {
|
|
|
448
447
|
}
|
|
449
448
|
} else if (condition) {
|
|
450
449
|
if (validOperators.length === 0 || validOperators.includes(condition.operator)) {
|
|
451
|
-
if (hasValueHelp) {
|
|
452
|
-
selectionVariantToStateFilters._adjustValueHelpCondition(condition);
|
|
453
|
-
}
|
|
454
450
|
cumulativeConditions.push(condition);
|
|
455
451
|
}
|
|
456
452
|
}
|
|
@@ -489,24 +485,6 @@ const selectionVariantToStateFilters = {
|
|
|
489
485
|
Object.entries(EDM_TYPE_MAPPING).map(([k, v]) => [(v as { type: unknown }).type, k])
|
|
490
486
|
) as Record<string, unknown>;
|
|
491
487
|
return TYPE_EDM_MAPPING[dataType] as string;
|
|
492
|
-
},
|
|
493
|
-
|
|
494
|
-
/**
|
|
495
|
-
* Change value depending on condition operator(Empty and NotEmpty) for properties with value helps.
|
|
496
|
-
*
|
|
497
|
-
* @param condition Condition to change
|
|
498
|
-
*/
|
|
499
|
-
_adjustValueHelpCondition: (condition: Record<string, unknown>): void => {
|
|
500
|
-
// in case the condition is meant for a field having a VH, the format required by MDC differs
|
|
501
|
-
condition.validated = ConditionValidated.Validated;
|
|
502
|
-
if (condition.operator === "Empty") {
|
|
503
|
-
condition.operator = "EQ";
|
|
504
|
-
condition.values = [""];
|
|
505
|
-
} else if (condition.operator === "NotEmpty") {
|
|
506
|
-
condition.operator = "NE";
|
|
507
|
-
condition.values = [""];
|
|
508
|
-
}
|
|
509
|
-
delete condition.isEmpty;
|
|
510
488
|
}
|
|
511
489
|
};
|
|
512
490
|
|
|
@@ -25,7 +25,7 @@ sap.ui.define(["sap/fe/core/library", "sap/fe/macros/filter/type/MultiValue", "s
|
|
|
25
25
|
controls: [],
|
|
26
26
|
elements: [],
|
|
27
27
|
// eslint-disable-next-line no-template-curly-in-string
|
|
28
|
-
version: "1.120.
|
|
28
|
+
version: "1.120.11",
|
|
29
29
|
noLibraryCSS: true
|
|
30
30
|
});
|
|
31
31
|
thisLib.NavigationType = {
|