@sapui5/sap.fe.templates 1.120.24 → 1.120.26
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/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +4 -4
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +3 -3
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/library.js +3 -3
- package/src/sap/fe/templates/library.ts +1 -1
- package/src/sap/fe/templates/messagebundle_es.properties +1 -1
- package/src/sap/fe/templates/messagebundle_it.properties +10 -10
- package/src/sap/fe/templates/messagebundle_sl.properties +2 -2
package/package.json
CHANGED
|
@@ -782,9 +782,9 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/ActionRu
|
|
|
782
782
|
}
|
|
783
783
|
const variants = VariantManagement.getVariants();
|
|
784
784
|
const currentVariant = variants.find(function (variant) {
|
|
785
|
-
return variant && variant.
|
|
785
|
+
return variant && variant.getKey() === key;
|
|
786
786
|
});
|
|
787
|
-
return currentVariant && currentVariant.
|
|
787
|
+
return currentVariant && currentVariant.getExecuteOnSelect() || false;
|
|
788
788
|
};
|
|
789
789
|
_proto._shouldAutoTriggerSearch = function _shouldAutoTriggerSearch(oVM) {
|
|
790
790
|
if (this.getView().getViewData().initialLoad === InitialLoadMode.Auto && (!oVM || oVM.getStandardVariantKey() === oVM.getCurrentVariantKey())) {
|
|
@@ -796,7 +796,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/ActionRu
|
|
|
796
796
|
if (!sKey.startsWith("$") && Array.isArray(oConditions[sKey]) && oConditions[sKey].length) {
|
|
797
797
|
// load data as per user's setting of applyAutomatically on the variant
|
|
798
798
|
const standardVariant = oVM.getVariants().find(variant => {
|
|
799
|
-
return variant.
|
|
799
|
+
return variant.getKey() === oVM.getCurrentVariantKey();
|
|
800
800
|
});
|
|
801
801
|
return standardVariant && standardVariant.getExecuteOnSelect();
|
|
802
802
|
}
|
|
@@ -915,4 +915,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/ActionRu
|
|
|
915
915
|
}), _applyDecoratedDescriptor(_class2.prototype, "getExtensionAPI", [_dec11, _dec12], Object.getOwnPropertyDescriptor(_class2.prototype, "getExtensionAPI"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPageReady", [_dec13, _dec14], Object.getOwnPropertyDescriptor(_class2.prototype, "onPageReady"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onViewNeedsRefresh", [_dec15, _dec16], Object.getOwnPropertyDescriptor(_class2.prototype, "onViewNeedsRefresh"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onPendingFilters", [_dec17, _dec18], Object.getOwnPropertyDescriptor(_class2.prototype, "onPendingFilters"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onAfterClear", [_dec19, _dec20], Object.getOwnPropertyDescriptor(_class2.prototype, "onAfterClear"), _class2.prototype)), _class2)) || _class);
|
|
916
916
|
return ListReportController;
|
|
917
917
|
}, false);
|
|
918
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiQ29yZUxpYnJhcnkiLCJJbml0aWFsTG9hZE1vZGUiLCJMaXN0UmVwb3J0Q29udHJvbGxlciIsImRlZmluZVVJNUNsYXNzIiwidXNpbmdFeHRlbnNpb24iLCJJbnRlcm5hbFJvdXRpbmciLCJvdmVycmlkZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJfb25BZnRlckJpbmRpbmciLCJJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiIsImdldEVudGl0eVNldCIsImJhc2UiLCJnZXRDdXJyZW50RW50aXR5U2V0IiwiU2lkZUVmZmVjdHMiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsIlNoYXJlIiwiU2hhcmVPdmVycmlkZXMiLCJWaWV3U3RhdGUiLCJWaWV3U3RhdGVPdmVycmlkZXMiLCJLUElNYW5hZ2VtZW50IiwiUGxhY2Vob2xkZXIiLCJNYXNzRWRpdCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkFmdGVyIiwiZm9ybWF0dGVycyIsInNldEFMUENvbnRyb2xNZXNzYWdlU3RyaXAiLCJhSWdub3JlZEZpZWxkcyIsImJJc0NoYXJ0Iiwib0FwcGx5U3VwcG9ydGVkIiwic1RleHQiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImRhdGEiLCJnZXRSZXNvdXJjZU1vZGVsIiwiYklzU2VhcmNoSWdub3JlZCIsImVuYWJsZVNlYXJjaCIsImdldEFMUFRleHQiLCJnZXRUZXh0IiwiaGFuZGxlcnMiLCJvbkZpbHRlclNlYXJjaCIsImZpbHRlckJhckFQSSIsImdldFBhcmVudCIsInRyaWdnZXJTZWFyY2giLCJvbkZpbHRlcnNDaGFuZ2VkIiwib0V2ZW50Iiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvblBlbmRpbmdGaWx0ZXJzIiwiYXBwbGllZEZpbHRlcnNUZXh0IiwiZ2V0QXNzaWduZWRGaWx0ZXJzVGV4dCIsImZpbHRlcnNUZXh0IiwiYXBwbGllZEZpbHRlckJpbmRpbmciLCJiaW5kaW5nUGFyc2VyIiwiYnlJZCIsImJpbmRUZXh0Iiwic2V0VGV4dCIsImdldFBhcmFtZXRlciIsInNldFByb3BlcnR5IiwiX3N0b3JlRmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudCIsIm9uVmFyaWFudFNlbGVjdGVkIiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZXRTb3VyY2UiLCJjdXJyZW50VmFyaWFudEtleSIsIm11bHRpTW9kZUNvbnRyb2wiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsImlzQSIsImludmFsaWRhdGVDb250ZW50Iiwic2V0RnJlZXplQ29udGVudCIsInNldFRpbWVvdXQiLCJmaWx0ZXJCYXIiLCJkeW5hbWljUGFnZSIsIl9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2wiLCJmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQiLCJnZXRGaWx0ZXJJdGVtcyIsImZpbmQiLCJmaWx0ZXJJdGVtIiwiZ2V0UmVxdWlyZWQiLCJnZXRDb25kaXRpb25zIiwic2V0SGVhZGVyRXhwYW5kZWQiLCJfc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2giLCJfZ2V0QXBwbHlBdXRvbWF0aWNhbGx5T25WYXJpYW50IiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJvblZhcmlhbnRTYXZlZCIsIm9uU2VhcmNoIiwib01kY0NoYXJ0IiwiZ2V0Q2hhcnRDb250cm9sIiwiYkhpZGVEcmFmdCIsIkZpbHRlclV0aWxzIiwiZ2V0RWRpdFN0YXRlSXNIaWRlRHJhZnQiLCJfdXBkYXRlQUxQTm90QXBwbGljYWJsZUZpZWxkcyIsIm9QYWdlSW50ZXJuYWxNb2RlbENvbnRleHQiLCJzVGVtcGxhdGVDb250ZW50VmlldyIsImdldFByb3BlcnR5IiwiZ2V0UGF0aCIsIkNoYXJ0IiwiaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcyIsIlRhYmxlIiwiaGFzUGVuZGluZ1RhYmxlQ2hhbmdlcyIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJnZXRIZWFkZXJFeHBhbmRlZCIsIlN0YXRlVXRpbCIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsInRoZW4iLCJvRXh0ZXJuYWxTdGF0ZSIsImZpbHRlckJhckNvbmRpdGlvbnMiLCJmaWx0ZXIiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwiZ2V0Vmlld0RhdGEiLCJsaXZlTW9kZSIsInBob25lIiwib0R5bmFtaWNQYWdlIiwiX2lzSW5pdExvYWRFbmFibGVkIiwic2V0RmlsdGVyVG9nZ2xlVmlzaWJpbGl0eSIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIm9Db250cm9sbGVyIiwic091dGJvdW5kVGFyZ2V0Iiwib0NvbnRleHQiLCJzQ3JlYXRlUGF0aCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJvbkNoYXJ0U2VsZWN0aW9uQ2hhbmdlZCIsImdldENvbnRlbnQiLCJvVGFibGUiLCJfZ2V0VGFibGUiLCJhRGF0YSIsIkNoYXJ0VXRpbHMiLCJzZXRDaGFydEZpbHRlcnMiLCJyZWJpbmQiLCJvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJzU2VsZWN0ZWRLZXkiLCJtUGFyYW1ldGVycyIsImtleSIsIm9DaGFydCIsIm9TZWdtZW50ZWRCdXR0b25EZWxlZ2F0ZSIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJhSXRlbXMiLCJvU2VnbWVudGVkQnV0dG9uIiwiZ2V0SXRlbXMiLCJmb3JFYWNoIiwib0l0ZW0iLCJnZXRLZXkiLCJmb2N1cyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJfZ2V0U2VnbWVudGVkQnV0dG9uIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIl91cGRhdGVUYWJsZSIsIl91cGRhdGVDaGFydCIsIkh5YnJpZCIsIm9uRmlsdGVyc1NlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJpc0NvbXBhY3QiLCJzZXRWaXNpYmxlIiwiX2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2wiLCJvblN0YXRlQ2hhbmdlIiwib25EeW5hbWljUGFnZVRpdGxlU3RhdGVDaGFuZ2VkIiwiZXZlbnQiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJhbm5vdW5jZSIsIkludmlzaWJsZU1lc3NhZ2VNb2RlIiwiQXNzZXJ0aXZlIiwiZXh0ZW5zaW9uQVBJIiwiRXh0ZW5zaW9uQVBJIiwib25Jbml0IiwiUGFnZUNvbnRyb2xsZXIiLCJwcm90b3R5cGUiLCJhcHBseSIsIl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zIiwiYWxwQ29udGVudFZpZXciLCJfZ2V0RGVmYXVsdFBhdGgiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRSb3V0ZXJQcm94eSIsIndhaXRGb3JSb3V0ZU1hdGNoQmVmb3JlTmF2aWdhdGlvbiIsIl9zZXRJbml0TG9hZCIsIm9uRXhpdCIsImRlc3Ryb3kiLCJhVGFibGVzIiwiX2dldENvbnRyb2xzIiwiRWRpdFN0YXRlIiwiaXNFZGl0U3RhdGVEaXJ0eSIsIm9UYWJsZUJpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwiQ29tbW9uVXRpbHMiLCJfaXNGY2xFbmFibGVkIiwicmVmcmVzaCIsInNVcGRhdGVUaW1lciIsImZuVXBkYXRlVGFibGVBY3Rpb25zIiwiX3VwZGF0ZVRhYmxlQWN0aW9ucyIsImRldGFjaERhdGFSZWNlaXZlZCIsImF0dGFjaERhdGFSZWNlaXZlZCIsInNldEVkaXRTdGF0ZVByb2Nlc3NlZCIsImludGVybmFsTW9kZWxDb250ZXh0Iiwidmlld0lkIiwiZ2V0SWQiLCJwYWdlUmVhZHkiLCJ3YWl0Rm9yIiwiX2FwcGx5QXBwU3RhdGUiLCJjYXBhYmxpdGllcyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSW5zaWdodHNTdXBwb3J0ZWQiLCJvbkJlZm9yZVJlbmRlcmluZyIsIm9uUGFnZVJlYWR5IiwiZm9yY2VGb2N1cyIsIl9zZXRJbml0aWFsRm9jdXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2V0QmFja05hdmlnYXRpb24iLCJ1bmRlZmluZWQiLCJvblZpZXdOZWVkc1JlZnJlc2giLCJzbGljZSIsIm9uQWZ0ZXJDbGVhciIsImFJQk5BY3Rpb25zIiwiZ2V0SUJOQWN0aW9ucyIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJKU09OIiwicGFyc2UiLCJDb21tb25IZWxwZXIiLCJwYXJzZUN1c3RvbURhdGEiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiRGVsZXRlSGVscGVyIiwidXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMiLCJBY3Rpb25SdW50aW1lIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsInVwZGF0ZURhdGFGaWVsZEZvcklCTkJ1dHRvbnNWaXNpYmlsaXR5IiwiX3Njcm9sbFRhYmxlc1RvUm93Iiwic1Jvd1BhdGgiLCJUYWJsZVNjcm9sbGVyIiwic2Nyb2xsVGFibGVUb1JvdyIsImlzSGVhZGVyRXhwYW5kZWQiLCJfaXNGaWx0ZXJCYXJIaWRkZW5Vc2VkIiwiZ2V0U2hvd01lc3NhZ2VzIiwic2V0U2hvd01lc3NhZ2VzIiwib0ZpbHRlckl0ZW0iLCJfZ2V0RmlsdGVyQmFyQ29udHJvbElkIiwiZm9jdXNSb3ciLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJvTWFuaWZlc3RFbnRyeSIsImdldE1hbmlmZXN0RW50cnkiLCJ0aXRsZSIsInN1YnRpdGxlIiwic3ViVGl0bGUiLCJpbnRlbnQiLCJpY29uIiwiX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbElkIiwiX2dldEFkYXB0YXRpb25GaWx0ZXJCYXJDb250cm9sIiwiYWRhcHRhdGlvbkZpbHRlckJhciIsImdldEluYnVpbHRGaWx0ZXIiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJhcHBseUFwcFN0YXRlIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsIl9pc0ZpbHRlckJhckhpZGRlbiIsIl9pc011bHRpTW9kZSIsInNldENvdW50c091dERhdGVkIiwic0NvbnRyb2wiLCJzU2VnbWVudGVkQnV0dG9uSWQiLCJfZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eSIsInNQYXRoIiwiY29udHJvbElkIiwiX2dldFBhZ2VNb2RlbCIsInNWaXN1YWxGaWx0ZXJCYXJJZCIsIlN0YWJsZUlkSGVscGVyIiwiZ2VuZXJhdGUiLCJfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2wiLCJfZ2V0SWNvblRhYkJhciIsIm9Db250cm9sIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJjb250ZW50Iiwic0tleSIsImFDb250cm9scyIsIm9UYWJNdWx0aU1vZGUiLCJpbmRleE9mIiwicHVzaCIsImRlZmF1bHRQYXRoIiwiTGlzdFJlcG9ydFRlbXBsYXRpbmciLCJnZXREZWZhdWx0UGF0aCIsImluaXRMb2FkTW9kZSIsImluaXRpYWxMb2FkIiwiRW5hYmxlZCIsIl9kaXNhYmxlSW5pdExvYWQiLCJfYXBwbHlBdXRvbWF0aWNhbGx5T25TdGFuZGFyZFZhcmlhbnQiLCJ2YXJpYW50TWFuYWdlbWVudElkIiwiZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2UiLCJnZXREYXRhIiwicmVnaXN0ZXJBcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCIsImJpbmQiLCJfc2V0U2hhcmVNb2RlbCIsImZuR2V0VXNlciIsIk9iamVjdFBhdGgiLCJnZXQiLCJvU2hhcmVJbmZvIiwiYm9va21hcmtUaXRsZSIsImRvY3VtZW50IiwiYm9va21hcmtDdXN0b21VcmwiLCJzSGFzaCIsImhhc2hlciIsImdldEhhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJpc1NoYXJlSW5KYW1BY3RpdmUiLCJpc0phbUFjdGl2ZSIsIm9UZW1wbGF0ZVByaXZhdGVNb2RlbCIsImdldE93bmVyQ29tcG9uZW50IiwiZ2V0TW9kZWwiLCJtQ2FjaGUiLCJpZ25vcmVkRmllbGRzIiwiYUNoYXJ0cyIsInNDaGFydEVudGl0eVBhdGgiLCJzQ2hhcnRFbnRpdHlTZXQiLCJzQ2FjaGVLZXkiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsImhpZGVGaWx0ZXJCYXIiLCJ1c2VIaWRkZW5GaWx0ZXJCYXIiLCJWYXJpYW50TWFuYWdlbWVudCIsInZhcmlhbnRzIiwiZ2V0VmFyaWFudHMiLCJjdXJyZW50VmFyaWFudCIsInZhcmlhbnQiLCJleGVjdXRlT25TZWxlY3QiLCJvVk0iLCJBdXRvIiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJvQ29uZGl0aW9ucyIsInN0YXJ0c1dpdGgiLCJzdGFuZGFyZFZhcmlhbnQiLCJnZXRFeGVjdXRlT25TZWxlY3QiLCJpc1RhYmxlQm91bmQiLCJvSW5uZXJDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsIl9nZXRDaGFydCIsImlzQm91bmQiLCJnZXRCaW5kaW5nSW5mbyIsImJ1dHRvblZpc2libGUiLCJnZXRTZWdtZW50ZWRCdXR0b24iLCJzRW50aXR5U2V0IiwiZW50aXR5U2V0Iiwic2V0Tm9EYXRhIiwic3YiLCJnZXRTZWxlY3Rpb25WYXJpYW50IiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwiZ2V0RmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudCIsIlNlbGVjdGlvblZhcmlhbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCB0eXBlIHsgRHluYW1pY1BhZ2VUaXRsZSRTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9mL0R5bmFtaWNQYWdlVGl0bGVcIjtcbmltcG9ydCBBY3Rpb25SdW50aW1lIGZyb20gXCJzYXAvZmUvY29yZS9BY3Rpb25SdW50aW1lXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IEtQSU1hbmFnZW1lbnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0tQSU1hbmFnZW1lbnRcIjtcbmltcG9ydCBNYXNzRWRpdCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWFzc0VkaXRcIjtcbmltcG9ydCBQbGFjZWhvbGRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGxhY2Vob2xkZXJcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBTaWRlRWZmZWN0cyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgTGlzdFJlcG9ydERlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy90ZW1wbGF0ZXMvTGlzdFJlcG9ydENvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGV4dGVuc2libGUsXG5cdGZpbmFsRXh0ZW5zaW9uLFxuXHRwcml2YXRlRXh0ZW5zaW9uLFxuXHRwdWJsaWNFeHRlbnNpb24sXG5cdHVzaW5nRXh0ZW5zaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IERlbGV0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9EZWxldGVIZWxwZXJcIjtcbmltcG9ydCBFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRWRpdFN0YXRlXCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0ICogYXMgU3RhYmxlSWRIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBDb3JlTGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSBNdWx0aXBsZU1vZGVDb250cm9sIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvY29udHJvbHMvTXVsdGlwbGVNb2RlQ29udHJvbFwiO1xuaW1wb3J0IFRhYmxlU2Nyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvVGFibGVTY3JvbGxlclwiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IHR5cGUgU2VnbWVudGVkQnV0dG9uIGZyb20gXCJzYXAvbS9TZWdtZW50ZWRCdXR0b25cIjtcbmltcG9ydCB0eXBlIFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBEZXZpY2UgZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCB7IGJpbmRpbmdQYXJzZXIgfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEludmlzaWJsZU1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZU1lc3NhZ2VcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgaGFzaGVyIGZyb20gXCJzYXAvdWkvdGhpcmRwYXJ0eS9oYXNoZXJcIjtcbmltcG9ydCAqIGFzIExpc3RSZXBvcnRUZW1wbGF0aW5nIGZyb20gXCIuL0xpc3RSZXBvcnRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgZnJvbSBcIi4vb3ZlcnJpZGVzL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IFNoYXJlT3ZlcnJpZGVzIGZyb20gXCIuL292ZXJyaWRlcy9TaGFyZVwiO1xuaW1wb3J0IFZpZXdTdGF0ZU92ZXJyaWRlcyBmcm9tIFwiLi9vdmVycmlkZXMvVmlld1N0YXRlXCI7XG5cbmNvbnN0IFRlbXBsYXRlQ29udGVudFZpZXcgPSBDb3JlTGlicmFyeS5UZW1wbGF0ZUNvbnRlbnRWaWV3LFxuXHRJbml0aWFsTG9hZE1vZGUgPSBDb3JlTGlicmFyeS5Jbml0aWFsTG9hZE1vZGU7XG5cbi8qKlxuICogQ29udHJvbGxlciBjbGFzcyBmb3IgdGhlIGxpc3QgcmVwb3J0IHBhZ2UsIHVzZWQgaW5zaWRlIGFuIFNBUCBGaW9yaSBlbGVtZW50cyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC5MaXN0UmVwb3J0Q29udHJvbGxlclwiKVxuY2xhc3MgTGlzdFJlcG9ydENvbnRyb2xsZXIgZXh0ZW5kcyBQYWdlQ29udHJvbGxlciB7XG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRJbnRlcm5hbFJvdXRpbmcub3ZlcnJpZGUoe1xuXHRcdFx0b25BZnRlckJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcpIHtcblx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcikuX29uQWZ0ZXJCaW5kaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSlcblx0KVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oXG5cdFx0SW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24ub3ZlcnJpZGUoe1xuXHRcdFx0Z2V0RW50aXR5U2V0OiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0cmV0dXJuICh0aGlzLmJhc2UgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLmdldEN1cnJlbnRFbnRpdHlTZXQoKTtcblx0XHRcdH1cblx0XHR9KVxuXHQpXG5cdF9pbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2lkZUVmZmVjdHMpXG5cdHNpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbi5vdmVycmlkZShJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSkpXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUub3ZlcnJpZGUoU2hhcmVPdmVycmlkZXMpKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUub3ZlcnJpZGUoVmlld1N0YXRlT3ZlcnJpZGVzKSlcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihLUElNYW5hZ2VtZW50KVxuXHRrcGlNYW5hZ2VtZW50ITogS1BJTWFuYWdlbWVudDtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKE1hc3NFZGl0KVxuXHRtYXNzRWRpdCE6IE1hc3NFZGl0O1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0cHJpdmF0ZSBmaWx0ZXJCYXJDb25kaXRpb25zPzogYW55O1xuXG5cdHByaXZhdGUgc1VwZGF0ZVRpbWVyPzogYW55O1xuXG5cdHByaXZhdGUgaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcz86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBoYXNQZW5kaW5nVGFibGVDaGFuZ2VzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSSgpOiBFeHRlbnNpb25BUEkge1xuXHRcdGlmICghdGhpcy5leHRlbnNpb25BUEkpIHtcblx0XHRcdHRoaXMuZXh0ZW5zaW9uQVBJID0gbmV3IEV4dGVuc2lvbkFQSSh0aGlzKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdFBhZ2VDb250cm9sbGVyLnByb3RvdHlwZS5vbkluaXQuYXBwbHkodGhpcyk7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0dGhpcy5fc3RvcmVGaWx0ZXJCYXJTZWxlY3Rpb25WYXJpYW50KGZpbHRlckJhciwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHR9XG5cblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiLCB0cnVlKTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoaWRlRHJhZnRJbmZvXCIsIGZhbHNlKTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJ1b21cIiwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNjYWxlZmFjdG9yXCIsIHt9KTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJzY2FsZWZhY3Rvck51bWJlclwiLCB7fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY3VycmVuY3lcIiwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzSW5zaWdodHNTdXBwb3J0ZWRcIiwgZmFsc2UpO1xuXG5cdFx0aWYgKHRoaXMuX2hhc011bHRpVmlzdWFsaXphdGlvbnMoKSkge1xuXHRcdFx0bGV0IGFscENvbnRlbnRWaWV3ID0gdGhpcy5fZ2V0RGVmYXVsdFBhdGgoKTtcblx0XHRcdGlmICghRGV2aWNlLnN5c3RlbS5kZXNrdG9wICYmIGFscENvbnRlbnRWaWV3ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3Lkh5YnJpZCkge1xuXHRcdFx0XHRhbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHR9XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJhbHBDb250ZW50Vmlld1wiLCBhbHBDb250ZW50Vmlldyk7XG5cdFx0fVxuXG5cdFx0Ly8gU3RvcmUgY29uZGl0aW9ucyBmcm9tIGZpbHRlciBiYXJcblx0XHQvLyB0aGlzIGlzIGxhdGVyIHVzZWQgYmVmb3JlIG5hdmlnYXRpb24gdG8gZ2V0IGNvbmRpdGlvbnMgYXBwbGllZCBvbiB0aGUgZmlsdGVyIGJhclxuXHRcdHRoaXMuZmlsdGVyQmFyQ29uZGl0aW9ucyA9IHt9O1xuXG5cdFx0Ly8gQXMgQXBwU3RhdGVIYW5kbGVyLmFwcGx5QXBwU3RhdGUgdHJpZ2dlcnMgYSBuYXZpZ2F0aW9uIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGl0IHdpbGxcblx0XHQvLyBoYXBwZW4gYWZ0ZXIgdGhlIHJvdXRlTWF0Y2ggZXZlbnQgaGFzIGJlZW4gcHJvY2Vzc2VkIChvdGhlcndpc2UgdGhlIHJvdXRlciBnZXRzIGJyb2tlbilcblx0XHR0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldFJvdXRlclByb3h5KCkud2FpdEZvclJvdXRlTWF0Y2hCZWZvcmVOYXZpZ2F0aW9uKCk7XG5cblx0XHQvLyBDb25maWd1cmUgdGhlIGluaXRpYWwgbG9hZCBzZXR0aW5nc1xuXHRcdHRoaXMuX3NldEluaXRMb2FkKCk7XG5cdH1cblxuXHRvbkV4aXQoKSB7XG5cdFx0ZGVsZXRlIHRoaXMuZmlsdGVyQmFyQ29uZGl0aW9ucztcblx0XHRpZiAodGhpcy5leHRlbnNpb25BUEkpIHtcblx0XHRcdHRoaXMuZXh0ZW5zaW9uQVBJLmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0ZGVsZXRlIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0X29uQWZ0ZXJCaW5kaW5nKCkge1xuXHRcdGNvbnN0IGFUYWJsZXMgPSB0aGlzLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdGlmIChFZGl0U3RhdGUuaXNFZGl0U3RhdGVEaXJ0eSgpKSB7XG5cdFx0XHR0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCk/LmludmFsaWRhdGVDb250ZW50KCk7XG5cdFx0XHRjb25zdCBvVGFibGVCaW5kaW5nID0gdGhpcy5fZ2V0VGFibGUoKT8uZ2V0Um93QmluZGluZygpO1xuXHRcdFx0aWYgKG9UYWJsZUJpbmRpbmcpIHtcblx0XHRcdFx0aWYgKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmdldFZpZXcoKSkuX2lzRmNsRW5hYmxlZCgpKSB7XG5cdFx0XHRcdFx0Ly8gdGhlcmUgaXMgYW4gaXNzdWUgaWYgd2UgdXNlIGEgdGltZW91dCB3aXRoIGEga2VwdCBhbGl2ZSBjb250ZXh0IHVzZWQgb24gYW5vdGhlciBwYWdlXG5cdFx0XHRcdFx0b1RhYmxlQmluZGluZy5yZWZyZXNoKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLnNVcGRhdGVUaW1lcikge1xuXHRcdFx0XHRcdFx0dGhpcy5zVXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0b1RhYmxlQmluZGluZy5yZWZyZXNoKCk7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnNVcGRhdGVUaW1lcjtcblx0XHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFVwZGF0ZSBhY3Rpb24gZW5hYmxlbWVudCBhbmQgdmlzaWJpbGl0eSB1cG9uIHRhYmxlIGRhdGEgdXBkYXRlLlxuXHRcdFx0XHRcdGNvbnN0IGZuVXBkYXRlVGFibGVBY3Rpb25zID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlVGFibGVBY3Rpb25zKGFUYWJsZXMpO1xuXHRcdFx0XHRcdFx0b1RhYmxlQmluZGluZy5kZXRhY2hEYXRhUmVjZWl2ZWQoZm5VcGRhdGVUYWJsZUFjdGlvbnMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0b1RhYmxlQmluZGluZy5hdHRhY2hEYXRhUmVjZWl2ZWQoZm5VcGRhdGVUYWJsZUFjdGlvbnMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRFZGl0U3RhdGUuc2V0RWRpdFN0YXRlUHJvY2Vzc2VkKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLnNVcGRhdGVUaW1lcikge1xuXHRcdFx0dGhpcy5fdXBkYXRlVGFibGVBY3Rpb25zKGFUYWJsZXMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRpZiAoIWludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW5pdGlhbFZhcmlhbnRBcHBsaWVkXCIpKSB7XG5cdFx0XHRjb25zdCB2aWV3SWQgPSB0aGlzLmdldFZpZXcoKS5nZXRJZCgpO1xuXHRcdFx0dGhpcy5wYWdlUmVhZHkud2FpdEZvcih0aGlzLl9hcHBseUFwcFN0YXRlKHZpZXdJZCkpO1xuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJpbml0aWFsVmFyaWFudEFwcGxpZWRcIiwgdHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IGNhcGFibGl0aWVzID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0VmlldygpKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaXNJbnNpZ2h0c1N1cHBvcnRlZFwiLCBjYXBhYmxpdGllcz8uSW5zaWdodHNTdXBwb3J0ZWQpO1xuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKSB7XG5cdFx0UGFnZUNvbnRyb2xsZXIucHJvdG90eXBlLm9uQmVmb3JlUmVuZGVyaW5nLmFwcGx5KHRoaXMpO1xuXHR9XG5cblx0Zm9ybWF0dGVycyA9IHtcblx0XHRzZXRBTFBDb250cm9sTWVzc2FnZVN0cmlwKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBhSWdub3JlZEZpZWxkczogYW55W10sIGJJc0NoYXJ0OiBhbnksIG9BcHBseVN1cHBvcnRlZD86IGFueSkge1xuXHRcdFx0bGV0IHNUZXh0ID0gXCJcIjtcblx0XHRcdGJJc0NoYXJ0ID0gYklzQ2hhcnQgPT09IFwidHJ1ZVwiIHx8IGJJc0NoYXJ0ID09PSB0cnVlO1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyICYmIEFycmF5LmlzQXJyYXkoYUlnbm9yZWRGaWVsZHMpICYmIGFJZ25vcmVkRmllbGRzLmxlbmd0aCA+IDAgJiYgYklzQ2hhcnQpIHtcblx0XHRcdFx0Y29uc3QgYUlnbm9yZWRMYWJlbHMgPSBNZXNzYWdlU3RyaXAuZ2V0TGFiZWxzKFxuXHRcdFx0XHRcdGFJZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdG9GaWx0ZXJCYXIuZGF0YShcImVudGl0eVR5cGVcIiksXG5cdFx0XHRcdFx0b0ZpbHRlckJhcixcblx0XHRcdFx0XHRnZXRSZXNvdXJjZU1vZGVsKG9GaWx0ZXJCYXIpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGJJc1NlYXJjaElnbm9yZWQgPSAhb0FwcGx5U3VwcG9ydGVkLmVuYWJsZVNlYXJjaDtcblx0XHRcdFx0c1RleHQgPSBiSXNDaGFydFxuXHRcdFx0XHRcdD8gTWVzc2FnZVN0cmlwLmdldEFMUFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJCYXIsIGJJc1NlYXJjaElnbm9yZWQpXG5cdFx0XHRcdFx0OiBNZXNzYWdlU3RyaXAuZ2V0VGV4dChhSWdub3JlZExhYmVscywgb0ZpbHRlckJhciwgXCJcIik7XG5cdFx0XHRcdHJldHVybiBzVGV4dDtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0b25QYWdlUmVhZHkobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGlmIChtUGFyYW1ldGVycy5mb3JjZUZvY3VzKSB7XG5cdFx0XHR0aGlzLl9zZXRJbml0aWFsRm9jdXMoKTtcblx0XHR9XG5cdFx0Ly8gUmVtb3ZlIHRoZSBoYW5kbGVyIG9uIGJhY2sgbmF2aWdhdGlvbiB0aGF0IGRpc3BsYXlzIERyYWZ0IGNvbmZpcm1hdGlvblxuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKHVuZGVmaW5lZCk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSBjb250ZW50IG9mIGEgY3VzdG9tIHZpZXcgdXNlZCBpbiBhIGxpc3QgcmVwb3J0IG5lZWRzIHRvIGJlIHJlZnJlc2hlZC5cblx0ICogVGhpcyBoYXBwZW5zIGVpdGhlciB3aGVuIHRoZXJlIGlzIGEgY2hhbmdlIG9uIHRoZSBGaWx0ZXJCYXIgYW5kIHRoZSBzZWFyY2ggaXMgdHJpZ2dlcmVkLFxuXHQgKiBvciB3aGVuIGEgdGFiIHdpdGggY3VzdG9tIGNvbnRlbnQgaXMgc2VsZWN0ZWQuXG5cdCAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVyd3JpdHRlbiBieSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gaW4gY2FzZSBvZiBjdXN0b21pemF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnMgTWFwIGNvbnRhaW5pbmcgdGhlIGZpbHRlciBjb25kaXRpb25zIG9mIHRoZSBGaWx0ZXJCYXIsIHRoZSBjdXJyZW50VGFiSURcblx0ICogYW5kIHRoZSB2aWV3IHJlZnJlc2ggY2F1c2UgKHRhYkNoYW5nZWQgb3Igc2VhcmNoKS5cblx0ICogVGhlIG1hcCBsb29rcyBsaWtlIHRoaXM6XG5cdCAqIDxjb2RlPjxwcmU+XG5cdCAqIFx0e1xuXHQgKiBcdFx0ZmlsdGVyQ29uZGl0aW9uczoge1xuXHQgKiBcdFx0XHRDb3VudHJ5OiBbXG5cdCAqIFx0XHRcdFx0e1xuXHQgKiBcdFx0XHRcdFx0b3BlcmF0b3I6IFwiRVFcIlxuXHQgKlx0XHRcdFx0XHR2YWxpZGF0ZWQ6IFwiTm90VmFsaWRhdGVkXCJcblx0ICpcdFx0XHRcdFx0dmFsdWVzOiBbXCJHZXJtYW55XCIsIC4uLl1cblx0ICogXHRcdFx0XHR9LFxuXHQgKiBcdFx0XHRcdC4uLlxuXHQgKiBcdFx0XHRdXG5cdCAqIFx0XHRcdC4uLlxuXHQgKiBcdFx0fSxcblx0ICpcdFx0Y3VycmVudFRhYklkOiBcImZlOjpDdXN0b21UYWI6OnRhYjFcIixcblx0ICpcdFx0cmVmcmVzaENhdXNlOiBcInRhYkNoYW5nZWRcIiB8IFwic2VhcmNoXCJcblx0ICpcdH1cblx0ICogPC9wcmU+PC9jb2RlPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0b25WaWV3TmVlZHNSZWZyZXNoKG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHQvKiBUbyBiZSBvdmVycmlkZW4gKi9cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgY2FsbGVkIHdoZW4gYSBmaWx0ZXIgb3Igc2VhcmNoIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgaW4gdGhlIEZpbHRlckJhcixcblx0ICogYnV0IGhhcyBub3QgYmVlbiB2YWxpZGF0ZWQgeWV0IGJ5IHRoZSBlbmQgdXNlciAod2l0aCB0aGUgJ0dvJyBvciAnU2VhcmNoJyBidXR0b24pLlxuXHQgKiBUeXBpY2FsbHksIHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IHRhYiBpcyBncmV5ZWQgb3V0IHVudGlsIHRoZSBmaWx0ZXJzIGFyZSB2YWxpZGF0ZWQuXG5cdCAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVyd3JpdHRlbiBieSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gaW4gY2FzZSBvZiBjdXN0b21pemF0aW9uLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uUGVuZGluZ0ZpbHRlcnMoKSB7XG5cdFx0LyogVG8gYmUgb3ZlcnJpZGVuICovXG5cdH1cblxuXHRnZXRDdXJyZW50RW50aXR5U2V0KCkge1xuXHRcdHJldHVybiB0aGlzLl9nZXRUYWJsZSgpPy5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIikuc2xpY2UoMSk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSAnQ2xlYXInIGJ1dHRvbiBvbiB0aGUgRmlsdGVyQmFyIGlzIHByZXNzZWQuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0b25BZnRlckNsZWFyKCkge1xuXHRcdC8qIFRvIGJlIG92ZXJyaWRlbiAqL1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIGluaXRpYXRlcyB0aGUgdXBkYXRlIG9mIHRoZSBlbmFibGVkIHN0YXRlIG9mIHRoZSBEYXRhRmllbGRGb3JBY3Rpb24gYW5kIHRoZSB2aXNpYmxlIHN0YXRlIG9mIHRoZSBEYXRhRmllbGRGb3JJQk4gYnV0dG9ucy5cblx0ICpcblx0ICogQHBhcmFtIGFUYWJsZXMgQXJyYXkgb2YgdGFibGVzIGluIHRoZSBsaXN0IHJlcG9ydFxuXHQgKi9cblx0X3VwZGF0ZVRhYmxlQWN0aW9ucyhhVGFibGVzOiBhbnkpIHtcblx0XHRsZXQgYUlCTkFjdGlvbnM6IGFueVtdID0gW107XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0YUlCTkFjdGlvbnMgPSBDb21tb25VdGlscy5nZXRJQk5BY3Rpb25zKG9UYWJsZSwgYUlCTkFjdGlvbnMpO1xuXHRcdFx0Ly8gVXBkYXRlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiBEYXRhRmllbGRGb3JBY3Rpb24gYnV0dG9ucyBvbiB0YWJsZSB0b29sYmFyXG5cdFx0XHQvLyBUaGUgc2FtZSBpcyBhbHNvIHBlcmZvcm1lZCBvbiBUYWJsZSBzZWxlY3Rpb25DaGFuZ2UgZXZlbnRcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLFxuXHRcdFx0XHRvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gSlNPTi5wYXJzZShcblx0XHRcdFx0XHRDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhKG9UYWJsZSwgXCJvcGVyYXRpb25BdmFpbGFibGVNYXBcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGFTZWxlY3RlZENvbnRleHRzID0gb1RhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKTtcblxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VsZWN0ZWRDb250ZXh0c1wiLCBhU2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKTtcblx0XHRcdC8vIFJlZnJlc2ggZW5hYmxlbWVudCBvZiBkZWxldGUgYnV0dG9uXG5cdFx0XHREZWxldGVIZWxwZXIudXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMob0ludGVybmFsTW9kZWxDb250ZXh0LCBhU2VsZWN0ZWRDb250ZXh0cyk7XG5cblx0XHRcdEFjdGlvblJ1bnRpbWUuc2V0QWN0aW9uRW5hYmxlbWVudChvSW50ZXJuYWxNb2RlbENvbnRleHQsIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAsIGFTZWxlY3RlZENvbnRleHRzLCBcInRhYmxlXCIpO1xuXHRcdH0pO1xuXHRcdENvbW1vblV0aWxzLnVwZGF0ZURhdGFGaWVsZEZvcklCTkJ1dHRvbnNWaXNpYmlsaXR5KGFJQk5BY3Rpb25zLCB0aGlzLmdldFZpZXcoKSk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2Qgc2Nyb2xscyB0byBhIHNwZWNpZmljIHJvdyBvbiBhbGwgdGhlIGF2YWlsYWJsZSB0YWJsZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUm93UGF0aCBUaGUgcGF0aCBvZiB0aGUgdGFibGUgcm93IGNvbnRleHQgdG8gYmUgc2Nyb2xsZWQgdG9cblx0ICovXG5cdF9zY3JvbGxUYWJsZXNUb1JvdyhzUm93UGF0aDogc3RyaW5nKSB7XG5cdFx0dGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0VGFibGVTY3JvbGxlci5zY3JvbGxUYWJsZVRvUm93KG9UYWJsZSwgc1Jvd1BhdGgpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGluaXRpYWwgZm9jdXMgaW4gYSBsaXN0IHJlcG9ydCBiYXNlZCBvbiB0aGUgVXNlciBFeHBlcmllbmNlIGd1aWRlbGluZXMuXG5cdCAqXG5cdCAqL1xuXHRfc2V0SW5pdGlhbEZvY3VzKCkge1xuXHRcdGNvbnN0IGR5bmFtaWNQYWdlID0gdGhpcy5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sKCksXG5cdFx0XHRpc0hlYWRlckV4cGFuZGVkID0gZHluYW1pY1BhZ2UuZ2V0SGVhZGVyRXhwYW5kZWQoKSxcblx0XHRcdGZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKSBhcyBhbnk7XG5cdFx0aWYgKGZpbHRlckJhciAmJiAhdGhpcy5faXNGaWx0ZXJCYXJIaWRkZW5Vc2VkKCkpIHtcblx0XHRcdC8vRW5hYmxpbmcgbWFuZGF0b3J5IGZpbHRlciBmaWVsZHMgbWVzc2FnZSBkaWFsb2dcblx0XHRcdGlmICghZmlsdGVyQmFyLmdldFNob3dNZXNzYWdlcygpKSB7XG5cdFx0XHRcdGZpbHRlckJhci5zZXRTaG93TWVzc2FnZXModHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaXNIZWFkZXJFeHBhbmRlZCkge1xuXHRcdFx0XHRjb25zdCBmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQgPSBmaWx0ZXJCYXIuZ2V0RmlsdGVySXRlbXMoKS5maW5kKGZ1bmN0aW9uIChvRmlsdGVySXRlbTogYW55KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9GaWx0ZXJJdGVtLmdldFJlcXVpcmVkKCkgJiYgb0ZpbHRlckl0ZW0uZ2V0Q29uZGl0aW9ucygpLmxlbmd0aCA9PT0gMDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vRm9jdXNpbmcgb24gdGhlIGZpcnN0IGVtcHR5IG1hbmRhdG9yeSBmaWx0ZXIgZmllbGQsIG9yIG9uIHRoZSBmaXJzdCBmaWx0ZXIgZmllbGQgaWYgdGhlIHRhYmxlIGRhdGEgaXMgbG9hZGVkXG5cdFx0XHRcdGlmIChmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQpIHtcblx0XHRcdFx0XHRmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQuZm9jdXMoKTtcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLl9pc0luaXRMb2FkRW5hYmxlZCgpICYmIGZpbHRlckJhci5nZXRGaWx0ZXJJdGVtcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHQvL0JDUDogMjM4MDAwODQwNiBBZGQgY2hlY2sgZm9yIGF2YWlsYWJsZSBmaWx0ZXJJdGVtc1xuXHRcdFx0XHRcdGZpbHRlckJhci5nZXRGaWx0ZXJJdGVtcygpWzBdLmZvY3VzKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly9Gb2N1c2luZyBvbiB0aGUgR28gYnV0dG9uXG5cdFx0XHRcdFx0dGhpcy5nZXRWaWV3KCkuYnlJZChgJHt0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sSWQoKX0tYnRuU2VhcmNoYCk/LmZvY3VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAodGhpcy5faXNJbml0TG9hZEVuYWJsZWQoKSkge1xuXHRcdFx0XHR0aGlzLl9nZXRUYWJsZSgpXG5cdFx0XHRcdFx0Py5mb2N1c1JvdygwKVxuXHRcdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyBpbml0aWFsIGZvY3VzIG9uIHRoZSB0YWJsZSBcIiwgZXJyb3IpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9nZXRUYWJsZSgpXG5cdFx0XHRcdD8uZm9jdXNSb3coMClcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyBpbml0aWFsIGZvY3VzIG9uIHRoZSB0YWJsZSBcIiwgZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0RW50cnkgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1hbmlmZXN0RW50cnkoXCJzYXAuYXBwXCIpO1xuXHRcdHJldHVybiB7XG5cdFx0XHR0aXRsZTogb01hbmlmZXN0RW50cnkudGl0bGUsXG5cdFx0XHRzdWJ0aXRsZTogb01hbmlmZXN0RW50cnkuc3ViVGl0bGUgfHwgXCJcIixcblx0XHRcdGludGVudDogXCJcIixcblx0XHRcdGljb246IFwiXCJcblx0XHR9O1xuXHR9XG5cblx0X2dldEZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmJ5SWQodGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbElkKCkpIGFzIEZpbHRlckJhcjtcblx0fVxuXG5cdF9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmJ5SWQodGhpcy5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sSWQoKSkgYXMgRHluYW1pY1BhZ2U7XG5cdH1cblxuXHRfZ2V0QWRhcHRhdGlvbkZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0Ly8gSWYgdGhlIGFkYXB0YXRpb24gZmlsdGVyIGJhciBpcyBwYXJ0IG9mIHRoZSBET00gdHJlZSwgdGhlIFwiQWRhcHQgRmlsdGVyXCIgZGlhbG9nIGlzIG9wZW4sXG5cdFx0Ly8gYW5kIHdlIHJldHVybiB0aGUgYWRhcHRhdGlvbiBmaWx0ZXIgYmFyIGFzIGFuIGFjdGl2ZSBjb250cm9sICh2aXNpYmxlIGZvciB0aGUgdXNlcilcblx0XHRjb25zdCBhZGFwdGF0aW9uRmlsdGVyQmFyID0gKHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKSBhcyBhbnkpLmdldEluYnVpbHRGaWx0ZXIoKTtcblx0XHRyZXR1cm4gYWRhcHRhdGlvbkZpbHRlckJhcj8uZ2V0UGFyZW50KCkgPyBhZGFwdGF0aW9uRmlsdGVyQmFyIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0YXN5bmMgX2FwcGx5QXBwU3RhdGUodmlld0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldEFwcFN0YXRlSGFuZGxlcigpLmFwcGx5QXBwU3RhdGUodmlld0lkLCB0aGlzLmdldFZpZXcoKSk7XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0b0ZpbHRlckJhci5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuX2lzRmlsdGVyQmFySGlkZGVuKCkpIHtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiLCBmYWxzZSk7XG5cdFx0XHRpZiAodGhpcy5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0XHR0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCkuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0X2dldFNlZ21lbnRlZEJ1dHRvbihzQ29udHJvbDogYW55KSB7XG5cdFx0Y29uc3Qgc1NlZ21lbnRlZEJ1dHRvbklkID0gKHNDb250cm9sID09PSBcIkNoYXJ0XCIgPyB0aGlzLmdldENoYXJ0Q29udHJvbCgpIDogdGhpcy5fZ2V0VGFibGUoKSk/LmRhdGEoXCJzZWdtZW50ZWRCdXR0b25JZFwiKTtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZChzU2VnbWVudGVkQnV0dG9uSWQpO1xuXHR9XG5cblx0X2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoc1BhdGg6IHN0cmluZykge1xuXHRcdGNvbnN0IGNvbnRyb2xJZCA9IHRoaXMuX2dldFBhZ2VNb2RlbCgpPy5nZXRQcm9wZXJ0eShzUGF0aCk7XG5cdFx0cmV0dXJuIGNvbnRyb2xJZCA/IHRoaXMuZ2V0VmlldygpLmJ5SWQoY29udHJvbElkKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdF9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZHluYW1pY0xpc3RSZXBvcnRJZFwiKSB8fCBcIlwiO1xuXHR9XG5cblx0X2dldEZpbHRlckJhckNvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZmlsdGVyQmFySWRcIikgfHwgXCJcIjtcblx0fVxuXG5cdGdldENoYXJ0Q29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShcIi9zaW5nbGVDaGFydElkXCIpO1xuXHR9XG5cblx0X2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0Y29uc3Qgc1Zpc3VhbEZpbHRlckJhcklkID0gU3RhYmxlSWRIZWxwZXIuZ2VuZXJhdGUoW1widmlzdWFsRmlsdGVyXCIsIHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2xJZCgpXSk7XG5cdFx0cmV0dXJuIHNWaXN1YWxGaWx0ZXJCYXJJZCAmJiB0aGlzLmdldFZpZXcoKS5ieUlkKHNWaXN1YWxGaWx0ZXJCYXJJZCk7XG5cdH1cblxuXHRfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvdmFyaWFudE1hbmFnZW1lbnQvaWRcIik7XG5cdH1cblxuXHRfZ2V0TXVsdGlNb2RlQ29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjpUYWJNdWx0aXBsZU1vZGU6OkNvbnRyb2xcIikgYXMgTXVsdGlwbGVNb2RlQ29udHJvbDtcblx0fVxuXG5cdF9nZXRJY29uVGFiQmFyKCk6IEljb25UYWJCYXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmdldFZpZXcoKS5ieUlkKFwiZmU6OlRhYk11bHRpcGxlTW9kZVwiKSBhcyBJY29uVGFiQmFyO1xuXHR9XG5cblx0X2dldFRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0Y29uc3Qgb0NvbnRyb2wgPSB0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCk/LmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCk/LmNvbnRlbnQ7XG5cdFx0XHRyZXR1cm4gb0NvbnRyb2w/LmlzQShcInNhcC51aS5tZGMuVGFibGVcIikgPyAob0NvbnRyb2wgYXMgVGFibGUpIDogdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShcIi9zaW5nbGVUYWJsZUlkXCIpIGFzIFRhYmxlIHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRDb250cm9scyhzS2V5PzogYW55KSB7XG5cdFx0aWYgKHRoaXMuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGNvbnN0IGFDb250cm9sczogYW55W10gPSBbXTtcblx0XHRcdGNvbnN0IG9UYWJNdWx0aU1vZGUgPSB0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCkuY29udGVudDtcblx0XHRcdG9UYWJNdWx0aU1vZGUuZ2V0SXRlbXMoKS5mb3JFYWNoKChvSXRlbTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gdGhpcy5nZXRWaWV3KCkuYnlJZChvSXRlbS5nZXRLZXkoKSk7XG5cdFx0XHRcdGlmIChvQ29udHJvbCAmJiBzS2V5KSB7XG5cdFx0XHRcdFx0aWYgKG9JdGVtLmdldEtleSgpLmluZGV4T2YoYGZlOjoke3NLZXl9YCkgPiAtMSkge1xuXHRcdFx0XHRcdFx0YUNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChvQ29udHJvbCAhPT0gdW5kZWZpbmVkICYmIG9Db250cm9sICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0YUNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBhQ29udHJvbHM7XG5cdFx0fSBlbHNlIGlmIChzS2V5ID09PSBcIkNoYXJ0XCIpIHtcblx0XHRcdGNvbnN0IG9DaGFydCA9IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCk7XG5cdFx0XHRyZXR1cm4gb0NoYXJ0ID8gW29DaGFydF0gOiBbXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5fZ2V0VGFibGUoKTtcblx0XHRcdHJldHVybiBvVGFibGUgPyBbb1RhYmxlXSA6IFtdO1xuXHRcdH1cblx0fVxuXG5cdF9nZXREZWZhdWx0UGF0aCgpIHtcblx0XHRjb25zdCBkZWZhdWx0UGF0aCA9IExpc3RSZXBvcnRUZW1wbGF0aW5nLmdldERlZmF1bHRQYXRoKHRoaXMuX2dldFBhZ2VNb2RlbCgpPy5nZXRQcm9wZXJ0eShcIi92aWV3c1wiKSB8fCBbXSk7XG5cdFx0c3dpdGNoIChkZWZhdWx0UGF0aCkge1xuXHRcdFx0Y2FzZSBcInByaW1hcnlcIjpcblx0XHRcdFx0cmV0dXJuIFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRjYXNlIFwic2Vjb25kYXJ5XCI6XG5cdFx0XHRcdHJldHVybiBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlO1xuXHRcdFx0Y2FzZSBcImJvdGhcIjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBUZW1wbGF0ZUNvbnRlbnRWaWV3Lkh5YnJpZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGtub3cgaWYgTGlzdFJlcG9ydCBpcyBjb25maWd1cmVkIHdpdGggTXVsdGlwbGUgVGFibGUgbW9kZS5cblx0ICpcblx0ICogQHJldHVybnMgSXMgTXVsdGlwbGUgVGFibGUgbW9kZSBzZXQ/XG5cdCAqL1xuXHRfaXNNdWx0aU1vZGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5fZ2V0UGFnZU1vZGVsKCk/LmdldFByb3BlcnR5KFwiL211bHRpVmlld3NDb250cm9sXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBrbm93IGlmIExpc3RSZXBvcnQgaXMgY29uZmlndXJlZCB0byBsb2FkIGRhdGEgYXQgc3RhcnQgdXAuXG5cdCAqXG5cdCAqIEByZXR1cm5zIElzIEluaXRMb2FkIGVuYWJsZWQ/XG5cdCAqL1xuXHRfaXNJbml0TG9hZEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaW5pdExvYWRNb2RlID0gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5pbml0aWFsTG9hZDtcblx0XHRyZXR1cm4gaW5pdExvYWRNb2RlID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZDtcblx0fVxuXG5cdF9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvaGFzTXVsdGlWaXN1YWxpemF0aW9uc1wiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gc3VzcGVuZCBzZWFyY2ggb24gdGhlIGZpbHRlciBiYXIuIFRoZSBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0aGUgbWFuaWZlc3QgY29uZmlndXJhdGlvbiBJbml0TG9hZCAtIERpc2FibGVkL0F1dG8uXG5cdCAqIEl0IGlzIGVuYWJsZWQgbGF0ZXIgd2hlbiB0aGUgdmlldyBzdGF0ZSBpcyBzZXQsIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gcmVhbGl6ZSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzLlxuXHQgKi9cblx0X2Rpc2FibGVJbml0TG9hZCgpIHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Ly8gY2hlY2sgZm9yIGZpbHRlciBiYXIgaGlkZGVuXG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0ZmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24odHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgYnkgZmxleCB0byBkZXRlcm1pbmUgaWYgdGhlIGFwcGx5QXV0b21hdGljYWxseSBzZXR0aW5nIG9uIHRoZSB2YXJpYW50IGlzIHZhbGlkLlxuXHQgKiBDYWxsZWQgb25seSBmb3IgU3RhbmRhcmQgVmFyaWFudCBhbmQgb25seSB3aGVuIHRoZXJlIGlzIGRpc3BsYXkgdGV4dCBzZXQgZm9yIGFwcGx5QXV0b21hdGljYWxseSAoRkUgb25seSBzZXRzIGl0IGZvciBBdXRvKS5cblx0ICpcblx0ICogQHJldHVybnMgQm9vbGVhbiB0cnVlIGlmIGRhdGEgc2hvdWxkIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LCBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdF9hcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCgpIHtcblx0XHQvLyBXZSBhbHdheXMgcmV0dXJuIGZhbHNlIGFuZCB0YWtlIGNhcmUgb2YgaXQgd2hlbiB2aWV3IHN0YXRlIGlzIHNldFxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25maWd1cmUgdGhlIHNldHRpbmdzIGZvciBpbml0aWFsIGxvYWQgYmFzZWQgb25cblx0ICogLSBtYW5pZmVzdCBzZXR0aW5nIGluaXRMb2FkIC0gRW5hYmxlZC9EaXNhYmxlZC9BdXRvXG5cdCAqIC0gdXNlcidzIHNldHRpbmcgb2YgYXBwbHlBdXRvbWF0aWNhbGx5IG9uIHZhcmlhbnRcblx0ICogLSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzXG5cdCAqIFdlIGRpc2FibGUgdGhlIGZpbHRlciBiYXIgc2VhcmNoIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuYWJsZSBpdCB3aGVuIHZpZXcgc3RhdGUgaXMgc2V0LlxuXHQgKi9cblx0X3NldEluaXRMb2FkKCkge1xuXHRcdC8vIGlmIGluaXRMb2FkIGlzIERpc2FibGVkIG9yIEF1dG8sIHN3aXRjaCBvZmYgZmlsdGVyIGJhciBzZWFyY2ggdGVtcG9yYXJpbHkgYXQgc3RhcnRcblx0XHRpZiAoIXRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkpIHtcblx0XHRcdHRoaXMuX2Rpc2FibGVJbml0TG9hZCgpO1xuXHRcdH1cblx0XHQvLyBzZXQgaG9vayBmb3IgZmxleCBmb3Igd2hlbiBzdGFuZGFyZCB2YXJpYW50IGlzIHNldCAoYXQgc3RhcnQgb3IgYnkgdXNlciBhdCBydW50aW1lKVxuXHRcdC8vIHJlcXVpcmVkIHRvIG92ZXJyaWRlIHRoZSB1c2VyIHNldHRpbmcgJ2FwcGx5IGF1dG9tYXRpY2FsbHknIGJlaGF2aW91ciBpZiB0aGVyZSBhcmUgbm8gZmlsdGVyc1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50SWQ6IGFueSA9IExpc3RSZXBvcnRUZW1wbGF0aW5nLmdldFZhcmlhbnRCYWNrUmVmZXJlbmNlKFxuXHRcdFx0dGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YSxcblx0XHRcdHRoaXMuX2dldFBhZ2VNb2RlbCgpPy5nZXREYXRhKCkgYXMgTGlzdFJlcG9ydERlZmluaXRpb25cblx0XHQpO1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50ID0gdmFyaWFudE1hbmFnZW1lbnRJZCAmJiB0aGlzLmdldFZpZXcoKS5ieUlkKHZhcmlhbnRNYW5hZ2VtZW50SWQpO1xuXHRcdGlmICh2YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQucmVnaXN0ZXJBcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCh0aGlzLl9hcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdH1cblxuXHRfc2V0U2hhcmVNb2RlbCgpIHtcblx0XHQvLyBUT0RPOiBkZWFjdGl2YXRlZCBmb3Igbm93IC0gY3VycmVudGx5IHRoZXJlIGlzIG5vIF90ZW1wbFByaXYgYW55bW9yZSwgdG8gYmUgZGlzY3Vzc2VkXG5cdFx0Ly8gdGhpcyBtZXRob2QgaXMgY3VycmVudGx5IG5vdCBjYWxsZWQgYW55bW9yZSBmcm9tIHRoZSBpbml0IG1ldGhvZFxuXG5cdFx0Y29uc3QgZm5HZXRVc2VyID0gT2JqZWN0UGF0aC5nZXQoXCJzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRVc2VyXCIpO1xuXHRcdC8vdmFyIG9NYW5pZmVzdCA9IHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKS5nZXRBcHBDb21wb25lbnQoKS5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWlcIik7XG5cdFx0Ly92YXIgc0Jvb2ttYXJrSWNvbiA9IChvTWFuaWZlc3QgJiYgb01hbmlmZXN0Lmljb25zICYmIG9NYW5pZmVzdC5pY29ucy5pY29uKSB8fCBcIlwiO1xuXG5cdFx0Ly9zaGFyZU1vZGVsOiBIb2xkcyBhbGwgdGhlIHNoYXJpbmcgcmVsZXZhbnQgaW5mb3JtYXRpb24gYW5kIGluZm8gdXNlZCBpbiBYTUwgdmlld1xuXHRcdGNvbnN0IG9TaGFyZUluZm8gPSB7XG5cdFx0XHRib29rbWFya1RpdGxlOiBkb2N1bWVudC50aXRsZSwgLy9UbyBuYW1lIHRoZSBib29rbWFyayBhY2NvcmRpbmcgdG8gdGhlIGFwcCB0aXRsZS5cblx0XHRcdGJvb2ttYXJrQ3VzdG9tVXJsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGNvbnN0IHNIYXNoID0gaGFzaGVyLmdldEhhc2goKTtcblx0XHRcdFx0cmV0dXJuIHNIYXNoID8gYCMke3NIYXNofWAgOiB3aW5kb3cubG9jYXRpb24uaHJlZjtcblx0XHRcdH0sXG5cdFx0XHQvKlxuXHRcdFx0XHRcdFx0XHRUbyBiZSBhY3RpdmF0ZWQgb25jZSB0aGUgRkxQIHNob3dzIHRoZSBjb3VudCAtIHNlZSBjb21tZW50IGFib3ZlXG5cdFx0XHRcdFx0XHRcdGJvb2ttYXJrU2VydmljZVVybDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly92YXIgb1RhYmxlID0gb1RhYmxlLmdldElubmVyVGFibGUoKTsgb1RhYmxlIGlzIGFscmVhZHkgdGhlIHNhcC5mZSB0YWJsZSAoYnV0IG5vdCB0aGUgaW5uZXIgb25lKVxuXHRcdFx0XHRcdFx0XHRcdC8vIHdlIHNob3VsZCB1c2UgdGFibGUuZ2V0TGlzdEJpbmRpbmdJbmZvIGluc3RlYWQgb2YgdGhlIGJpbmRpbmdcblx0XHRcdFx0XHRcdFx0XHR2YXIgb0JpbmRpbmcgPSBvVGFibGUuZ2V0QmluZGluZyhcInJvd3NcIikgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb0JpbmRpbmcgPyBmbkdldERvd25sb2FkVXJsKG9CaW5kaW5nKSA6IFwiXCI7XG5cdFx0XHRcdFx0XHRcdH0sKi9cblx0XHRcdGlzU2hhcmVJbkphbUFjdGl2ZTogISFmbkdldFVzZXIgJiYgZm5HZXRVc2VyKCkuaXNKYW1BY3RpdmUoKVxuXHRcdH07XG5cblx0XHRjb25zdCBvVGVtcGxhdGVQcml2YXRlTW9kZWwgPSB0aGlzLmdldE93bmVyQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJfdGVtcGxQcml2XCIpIGFzIEpTT05Nb2RlbDtcblx0XHRvVGVtcGxhdGVQcml2YXRlTW9kZWwuc2V0UHJvcGVydHkoXCIvbGlzdFJlcG9ydC9zaGFyZVwiLCBvU2hhcmVJbmZvKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gdXBkYXRlIHRoZSBsb2NhbCBVSSBtb2RlbCBvZiB0aGUgcGFnZSB3aXRoIHRoZSBmaWVsZHMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgdG8gdGhlIGZpbHRlciBiYXIgKHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIEFMUCBzY2VuYXJpbykuXG5cdCAqXG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgVGhlIGludGVybmFsIG1vZGVsIGNvbnRleHRcblx0ICogQHBhcmFtIG9GaWx0ZXJCYXIgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdF91cGRhdGVBTFBOb3RBcHBsaWNhYmxlRmllbGRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsIG9GaWx0ZXJCYXI6IEZpbHRlckJhcikge1xuXHRcdGNvbnN0IG1DYWNoZTogYW55ID0ge307XG5cdFx0Y29uc3QgaWdub3JlZEZpZWxkczogYW55ID0ge30sXG5cdFx0XHRhVGFibGVzID0gdGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKSxcblx0XHRcdGFDaGFydHMgPSB0aGlzLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpO1xuXG5cdFx0aWYgKCFhVGFibGVzLmxlbmd0aCB8fCAhYUNoYXJ0cy5sZW5ndGgpIHtcblx0XHRcdC8vIElmIHRoZXJlJ3Mgbm90IGEgdGFibGUgYW5kIGEgY2hhcnQsIHdlJ3JlIG5vdCBpbiB0aGUgQUxQIGNhc2Vcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGb3IgdGhlIG1vbWVudCwgdGhlcmUncyBub3RoaW5nIGZvciB0YWJsZXMuLi5cblx0XHRhQ2hhcnRzLmZvckVhY2goZnVuY3Rpb24gKG9DaGFydDogYW55KSB7XG5cdFx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gb0NoYXJ0LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKSxcblx0XHRcdFx0c0NoYXJ0RW50aXR5U2V0ID0gc0NoYXJ0RW50aXR5UGF0aC5zbGljZSgxKSxcblx0XHRcdFx0c0NhY2hlS2V5ID0gYCR7c0NoYXJ0RW50aXR5U2V0fUNoYXJ0YDtcblx0XHRcdGlmICghbUNhY2hlW3NDYWNoZUtleV0pIHtcblx0XHRcdFx0bUNhY2hlW3NDYWNoZUtleV0gPSBGaWx0ZXJVdGlscy5nZXROb3RBcHBsaWNhYmxlRmlsdGVycyhvRmlsdGVyQmFyLCBvQ2hhcnQpO1xuXHRcdFx0fVxuXHRcdFx0aWdub3JlZEZpZWxkc1tzQ2FjaGVLZXldID0gbUNhY2hlW3NDYWNoZUtleV07XG5cdFx0fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29udHJvbHMvaWdub3JlZEZpZWxkc1wiLCBpZ25vcmVkRmllbGRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm92aWRlcyB0aGUgc2V0dGluZyB3aGV0aGVyIEZpbHRlckJhciBpcyBoaWRkZW4gYmFzZWQgb24gdGhlIG1hbmlmZXN0IHNldHRpbmcgJ2hpZGVGaWx0ZXJCYXInLlxuXHQgKiBTaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIF9pc0ZpbHRlckJhckhpZGRlblVzZWQgYXMgaXQgbWF5IGhhdmUgb3ZlcnJpZGRlbiB0aGlzIHNldHRpbmcuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIEZpbHRlckJhciBpcyBoaWRkZW4sIGZhbHNlIGlmIHVua25vd25cblx0ICovXG5cdF9pc0ZpbHRlckJhckhpZGRlbigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGEpLmhpZGVGaWx0ZXJCYXIgfHwgZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgdGhlIHNldHRpbmcgd2hldGhlciBGaWx0ZXJCYXIgaXMgaGlkZGVuIGJ1dCBzdGlsbCBleGlzdHMgYmFzZWQgb24gdGhlIG1hbmlmZXN0IHNldHRpbmcgJ3VzZUhpZGRlbkZpbHRlckJhcicuXG5cdCAqIFNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggX2lzRmlsdGVyQmFySGlkZGVuIGFzIGl0IGNhbiBhbHNvIGhpZGUgdGhlIEZpbHRlckJhci5cblx0ICpcblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgRmlsdGVyQmFyIGlzIGhpZGRlbiwgZmFsc2UgaWYgdW5rbm93blxuXHQgKi9cblx0X2lzRmlsdGVyQmFySGlkZGVuVXNlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGEpLnVzZUhpZGRlbkZpbHRlckJhciB8fCBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBseUF1dG9tYXRpY2FsbHlPblZhcmlhbnQoVmFyaWFudE1hbmFnZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBCb29sZWFuIHtcblx0XHRpZiAoIVZhcmlhbnRNYW5hZ2VtZW50IHx8ICFrZXkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgdmFyaWFudHMgPSBWYXJpYW50TWFuYWdlbWVudC5nZXRWYXJpYW50cygpO1xuXHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50ID0gdmFyaWFudHMuZmluZChmdW5jdGlvbiAodmFyaWFudDogYW55KSB7XG5cdFx0XHRyZXR1cm4gdmFyaWFudCAmJiB2YXJpYW50LmtleSA9PT0ga2V5O1xuXHRcdH0pO1xuXHRcdHJldHVybiAoY3VycmVudFZhcmlhbnQgJiYgY3VycmVudFZhcmlhbnQuZXhlY3V0ZU9uU2VsZWN0KSB8fCBmYWxzZTtcblx0fVxuXG5cdF9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaChvVk06IGFueSkge1xuXHRcdGlmIChcblx0XHRcdCh0aGlzLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIGFueSkuaW5pdGlhbExvYWQgPT09IEluaXRpYWxMb2FkTW9kZS5BdXRvICYmXG5cdFx0XHQoIW9WTSB8fCBvVk0uZ2V0U3RhbmRhcmRWYXJpYW50S2V5KCkgPT09IG9WTS5nZXRDdXJyZW50VmFyaWFudEtleSgpKVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyKSB7XG5cdFx0XHRcdGNvbnN0IG9Db25kaXRpb25zID0gb0ZpbHRlckJhci5nZXRDb25kaXRpb25zKCk7XG5cdFx0XHRcdGZvciAoY29uc3Qgc0tleSBpbiBvQ29uZGl0aW9ucykge1xuXHRcdFx0XHRcdC8vIGlnbm9yZSBmaWx0ZXJzIHN0YXJ0aW5nIHdpdGggJCAoZS5nLiAkc2VhcmNoLCAkZWRpdFN0YXRlKVxuXHRcdFx0XHRcdGlmICghc0tleS5zdGFydHNXaXRoKFwiJFwiKSAmJiBBcnJheS5pc0FycmF5KG9Db25kaXRpb25zW3NLZXldKSAmJiBvQ29uZGl0aW9uc1tzS2V5XS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdC8vIGxvYWQgZGF0YSBhcyBwZXIgdXNlcidzIHNldHRpbmcgb2YgYXBwbHlBdXRvbWF0aWNhbGx5IG9uIHRoZSB2YXJpYW50XG5cdFx0XHRcdFx0XHRjb25zdCBzdGFuZGFyZFZhcmlhbnQ6IGFueSA9IG9WTS5nZXRWYXJpYW50cygpLmZpbmQoKHZhcmlhbnQ6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFyaWFudC5rZXkgPT09IG9WTS5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc3RhbmRhcmRWYXJpYW50ICYmIHN0YW5kYXJkVmFyaWFudC5nZXRFeGVjdXRlT25TZWxlY3QoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0X3VwZGF0ZVRhYmxlKG9UYWJsZTogYW55KSB7XG5cdFx0aWYgKCFvVGFibGUuaXNUYWJsZUJvdW5kKCkgfHwgdGhpcy5oYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzKSB7XG5cdFx0XHRvVGFibGUucmViaW5kKCk7XG5cdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRfdXBkYXRlQ2hhcnQob0NoYXJ0OiBhbnkpIHtcblx0XHRjb25zdCBvSW5uZXJDaGFydCA9IG9DaGFydC5nZXRDb250cm9sRGVsZWdhdGUoKS5fZ2V0Q2hhcnQob0NoYXJ0KTtcblx0XHRpZiAoIShvSW5uZXJDaGFydCAmJiBvSW5uZXJDaGFydC5pc0JvdW5kKFwiZGF0YVwiKSkgfHwgdGhpcy5oYXNQZW5kaW5nVGFibGVDaGFuZ2VzKSB7XG5cdFx0XHRvQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkucmViaW5kKG9DaGFydCwgb0lubmVyQ2hhcnQuZ2V0QmluZGluZ0luZm8oXCJkYXRhXCIpKTtcblx0XHRcdHRoaXMuaGFzUGVuZGluZ1RhYmxlQ2hhbmdlcyA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHZpc2liaWxpdHkgb2YgZmlsdGVyIHRvZ2dsZSBidXR0b24uXG5cdCAqXG5cdCAqIEBwYXJhbSBidXR0b25WaXNpYmxlIEZpbHRlciB0b2dnbGUgYnV0dG9uIHZpc2liaWxpdHlcblx0ICovXG5cdHNldEZpbHRlclRvZ2dsZVZpc2liaWxpdHkoYnV0dG9uVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IGZpbHRlckJhcjogRmlsdGVyQmFyID0gdGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGZpbHRlckJhci5nZXRTZWdtZW50ZWRCdXR0b24oKT8uc2V0VmlzaWJsZShidXR0b25WaXNpYmxlKTtcblx0fVxuXG5cdGhhbmRsZXJzID0ge1xuXHRcdG9uRmlsdGVyU2VhcmNoKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyKSB7XG5cdFx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCkuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdFx0ZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0XHR9LFxuXHRcdG9uRmlsdGVyc0NoYW5nZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCBvRmlsdGVyQmFyID0gdGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0XHRcdFx0Ly8gUGVuZGluZyBmaWx0ZXJzIGludG8gRmlsdGVyQmFyIHRvIGJlIHVzZWQgZm9yIGN1c3RvbSB2aWV3c1xuXHRcdFx0XHR0aGlzLm9uUGVuZGluZ0ZpbHRlcnMoKTtcblx0XHRcdFx0Y29uc3QgYXBwbGllZEZpbHRlcnNUZXh0ID0gb0ZpbHRlckJhci5nZXRBc3NpZ25lZEZpbHRlcnNUZXh0KCkuZmlsdGVyc1RleHQ7XG5cdFx0XHRcdGNvbnN0IGFwcGxpZWRGaWx0ZXJCaW5kaW5nID0gYmluZGluZ1BhcnNlcihhcHBsaWVkRmlsdGVyc1RleHQpO1xuXHRcdFx0XHRpZiAoYXBwbGllZEZpbHRlckJpbmRpbmcpIHtcblx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjphcHBsaWVkRmlsdGVyc1RleHRcIikgYXMgVGV4dCB8IHVuZGVmaW5lZCk/LmJpbmRUZXh0KGFwcGxpZWRGaWx0ZXJCaW5kaW5nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjphcHBsaWVkRmlsdGVyc1RleHRcIikgYXMgVGV4dCB8IHVuZGVmaW5lZCk/LnNldFRleHQoYXBwbGllZEZpbHRlcnNUZXh0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChvSW50ZXJuYWxNb2RlbENvbnRleHQgJiYgb0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmRpdGlvbnNCYXNlZFwiKSkge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvSW50ZXJuYWxNb2RlbENvbnRleHQpIHtcblx0XHRcdFx0XHR0aGlzLl9zdG9yZUZpbHRlckJhclNlbGVjdGlvblZhcmlhbnQob0ZpbHRlckJhciwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0b25WYXJpYW50U2VsZWN0ZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50S2V5ID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImtleVwiKTtcblx0XHRcdGNvbnN0IG11bHRpTW9kZUNvbnRyb2wgPSB0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCk7XG5cblx0XHRcdGlmIChtdWx0aU1vZGVDb250cm9sICYmICF2YXJpYW50TWFuYWdlbWVudD8uZ2V0UGFyZW50KCkuaXNBKFwic2FwLnVpLm1kYy5BY3Rpb25Ub29sYmFyXCIpKSB7XG5cdFx0XHRcdC8vTm90IGEgQ29udHJvbCBWYXJpYW50XG5cdFx0XHRcdG11bHRpTW9kZUNvbnRyb2w/LmludmFsaWRhdGVDb250ZW50KCk7XG5cdFx0XHRcdG11bHRpTW9kZUNvbnRyb2w/LnNldEZyZWV6ZUNvbnRlbnQodHJ1ZSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldFRpbWVvdXQgY2F1c2UgdGhlIHZhcmlhbnQgbmVlZHMgdG8gYmUgYXBwbGllZCBiZWZvcmUganVkZ2luZyB0aGUgYXV0byBzZWFyY2ggb3IgdXBkYXRpbmcgdGhlIGFwcCBzdGF0ZVxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdFx0Y29uc3QgZHluYW1pY1BhZ2UgPSB0aGlzLl9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2woKTtcblx0XHRcdFx0Y29uc3QgZmlyc3RFbXB0eU1hbmRhdG9yeUZpZWxkID0gZmlsdGVyQmFyLmdldEZpbHRlckl0ZW1zKCkuZmluZChmdW5jdGlvbiAoZmlsdGVySXRlbSkge1xuXHRcdFx0XHRcdHJldHVybiBmaWx0ZXJJdGVtLmdldFJlcXVpcmVkKCkgJiYgZmlsdGVySXRlbS5nZXRDb25kaXRpb25zKCkubGVuZ3RoID09PSAwO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCkge1xuXHRcdFx0XHRcdGR5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaCh2YXJpYW50TWFuYWdlbWVudCkpIHtcblx0XHRcdFx0XHQvLyB0aGUgYXBwIHN0YXRlIHdpbGwgYmUgdXBkYXRlZCB2aWEgb25TZWFyY2ggaGFuZGxlclxuXHRcdFx0XHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKS5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0XHRcdFx0cmV0dXJuIGZpbHRlckJhckFQSS50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIXRoaXMuX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCh2YXJpYW50TWFuYWdlbWVudCwgY3VycmVudFZhcmlhbnRLZXkpKSB7XG5cdFx0XHRcdFx0bXVsdGlNb2RlQ29udHJvbD8uc2V0RnJlZXplQ29udGVudChmYWxzZSk7XG5cdFx0XHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdFx0XHRcdGR5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAwKTtcblx0XHR9LFxuXHRcdG9uVmFyaWFudFNhdmVkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyKTogdm9pZCB7XG5cdFx0XHQvL1RPRE86IFNob3VsZCByZW1vdmUgdGhpcyBzZXRUaW1lT3V0IG9uY2UgVmFyaWFudCBNYW5hZ2VtZW50IHByb3ZpZGVzIGFuIGFwaSB0byBmZXRjaCB0aGUgY3VycmVudCB2YXJpYW50IGtleSBvbiBzYXZlISEhXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fSxcblx0XHRvblNlYXJjaCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlcik6IHZvaWQge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRjb25zdCBvTWRjQ2hhcnQgPSB0aGlzLmdldENoYXJ0Q29udHJvbCgpO1xuXHRcdFx0Y29uc3QgYkhpZGVEcmFmdCA9IEZpbHRlclV0aWxzLmdldEVkaXRTdGF0ZUlzSGlkZURyYWZ0KG9GaWx0ZXJCYXIuZ2V0Q29uZGl0aW9ucygpKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIGZhbHNlKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhpZGVEcmFmdEluZm9cIiwgYkhpZGVEcmFmdCk7XG5cdFx0XHRjb25zdCBkeW5hbWljUGFnZSA9IHRoaXMuX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpO1xuXHRcdFx0aWYgKCF0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCkpIHtcblx0XHRcdFx0dGhpcy5fdXBkYXRlQUxQTm90QXBwbGljYWJsZUZpZWxkcyhvSW50ZXJuYWxNb2RlbENvbnRleHQsIG9GaWx0ZXJCYXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9NZGNDaGFydCkge1xuXHRcdFx0XHQvLyBkaXNhYmxlIGJvdW5kIGFjdGlvbnMgVE9ETzogdGhpcyBjbGVhcnMgZXZlcnl0aGluZyBmb3IgdGhlIGNoYXJ0P1xuXHRcdFx0XHQob01kY0NoYXJ0LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLnNldFByb3BlcnR5KFwiXCIsIHt9KTtcblxuXHRcdFx0XHRjb25zdCBvUGFnZUludGVybmFsTW9kZWxDb250ZXh0ID0gb01kY0NoYXJ0LmdldEJpbmRpbmdDb250ZXh0KFwicGFnZUludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRjb25zdCBzVGVtcGxhdGVDb250ZW50VmlldyA9IG9QYWdlSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7b1BhZ2VJbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2FscENvbnRlbnRWaWV3YCk7XG5cdFx0XHRcdGlmIChzVGVtcGxhdGVDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkge1xuXHRcdFx0XHRcdHRoaXMuaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcyA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNUZW1wbGF0ZUNvbnRlbnRWaWV3ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlKSB7XG5cdFx0XHRcdFx0dGhpcy5oYXNQZW5kaW5nVGFibGVDaGFuZ2VzID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvL2xvZ2ljIGZvciBleHBhbnNpb24gb3IgY29sbGFwc2Ugb2YgZmlsdGVyIGJhciBzdGFydHNcblx0XHRcdGlmICghRGV2aWNlLnN5c3RlbS5kZXNrdG9wICYmIG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWRcIikgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKGR5bmFtaWNQYWdlLmdldEhlYWRlckV4cGFuZGVkKCkgIT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0ZHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQoZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vc2V0dGluZyBpdCB0byBmYWxzZSBzbyB0aGF0IGZ1cnRoZXIgc2VhcmNoIG9yICdHbycgdHJpZ2dlcnMgd29uJ3QgY29sbGFwc2UgdGhlIGZpbHRlciBiYXJcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZFwiLCBmYWxzZSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHN0b3JlIGZpbHRlciBiYXIgY29uZGl0aW9ucyB0byB1c2UgbGF0ZXIgd2hpbGUgbmF2aWdhdGlvblxuXHRcdFx0U3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyKVxuXHRcdFx0XHQudGhlbigob0V4dGVybmFsU3RhdGU6IGFueSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZmlsdGVyQmFyQ29uZGl0aW9ucyA9IG9FeHRlcm5hbFN0YXRlLmZpbHRlcjtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZVwiLCBvRXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHRcdGlmICgodGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBhbnkpLmxpdmVNb2RlID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChEZXZpY2Uuc3lzdGVtLnBob25lKSB7XG5cdFx0XHRcdGNvbnN0IG9EeW5hbWljUGFnZSA9IHRoaXMuX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpO1xuXHRcdFx0XHRpZiAoIXRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkpIHtcblx0XHRcdFx0XHRvRHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQodHJ1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0b0R5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKGZhbHNlKTtcblx0XHRcdFx0XHR0aGlzLnNldEZpbHRlclRvZ2dsZVZpc2liaWxpdHkoZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBUcmlnZ2VycyBhbiBvdXRib3VuZCBuYXZpZ2F0aW9uIHdoZW4gYSB1c2VyIGNob29zZXMgdGhlIGNoZXZyb24uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0gb0NvbnRyb2xsZXJcblx0XHQgKiBAcGFyYW0gc091dGJvdW5kVGFyZ2V0IE5hbWUgb2YgdGhlIG91dGJvdW5kIHRhcmdldCAobmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpXG5cdFx0ICogQHBhcmFtIG9Db250ZXh0IFRoZSBjb250ZXh0IHRoYXQgY29udGFpbnMgdGhlIGRhdGEgZm9yIHRoZSB0YXJnZXQgYXBwXG5cdFx0ICogQHBhcmFtIHNDcmVhdGVQYXRoIENyZWF0ZSBwYXRoIHdoZW4gdGhlIGNoZXZyb24gaXMgY3JlYXRlZC5cblx0XHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmVkXG5cdFx0ICogQGZpbmFsXG5cdFx0ICovXG5cdFx0b25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kKG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgc091dGJvdW5kVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBDb250ZXh0LCBzQ3JlYXRlUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQob0NvbnRyb2xsZXIsIHNPdXRib3VuZFRhcmdldCwgb0NvbnRleHQsIHNDcmVhdGVQYXRoKTtcblx0XHR9LFxuXHRcdG9uQ2hhcnRTZWxlY3Rpb25DaGFuZ2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3Qgb01kY0NoYXJ0ID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldENvbnRlbnQoKSxcblx0XHRcdFx0b1RhYmxlID0gdGhpcy5fZ2V0VGFibGUoKSxcblx0XHRcdFx0YURhdGEgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKSxcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdGlmIChhRGF0YSkge1xuXHRcdFx0XHRDaGFydFV0aWxzLnNldENoYXJ0RmlsdGVycyhvTWRjQ2hhcnQpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc1RlbXBsYXRlQ29udGVudFZpZXcgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgKTtcblx0XHRcdGlmIChzVGVtcGxhdGVDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkge1xuXHRcdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIGlmIChvVGFibGUpIHtcblx0XHRcdFx0KG9UYWJsZSBhcyBhbnkpLnJlYmluZCgpO1xuXHRcdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgb0V2ZW50OiBhbnkpIHtcblx0XHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG9FdmVudC5tUGFyYW1ldGVycy5rZXkgPyBvRXZlbnQubVBhcmFtZXRlcnMua2V5IDogbnVsbDtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJhbHBDb250ZW50Vmlld1wiLCBzU2VsZWN0ZWRLZXkpO1xuXHRcdFx0Y29uc3Qgb0NoYXJ0ID0gdGhpcy5nZXRDaGFydENvbnRyb2woKTtcblx0XHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuX2dldFRhYmxlKCk7XG5cdFx0XHRjb25zdCBvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUgPSB7XG5cdFx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmcoKSB7XG5cdFx0XHRcdFx0Y29uc3QgYUl0ZW1zID0gb1NlZ21lbnRlZEJ1dHRvbi5nZXRJdGVtcygpO1xuXHRcdFx0XHRcdGFJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChvSXRlbTogYW55KSB7XG5cdFx0XHRcdFx0XHRpZiAob0l0ZW0uZ2V0S2V5KCkgPT09IHNTZWxlY3RlZEtleSkge1xuXHRcdFx0XHRcdFx0XHRvSXRlbS5mb2N1cygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG9TZWdtZW50ZWRCdXR0b24ucmVtb3ZlRXZlbnREZWxlZ2F0ZShvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0Y29uc3Qgb1NlZ21lbnRlZEJ1dHRvbiA9IChcblx0XHRcdFx0c1NlbGVjdGVkS2V5ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlID8gdGhpcy5fZ2V0U2VnbWVudGVkQnV0dG9uKFwiVGFibGVcIikgOiB0aGlzLl9nZXRTZWdtZW50ZWRCdXR0b24oXCJDaGFydFwiKVxuXHRcdFx0KSBhcyBTZWdtZW50ZWRCdXR0b247XG5cdFx0XHRpZiAob1NlZ21lbnRlZEJ1dHRvbiAhPT0gb0V2ZW50LmdldFNvdXJjZSgpKSB7XG5cdFx0XHRcdG9TZWdtZW50ZWRCdXR0b24uYWRkRXZlbnREZWxlZ2F0ZShvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUpO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoIChzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdFx0Y2FzZSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlOlxuXHRcdFx0XHRcdGlmIChvVGFibGUpIHtcblx0XHRcdFx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlKG9UYWJsZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ6XG5cdFx0XHRcdFx0aWYgKG9DaGFydCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlQ2hhcnQob0NoYXJ0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQ6XG5cdFx0XHRcdFx0aWYgKG9UYWJsZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlVGFibGUob1RhYmxlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG9DaGFydCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlQ2hhcnQob0NoYXJ0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0fSxcblx0XHRvbkZpbHRlcnNTZWdtZW50ZWRCdXR0b25QcmVzc2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3QgaXNDb21wYWN0ID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImtleVwiKSA9PT0gXCJDb21wYWN0XCI7XG5cdFx0XHR0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCkuc2V0VmlzaWJsZShpc0NvbXBhY3QpO1xuXHRcdFx0KHRoaXMuX2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2woKSBhcyBDb250cm9sKS5zZXRWaXNpYmxlKCFpc0NvbXBhY3QpO1xuXHRcdH0sXG5cdFx0b25TdGF0ZUNoYW5nZSh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlcikge1xuXHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdH0sXG5cdFx0b25EeW5hbWljUGFnZVRpdGxlU3RhdGVDaGFuZ2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBldmVudDogRHluYW1pY1BhZ2VUaXRsZSRTdGF0ZUNoYW5nZUV2ZW50KTogdm9pZCB7XG5cdFx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHR0aGlzLnNldEZpbHRlclRvZ2dsZVZpc2liaWxpdHkoISFldmVudC5nZXRQYXJhbWV0ZXIoXCJpc0V4cGFuZGVkXCIpKTtcblx0XHRcdGlmIChldmVudC5nZXRQYXJhbWV0ZXIoXCJpc0V4cGFuZGVkXCIpID09PSBmYWxzZSkge1xuXHRcdFx0XHRJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCkuYW5ub3VuY2UoXG5cdFx0XHRcdFx0ZmlsdGVyQmFyLmdldEFzc2lnbmVkRmlsdGVyc1RleHQoKS5maWx0ZXJzVGV4dCBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0SW52aXNpYmxlTWVzc2FnZU1vZGUuQXNzZXJ0aXZlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKSB7XG5cdFx0Y29uc3QgYVRhYmxlcyA9IHRoaXMuX2dldENvbnRyb2xzKCkgYXMgVGFibGVbXTtcblx0XHRjb25zdCBzRW50aXR5U2V0ID0gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5lbnRpdHlTZXQ7XG5cdFx0Y29uc3Qgc1RleHQgPSBnZXRSZXNvdXJjZU1vZGVsKHRoaXMuZ2V0VmlldygpKS5nZXRUZXh0KFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUXCIsIHVuZGVmaW5lZCwgc0VudGl0eVNldCk7XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IENvbnRyb2wpIHtcblx0XHRcdGlmIChvVGFibGUuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdFx0b1RhYmxlLnNldE5vRGF0YShzVGV4dCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHVwZGF0ZSB0aGUgbG9jYWwgVUkgbW9kZWwgb2YgdGhlIHBhZ2Ugd2l0aCB0aGUgU2VsZWN0aW9uIFZhcmlhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXIgTURDIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIGludGVybmFsTW9kZWxDb250ZXh0IFRoZSBpbnRlcm5hbCBtb2RlbCBjb250ZXh0XG5cdCAqL1xuXHRhc3luYyBfc3RvcmVGaWx0ZXJCYXJTZWxlY3Rpb25WYXJpYW50KGZpbHRlckJhcjogRmlsdGVyQmFyLCBpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdGNvbnN0IHN2ID0gYXdhaXQgZmlsdGVyQmFyQVBJLmdldFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiZmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudFwiLCBzdik7XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRSA6IEVycm9yIGZldGNoaW5nIHNlbGVjdGlvbiB2YXJpYW50IG9uIGZpbHRlciBjaGFuZ2U6ICR7bWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGdldCB0aGUgU2VsZWN0aW9uIFZhcmlhbnQgZnJvbSBpbnRlcm5hbCBtb2RlbC5cblx0ICpcblx0ICogQHJldHVybnMgU2VsZWN0aW9uVmFyaWFudFxuXHQgKi9cblx0Z2V0RmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudCgpOiBTZWxlY3Rpb25WYXJpYW50IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIChpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJmaWx0ZXJCYXJTZWxlY3Rpb25WYXJpYW50XCIpIGFzIFNlbGVjdGlvblZhcmlhbnQpIHx8IG5ldyBTZWxlY3Rpb25WYXJpYW50KCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBOERBLE1BQU1BLG1CQUFtQixHQUFHQyxXQUFXLENBQUNELG1CQUFtQjtJQUMxREUsZUFBZSxHQUFHRCxXQUFXLENBQUNDLGVBQWU7O0VBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBLElBT01DLG9CQUFvQixXQUR6QkMsY0FBYyxDQUFDLGtEQUFrRCxDQUFDLFVBRWpFQyxjQUFjLENBQ2RDLGVBQWUsQ0FBQ0MsUUFBUSxDQUFDO0lBQ3hCQyxjQUFjLEVBQUUsWUFBaUM7TUFDL0MsSUFBSSxDQUFDQyxPQUFPLEVBQUUsQ0FBQ0MsYUFBYSxFQUFFLENBQTBCQyxlQUFlLEVBQUU7SUFDM0U7RUFDRCxDQUFDLENBQUMsQ0FDRixVQUdBTixjQUFjLENBQ2RPLDZCQUE2QixDQUFDTCxRQUFRLENBQUM7SUFDdENNLFlBQVksRUFBRSxZQUErQztNQUM1RCxPQUFRLElBQUksQ0FBQ0MsSUFBSSxDQUEwQkMsbUJBQW1CLEVBQUU7SUFDakU7RUFDRCxDQUFDLENBQUMsQ0FDRixVQUdBVixjQUFjLENBQUNXLFdBQVcsQ0FBQyxVQUczQlgsY0FBYyxDQUFDWSxx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
|
|
918
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUZW1wbGF0ZUNvbnRlbnRWaWV3IiwiQ29yZUxpYnJhcnkiLCJJbml0aWFsTG9hZE1vZGUiLCJMaXN0UmVwb3J0Q29udHJvbGxlciIsImRlZmluZVVJNUNsYXNzIiwidXNpbmdFeHRlbnNpb24iLCJJbnRlcm5hbFJvdXRpbmciLCJvdmVycmlkZSIsIm9uQWZ0ZXJCaW5kaW5nIiwiZ2V0VmlldyIsImdldENvbnRyb2xsZXIiLCJfb25BZnRlckJpbmRpbmciLCJJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiIsImdldEVudGl0eVNldCIsImJhc2UiLCJnZXRDdXJyZW50RW50aXR5U2V0IiwiU2lkZUVmZmVjdHMiLCJJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsIlNoYXJlIiwiU2hhcmVPdmVycmlkZXMiLCJWaWV3U3RhdGUiLCJWaWV3U3RhdGVPdmVycmlkZXMiLCJLUElNYW5hZ2VtZW50IiwiUGxhY2Vob2xkZXIiLCJNYXNzRWRpdCIsInB1YmxpY0V4dGVuc2lvbiIsImZpbmFsRXh0ZW5zaW9uIiwicHJpdmF0ZUV4dGVuc2lvbiIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkFmdGVyIiwiZm9ybWF0dGVycyIsInNldEFMUENvbnRyb2xNZXNzYWdlU3RyaXAiLCJhSWdub3JlZEZpZWxkcyIsImJJc0NoYXJ0Iiwib0FwcGx5U3VwcG9ydGVkIiwic1RleHQiLCJvRmlsdGVyQmFyIiwiX2dldEZpbHRlckJhckNvbnRyb2wiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImRhdGEiLCJnZXRSZXNvdXJjZU1vZGVsIiwiYklzU2VhcmNoSWdub3JlZCIsImVuYWJsZVNlYXJjaCIsImdldEFMUFRleHQiLCJnZXRUZXh0IiwiaGFuZGxlcnMiLCJvbkZpbHRlclNlYXJjaCIsImZpbHRlckJhckFQSSIsImdldFBhcmVudCIsInRyaWdnZXJTZWFyY2giLCJvbkZpbHRlcnNDaGFuZ2VkIiwib0V2ZW50Iiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvblBlbmRpbmdGaWx0ZXJzIiwiYXBwbGllZEZpbHRlcnNUZXh0IiwiZ2V0QXNzaWduZWRGaWx0ZXJzVGV4dCIsImZpbHRlcnNUZXh0IiwiYXBwbGllZEZpbHRlckJpbmRpbmciLCJiaW5kaW5nUGFyc2VyIiwiYnlJZCIsImJpbmRUZXh0Iiwic2V0VGV4dCIsImdldFBhcmFtZXRlciIsInNldFByb3BlcnR5IiwiX3N0b3JlRmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudCIsIm9uVmFyaWFudFNlbGVjdGVkIiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZXRTb3VyY2UiLCJjdXJyZW50VmFyaWFudEtleSIsIm11bHRpTW9kZUNvbnRyb2wiLCJfZ2V0TXVsdGlNb2RlQ29udHJvbCIsImlzQSIsImludmFsaWRhdGVDb250ZW50Iiwic2V0RnJlZXplQ29udGVudCIsInNldFRpbWVvdXQiLCJmaWx0ZXJCYXIiLCJkeW5hbWljUGFnZSIsIl9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2wiLCJmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQiLCJnZXRGaWx0ZXJJdGVtcyIsImZpbmQiLCJmaWx0ZXJJdGVtIiwiZ2V0UmVxdWlyZWQiLCJnZXRDb25kaXRpb25zIiwic2V0SGVhZGVyRXhwYW5kZWQiLCJfc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2giLCJfZ2V0QXBwbHlBdXRvbWF0aWNhbGx5T25WYXJpYW50IiwiZ2V0RXh0ZW5zaW9uQVBJIiwidXBkYXRlQXBwU3RhdGUiLCJvblZhcmlhbnRTYXZlZCIsIm9uU2VhcmNoIiwib01kY0NoYXJ0IiwiZ2V0Q2hhcnRDb250cm9sIiwiYkhpZGVEcmFmdCIsIkZpbHRlclV0aWxzIiwiZ2V0RWRpdFN0YXRlSXNIaWRlRHJhZnQiLCJfdXBkYXRlQUxQTm90QXBwbGljYWJsZUZpZWxkcyIsIm9QYWdlSW50ZXJuYWxNb2RlbENvbnRleHQiLCJzVGVtcGxhdGVDb250ZW50VmlldyIsImdldFByb3BlcnR5IiwiZ2V0UGF0aCIsIkNoYXJ0IiwiaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcyIsIlRhYmxlIiwiaGFzUGVuZGluZ1RhYmxlQ2hhbmdlcyIsIkRldmljZSIsInN5c3RlbSIsImRlc2t0b3AiLCJnZXRIZWFkZXJFeHBhbmRlZCIsIlN0YXRlVXRpbCIsInJldHJpZXZlRXh0ZXJuYWxTdGF0ZSIsInRoZW4iLCJvRXh0ZXJuYWxTdGF0ZSIsImZpbHRlckJhckNvbmRpdGlvbnMiLCJmaWx0ZXIiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwiZ2V0Vmlld0RhdGEiLCJsaXZlTW9kZSIsInBob25lIiwib0R5bmFtaWNQYWdlIiwiX2lzSW5pdExvYWRFbmFibGVkIiwic2V0RmlsdGVyVG9nZ2xlVmlzaWJpbGl0eSIsIm9uQ2hldnJvblByZXNzTmF2aWdhdGVPdXRCb3VuZCIsIm9Db250cm9sbGVyIiwic091dGJvdW5kVGFyZ2V0Iiwib0NvbnRleHQiLCJzQ3JlYXRlUGF0aCIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJvbkNoYXJ0U2VsZWN0aW9uQ2hhbmdlZCIsImdldENvbnRlbnQiLCJvVGFibGUiLCJfZ2V0VGFibGUiLCJhRGF0YSIsIkNoYXJ0VXRpbHMiLCJzZXRDaGFydEZpbHRlcnMiLCJyZWJpbmQiLCJvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJzU2VsZWN0ZWRLZXkiLCJtUGFyYW1ldGVycyIsImtleSIsIm9DaGFydCIsIm9TZWdtZW50ZWRCdXR0b25EZWxlZ2F0ZSIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJhSXRlbXMiLCJvU2VnbWVudGVkQnV0dG9uIiwiZ2V0SXRlbXMiLCJmb3JFYWNoIiwib0l0ZW0iLCJnZXRLZXkiLCJmb2N1cyIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJfZ2V0U2VnbWVudGVkQnV0dG9uIiwiYWRkRXZlbnREZWxlZ2F0ZSIsIl91cGRhdGVUYWJsZSIsIl91cGRhdGVDaGFydCIsIkh5YnJpZCIsIm9uRmlsdGVyc1NlZ21lbnRlZEJ1dHRvblByZXNzZWQiLCJpc0NvbXBhY3QiLCJzZXRWaXNpYmxlIiwiX2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2wiLCJvblN0YXRlQ2hhbmdlIiwib25EeW5hbWljUGFnZVRpdGxlU3RhdGVDaGFuZ2VkIiwiZXZlbnQiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJhbm5vdW5jZSIsIkludmlzaWJsZU1lc3NhZ2VNb2RlIiwiQXNzZXJ0aXZlIiwiZXh0ZW5zaW9uQVBJIiwiRXh0ZW5zaW9uQVBJIiwib25Jbml0IiwiUGFnZUNvbnRyb2xsZXIiLCJwcm90b3R5cGUiLCJhcHBseSIsIl9oYXNNdWx0aVZpc3VhbGl6YXRpb25zIiwiYWxwQ29udGVudFZpZXciLCJfZ2V0RGVmYXVsdFBhdGgiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRSb3V0ZXJQcm94eSIsIndhaXRGb3JSb3V0ZU1hdGNoQmVmb3JlTmF2aWdhdGlvbiIsIl9zZXRJbml0TG9hZCIsIm9uRXhpdCIsImRlc3Ryb3kiLCJhVGFibGVzIiwiX2dldENvbnRyb2xzIiwiRWRpdFN0YXRlIiwiaXNFZGl0U3RhdGVEaXJ0eSIsIm9UYWJsZUJpbmRpbmciLCJnZXRSb3dCaW5kaW5nIiwiQ29tbW9uVXRpbHMiLCJfaXNGY2xFbmFibGVkIiwicmVmcmVzaCIsInNVcGRhdGVUaW1lciIsImZuVXBkYXRlVGFibGVBY3Rpb25zIiwiX3VwZGF0ZVRhYmxlQWN0aW9ucyIsImRldGFjaERhdGFSZWNlaXZlZCIsImF0dGFjaERhdGFSZWNlaXZlZCIsInNldEVkaXRTdGF0ZVByb2Nlc3NlZCIsImludGVybmFsTW9kZWxDb250ZXh0Iiwidmlld0lkIiwiZ2V0SWQiLCJwYWdlUmVhZHkiLCJ3YWl0Rm9yIiwiX2FwcGx5QXBwU3RhdGUiLCJjYXBhYmxpdGllcyIsImdldEVudmlyb25tZW50Q2FwYWJpbGl0aWVzIiwiZ2V0Q2FwYWJpbGl0aWVzIiwiSW5zaWdodHNTdXBwb3J0ZWQiLCJvbkJlZm9yZVJlbmRlcmluZyIsIm9uUGFnZVJlYWR5IiwiZm9yY2VGb2N1cyIsIl9zZXRJbml0aWFsRm9jdXMiLCJnZXRTaGVsbFNlcnZpY2VzIiwic2V0QmFja05hdmlnYXRpb24iLCJ1bmRlZmluZWQiLCJvblZpZXdOZWVkc1JlZnJlc2giLCJzbGljZSIsIm9uQWZ0ZXJDbGVhciIsImFJQk5BY3Rpb25zIiwiZ2V0SUJOQWN0aW9ucyIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJKU09OIiwicGFyc2UiLCJDb21tb25IZWxwZXIiLCJwYXJzZUN1c3RvbURhdGEiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiRGVsZXRlSGVscGVyIiwidXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMiLCJBY3Rpb25SdW50aW1lIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsInVwZGF0ZURhdGFGaWVsZEZvcklCTkJ1dHRvbnNWaXNpYmlsaXR5IiwiX3Njcm9sbFRhYmxlc1RvUm93Iiwic1Jvd1BhdGgiLCJUYWJsZVNjcm9sbGVyIiwic2Nyb2xsVGFibGVUb1JvdyIsImlzSGVhZGVyRXhwYW5kZWQiLCJfaXNGaWx0ZXJCYXJIaWRkZW5Vc2VkIiwiZ2V0U2hvd01lc3NhZ2VzIiwic2V0U2hvd01lc3NhZ2VzIiwib0ZpbHRlckl0ZW0iLCJfZ2V0RmlsdGVyQmFyQ29udHJvbElkIiwiZm9jdXNSb3ciLCJfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24iLCJvTWFuaWZlc3RFbnRyeSIsImdldE1hbmlmZXN0RW50cnkiLCJ0aXRsZSIsInN1YnRpdGxlIiwic3ViVGl0bGUiLCJpbnRlbnQiLCJpY29uIiwiX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbElkIiwiX2dldEFkYXB0YXRpb25GaWx0ZXJCYXJDb250cm9sIiwiYWRhcHRhdGlvbkZpbHRlckJhciIsImdldEluYnVpbHRGaWx0ZXIiLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJhcHBseUFwcFN0YXRlIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsIl9pc0ZpbHRlckJhckhpZGRlbiIsIl9pc011bHRpTW9kZSIsInNldENvdW50c091dERhdGVkIiwic0NvbnRyb2wiLCJzU2VnbWVudGVkQnV0dG9uSWQiLCJfZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eSIsInNQYXRoIiwiY29udHJvbElkIiwiX2dldFBhZ2VNb2RlbCIsInNWaXN1YWxGaWx0ZXJCYXJJZCIsIlN0YWJsZUlkSGVscGVyIiwiZ2VuZXJhdGUiLCJfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2wiLCJfZ2V0SWNvblRhYkJhciIsIm9Db250cm9sIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJjb250ZW50Iiwic0tleSIsImFDb250cm9scyIsIm9UYWJNdWx0aU1vZGUiLCJpbmRleE9mIiwicHVzaCIsImRlZmF1bHRQYXRoIiwiTGlzdFJlcG9ydFRlbXBsYXRpbmciLCJnZXREZWZhdWx0UGF0aCIsImluaXRMb2FkTW9kZSIsImluaXRpYWxMb2FkIiwiRW5hYmxlZCIsIl9kaXNhYmxlSW5pdExvYWQiLCJfYXBwbHlBdXRvbWF0aWNhbGx5T25TdGFuZGFyZFZhcmlhbnQiLCJ2YXJpYW50TWFuYWdlbWVudElkIiwiZ2V0VmFyaWFudEJhY2tSZWZlcmVuY2UiLCJnZXREYXRhIiwicmVnaXN0ZXJBcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCIsImJpbmQiLCJfc2V0U2hhcmVNb2RlbCIsImZuR2V0VXNlciIsIk9iamVjdFBhdGgiLCJnZXQiLCJvU2hhcmVJbmZvIiwiYm9va21hcmtUaXRsZSIsImRvY3VtZW50IiwiYm9va21hcmtDdXN0b21VcmwiLCJzSGFzaCIsImhhc2hlciIsImdldEhhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJpc1NoYXJlSW5KYW1BY3RpdmUiLCJpc0phbUFjdGl2ZSIsIm9UZW1wbGF0ZVByaXZhdGVNb2RlbCIsImdldE93bmVyQ29tcG9uZW50IiwiZ2V0TW9kZWwiLCJtQ2FjaGUiLCJpZ25vcmVkRmllbGRzIiwiYUNoYXJ0cyIsInNDaGFydEVudGl0eVBhdGgiLCJzQ2hhcnRFbnRpdHlTZXQiLCJzQ2FjaGVLZXkiLCJnZXROb3RBcHBsaWNhYmxlRmlsdGVycyIsImhpZGVGaWx0ZXJCYXIiLCJ1c2VIaWRkZW5GaWx0ZXJCYXIiLCJWYXJpYW50TWFuYWdlbWVudCIsInZhcmlhbnRzIiwiZ2V0VmFyaWFudHMiLCJjdXJyZW50VmFyaWFudCIsInZhcmlhbnQiLCJnZXRFeGVjdXRlT25TZWxlY3QiLCJvVk0iLCJBdXRvIiwiZ2V0U3RhbmRhcmRWYXJpYW50S2V5IiwiZ2V0Q3VycmVudFZhcmlhbnRLZXkiLCJvQ29uZGl0aW9ucyIsInN0YXJ0c1dpdGgiLCJzdGFuZGFyZFZhcmlhbnQiLCJpc1RhYmxlQm91bmQiLCJvSW5uZXJDaGFydCIsImdldENvbnRyb2xEZWxlZ2F0ZSIsIl9nZXRDaGFydCIsImlzQm91bmQiLCJnZXRCaW5kaW5nSW5mbyIsImJ1dHRvblZpc2libGUiLCJnZXRTZWdtZW50ZWRCdXR0b24iLCJzRW50aXR5U2V0IiwiZW50aXR5U2V0Iiwic2V0Tm9EYXRhIiwic3YiLCJnZXRTZWxlY3Rpb25WYXJpYW50IiwiZXJyIiwibWVzc2FnZSIsIkVycm9yIiwiU3RyaW5nIiwiZ2V0RmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudCIsIlNlbGVjdGlvblZhcmlhbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkxpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgdHlwZSBEeW5hbWljUGFnZSBmcm9tIFwic2FwL2YvRHluYW1pY1BhZ2VcIjtcbmltcG9ydCB0eXBlIHsgRHluYW1pY1BhZ2VUaXRsZSRTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC9mL0R5bmFtaWNQYWdlVGl0bGVcIjtcbmltcG9ydCBBY3Rpb25SdW50aW1lIGZyb20gXCJzYXAvZmUvY29yZS9BY3Rpb25SdW50aW1lXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IEtQSU1hbmFnZW1lbnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0tQSU1hbmFnZW1lbnRcIjtcbmltcG9ydCBNYXNzRWRpdCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvTWFzc0VkaXRcIjtcbmltcG9ydCBQbGFjZWhvbGRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUGxhY2Vob2xkZXJcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBTaWRlRWZmZWN0cyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCBWaWV3U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1ZpZXdTdGF0ZVwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIHsgTGlzdFJlcG9ydERlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy90ZW1wbGF0ZXMvTGlzdFJlcG9ydENvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGV4dGVuc2libGUsXG5cdGZpbmFsRXh0ZW5zaW9uLFxuXHRwcml2YXRlRXh0ZW5zaW9uLFxuXHRwdWJsaWNFeHRlbnNpb24sXG5cdHVzaW5nRXh0ZW5zaW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IERlbGV0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9EZWxldGVIZWxwZXJcIjtcbmltcG9ydCBFZGl0U3RhdGUgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvRWRpdFN0YXRlXCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01lc3NhZ2VTdHJpcFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0ICogYXMgU3RhYmxlSWRIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBDb3JlTGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3RGF0YSB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZW1wbGF0ZWRWaWV3U2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IENoYXJ0VXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRVdGlsc1wiO1xuaW1wb3J0IEZpbHRlclV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlci9GaWx0ZXJVdGlsc1wiO1xuaW1wb3J0IHR5cGUgRmlsdGVyQmFyQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSBNdWx0aXBsZU1vZGVDb250cm9sIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvY29udHJvbHMvTXVsdGlwbGVNb2RlQ29udHJvbFwiO1xuaW1wb3J0IFRhYmxlU2Nyb2xsZXIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvVGFibGVTY3JvbGxlclwiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IHR5cGUgU2VnbWVudGVkQnV0dG9uIGZyb20gXCJzYXAvbS9TZWdtZW50ZWRCdXR0b25cIjtcbmltcG9ydCB0eXBlIFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBEZXZpY2UgZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCB7IGJpbmRpbmdQYXJzZXIgfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEludmlzaWJsZU1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZU1lc3NhZ2VcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IFN0YXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9wMTNuL1N0YXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgaGFzaGVyIGZyb20gXCJzYXAvdWkvdGhpcmRwYXJ0eS9oYXNoZXJcIjtcbmltcG9ydCAqIGFzIExpc3RSZXBvcnRUZW1wbGF0aW5nIGZyb20gXCIuL0xpc3RSZXBvcnRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgZnJvbSBcIi4vb3ZlcnJpZGVzL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IFNoYXJlT3ZlcnJpZGVzIGZyb20gXCIuL292ZXJyaWRlcy9TaGFyZVwiO1xuaW1wb3J0IFZpZXdTdGF0ZU92ZXJyaWRlcyBmcm9tIFwiLi9vdmVycmlkZXMvVmlld1N0YXRlXCI7XG5cbmNvbnN0IFRlbXBsYXRlQ29udGVudFZpZXcgPSBDb3JlTGlicmFyeS5UZW1wbGF0ZUNvbnRlbnRWaWV3LFxuXHRJbml0aWFsTG9hZE1vZGUgPSBDb3JlTGlicmFyeS5Jbml0aWFsTG9hZE1vZGU7XG5cbi8qKlxuICogQ29udHJvbGxlciBjbGFzcyBmb3IgdGhlIGxpc3QgcmVwb3J0IHBhZ2UsIHVzZWQgaW5zaWRlIGFuIFNBUCBGaW9yaSBlbGVtZW50cyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydC5MaXN0UmVwb3J0Q29udHJvbGxlclwiKVxuY2xhc3MgTGlzdFJlcG9ydENvbnRyb2xsZXIgZXh0ZW5kcyBQYWdlQ29udHJvbGxlciB7XG5cdEB1c2luZ0V4dGVuc2lvbihcblx0XHRJbnRlcm5hbFJvdXRpbmcub3ZlcnJpZGUoe1xuXHRcdFx0b25BZnRlckJpbmRpbmc6IGZ1bmN0aW9uICh0aGlzOiBJbnRlcm5hbFJvdXRpbmcpIHtcblx0XHRcdFx0KHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcikuX29uQWZ0ZXJCaW5kaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSlcblx0KVxuXHRfcm91dGluZyE6IEludGVybmFsUm91dGluZztcblxuXHRAdXNpbmdFeHRlbnNpb24oXG5cdFx0SW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24ub3ZlcnJpZGUoe1xuXHRcdFx0Z2V0RW50aXR5U2V0OiBmdW5jdGlvbiAodGhpczogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRcdFx0cmV0dXJuICh0aGlzLmJhc2UgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIpLmdldEN1cnJlbnRFbnRpdHlTZXQoKTtcblx0XHRcdH1cblx0XHR9KVxuXHQpXG5cdF9pbnRlbnRCYXNlZE5hdmlnYXRpb24hOiBJbnRlcm5hbEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2lkZUVmZmVjdHMpXG5cdHNpZGVFZmZlY3RzITogU2lkZUVmZmVjdHM7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKEludGVudEJhc2VkTmF2aWdhdGlvbi5vdmVycmlkZShJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSkpXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbiE6IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRAdXNpbmdFeHRlbnNpb24oU2hhcmUub3ZlcnJpZGUoU2hhcmVPdmVycmlkZXMpKVxuXHRzaGFyZSE6IFNoYXJlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihWaWV3U3RhdGUub3ZlcnJpZGUoVmlld1N0YXRlT3ZlcnJpZGVzKSlcblx0dmlld1N0YXRlITogVmlld1N0YXRlO1xuXG5cdEB1c2luZ0V4dGVuc2lvbihLUElNYW5hZ2VtZW50KVxuXHRrcGlNYW5hZ2VtZW50ITogS1BJTWFuYWdlbWVudDtcblxuXHRAdXNpbmdFeHRlbnNpb24oUGxhY2Vob2xkZXIpXG5cdHBsYWNlaG9sZGVyITogUGxhY2Vob2xkZXI7XG5cblx0QHVzaW5nRXh0ZW5zaW9uKE1hc3NFZGl0KVxuXHRtYXNzRWRpdCE6IE1hc3NFZGl0O1xuXG5cdHByb3RlY3RlZCBleHRlbnNpb25BUEk/OiBFeHRlbnNpb25BUEk7XG5cblx0cHJpdmF0ZSBmaWx0ZXJCYXJDb25kaXRpb25zPzogYW55O1xuXG5cdHByaXZhdGUgc1VwZGF0ZVRpbWVyPzogYW55O1xuXG5cdHByaXZhdGUgaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcz86IGJvb2xlYW47XG5cblx0cHJpdmF0ZSBoYXNQZW5kaW5nVGFibGVDaGFuZ2VzPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogR2V0IHRoZSBleHRlbnNpb24gQVBJIGZvciB0aGUgY3VycmVudCBwYWdlLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBleHRlbnNpb24gQVBJLlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGdldEV4dGVuc2lvbkFQSSgpOiBFeHRlbnNpb25BUEkge1xuXHRcdGlmICghdGhpcy5leHRlbnNpb25BUEkpIHtcblx0XHRcdHRoaXMuZXh0ZW5zaW9uQVBJID0gbmV3IEV4dGVuc2lvbkFQSSh0aGlzKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdFBhZ2VDb250cm9sbGVyLnByb3RvdHlwZS5vbkluaXQuYXBwbHkodGhpcyk7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0dGhpcy5fc3RvcmVGaWx0ZXJCYXJTZWxlY3Rpb25WYXJpYW50KGZpbHRlckJhciwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHR9XG5cblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiLCB0cnVlKTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoaWRlRHJhZnRJbmZvXCIsIGZhbHNlKTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJ1b21cIiwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcInNjYWxlZmFjdG9yXCIsIHt9KTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJzY2FsZWZhY3Rvck51bWJlclwiLCB7fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY3VycmVuY3lcIiwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzSW5zaWdodHNTdXBwb3J0ZWRcIiwgZmFsc2UpO1xuXG5cdFx0aWYgKHRoaXMuX2hhc011bHRpVmlzdWFsaXphdGlvbnMoKSkge1xuXHRcdFx0bGV0IGFscENvbnRlbnRWaWV3ID0gdGhpcy5fZ2V0RGVmYXVsdFBhdGgoKTtcblx0XHRcdGlmICghRGV2aWNlLnN5c3RlbS5kZXNrdG9wICYmIGFscENvbnRlbnRWaWV3ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3Lkh5YnJpZCkge1xuXHRcdFx0XHRhbHBDb250ZW50VmlldyA9IFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHR9XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJhbHBDb250ZW50Vmlld1wiLCBhbHBDb250ZW50Vmlldyk7XG5cdFx0fVxuXG5cdFx0Ly8gU3RvcmUgY29uZGl0aW9ucyBmcm9tIGZpbHRlciBiYXJcblx0XHQvLyB0aGlzIGlzIGxhdGVyIHVzZWQgYmVmb3JlIG5hdmlnYXRpb24gdG8gZ2V0IGNvbmRpdGlvbnMgYXBwbGllZCBvbiB0aGUgZmlsdGVyIGJhclxuXHRcdHRoaXMuZmlsdGVyQmFyQ29uZGl0aW9ucyA9IHt9O1xuXG5cdFx0Ly8gQXMgQXBwU3RhdGVIYW5kbGVyLmFwcGx5QXBwU3RhdGUgdHJpZ2dlcnMgYSBuYXZpZ2F0aW9uIHdlIHdhbnQgdG8gbWFrZSBzdXJlIGl0IHdpbGxcblx0XHQvLyBoYXBwZW4gYWZ0ZXIgdGhlIHJvdXRlTWF0Y2ggZXZlbnQgaGFzIGJlZW4gcHJvY2Vzc2VkIChvdGhlcndpc2UgdGhlIHJvdXRlciBnZXRzIGJyb2tlbilcblx0XHR0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldFJvdXRlclByb3h5KCkud2FpdEZvclJvdXRlTWF0Y2hCZWZvcmVOYXZpZ2F0aW9uKCk7XG5cblx0XHQvLyBDb25maWd1cmUgdGhlIGluaXRpYWwgbG9hZCBzZXR0aW5nc1xuXHRcdHRoaXMuX3NldEluaXRMb2FkKCk7XG5cdH1cblxuXHRvbkV4aXQoKSB7XG5cdFx0ZGVsZXRlIHRoaXMuZmlsdGVyQmFyQ29uZGl0aW9ucztcblx0XHRpZiAodGhpcy5leHRlbnNpb25BUEkpIHtcblx0XHRcdHRoaXMuZXh0ZW5zaW9uQVBJLmRlc3Ryb3koKTtcblx0XHR9XG5cdFx0ZGVsZXRlIHRoaXMuZXh0ZW5zaW9uQVBJO1xuXHR9XG5cblx0X29uQWZ0ZXJCaW5kaW5nKCkge1xuXHRcdGNvbnN0IGFUYWJsZXMgPSB0aGlzLl9nZXRDb250cm9scyhcInRhYmxlXCIpO1xuXHRcdGlmIChFZGl0U3RhdGUuaXNFZGl0U3RhdGVEaXJ0eSgpKSB7XG5cdFx0XHR0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCk/LmludmFsaWRhdGVDb250ZW50KCk7XG5cdFx0XHRjb25zdCBvVGFibGVCaW5kaW5nID0gdGhpcy5fZ2V0VGFibGUoKT8uZ2V0Um93QmluZGluZygpO1xuXHRcdFx0aWYgKG9UYWJsZUJpbmRpbmcpIHtcblx0XHRcdFx0aWYgKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmdldFZpZXcoKSkuX2lzRmNsRW5hYmxlZCgpKSB7XG5cdFx0XHRcdFx0Ly8gdGhlcmUgaXMgYW4gaXNzdWUgaWYgd2UgdXNlIGEgdGltZW91dCB3aXRoIGEga2VwdCBhbGl2ZSBjb250ZXh0IHVzZWQgb24gYW5vdGhlciBwYWdlXG5cdFx0XHRcdFx0b1RhYmxlQmluZGluZy5yZWZyZXNoKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLnNVcGRhdGVUaW1lcikge1xuXHRcdFx0XHRcdFx0dGhpcy5zVXBkYXRlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0b1RhYmxlQmluZGluZy5yZWZyZXNoKCk7XG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnNVcGRhdGVUaW1lcjtcblx0XHRcdFx0XHRcdH0sIDApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFVwZGF0ZSBhY3Rpb24gZW5hYmxlbWVudCBhbmQgdmlzaWJpbGl0eSB1cG9uIHRhYmxlIGRhdGEgdXBkYXRlLlxuXHRcdFx0XHRcdGNvbnN0IGZuVXBkYXRlVGFibGVBY3Rpb25zID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlVGFibGVBY3Rpb25zKGFUYWJsZXMpO1xuXHRcdFx0XHRcdFx0b1RhYmxlQmluZGluZy5kZXRhY2hEYXRhUmVjZWl2ZWQoZm5VcGRhdGVUYWJsZUFjdGlvbnMpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0b1RhYmxlQmluZGluZy5hdHRhY2hEYXRhUmVjZWl2ZWQoZm5VcGRhdGVUYWJsZUFjdGlvbnMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRFZGl0U3RhdGUuc2V0RWRpdFN0YXRlUHJvY2Vzc2VkKCk7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLnNVcGRhdGVUaW1lcikge1xuXHRcdFx0dGhpcy5fdXBkYXRlVGFibGVBY3Rpb25zKGFUYWJsZXMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRpZiAoIWludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiaW5pdGlhbFZhcmlhbnRBcHBsaWVkXCIpKSB7XG5cdFx0XHRjb25zdCB2aWV3SWQgPSB0aGlzLmdldFZpZXcoKS5nZXRJZCgpO1xuXHRcdFx0dGhpcy5wYWdlUmVhZHkud2FpdEZvcih0aGlzLl9hcHBseUFwcFN0YXRlKHZpZXdJZCkpO1xuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJpbml0aWFsVmFyaWFudEFwcGxpZWRcIiwgdHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IGNhcGFibGl0aWVzID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuZ2V0VmlldygpKS5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaXNJbnNpZ2h0c1N1cHBvcnRlZFwiLCBjYXBhYmxpdGllcz8uSW5zaWdodHNTdXBwb3J0ZWQpO1xuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKSB7XG5cdFx0UGFnZUNvbnRyb2xsZXIucHJvdG90eXBlLm9uQmVmb3JlUmVuZGVyaW5nLmFwcGx5KHRoaXMpO1xuXHR9XG5cblx0Zm9ybWF0dGVycyA9IHtcblx0XHRzZXRBTFBDb250cm9sTWVzc2FnZVN0cmlwKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBhSWdub3JlZEZpZWxkczogYW55W10sIGJJc0NoYXJ0OiBhbnksIG9BcHBseVN1cHBvcnRlZD86IGFueSkge1xuXHRcdFx0bGV0IHNUZXh0ID0gXCJcIjtcblx0XHRcdGJJc0NoYXJ0ID0gYklzQ2hhcnQgPT09IFwidHJ1ZVwiIHx8IGJJc0NoYXJ0ID09PSB0cnVlO1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyICYmIEFycmF5LmlzQXJyYXkoYUlnbm9yZWRGaWVsZHMpICYmIGFJZ25vcmVkRmllbGRzLmxlbmd0aCA+IDAgJiYgYklzQ2hhcnQpIHtcblx0XHRcdFx0Y29uc3QgYUlnbm9yZWRMYWJlbHMgPSBNZXNzYWdlU3RyaXAuZ2V0TGFiZWxzKFxuXHRcdFx0XHRcdGFJZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdG9GaWx0ZXJCYXIuZGF0YShcImVudGl0eVR5cGVcIiksXG5cdFx0XHRcdFx0b0ZpbHRlckJhcixcblx0XHRcdFx0XHRnZXRSZXNvdXJjZU1vZGVsKG9GaWx0ZXJCYXIpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IGJJc1NlYXJjaElnbm9yZWQgPSAhb0FwcGx5U3VwcG9ydGVkLmVuYWJsZVNlYXJjaDtcblx0XHRcdFx0c1RleHQgPSBiSXNDaGFydFxuXHRcdFx0XHRcdD8gTWVzc2FnZVN0cmlwLmdldEFMUFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJCYXIsIGJJc1NlYXJjaElnbm9yZWQpXG5cdFx0XHRcdFx0OiBNZXNzYWdlU3RyaXAuZ2V0VGV4dChhSWdub3JlZExhYmVscywgb0ZpbHRlckJhciwgXCJcIik7XG5cdFx0XHRcdHJldHVybiBzVGV4dDtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0b25QYWdlUmVhZHkobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGlmIChtUGFyYW1ldGVycy5mb3JjZUZvY3VzKSB7XG5cdFx0XHR0aGlzLl9zZXRJbml0aWFsRm9jdXMoKTtcblx0XHR9XG5cdFx0Ly8gUmVtb3ZlIHRoZSBoYW5kbGVyIG9uIGJhY2sgbmF2aWdhdGlvbiB0aGF0IGRpc3BsYXlzIERyYWZ0IGNvbmZpcm1hdGlvblxuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0U2hlbGxTZXJ2aWNlcygpLnNldEJhY2tOYXZpZ2F0aW9uKHVuZGVmaW5lZCk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSBjb250ZW50IG9mIGEgY3VzdG9tIHZpZXcgdXNlZCBpbiBhIGxpc3QgcmVwb3J0IG5lZWRzIHRvIGJlIHJlZnJlc2hlZC5cblx0ICogVGhpcyBoYXBwZW5zIGVpdGhlciB3aGVuIHRoZXJlIGlzIGEgY2hhbmdlIG9uIHRoZSBGaWx0ZXJCYXIgYW5kIHRoZSBzZWFyY2ggaXMgdHJpZ2dlcmVkLFxuXHQgKiBvciB3aGVuIGEgdGFiIHdpdGggY3VzdG9tIGNvbnRlbnQgaXMgc2VsZWN0ZWQuXG5cdCAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVyd3JpdHRlbiBieSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gaW4gY2FzZSBvZiBjdXN0b21pemF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnMgTWFwIGNvbnRhaW5pbmcgdGhlIGZpbHRlciBjb25kaXRpb25zIG9mIHRoZSBGaWx0ZXJCYXIsIHRoZSBjdXJyZW50VGFiSURcblx0ICogYW5kIHRoZSB2aWV3IHJlZnJlc2ggY2F1c2UgKHRhYkNoYW5nZWQgb3Igc2VhcmNoKS5cblx0ICogVGhlIG1hcCBsb29rcyBsaWtlIHRoaXM6XG5cdCAqIDxjb2RlPjxwcmU+XG5cdCAqIFx0e1xuXHQgKiBcdFx0ZmlsdGVyQ29uZGl0aW9uczoge1xuXHQgKiBcdFx0XHRDb3VudHJ5OiBbXG5cdCAqIFx0XHRcdFx0e1xuXHQgKiBcdFx0XHRcdFx0b3BlcmF0b3I6IFwiRVFcIlxuXHQgKlx0XHRcdFx0XHR2YWxpZGF0ZWQ6IFwiTm90VmFsaWRhdGVkXCJcblx0ICpcdFx0XHRcdFx0dmFsdWVzOiBbXCJHZXJtYW55XCIsIC4uLl1cblx0ICogXHRcdFx0XHR9LFxuXHQgKiBcdFx0XHRcdC4uLlxuXHQgKiBcdFx0XHRdXG5cdCAqIFx0XHRcdC4uLlxuXHQgKiBcdFx0fSxcblx0ICpcdFx0Y3VycmVudFRhYklkOiBcImZlOjpDdXN0b21UYWI6OnRhYjFcIixcblx0ICpcdFx0cmVmcmVzaENhdXNlOiBcInRhYkNoYW5nZWRcIiB8IFwic2VhcmNoXCJcblx0ICpcdH1cblx0ICogPC9wcmU+PC9jb2RlPlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0b25WaWV3TmVlZHNSZWZyZXNoKG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHQvKiBUbyBiZSBvdmVycmlkZW4gKi9cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgY2FsbGVkIHdoZW4gYSBmaWx0ZXIgb3Igc2VhcmNoIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgaW4gdGhlIEZpbHRlckJhcixcblx0ICogYnV0IGhhcyBub3QgYmVlbiB2YWxpZGF0ZWQgeWV0IGJ5IHRoZSBlbmQgdXNlciAod2l0aCB0aGUgJ0dvJyBvciAnU2VhcmNoJyBidXR0b24pLlxuXHQgKiBUeXBpY2FsbHksIHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IHRhYiBpcyBncmV5ZWQgb3V0IHVudGlsIHRoZSBmaWx0ZXJzIGFyZSB2YWxpZGF0ZWQuXG5cdCAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVyd3JpdHRlbiBieSB0aGUgY29udHJvbGxlciBleHRlbnNpb24gaW4gY2FzZSBvZiBjdXN0b21pemF0aW9uLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdG9uUGVuZGluZ0ZpbHRlcnMoKSB7XG5cdFx0LyogVG8gYmUgb3ZlcnJpZGVuICovXG5cdH1cblxuXHRnZXRDdXJyZW50RW50aXR5U2V0KCkge1xuXHRcdHJldHVybiB0aGlzLl9nZXRUYWJsZSgpPy5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIikuc2xpY2UoMSk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIGNhbGxlZCB3aGVuIHRoZSAnQ2xlYXInIGJ1dHRvbiBvbiB0aGUgRmlsdGVyQmFyIGlzIHByZXNzZWQuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0b25BZnRlckNsZWFyKCkge1xuXHRcdC8qIFRvIGJlIG92ZXJyaWRlbiAqL1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIGluaXRpYXRlcyB0aGUgdXBkYXRlIG9mIHRoZSBlbmFibGVkIHN0YXRlIG9mIHRoZSBEYXRhRmllbGRGb3JBY3Rpb24gYW5kIHRoZSB2aXNpYmxlIHN0YXRlIG9mIHRoZSBEYXRhRmllbGRGb3JJQk4gYnV0dG9ucy5cblx0ICpcblx0ICogQHBhcmFtIGFUYWJsZXMgQXJyYXkgb2YgdGFibGVzIGluIHRoZSBsaXN0IHJlcG9ydFxuXHQgKi9cblx0X3VwZGF0ZVRhYmxlQWN0aW9ucyhhVGFibGVzOiBhbnkpIHtcblx0XHRsZXQgYUlCTkFjdGlvbnM6IGFueVtdID0gW107XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0YUlCTkFjdGlvbnMgPSBDb21tb25VdGlscy5nZXRJQk5BY3Rpb25zKG9UYWJsZSwgYUlCTkFjdGlvbnMpO1xuXHRcdFx0Ly8gVXBkYXRlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiBEYXRhRmllbGRGb3JBY3Rpb24gYnV0dG9ucyBvbiB0YWJsZSB0b29sYmFyXG5cdFx0XHQvLyBUaGUgc2FtZSBpcyBhbHNvIHBlcmZvcm1lZCBvbiBUYWJsZSBzZWxlY3Rpb25DaGFuZ2UgZXZlbnRcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpLFxuXHRcdFx0XHRvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwID0gSlNPTi5wYXJzZShcblx0XHRcdFx0XHRDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhKG9UYWJsZSwgXCJvcGVyYXRpb25BdmFpbGFibGVNYXBcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGFTZWxlY3RlZENvbnRleHRzID0gb1RhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKTtcblxuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VsZWN0ZWRDb250ZXh0c1wiLCBhU2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKTtcblx0XHRcdC8vIFJlZnJlc2ggZW5hYmxlbWVudCBvZiBkZWxldGUgYnV0dG9uXG5cdFx0XHREZWxldGVIZWxwZXIudXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMob0ludGVybmFsTW9kZWxDb250ZXh0LCBhU2VsZWN0ZWRDb250ZXh0cyk7XG5cblx0XHRcdEFjdGlvblJ1bnRpbWUuc2V0QWN0aW9uRW5hYmxlbWVudChvSW50ZXJuYWxNb2RlbENvbnRleHQsIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAsIGFTZWxlY3RlZENvbnRleHRzLCBcInRhYmxlXCIpO1xuXHRcdH0pO1xuXHRcdENvbW1vblV0aWxzLnVwZGF0ZURhdGFGaWVsZEZvcklCTkJ1dHRvbnNWaXNpYmlsaXR5KGFJQk5BY3Rpb25zLCB0aGlzLmdldFZpZXcoKSk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2Qgc2Nyb2xscyB0byBhIHNwZWNpZmljIHJvdyBvbiBhbGwgdGhlIGF2YWlsYWJsZSB0YWJsZXMuXG5cdCAqXG5cdCAqIEBwYXJhbSBzUm93UGF0aCBUaGUgcGF0aCBvZiB0aGUgdGFibGUgcm93IGNvbnRleHQgdG8gYmUgc2Nyb2xsZWQgdG9cblx0ICovXG5cdF9zY3JvbGxUYWJsZXNUb1JvdyhzUm93UGF0aDogc3RyaW5nKSB7XG5cdFx0dGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IGFueSkge1xuXHRcdFx0VGFibGVTY3JvbGxlci5zY3JvbGxUYWJsZVRvUm93KG9UYWJsZSwgc1Jvd1BhdGgpO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGluaXRpYWwgZm9jdXMgaW4gYSBsaXN0IHJlcG9ydCBiYXNlZCBvbiB0aGUgVXNlciBFeHBlcmllbmNlIGd1aWRlbGluZXMuXG5cdCAqXG5cdCAqL1xuXHRfc2V0SW5pdGlhbEZvY3VzKCkge1xuXHRcdGNvbnN0IGR5bmFtaWNQYWdlID0gdGhpcy5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sKCksXG5cdFx0XHRpc0hlYWRlckV4cGFuZGVkID0gZHluYW1pY1BhZ2UuZ2V0SGVhZGVyRXhwYW5kZWQoKSxcblx0XHRcdGZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKSBhcyBhbnk7XG5cdFx0aWYgKGZpbHRlckJhciAmJiAhdGhpcy5faXNGaWx0ZXJCYXJIaWRkZW5Vc2VkKCkpIHtcblx0XHRcdC8vRW5hYmxpbmcgbWFuZGF0b3J5IGZpbHRlciBmaWVsZHMgbWVzc2FnZSBkaWFsb2dcblx0XHRcdGlmICghZmlsdGVyQmFyLmdldFNob3dNZXNzYWdlcygpKSB7XG5cdFx0XHRcdGZpbHRlckJhci5zZXRTaG93TWVzc2FnZXModHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaXNIZWFkZXJFeHBhbmRlZCkge1xuXHRcdFx0XHRjb25zdCBmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQgPSBmaWx0ZXJCYXIuZ2V0RmlsdGVySXRlbXMoKS5maW5kKGZ1bmN0aW9uIChvRmlsdGVySXRlbTogYW55KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9GaWx0ZXJJdGVtLmdldFJlcXVpcmVkKCkgJiYgb0ZpbHRlckl0ZW0uZ2V0Q29uZGl0aW9ucygpLmxlbmd0aCA9PT0gMDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdC8vRm9jdXNpbmcgb24gdGhlIGZpcnN0IGVtcHR5IG1hbmRhdG9yeSBmaWx0ZXIgZmllbGQsIG9yIG9uIHRoZSBmaXJzdCBmaWx0ZXIgZmllbGQgaWYgdGhlIHRhYmxlIGRhdGEgaXMgbG9hZGVkXG5cdFx0XHRcdGlmIChmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQpIHtcblx0XHRcdFx0XHRmaXJzdEVtcHR5TWFuZGF0b3J5RmllbGQuZm9jdXMoKTtcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLl9pc0luaXRMb2FkRW5hYmxlZCgpICYmIGZpbHRlckJhci5nZXRGaWx0ZXJJdGVtcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHQvL0JDUDogMjM4MDAwODQwNiBBZGQgY2hlY2sgZm9yIGF2YWlsYWJsZSBmaWx0ZXJJdGVtc1xuXHRcdFx0XHRcdGZpbHRlckJhci5nZXRGaWx0ZXJJdGVtcygpWzBdLmZvY3VzKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly9Gb2N1c2luZyBvbiB0aGUgR28gYnV0dG9uXG5cdFx0XHRcdFx0dGhpcy5nZXRWaWV3KCkuYnlJZChgJHt0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sSWQoKX0tYnRuU2VhcmNoYCk/LmZvY3VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAodGhpcy5faXNJbml0TG9hZEVuYWJsZWQoKSkge1xuXHRcdFx0XHR0aGlzLl9nZXRUYWJsZSgpXG5cdFx0XHRcdFx0Py5mb2N1c1JvdygwKVxuXHRcdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyBpbml0aWFsIGZvY3VzIG9uIHRoZSB0YWJsZSBcIiwgZXJyb3IpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9nZXRUYWJsZSgpXG5cdFx0XHRcdD8uZm9jdXNSb3coMClcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgc2V0dGluZyBpbml0aWFsIGZvY3VzIG9uIHRoZSB0YWJsZSBcIiwgZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRfZ2V0UGFnZVRpdGxlSW5mb3JtYXRpb24oKSB7XG5cdFx0Y29uc3Qgb01hbmlmZXN0RW50cnkgPSB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldE1hbmlmZXN0RW50cnkoXCJzYXAuYXBwXCIpO1xuXHRcdHJldHVybiB7XG5cdFx0XHR0aXRsZTogb01hbmlmZXN0RW50cnkudGl0bGUsXG5cdFx0XHRzdWJ0aXRsZTogb01hbmlmZXN0RW50cnkuc3ViVGl0bGUgfHwgXCJcIixcblx0XHRcdGludGVudDogXCJcIixcblx0XHRcdGljb246IFwiXCJcblx0XHR9O1xuXHR9XG5cblx0X2dldEZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmJ5SWQodGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbElkKCkpIGFzIEZpbHRlckJhcjtcblx0fVxuXG5cdF9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VmlldygpLmJ5SWQodGhpcy5fZ2V0RHluYW1pY0xpc3RSZXBvcnRDb250cm9sSWQoKSkgYXMgRHluYW1pY1BhZ2U7XG5cdH1cblxuXHRfZ2V0QWRhcHRhdGlvbkZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0Ly8gSWYgdGhlIGFkYXB0YXRpb24gZmlsdGVyIGJhciBpcyBwYXJ0IG9mIHRoZSBET00gdHJlZSwgdGhlIFwiQWRhcHQgRmlsdGVyXCIgZGlhbG9nIGlzIG9wZW4sXG5cdFx0Ly8gYW5kIHdlIHJldHVybiB0aGUgYWRhcHRhdGlvbiBmaWx0ZXIgYmFyIGFzIGFuIGFjdGl2ZSBjb250cm9sICh2aXNpYmxlIGZvciB0aGUgdXNlcilcblx0XHRjb25zdCBhZGFwdGF0aW9uRmlsdGVyQmFyID0gKHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKSBhcyBhbnkpLmdldEluYnVpbHRGaWx0ZXIoKTtcblx0XHRyZXR1cm4gYWRhcHRhdGlvbkZpbHRlckJhcj8uZ2V0UGFyZW50KCkgPyBhZGFwdGF0aW9uRmlsdGVyQmFyIDogdW5kZWZpbmVkO1xuXHR9XG5cblx0YXN5bmMgX2FwcGx5QXBwU3RhdGUodmlld0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLmdldEFwcENvbXBvbmVudCgpLmdldEFwcFN0YXRlSGFuZGxlcigpLmFwcGx5QXBwU3RhdGUodmlld0lkLCB0aGlzLmdldFZpZXcoKSk7XG5cdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0b0ZpbHRlckJhci5zZXRTdXNwZW5kU2VsZWN0aW9uKGZhbHNlKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuX2lzRmlsdGVyQmFySGlkZGVuKCkpIHtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJoYXNQZW5kaW5nRmlsdGVyc1wiLCBmYWxzZSk7XG5cdFx0XHRpZiAodGhpcy5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0XHR0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCkuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0X2dldFNlZ21lbnRlZEJ1dHRvbihzQ29udHJvbDogYW55KSB7XG5cdFx0Y29uc3Qgc1NlZ21lbnRlZEJ1dHRvbklkID0gKHNDb250cm9sID09PSBcIkNoYXJ0XCIgPyB0aGlzLmdldENoYXJ0Q29udHJvbCgpIDogdGhpcy5fZ2V0VGFibGUoKSk/LmRhdGEoXCJzZWdtZW50ZWRCdXR0b25JZFwiKTtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZChzU2VnbWVudGVkQnV0dG9uSWQpO1xuXHR9XG5cblx0X2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoc1BhdGg6IHN0cmluZykge1xuXHRcdGNvbnN0IGNvbnRyb2xJZCA9IHRoaXMuX2dldFBhZ2VNb2RlbCgpPy5nZXRQcm9wZXJ0eShzUGF0aCk7XG5cdFx0cmV0dXJuIGNvbnRyb2xJZCA/IHRoaXMuZ2V0VmlldygpLmJ5SWQoY29udHJvbElkKSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdF9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZHluYW1pY0xpc3RSZXBvcnRJZFwiKSB8fCBcIlwiO1xuXHR9XG5cblx0X2dldEZpbHRlckJhckNvbnRyb2xJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvZmlsdGVyQmFySWRcIikgfHwgXCJcIjtcblx0fVxuXG5cdGdldENoYXJ0Q29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShcIi9zaW5nbGVDaGFydElkXCIpO1xuXHR9XG5cblx0X2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2woKSB7XG5cdFx0Y29uc3Qgc1Zpc3VhbEZpbHRlckJhcklkID0gU3RhYmxlSWRIZWxwZXIuZ2VuZXJhdGUoW1widmlzdWFsRmlsdGVyXCIsIHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2xJZCgpXSk7XG5cdFx0cmV0dXJuIHNWaXN1YWxGaWx0ZXJCYXJJZCAmJiB0aGlzLmdldFZpZXcoKS5ieUlkKHNWaXN1YWxGaWx0ZXJCYXJJZCk7XG5cdH1cblxuXHRfZ2V0RmlsdGVyQmFyVmFyaWFudENvbnRyb2woKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldENvbnRyb2xGcm9tUGFnZU1vZGVsUHJvcGVydHkoXCIvdmFyaWFudE1hbmFnZW1lbnQvaWRcIik7XG5cdH1cblxuXHRfZ2V0TXVsdGlNb2RlQ29udHJvbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjpUYWJNdWx0aXBsZU1vZGU6OkNvbnRyb2xcIikgYXMgTXVsdGlwbGVNb2RlQ29udHJvbDtcblx0fVxuXG5cdF9nZXRJY29uVGFiQmFyKCk6IEljb25UYWJCYXIgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmdldFZpZXcoKS5ieUlkKFwiZmU6OlRhYk11bHRpcGxlTW9kZVwiKSBhcyBJY29uVGFiQmFyO1xuXHR9XG5cblx0X2dldFRhYmxlKCk6IFRhYmxlIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5faXNNdWx0aU1vZGUoKSkge1xuXHRcdFx0Y29uc3Qgb0NvbnRyb2wgPSB0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCk/LmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCk/LmNvbnRlbnQ7XG5cdFx0XHRyZXR1cm4gb0NvbnRyb2w/LmlzQShcInNhcC51aS5tZGMuVGFibGVcIikgPyAob0NvbnRyb2wgYXMgVGFibGUpIDogdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fZ2V0Q29udHJvbEZyb21QYWdlTW9kZWxQcm9wZXJ0eShcIi9zaW5nbGVUYWJsZUlkXCIpIGFzIFRhYmxlIHwgdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdF9nZXRDb250cm9scyhzS2V5PzogYW55KSB7XG5cdFx0aWYgKHRoaXMuX2lzTXVsdGlNb2RlKCkpIHtcblx0XHRcdGNvbnN0IGFDb250cm9sczogYW55W10gPSBbXTtcblx0XHRcdGNvbnN0IG9UYWJNdWx0aU1vZGUgPSB0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCkuY29udGVudDtcblx0XHRcdG9UYWJNdWx0aU1vZGUuZ2V0SXRlbXMoKS5mb3JFYWNoKChvSXRlbTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gdGhpcy5nZXRWaWV3KCkuYnlJZChvSXRlbS5nZXRLZXkoKSk7XG5cdFx0XHRcdGlmIChvQ29udHJvbCAmJiBzS2V5KSB7XG5cdFx0XHRcdFx0aWYgKG9JdGVtLmdldEtleSgpLmluZGV4T2YoYGZlOjoke3NLZXl9YCkgPiAtMSkge1xuXHRcdFx0XHRcdFx0YUNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChvQ29udHJvbCAhPT0gdW5kZWZpbmVkICYmIG9Db250cm9sICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0YUNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBhQ29udHJvbHM7XG5cdFx0fSBlbHNlIGlmIChzS2V5ID09PSBcIkNoYXJ0XCIpIHtcblx0XHRcdGNvbnN0IG9DaGFydCA9IHRoaXMuZ2V0Q2hhcnRDb250cm9sKCk7XG5cdFx0XHRyZXR1cm4gb0NoYXJ0ID8gW29DaGFydF0gOiBbXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb1RhYmxlID0gdGhpcy5fZ2V0VGFibGUoKTtcblx0XHRcdHJldHVybiBvVGFibGUgPyBbb1RhYmxlXSA6IFtdO1xuXHRcdH1cblx0fVxuXG5cdF9nZXREZWZhdWx0UGF0aCgpIHtcblx0XHRjb25zdCBkZWZhdWx0UGF0aCA9IExpc3RSZXBvcnRUZW1wbGF0aW5nLmdldERlZmF1bHRQYXRoKHRoaXMuX2dldFBhZ2VNb2RlbCgpPy5nZXRQcm9wZXJ0eShcIi92aWV3c1wiKSB8fCBbXSk7XG5cdFx0c3dpdGNoIChkZWZhdWx0UGF0aCkge1xuXHRcdFx0Y2FzZSBcInByaW1hcnlcIjpcblx0XHRcdFx0cmV0dXJuIFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ7XG5cdFx0XHRjYXNlIFwic2Vjb25kYXJ5XCI6XG5cdFx0XHRcdHJldHVybiBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlO1xuXHRcdFx0Y2FzZSBcImJvdGhcIjpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBUZW1wbGF0ZUNvbnRlbnRWaWV3Lkh5YnJpZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGtub3cgaWYgTGlzdFJlcG9ydCBpcyBjb25maWd1cmVkIHdpdGggTXVsdGlwbGUgVGFibGUgbW9kZS5cblx0ICpcblx0ICogQHJldHVybnMgSXMgTXVsdGlwbGUgVGFibGUgbW9kZSBzZXQ/XG5cdCAqL1xuXHRfaXNNdWx0aU1vZGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5fZ2V0UGFnZU1vZGVsKCk/LmdldFByb3BlcnR5KFwiL211bHRpVmlld3NDb250cm9sXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBrbm93IGlmIExpc3RSZXBvcnQgaXMgY29uZmlndXJlZCB0byBsb2FkIGRhdGEgYXQgc3RhcnQgdXAuXG5cdCAqXG5cdCAqIEByZXR1cm5zIElzIEluaXRMb2FkIGVuYWJsZWQ/XG5cdCAqL1xuXHRfaXNJbml0TG9hZEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgaW5pdExvYWRNb2RlID0gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5pbml0aWFsTG9hZDtcblx0XHRyZXR1cm4gaW5pdExvYWRNb2RlID09PSBJbml0aWFsTG9hZE1vZGUuRW5hYmxlZDtcblx0fVxuXG5cdF9oYXNNdWx0aVZpc3VhbGl6YXRpb25zKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9nZXRQYWdlTW9kZWwoKT8uZ2V0UHJvcGVydHkoXCIvaGFzTXVsdGlWaXN1YWxpemF0aW9uc1wiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gc3VzcGVuZCBzZWFyY2ggb24gdGhlIGZpbHRlciBiYXIuIFRoZSBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpcyBkaXNhYmxlZCBiYXNlZCBvbiB0aGUgbWFuaWZlc3QgY29uZmlndXJhdGlvbiBJbml0TG9hZCAtIERpc2FibGVkL0F1dG8uXG5cdCAqIEl0IGlzIGVuYWJsZWQgbGF0ZXIgd2hlbiB0aGUgdmlldyBzdGF0ZSBpcyBzZXQsIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gcmVhbGl6ZSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzLlxuXHQgKi9cblx0X2Rpc2FibGVJbml0TG9hZCgpIHtcblx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0Ly8gY2hlY2sgZm9yIGZpbHRlciBiYXIgaGlkZGVuXG5cdFx0aWYgKGZpbHRlckJhcikge1xuXHRcdFx0ZmlsdGVyQmFyLnNldFN1c3BlbmRTZWxlY3Rpb24odHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1ldGhvZCBjYWxsZWQgYnkgZmxleCB0byBkZXRlcm1pbmUgaWYgdGhlIGFwcGx5QXV0b21hdGljYWxseSBzZXR0aW5nIG9uIHRoZSB2YXJpYW50IGlzIHZhbGlkLlxuXHQgKiBDYWxsZWQgb25seSBmb3IgU3RhbmRhcmQgVmFyaWFudCBhbmQgb25seSB3aGVuIHRoZXJlIGlzIGRpc3BsYXkgdGV4dCBzZXQgZm9yIGFwcGx5QXV0b21hdGljYWxseSAoRkUgb25seSBzZXRzIGl0IGZvciBBdXRvKS5cblx0ICpcblx0ICogQHJldHVybnMgQm9vbGVhbiB0cnVlIGlmIGRhdGEgc2hvdWxkIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LCBmYWxzZSBvdGhlcndpc2Vcblx0ICovXG5cdF9hcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCgpIHtcblx0XHQvLyBXZSBhbHdheXMgcmV0dXJuIGZhbHNlIGFuZCB0YWtlIGNhcmUgb2YgaXQgd2hlbiB2aWV3IHN0YXRlIGlzIHNldFxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25maWd1cmUgdGhlIHNldHRpbmdzIGZvciBpbml0aWFsIGxvYWQgYmFzZWQgb25cblx0ICogLSBtYW5pZmVzdCBzZXR0aW5nIGluaXRMb2FkIC0gRW5hYmxlZC9EaXNhYmxlZC9BdXRvXG5cdCAqIC0gdXNlcidzIHNldHRpbmcgb2YgYXBwbHlBdXRvbWF0aWNhbGx5IG9uIHZhcmlhbnRcblx0ICogLSBpZiB0aGVyZSBhcmUgZGVmYXVsdCBmaWx0ZXJzXG5cdCAqIFdlIGRpc2FibGUgdGhlIGZpbHRlciBiYXIgc2VhcmNoIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuYWJsZSBpdCB3aGVuIHZpZXcgc3RhdGUgaXMgc2V0LlxuXHQgKi9cblx0X3NldEluaXRMb2FkKCkge1xuXHRcdC8vIGlmIGluaXRMb2FkIGlzIERpc2FibGVkIG9yIEF1dG8sIHN3aXRjaCBvZmYgZmlsdGVyIGJhciBzZWFyY2ggdGVtcG9yYXJpbHkgYXQgc3RhcnRcblx0XHRpZiAoIXRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkpIHtcblx0XHRcdHRoaXMuX2Rpc2FibGVJbml0TG9hZCgpO1xuXHRcdH1cblx0XHQvLyBzZXQgaG9vayBmb3IgZmxleCBmb3Igd2hlbiBzdGFuZGFyZCB2YXJpYW50IGlzIHNldCAoYXQgc3RhcnQgb3IgYnkgdXNlciBhdCBydW50aW1lKVxuXHRcdC8vIHJlcXVpcmVkIHRvIG92ZXJyaWRlIHRoZSB1c2VyIHNldHRpbmcgJ2FwcGx5IGF1dG9tYXRpY2FsbHknIGJlaGF2aW91ciBpZiB0aGVyZSBhcmUgbm8gZmlsdGVyc1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50SWQ6IGFueSA9IExpc3RSZXBvcnRUZW1wbGF0aW5nLmdldFZhcmlhbnRCYWNrUmVmZXJlbmNlKFxuXHRcdFx0dGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBWaWV3RGF0YSxcblx0XHRcdHRoaXMuX2dldFBhZ2VNb2RlbCgpPy5nZXREYXRhKCkgYXMgTGlzdFJlcG9ydERlZmluaXRpb25cblx0XHQpO1xuXHRcdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50ID0gdmFyaWFudE1hbmFnZW1lbnRJZCAmJiB0aGlzLmdldFZpZXcoKS5ieUlkKHZhcmlhbnRNYW5hZ2VtZW50SWQpO1xuXHRcdGlmICh2YXJpYW50TWFuYWdlbWVudCkge1xuXHRcdFx0dmFyaWFudE1hbmFnZW1lbnQucmVnaXN0ZXJBcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudCh0aGlzLl9hcHBseUF1dG9tYXRpY2FsbHlPblN0YW5kYXJkVmFyaWFudC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdH1cblxuXHRfc2V0U2hhcmVNb2RlbCgpIHtcblx0XHQvLyBUT0RPOiBkZWFjdGl2YXRlZCBmb3Igbm93IC0gY3VycmVudGx5IHRoZXJlIGlzIG5vIF90ZW1wbFByaXYgYW55bW9yZSwgdG8gYmUgZGlzY3Vzc2VkXG5cdFx0Ly8gdGhpcyBtZXRob2QgaXMgY3VycmVudGx5IG5vdCBjYWxsZWQgYW55bW9yZSBmcm9tIHRoZSBpbml0IG1ldGhvZFxuXG5cdFx0Y29uc3QgZm5HZXRVc2VyID0gT2JqZWN0UGF0aC5nZXQoXCJzYXAudXNoZWxsLkNvbnRhaW5lci5nZXRVc2VyXCIpO1xuXHRcdC8vdmFyIG9NYW5pZmVzdCA9IHRoaXMuZ2V0T3duZXJDb21wb25lbnQoKS5nZXRBcHBDb21wb25lbnQoKS5nZXRNZXRhZGF0YSgpLmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWlcIik7XG5cdFx0Ly92YXIgc0Jvb2ttYXJrSWNvbiA9IChvTWFuaWZlc3QgJiYgb01hbmlmZXN0Lmljb25zICYmIG9NYW5pZmVzdC5pY29ucy5pY29uKSB8fCBcIlwiO1xuXG5cdFx0Ly9zaGFyZU1vZGVsOiBIb2xkcyBhbGwgdGhlIHNoYXJpbmcgcmVsZXZhbnQgaW5mb3JtYXRpb24gYW5kIGluZm8gdXNlZCBpbiBYTUwgdmlld1xuXHRcdGNvbnN0IG9TaGFyZUluZm8gPSB7XG5cdFx0XHRib29rbWFya1RpdGxlOiBkb2N1bWVudC50aXRsZSwgLy9UbyBuYW1lIHRoZSBib29rbWFyayBhY2NvcmRpbmcgdG8gdGhlIGFwcCB0aXRsZS5cblx0XHRcdGJvb2ttYXJrQ3VzdG9tVXJsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGNvbnN0IHNIYXNoID0gaGFzaGVyLmdldEhhc2goKTtcblx0XHRcdFx0cmV0dXJuIHNIYXNoID8gYCMke3NIYXNofWAgOiB3aW5kb3cubG9jYXRpb24uaHJlZjtcblx0XHRcdH0sXG5cdFx0XHQvKlxuXHRcdFx0XHRcdFx0XHRUbyBiZSBhY3RpdmF0ZWQgb25jZSB0aGUgRkxQIHNob3dzIHRoZSBjb3VudCAtIHNlZSBjb21tZW50IGFib3ZlXG5cdFx0XHRcdFx0XHRcdGJvb2ttYXJrU2VydmljZVVybDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly92YXIgb1RhYmxlID0gb1RhYmxlLmdldElubmVyVGFibGUoKTsgb1RhYmxlIGlzIGFscmVhZHkgdGhlIHNhcC5mZSB0YWJsZSAoYnV0IG5vdCB0aGUgaW5uZXIgb25lKVxuXHRcdFx0XHRcdFx0XHRcdC8vIHdlIHNob3VsZCB1c2UgdGFibGUuZ2V0TGlzdEJpbmRpbmdJbmZvIGluc3RlYWQgb2YgdGhlIGJpbmRpbmdcblx0XHRcdFx0XHRcdFx0XHR2YXIgb0JpbmRpbmcgPSBvVGFibGUuZ2V0QmluZGluZyhcInJvd3NcIikgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb0JpbmRpbmcgPyBmbkdldERvd25sb2FkVXJsKG9CaW5kaW5nKSA6IFwiXCI7XG5cdFx0XHRcdFx0XHRcdH0sKi9cblx0XHRcdGlzU2hhcmVJbkphbUFjdGl2ZTogISFmbkdldFVzZXIgJiYgZm5HZXRVc2VyKCkuaXNKYW1BY3RpdmUoKVxuXHRcdH07XG5cblx0XHRjb25zdCBvVGVtcGxhdGVQcml2YXRlTW9kZWwgPSB0aGlzLmdldE93bmVyQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJfdGVtcGxQcml2XCIpIGFzIEpTT05Nb2RlbDtcblx0XHRvVGVtcGxhdGVQcml2YXRlTW9kZWwuc2V0UHJvcGVydHkoXCIvbGlzdFJlcG9ydC9zaGFyZVwiLCBvU2hhcmVJbmZvKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gdXBkYXRlIHRoZSBsb2NhbCBVSSBtb2RlbCBvZiB0aGUgcGFnZSB3aXRoIHRoZSBmaWVsZHMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgdG8gdGhlIGZpbHRlciBiYXIgKHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIEFMUCBzY2VuYXJpbykuXG5cdCAqXG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgVGhlIGludGVybmFsIG1vZGVsIGNvbnRleHRcblx0ICogQHBhcmFtIG9GaWx0ZXJCYXIgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdF91cGRhdGVBTFBOb3RBcHBsaWNhYmxlRmllbGRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsIG9GaWx0ZXJCYXI6IEZpbHRlckJhcikge1xuXHRcdGNvbnN0IG1DYWNoZTogYW55ID0ge307XG5cdFx0Y29uc3QgaWdub3JlZEZpZWxkczogYW55ID0ge30sXG5cdFx0XHRhVGFibGVzID0gdGhpcy5fZ2V0Q29udHJvbHMoXCJ0YWJsZVwiKSxcblx0XHRcdGFDaGFydHMgPSB0aGlzLl9nZXRDb250cm9scyhcIkNoYXJ0XCIpO1xuXG5cdFx0aWYgKCFhVGFibGVzLmxlbmd0aCB8fCAhYUNoYXJ0cy5sZW5ndGgpIHtcblx0XHRcdC8vIElmIHRoZXJlJ3Mgbm90IGEgdGFibGUgYW5kIGEgY2hhcnQsIHdlJ3JlIG5vdCBpbiB0aGUgQUxQIGNhc2Vcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGb3IgdGhlIG1vbWVudCwgdGhlcmUncyBub3RoaW5nIGZvciB0YWJsZXMuLi5cblx0XHRhQ2hhcnRzLmZvckVhY2goZnVuY3Rpb24gKG9DaGFydDogYW55KSB7XG5cdFx0XHRjb25zdCBzQ2hhcnRFbnRpdHlQYXRoID0gb0NoYXJ0LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKSxcblx0XHRcdFx0c0NoYXJ0RW50aXR5U2V0ID0gc0NoYXJ0RW50aXR5UGF0aC5zbGljZSgxKSxcblx0XHRcdFx0c0NhY2hlS2V5ID0gYCR7c0NoYXJ0RW50aXR5U2V0fUNoYXJ0YDtcblx0XHRcdGlmICghbUNhY2hlW3NDYWNoZUtleV0pIHtcblx0XHRcdFx0bUNhY2hlW3NDYWNoZUtleV0gPSBGaWx0ZXJVdGlscy5nZXROb3RBcHBsaWNhYmxlRmlsdGVycyhvRmlsdGVyQmFyLCBvQ2hhcnQpO1xuXHRcdFx0fVxuXHRcdFx0aWdub3JlZEZpZWxkc1tzQ2FjaGVLZXldID0gbUNhY2hlW3NDYWNoZUtleV07XG5cdFx0fSk7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29udHJvbHMvaWdub3JlZEZpZWxkc1wiLCBpZ25vcmVkRmllbGRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm92aWRlcyB0aGUgc2V0dGluZyB3aGV0aGVyIEZpbHRlckJhciBpcyBoaWRkZW4gYmFzZWQgb24gdGhlIG1hbmlmZXN0IHNldHRpbmcgJ2hpZGVGaWx0ZXJCYXInLlxuXHQgKiBTaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIF9pc0ZpbHRlckJhckhpZGRlblVzZWQgYXMgaXQgbWF5IGhhdmUgb3ZlcnJpZGRlbiB0aGlzIHNldHRpbmcuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgdGhlIEZpbHRlckJhciBpcyBoaWRkZW4sIGZhbHNlIGlmIHVua25vd25cblx0ICovXG5cdF9pc0ZpbHRlckJhckhpZGRlbigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGEpLmhpZGVGaWx0ZXJCYXIgfHwgZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUHJvdmlkZXMgdGhlIHNldHRpbmcgd2hldGhlciBGaWx0ZXJCYXIgaXMgaGlkZGVuIGJ1dCBzdGlsbCBleGlzdHMgYmFzZWQgb24gdGhlIG1hbmlmZXN0IHNldHRpbmcgJ3VzZUhpZGRlbkZpbHRlckJhcicuXG5cdCAqIFNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggX2lzRmlsdGVyQmFySGlkZGVuIGFzIGl0IGNhbiBhbHNvIGhpZGUgdGhlIEZpbHRlckJhci5cblx0ICpcblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgRmlsdGVyQmFyIGlzIGhpZGRlbiwgZmFsc2UgaWYgdW5rbm93blxuXHQgKi9cblx0X2lzRmlsdGVyQmFySGlkZGVuVXNlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgVmlld0RhdGEpLnVzZUhpZGRlbkZpbHRlckJhciB8fCBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBseUF1dG9tYXRpY2FsbHlPblZhcmlhbnQoVmFyaWFudE1hbmFnZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpOiBCb29sZWFuIHtcblx0XHRpZiAoIVZhcmlhbnRNYW5hZ2VtZW50IHx8ICFrZXkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0Y29uc3QgdmFyaWFudHMgPSBWYXJpYW50TWFuYWdlbWVudC5nZXRWYXJpYW50cygpO1xuXHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50ID0gdmFyaWFudHMuZmluZChmdW5jdGlvbiAodmFyaWFudDogYW55KSB7XG5cdFx0XHRyZXR1cm4gdmFyaWFudCAmJiB2YXJpYW50LmdldEtleSgpID09PSBrZXk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIChjdXJyZW50VmFyaWFudCAmJiBjdXJyZW50VmFyaWFudC5nZXRFeGVjdXRlT25TZWxlY3QoKSkgfHwgZmFsc2U7XG5cdH1cblxuXHRfc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2gob1ZNOiBhbnkpIHtcblx0XHRpZiAoXG5cdFx0XHQodGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBhbnkpLmluaXRpYWxMb2FkID09PSBJbml0aWFsTG9hZE1vZGUuQXV0byAmJlxuXHRcdFx0KCFvVk0gfHwgb1ZNLmdldFN0YW5kYXJkVmFyaWFudEtleSgpID09PSBvVk0uZ2V0Q3VycmVudFZhcmlhbnRLZXkoKSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IG9GaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHRpZiAob0ZpbHRlckJhcikge1xuXHRcdFx0XHRjb25zdCBvQ29uZGl0aW9ucyA9IG9GaWx0ZXJCYXIuZ2V0Q29uZGl0aW9ucygpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHNLZXkgaW4gb0NvbmRpdGlvbnMpIHtcblx0XHRcdFx0XHQvLyBpZ25vcmUgZmlsdGVycyBzdGFydGluZyB3aXRoICQgKGUuZy4gJHNlYXJjaCwgJGVkaXRTdGF0ZSlcblx0XHRcdFx0XHRpZiAoIXNLZXkuc3RhcnRzV2l0aChcIiRcIikgJiYgQXJyYXkuaXNBcnJheShvQ29uZGl0aW9uc1tzS2V5XSkgJiYgb0NvbmRpdGlvbnNbc0tleV0ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQvLyBsb2FkIGRhdGEgYXMgcGVyIHVzZXIncyBzZXR0aW5nIG9mIGFwcGx5QXV0b21hdGljYWxseSBvbiB0aGUgdmFyaWFudFxuXHRcdFx0XHRcdFx0Y29uc3Qgc3RhbmRhcmRWYXJpYW50OiBhbnkgPSBvVk0uZ2V0VmFyaWFudHMoKS5maW5kKCh2YXJpYW50OiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhcmlhbnQuZ2V0S2V5KCkgPT09IG9WTS5nZXRDdXJyZW50VmFyaWFudEtleSgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc3RhbmRhcmRWYXJpYW50ICYmIHN0YW5kYXJkVmFyaWFudC5nZXRFeGVjdXRlT25TZWxlY3QoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0X3VwZGF0ZVRhYmxlKG9UYWJsZTogYW55KSB7XG5cdFx0aWYgKCFvVGFibGUuaXNUYWJsZUJvdW5kKCkgfHwgdGhpcy5oYXNQZW5kaW5nQ2hhcnRDaGFuZ2VzKSB7XG5cdFx0XHRvVGFibGUucmViaW5kKCk7XG5cdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRfdXBkYXRlQ2hhcnQob0NoYXJ0OiBhbnkpIHtcblx0XHRjb25zdCBvSW5uZXJDaGFydCA9IG9DaGFydC5nZXRDb250cm9sRGVsZWdhdGUoKS5fZ2V0Q2hhcnQob0NoYXJ0KTtcblx0XHRpZiAoIShvSW5uZXJDaGFydCAmJiBvSW5uZXJDaGFydC5pc0JvdW5kKFwiZGF0YVwiKSkgfHwgdGhpcy5oYXNQZW5kaW5nVGFibGVDaGFuZ2VzKSB7XG5cdFx0XHRvQ2hhcnQuZ2V0Q29udHJvbERlbGVnYXRlKCkucmViaW5kKG9DaGFydCwgb0lubmVyQ2hhcnQuZ2V0QmluZGluZ0luZm8oXCJkYXRhXCIpKTtcblx0XHRcdHRoaXMuaGFzUGVuZGluZ1RhYmxlQ2hhbmdlcyA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdGhlIHZpc2liaWxpdHkgb2YgZmlsdGVyIHRvZ2dsZSBidXR0b24uXG5cdCAqXG5cdCAqIEBwYXJhbSBidXR0b25WaXNpYmxlIEZpbHRlciB0b2dnbGUgYnV0dG9uIHZpc2liaWxpdHlcblx0ICovXG5cdHNldEZpbHRlclRvZ2dsZVZpc2liaWxpdHkoYnV0dG9uVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IGZpbHRlckJhcjogRmlsdGVyQmFyID0gdGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdGZpbHRlckJhci5nZXRTZWdtZW50ZWRCdXR0b24oKT8uc2V0VmlzaWJsZShidXR0b25WaXNpYmxlKTtcblx0fVxuXG5cdGhhbmRsZXJzID0ge1xuXHRcdG9uRmlsdGVyU2VhcmNoKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyKSB7XG5cdFx0XHRjb25zdCBmaWx0ZXJCYXJBUEkgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCkuZ2V0UGFyZW50KCkgYXMgRmlsdGVyQmFyQVBJO1xuXHRcdFx0ZmlsdGVyQmFyQVBJLnRyaWdnZXJTZWFyY2goKTtcblx0XHR9LFxuXHRcdG9uRmlsdGVyc0NoYW5nZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCBvRmlsdGVyQmFyID0gdGhpcy5fZ2V0RmlsdGVyQmFyQ29udHJvbCgpO1xuXHRcdFx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCB8IHVuZGVmaW5lZDtcblx0XHRcdFx0Ly8gUGVuZGluZyBmaWx0ZXJzIGludG8gRmlsdGVyQmFyIHRvIGJlIHVzZWQgZm9yIGN1c3RvbSB2aWV3c1xuXHRcdFx0XHR0aGlzLm9uUGVuZGluZ0ZpbHRlcnMoKTtcblx0XHRcdFx0Y29uc3QgYXBwbGllZEZpbHRlcnNUZXh0ID0gb0ZpbHRlckJhci5nZXRBc3NpZ25lZEZpbHRlcnNUZXh0KCkuZmlsdGVyc1RleHQ7XG5cdFx0XHRcdGNvbnN0IGFwcGxpZWRGaWx0ZXJCaW5kaW5nID0gYmluZGluZ1BhcnNlcihhcHBsaWVkRmlsdGVyc1RleHQpO1xuXHRcdFx0XHRpZiAoYXBwbGllZEZpbHRlckJpbmRpbmcpIHtcblx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjphcHBsaWVkRmlsdGVyc1RleHRcIikgYXMgVGV4dCB8IHVuZGVmaW5lZCk/LmJpbmRUZXh0KGFwcGxpZWRGaWx0ZXJCaW5kaW5nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQodGhpcy5nZXRWaWV3KCkuYnlJZChcImZlOjphcHBsaWVkRmlsdGVyc1RleHRcIikgYXMgVGV4dCB8IHVuZGVmaW5lZCk/LnNldFRleHQoYXBwbGllZEZpbHRlcnNUZXh0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChvSW50ZXJuYWxNb2RlbENvbnRleHQgJiYgb0V2ZW50LmdldFBhcmFtZXRlcihcImNvbmRpdGlvbnNCYXNlZFwiKSkge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvSW50ZXJuYWxNb2RlbENvbnRleHQpIHtcblx0XHRcdFx0XHR0aGlzLl9zdG9yZUZpbHRlckJhclNlbGVjdGlvblZhcmlhbnQob0ZpbHRlckJhciwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0b25WYXJpYW50U2VsZWN0ZWQodGhpczogTGlzdFJlcG9ydENvbnRyb2xsZXIsIG9FdmVudDogYW55KSB7XG5cdFx0XHRjb25zdCB2YXJpYW50TWFuYWdlbWVudCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRcdGNvbnN0IGN1cnJlbnRWYXJpYW50S2V5ID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImtleVwiKTtcblx0XHRcdGNvbnN0IG11bHRpTW9kZUNvbnRyb2wgPSB0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCk7XG5cblx0XHRcdGlmIChtdWx0aU1vZGVDb250cm9sICYmICF2YXJpYW50TWFuYWdlbWVudD8uZ2V0UGFyZW50KCkuaXNBKFwic2FwLnVpLm1kYy5BY3Rpb25Ub29sYmFyXCIpKSB7XG5cdFx0XHRcdC8vTm90IGEgQ29udHJvbCBWYXJpYW50XG5cdFx0XHRcdG11bHRpTW9kZUNvbnRyb2w/LmludmFsaWRhdGVDb250ZW50KCk7XG5cdFx0XHRcdG11bHRpTW9kZUNvbnRyb2w/LnNldEZyZWV6ZUNvbnRlbnQodHJ1ZSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldFRpbWVvdXQgY2F1c2UgdGhlIHZhcmlhbnQgbmVlZHMgdG8gYmUgYXBwbGllZCBiZWZvcmUganVkZ2luZyB0aGUgYXV0byBzZWFyY2ggb3IgdXBkYXRpbmcgdGhlIGFwcCBzdGF0ZVxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdFx0Y29uc3QgZHluYW1pY1BhZ2UgPSB0aGlzLl9nZXREeW5hbWljTGlzdFJlcG9ydENvbnRyb2woKTtcblx0XHRcdFx0Y29uc3QgZmlyc3RFbXB0eU1hbmRhdG9yeUZpZWxkID0gZmlsdGVyQmFyLmdldEZpbHRlckl0ZW1zKCkuZmluZChmdW5jdGlvbiAoZmlsdGVySXRlbSkge1xuXHRcdFx0XHRcdHJldHVybiBmaWx0ZXJJdGVtLmdldFJlcXVpcmVkKCkgJiYgZmlsdGVySXRlbS5nZXRDb25kaXRpb25zKCkubGVuZ3RoID09PSAwO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGZpcnN0RW1wdHlNYW5kYXRvcnlGaWVsZCkge1xuXHRcdFx0XHRcdGR5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaCh2YXJpYW50TWFuYWdlbWVudCkpIHtcblx0XHRcdFx0XHQvLyB0aGUgYXBwIHN0YXRlIHdpbGwgYmUgdXBkYXRlZCB2aWEgb25TZWFyY2ggaGFuZGxlclxuXHRcdFx0XHRcdGNvbnN0IGZpbHRlckJhckFQSSA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKS5nZXRQYXJlbnQoKSBhcyBGaWx0ZXJCYXJBUEk7XG5cdFx0XHRcdFx0cmV0dXJuIGZpbHRlckJhckFQSS50cmlnZ2VyU2VhcmNoKCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIXRoaXMuX2dldEFwcGx5QXV0b21hdGljYWxseU9uVmFyaWFudCh2YXJpYW50TWFuYWdlbWVudCwgY3VycmVudFZhcmlhbnRLZXkpKSB7XG5cdFx0XHRcdFx0bXVsdGlNb2RlQ29udHJvbD8uc2V0RnJlZXplQ29udGVudChmYWxzZSk7XG5cdFx0XHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdFx0XHRcdGR5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAwKTtcblx0XHR9LFxuXHRcdG9uVmFyaWFudFNhdmVkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyKTogdm9pZCB7XG5cdFx0XHQvL1RPRE86IFNob3VsZCByZW1vdmUgdGhpcyBzZXRUaW1lT3V0IG9uY2UgVmFyaWFudCBNYW5hZ2VtZW50IHByb3ZpZGVzIGFuIGFwaSB0byBmZXRjaCB0aGUgY3VycmVudCB2YXJpYW50IGtleSBvbiBzYXZlISEhXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fSxcblx0XHRvblNlYXJjaCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlcik6IHZvaWQge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IHRoaXMuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRjb25zdCBvTWRjQ2hhcnQgPSB0aGlzLmdldENoYXJ0Q29udHJvbCgpO1xuXHRcdFx0Y29uc3QgYkhpZGVEcmFmdCA9IEZpbHRlclV0aWxzLmdldEVkaXRTdGF0ZUlzSGlkZURyYWZ0KG9GaWx0ZXJCYXIuZ2V0Q29uZGl0aW9ucygpKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhhc1BlbmRpbmdGaWx0ZXJzXCIsIGZhbHNlKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImhpZGVEcmFmdEluZm9cIiwgYkhpZGVEcmFmdCk7XG5cdFx0XHRjb25zdCBkeW5hbWljUGFnZSA9IHRoaXMuX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpO1xuXHRcdFx0aWYgKCF0aGlzLl9nZXRNdWx0aU1vZGVDb250cm9sKCkpIHtcblx0XHRcdFx0dGhpcy5fdXBkYXRlQUxQTm90QXBwbGljYWJsZUZpZWxkcyhvSW50ZXJuYWxNb2RlbENvbnRleHQsIG9GaWx0ZXJCYXIpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9NZGNDaGFydCkge1xuXHRcdFx0XHQvLyBkaXNhYmxlIGJvdW5kIGFjdGlvbnMgVE9ETzogdGhpcyBjbGVhcnMgZXZlcnl0aGluZyBmb3IgdGhlIGNoYXJ0P1xuXHRcdFx0XHQob01kY0NoYXJ0LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQpLnNldFByb3BlcnR5KFwiXCIsIHt9KTtcblxuXHRcdFx0XHRjb25zdCBvUGFnZUludGVybmFsTW9kZWxDb250ZXh0ID0gb01kY0NoYXJ0LmdldEJpbmRpbmdDb250ZXh0KFwicGFnZUludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRjb25zdCBzVGVtcGxhdGVDb250ZW50VmlldyA9IG9QYWdlSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7b1BhZ2VJbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2FscENvbnRlbnRWaWV3YCk7XG5cdFx0XHRcdGlmIChzVGVtcGxhdGVDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkge1xuXHRcdFx0XHRcdHRoaXMuaGFzUGVuZGluZ0NoYXJ0Q2hhbmdlcyA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNUZW1wbGF0ZUNvbnRlbnRWaWV3ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlKSB7XG5cdFx0XHRcdFx0dGhpcy5oYXNQZW5kaW5nVGFibGVDaGFuZ2VzID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvL2xvZ2ljIGZvciBleHBhbnNpb24gb3IgY29sbGFwc2Ugb2YgZmlsdGVyIGJhciBzdGFydHNcblx0XHRcdGlmICghRGV2aWNlLnN5c3RlbS5kZXNrdG9wICYmIG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInNlYXJjaFRyaWdnZXJlZEJ5SW5pdGlhbExvYWRcIikgPT09IHRydWUpIHtcblx0XHRcdFx0aWYgKGR5bmFtaWNQYWdlLmdldEhlYWRlckV4cGFuZGVkKCkgIT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0ZHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQoZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vc2V0dGluZyBpdCB0byBmYWxzZSBzbyB0aGF0IGZ1cnRoZXIgc2VhcmNoIG9yICdHbycgdHJpZ2dlcnMgd29uJ3QgY29sbGFwc2UgdGhlIGZpbHRlciBiYXJcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwic2VhcmNoVHJpZ2dlcmVkQnlJbml0aWFsTG9hZFwiLCBmYWxzZSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHN0b3JlIGZpbHRlciBiYXIgY29uZGl0aW9ucyB0byB1c2UgbGF0ZXIgd2hpbGUgbmF2aWdhdGlvblxuXHRcdFx0U3RhdGVVdGlsLnJldHJpZXZlRXh0ZXJuYWxTdGF0ZShvRmlsdGVyQmFyKVxuXHRcdFx0XHQudGhlbigob0V4dGVybmFsU3RhdGU6IGFueSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZmlsdGVyQmFyQ29uZGl0aW9ucyA9IG9FeHRlcm5hbFN0YXRlLmZpbHRlcjtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSByZXRyaWV2aW5nIHRoZSBleHRlcm5hbCBzdGF0ZVwiLCBvRXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHRcdGlmICgodGhpcy5nZXRWaWV3KCkuZ2V0Vmlld0RhdGEoKSBhcyBhbnkpLmxpdmVNb2RlID09PSBmYWxzZSkge1xuXHRcdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChEZXZpY2Uuc3lzdGVtLnBob25lKSB7XG5cdFx0XHRcdGNvbnN0IG9EeW5hbWljUGFnZSA9IHRoaXMuX2dldER5bmFtaWNMaXN0UmVwb3J0Q29udHJvbCgpO1xuXHRcdFx0XHRpZiAoIXRoaXMuX2lzSW5pdExvYWRFbmFibGVkKCkpIHtcblx0XHRcdFx0XHRvRHluYW1pY1BhZ2Uuc2V0SGVhZGVyRXhwYW5kZWQodHJ1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0b0R5bmFtaWNQYWdlLnNldEhlYWRlckV4cGFuZGVkKGZhbHNlKTtcblx0XHRcdFx0XHR0aGlzLnNldEZpbHRlclRvZ2dsZVZpc2liaWxpdHkoZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKipcblx0XHQgKiBUcmlnZ2VycyBhbiBvdXRib3VuZCBuYXZpZ2F0aW9uIHdoZW4gYSB1c2VyIGNob29zZXMgdGhlIGNoZXZyb24uXG5cdFx0ICpcblx0XHQgKiBAcGFyYW0gb0NvbnRyb2xsZXJcblx0XHQgKiBAcGFyYW0gc091dGJvdW5kVGFyZ2V0IE5hbWUgb2YgdGhlIG91dGJvdW5kIHRhcmdldCAobmVlZHMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QpXG5cdFx0ICogQHBhcmFtIG9Db250ZXh0IFRoZSBjb250ZXh0IHRoYXQgY29udGFpbnMgdGhlIGRhdGEgZm9yIHRoZSB0YXJnZXQgYXBwXG5cdFx0ICogQHBhcmFtIHNDcmVhdGVQYXRoIENyZWF0ZSBwYXRoIHdoZW4gdGhlIGNoZXZyb24gaXMgY3JlYXRlZC5cblx0XHQgKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmVkXG5cdFx0ICogQGZpbmFsXG5cdFx0ICovXG5cdFx0b25DaGV2cm9uUHJlc3NOYXZpZ2F0ZU91dEJvdW5kKG9Db250cm9sbGVyOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgc091dGJvdW5kVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBDb250ZXh0LCBzQ3JlYXRlUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gb0NvbnRyb2xsZXIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5vbkNoZXZyb25QcmVzc05hdmlnYXRlT3V0Qm91bmQob0NvbnRyb2xsZXIsIHNPdXRib3VuZFRhcmdldCwgb0NvbnRleHQsIHNDcmVhdGVQYXRoKTtcblx0XHR9LFxuXHRcdG9uQ2hhcnRTZWxlY3Rpb25DaGFuZ2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3Qgb01kY0NoYXJ0ID0gb0V2ZW50LmdldFNvdXJjZSgpLmdldENvbnRlbnQoKSxcblx0XHRcdFx0b1RhYmxlID0gdGhpcy5fZ2V0VGFibGUoKSxcblx0XHRcdFx0YURhdGEgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiZGF0YVwiKSxcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdGlmIChhRGF0YSkge1xuXHRcdFx0XHRDaGFydFV0aWxzLnNldENoYXJ0RmlsdGVycyhvTWRjQ2hhcnQpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc1RlbXBsYXRlQ29udGVudFZpZXcgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vYWxwQ29udGVudFZpZXdgKTtcblx0XHRcdGlmIChzVGVtcGxhdGVDb250ZW50VmlldyA9PT0gVGVtcGxhdGVDb250ZW50Vmlldy5DaGFydCkge1xuXHRcdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIGlmIChvVGFibGUpIHtcblx0XHRcdFx0KG9UYWJsZSBhcyBhbnkpLnJlYmluZCgpO1xuXHRcdFx0XHR0aGlzLmhhc1BlbmRpbmdDaGFydENoYW5nZXMgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlciwgb0V2ZW50OiBhbnkpIHtcblx0XHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG9FdmVudC5tUGFyYW1ldGVycy5rZXkgPyBvRXZlbnQubVBhcmFtZXRlcnMua2V5IDogbnVsbDtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJhbHBDb250ZW50Vmlld1wiLCBzU2VsZWN0ZWRLZXkpO1xuXHRcdFx0Y29uc3Qgb0NoYXJ0ID0gdGhpcy5nZXRDaGFydENvbnRyb2woKTtcblx0XHRcdGNvbnN0IG9UYWJsZSA9IHRoaXMuX2dldFRhYmxlKCk7XG5cdFx0XHRjb25zdCBvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUgPSB7XG5cdFx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmcoKSB7XG5cdFx0XHRcdFx0Y29uc3QgYUl0ZW1zID0gb1NlZ21lbnRlZEJ1dHRvbi5nZXRJdGVtcygpO1xuXHRcdFx0XHRcdGFJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChvSXRlbTogYW55KSB7XG5cdFx0XHRcdFx0XHRpZiAob0l0ZW0uZ2V0S2V5KCkgPT09IHNTZWxlY3RlZEtleSkge1xuXHRcdFx0XHRcdFx0XHRvSXRlbS5mb2N1cygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG9TZWdtZW50ZWRCdXR0b24ucmVtb3ZlRXZlbnREZWxlZ2F0ZShvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0Y29uc3Qgb1NlZ21lbnRlZEJ1dHRvbiA9IChcblx0XHRcdFx0c1NlbGVjdGVkS2V5ID09PSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlID8gdGhpcy5fZ2V0U2VnbWVudGVkQnV0dG9uKFwiVGFibGVcIikgOiB0aGlzLl9nZXRTZWdtZW50ZWRCdXR0b24oXCJDaGFydFwiKVxuXHRcdFx0KSBhcyBTZWdtZW50ZWRCdXR0b247XG5cdFx0XHRpZiAob1NlZ21lbnRlZEJ1dHRvbiAhPT0gb0V2ZW50LmdldFNvdXJjZSgpKSB7XG5cdFx0XHRcdG9TZWdtZW50ZWRCdXR0b24uYWRkRXZlbnREZWxlZ2F0ZShvU2VnbWVudGVkQnV0dG9uRGVsZWdhdGUpO1xuXHRcdFx0fVxuXHRcdFx0c3dpdGNoIChzU2VsZWN0ZWRLZXkpIHtcblx0XHRcdFx0Y2FzZSBUZW1wbGF0ZUNvbnRlbnRWaWV3LlRhYmxlOlxuXHRcdFx0XHRcdGlmIChvVGFibGUpIHtcblx0XHRcdFx0XHRcdHRoaXMuX3VwZGF0ZVRhYmxlKG9UYWJsZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFRlbXBsYXRlQ29udGVudFZpZXcuQ2hhcnQ6XG5cdFx0XHRcdFx0aWYgKG9DaGFydCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlQ2hhcnQob0NoYXJ0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgVGVtcGxhdGVDb250ZW50Vmlldy5IeWJyaWQ6XG5cdFx0XHRcdFx0aWYgKG9UYWJsZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlVGFibGUob1RhYmxlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKG9DaGFydCkge1xuXHRcdFx0XHRcdFx0dGhpcy5fdXBkYXRlQ2hhcnQob0NoYXJ0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmdldEV4dGVuc2lvbkFQSSgpLnVwZGF0ZUFwcFN0YXRlKCk7XG5cdFx0fSxcblx0XHRvbkZpbHRlcnNTZWdtZW50ZWRCdXR0b25QcmVzc2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBvRXZlbnQ6IGFueSkge1xuXHRcdFx0Y29uc3QgaXNDb21wYWN0ID0gb0V2ZW50LmdldFBhcmFtZXRlcihcImtleVwiKSA9PT0gXCJDb21wYWN0XCI7XG5cdFx0XHR0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCkuc2V0VmlzaWJsZShpc0NvbXBhY3QpO1xuXHRcdFx0KHRoaXMuX2dldFZpc3VhbEZpbHRlckJhckNvbnRyb2woKSBhcyBDb250cm9sKS5zZXRWaXNpYmxlKCFpc0NvbXBhY3QpO1xuXHRcdH0sXG5cdFx0b25TdGF0ZUNoYW5nZSh0aGlzOiBMaXN0UmVwb3J0Q29udHJvbGxlcikge1xuXHRcdFx0dGhpcy5nZXRFeHRlbnNpb25BUEkoKS51cGRhdGVBcHBTdGF0ZSgpO1xuXHRcdH0sXG5cdFx0b25EeW5hbWljUGFnZVRpdGxlU3RhdGVDaGFuZ2VkKHRoaXM6IExpc3RSZXBvcnRDb250cm9sbGVyLCBldmVudDogRHluYW1pY1BhZ2VUaXRsZSRTdGF0ZUNoYW5nZUV2ZW50KTogdm9pZCB7XG5cdFx0XHRjb25zdCBmaWx0ZXJCYXIgPSB0aGlzLl9nZXRGaWx0ZXJCYXJDb250cm9sKCk7XG5cdFx0XHR0aGlzLnNldEZpbHRlclRvZ2dsZVZpc2liaWxpdHkoISFldmVudC5nZXRQYXJhbWV0ZXIoXCJpc0V4cGFuZGVkXCIpKTtcblx0XHRcdGlmIChldmVudC5nZXRQYXJhbWV0ZXIoXCJpc0V4cGFuZGVkXCIpID09PSBmYWxzZSkge1xuXHRcdFx0XHRJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCkuYW5ub3VuY2UoXG5cdFx0XHRcdFx0ZmlsdGVyQmFyLmdldEFzc2lnbmVkRmlsdGVyc1RleHQoKS5maWx0ZXJzVGV4dCBhcyBzdHJpbmcsXG5cdFx0XHRcdFx0SW52aXNpYmxlTWVzc2FnZU1vZGUuQXNzZXJ0aXZlXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKSB7XG5cdFx0Y29uc3QgYVRhYmxlcyA9IHRoaXMuX2dldENvbnRyb2xzKCkgYXMgVGFibGVbXTtcblx0XHRjb25zdCBzRW50aXR5U2V0ID0gKHRoaXMuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgYW55KS5lbnRpdHlTZXQ7XG5cdFx0Y29uc3Qgc1RleHQgPSBnZXRSZXNvdXJjZU1vZGVsKHRoaXMuZ2V0VmlldygpKS5nZXRUZXh0KFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUXCIsIHVuZGVmaW5lZCwgc0VudGl0eVNldCk7XG5cdFx0YVRhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uIChvVGFibGU6IENvbnRyb2wpIHtcblx0XHRcdGlmIChvVGFibGUuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdFx0b1RhYmxlLnNldE5vRGF0YShzVGV4dCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHVwZGF0ZSB0aGUgbG9jYWwgVUkgbW9kZWwgb2YgdGhlIHBhZ2Ugd2l0aCB0aGUgU2VsZWN0aW9uIFZhcmlhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSBmaWx0ZXJCYXIgTURDIGZpbHRlciBiYXJcblx0ICogQHBhcmFtIGludGVybmFsTW9kZWxDb250ZXh0IFRoZSBpbnRlcm5hbCBtb2RlbCBjb250ZXh0XG5cdCAqL1xuXHRhc3luYyBfc3RvcmVGaWx0ZXJCYXJTZWxlY3Rpb25WYXJpYW50KGZpbHRlckJhcjogRmlsdGVyQmFyLCBpbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgZmlsdGVyQmFyQVBJID0gZmlsdGVyQmFyLmdldFBhcmVudCgpIGFzIEZpbHRlckJhckFQSTtcblx0XHRcdGNvbnN0IHN2ID0gYXdhaXQgZmlsdGVyQmFyQVBJLmdldFNlbGVjdGlvblZhcmlhbnQoKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiZmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudFwiLCBzdik7XG5cdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuXHRcdFx0TG9nLmVycm9yKGBGRSA6IEVycm9yIGZldGNoaW5nIHNlbGVjdGlvbiB2YXJpYW50IG9uIGZpbHRlciBjaGFuZ2U6ICR7bWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGdldCB0aGUgU2VsZWN0aW9uIFZhcmlhbnQgZnJvbSBpbnRlcm5hbCBtb2RlbC5cblx0ICpcblx0ICogQHJldHVybnMgU2VsZWN0aW9uVmFyaWFudFxuXHQgKi9cblx0Z2V0RmlsdGVyQmFyU2VsZWN0aW9uVmFyaWFudCgpOiBTZWxlY3Rpb25WYXJpYW50IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuIChpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJmaWx0ZXJCYXJTZWxlY3Rpb25WYXJpYW50XCIpIGFzIFNlbGVjdGlvblZhcmlhbnQpIHx8IG5ldyBTZWxlY3Rpb25WYXJpYW50KCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlzdFJlcG9ydENvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBOERBLE1BQU1BLG1CQUFtQixHQUFHQyxXQUFXLENBQUNELG1CQUFtQjtJQUMxREUsZUFBZSxHQUFHRCxXQUFXLENBQUNDLGVBQWU7O0VBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBLElBT01DLG9CQUFvQixXQUR6QkMsY0FBYyxDQUFDLGtEQUFrRCxDQUFDLFVBRWpFQyxjQUFjLENBQ2RDLGVBQWUsQ0FBQ0MsUUFBUSxDQUFDO0lBQ3hCQyxjQUFjLEVBQUUsWUFBaUM7TUFDL0MsSUFBSSxDQUFDQyxPQUFPLEVBQUUsQ0FBQ0MsYUFBYSxFQUFFLENBQTBCQyxlQUFlLEVBQUU7SUFDM0U7RUFDRCxDQUFDLENBQUMsQ0FDRixVQUdBTixjQUFjLENBQ2RPLDZCQUE2QixDQUFDTCxRQUFRLENBQUM7SUFDdENNLFlBQVksRUFBRSxZQUErQztNQUM1RCxPQUFRLElBQUksQ0FBQ0MsSUFBSSxDQUEwQkMsbUJBQW1CLEVBQUU7SUFDakU7RUFDRCxDQUFDLENBQUMsQ0FDRixVQUdBVixjQUFjLENBQUNXLFdBQVcsQ0FBQyxVQUczQlgsY0FBYyxDQUFDWSxxQkFB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
|
|
@@ -681,9 +681,9 @@ class ListReportController extends PageController {
|
|
|
681
681
|
}
|
|
682
682
|
const variants = VariantManagement.getVariants();
|
|
683
683
|
const currentVariant = variants.find(function (variant: any) {
|
|
684
|
-
return variant && variant.
|
|
684
|
+
return variant && variant.getKey() === key;
|
|
685
685
|
});
|
|
686
|
-
return (currentVariant && currentVariant.
|
|
686
|
+
return (currentVariant && currentVariant.getExecuteOnSelect()) || false;
|
|
687
687
|
}
|
|
688
688
|
|
|
689
689
|
_shouldAutoTriggerSearch(oVM: any) {
|
|
@@ -699,7 +699,7 @@ class ListReportController extends PageController {
|
|
|
699
699
|
if (!sKey.startsWith("$") && Array.isArray(oConditions[sKey]) && oConditions[sKey].length) {
|
|
700
700
|
// load data as per user's setting of applyAutomatically on the variant
|
|
701
701
|
const standardVariant: any = oVM.getVariants().find((variant: any) => {
|
|
702
|
-
return variant.
|
|
702
|
+
return variant.getKey() === oVM.getCurrentVariantKey();
|
|
703
703
|
});
|
|
704
704
|
return standardVariant && standardVariant.getExecuteOnSelect();
|
|
705
705
|
}
|
|
@@ -30,13 +30,13 @@ sap.ui.define(["sap/f/library", "sap/fe/core/library", "sap/fe/macros/library",
|
|
|
30
30
|
_exports.templatesOPNamespace = templatesOPNamespace;
|
|
31
31
|
const thisLib = Core.initLibrary({
|
|
32
32
|
name: "sap.fe.templates",
|
|
33
|
-
dependencies: ["sap.ui.core", "sap.fe.core", "sap.fe.macros", "sap.m", "sap.f", "sap.
|
|
33
|
+
dependencies: ["sap.ui.core", "sap.fe.core", "sap.fe.macros", "sap.m", "sap.f", "sap.ui.mdc"],
|
|
34
34
|
types: ["sap.fe.templates.ObjectPage.SectionLayout"],
|
|
35
35
|
interfaces: [],
|
|
36
36
|
controls: [],
|
|
37
37
|
elements: [],
|
|
38
38
|
// eslint-disable-next-line no-template-curly-in-string
|
|
39
|
-
version: "1.120.
|
|
39
|
+
version: "1.120.26",
|
|
40
40
|
noLibraryCSS: true
|
|
41
41
|
});
|
|
42
42
|
if (!thisLib.ObjectPage) {
|
|
@@ -62,4 +62,4 @@ sap.ui.define(["sap/f/library", "sap/fe/core/library", "sap/fe/macros/library",
|
|
|
62
62
|
CollaborationDraft.register();
|
|
63
63
|
return thisLib;
|
|
64
64
|
}, false);
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0ZW1wbGF0ZXNOYW1lc3BhY2UiLCJ0ZW1wbGF0ZXNMUk5hbWVzcGFjZSIsInRlbXBsYXRlc09QTmFtZXNwYWNlIiwidGhpc0xpYiIsIkNvcmUiLCJpbml0TGlicmFyeSIsIm5hbWUiLCJkZXBlbmRlbmNpZXMiLCJ0eXBlcyIsImludGVyZmFjZXMiLCJjb250cm9scyIsImVsZW1lbnRzIiwidmVyc2lvbiIsIm5vTGlicmFyeUNTUyIsIk9iamVjdFBhZ2UiLCJTZWN0aW9uTGF5b3V0IiwiUGFnZSIsIlRhYnMiLCJNdWx0aXBsZU1vZGVCbG9jayIsInJlZ2lzdGVyIiwiRHJhZnRIYW5kbGVyQnV0dG9uQmxvY2siLCJGb290ZXJDb250ZW50QmxvY2siLCJDb2xsYWJvcmF0aW9uRHJhZnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbImxpYnJhcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwic2FwL2YvbGlicmFyeVwiO1xuaW1wb3J0IFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IFwic2FwL2ZlL21hY3Jvcy9saWJyYXJ5XCI7XG5pbXBvcnQgTXVsdGlwbGVNb2RlQmxvY2sgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvTGlzdFJlcG9ydC92aWV3L2ZyYWdtZW50cy9NdWx0aXBsZU1vZGUuYmxvY2tcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uRHJhZnQgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9jb21wb25lbnRzL0NvbGxhYm9yYXRpb25EcmFmdC5ibG9ja1wiO1xuaW1wb3J0IERyYWZ0SGFuZGxlckJ1dHRvbkJsb2NrIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL09iamVjdFBhZ2UvY29tcG9uZW50cy9EcmFmdEhhbmRsZXJCdXR0b24uYmxvY2tcIjtcbmltcG9ydCBGb290ZXJDb250ZW50QmxvY2sgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS92aWV3L2ZyYWdtZW50cy9Gb290ZXJDb250ZW50LmJsb2NrXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuLyoqXG4gKiBMaWJyYXJ5IHByb3ZpZGluZyB0aGUgb2ZmaWNpYWwgdGVtcGxhdGVzIHN1cHBvcnRlZCBieSBTQVAgRmlvcmkgZWxlbWVudHMuXG4gKlxuICogQG5hbWVzcGFjZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdGVtcGxhdGVzTmFtZXNwYWNlID0gXCJzYXAuZmUudGVtcGxhdGVzXCI7XG5cbi8qKlxuICogQG5hbWVzcGFjZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdGVtcGxhdGVzTFJOYW1lc3BhY2UgPSBcInNhcC5mZS50ZW1wbGF0ZXMuTGlzdFJlcG9ydFwiO1xuXG4vKipcbiAqIEBuYW1lc3BhY2VcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRlbXBsYXRlc09QTmFtZXNwYWNlID0gXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2VcIjtcblxuY29uc3QgdGhpc0xpYiA9IENvcmUuaW5pdExpYnJhcnkoe1xuXHRuYW1lOiBcInNhcC5mZS50ZW1wbGF0ZXNcIixcblx0ZGVwZW5kZW5jaWVzOiBbXCJzYXAudWkuY29yZVwiLCBcInNhcC5mZS5jb3JlXCIsIFwic2FwLmZlLm1hY3Jvc1wiLCBcInNhcC5tXCIsIFwic2FwLmZcIiwgXCJzYXAudWkubWRjXCJdLFxuXHR0eXBlczogW1wic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLlNlY3Rpb25MYXlvdXRcIl0sXG5cdGludGVyZmFjZXM6IFtdLFxuXHRjb250cm9sczogW10sXG5cdGVsZW1lbnRzOiBbXSxcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZ1xuXHR2ZXJzaW9uOiBcIiR7dmVyc2lvbn1cIixcblx0bm9MaWJyYXJ5Q1NTOiB0cnVlXG59KSBhcyBhbnk7XG5cbmlmICghdGhpc0xpYi5PYmplY3RQYWdlKSB7XG5cdHRoaXNMaWIuT2JqZWN0UGFnZSA9IHt9O1xufVxudGhpc0xpYi5PYmplY3RQYWdlLlNlY3Rpb25MYXlvdXQgPSB7XG5cdC8qKlxuXHQgKiBBbGwgc2VjdGlvbnMgYXJlIHNob3duIGluIG9uZSBwYWdlXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdFBhZ2U6IFwiUGFnZVwiLFxuXG5cdC8qKlxuXHQgKiBBbGwgdG9wLWxldmVsIHNlY3Rpb25zIGFyZSBzaG93biBpbiBhbiBvd24gdGFiXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdFRhYnM6IFwiVGFic1wiXG59O1xuXG5NdWx0aXBsZU1vZGVCbG9jay5yZWdpc3RlcigpO1xuRHJhZnRIYW5kbGVyQnV0dG9uQmxvY2sucmVnaXN0ZXIoKTtcbkZvb3RlckNvbnRlbnRCbG9jay5yZWdpc3RlcigpO1xuQ29sbGFib3JhdGlvbkRyYWZ0LnJlZ2lzdGVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHRoaXNMaWI7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7O0VBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sTUFBTUEsa0JBQWtCLEdBQUcsa0JBQWtCOztFQUVwRDtBQUNBO0FBQ0E7QUFDQTtFQUhBO0VBSU8sTUFBTUMsb0JBQW9CLEdBQUcsNkJBQTZCOztFQUVqRTtBQUNBO0FBQ0E7QUFDQTtFQUhBO0VBSU8sTUFBTUMsb0JBQW9CLEdBQUcsNkJBQTZCO0VBQUM7RUFFbEUsTUFBTUMsT0FBTyxHQUFHQyxJQUFJLENBQUNDLFdBQVcsQ0FBQztJQUNoQ0MsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QkMsWUFBWSxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUM7SUFDN0ZDLEtBQUssRUFBRSxDQUFDLDJDQUEyQyxDQUFDO0lBQ3BEQyxVQUFVLEVBQUUsRUFBRTtJQUNkQyxRQUFRLEVBQUUsRUFBRTtJQUNaQyxRQUFRLEVBQUUsRUFBRTtJQUNaO0lBQ0FDLE9BQU8sRUFBRSxZQUFZO0lBQ3JCQyxZQUFZLEVBQUU7RUFDZixDQUFDLENBQVE7RUFFVCxJQUFJLENBQUNWLE9BQU8sQ0FBQ1csVUFBVSxFQUFFO0lBQ3hCWCxPQUFPLENBQUNXLFVBQVUsR0FBRyxDQUFDLENBQUM7RUFDeEI7RUFDQVgsT0FBTyxDQUFDVyxVQUFVLENBQUNDLGFBQWEsR0FBRztJQUNsQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLElBQUksRUFBRSxNQUFNO0lBRVo7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxJQUFJLEVBQUU7RUFDUCxDQUFDO0VBRURDLGlCQUFpQixDQUFDQyxRQUFRLEVBQUU7RUFDNUJDLHVCQUF1QixDQUFDRCxRQUFRLEVBQUU7RUFDbENFLGtCQUFrQixDQUFDRixRQUFRLEVBQUU7RUFDN0JHLGtCQUFrQixDQUFDSCxRQUFRLEVBQUU7RUFBQyxPQUVmaEIsT0FBTztBQUFBIn0=
|
|
@@ -29,7 +29,7 @@ export const templatesOPNamespace = "sap.fe.templates.ObjectPage";
|
|
|
29
29
|
|
|
30
30
|
const thisLib = Core.initLibrary({
|
|
31
31
|
name: "sap.fe.templates",
|
|
32
|
-
dependencies: ["sap.ui.core", "sap.fe.core", "sap.fe.macros", "sap.m", "sap.f", "sap.
|
|
32
|
+
dependencies: ["sap.ui.core", "sap.fe.core", "sap.fe.macros", "sap.m", "sap.f", "sap.ui.mdc"],
|
|
33
33
|
types: ["sap.fe.templates.ObjectPage.SectionLayout"],
|
|
34
34
|
interfaces: [],
|
|
35
35
|
controls: [],
|
|
@@ -16,7 +16,7 @@ C_EDITFLOW_OBJECT_PAGE_SESSION_EXPIRED_DIALOG_TITLE=La sesi\u00F3n ha caducado
|
|
|
16
16
|
|
|
17
17
|
C_EDITFLOW_OBJECT_PAGE_SESSION_EXPIRED_DIALOG_MESSAGE=La sesi\u00F3n de edici\u00F3n ha caducado. Se han perdido todas las modificaciones sin guardar.\nSeleccione OK para volver a la p\u00E1gina anterior.
|
|
18
18
|
|
|
19
|
-
T_OP_RELATED_APPS=
|
|
19
|
+
T_OP_RELATED_APPS=Aplic.relac.
|
|
20
20
|
|
|
21
21
|
T_COMMON_OBJECT_PAGE_APPLY_DRAFT=Aplicar
|
|
22
22
|
|
|
@@ -84,20 +84,20 @@ T_STASHABLE_VBOX_RTA_HEADERCOLLECTIONFACET_MENU_ADD=Facet testata
|
|
|
84
84
|
T_STASHABLE_VBOX_RTA_HEADERCOLLECTIONFACET_MENU_ADD_PLURAL=Facets testata
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
T_COMMON_NAVIGATION_DISABLED_MULTIPLE_CONTEXTS=
|
|
87
|
+
T_COMMON_NAVIGATION_DISABLED_MULTIPLE_CONTEXTS=Selezionare solo un elemento.
|
|
88
88
|
|
|
89
89
|
|
|
90
|
-
T_COMMON_UTILS_NAVIGATION_AWAY_CONFIRM_BUTTON=
|
|
90
|
+
T_COMMON_UTILS_NAVIGATION_AWAY_CONFIRM_BUTTON=Chiudi pagina
|
|
91
91
|
|
|
92
92
|
T_COMMON_UTILS_NAVIGATION_AWAY_CANCEL_BUTTON=Annulla
|
|
93
93
|
|
|
94
|
-
T_COMMON_UTILS_NAVIGATION_AWAY_MSG=
|
|
94
|
+
T_COMMON_UTILS_NAVIGATION_AWAY_MSG=Gli inserimenti andranno persi alla chiusura della pagina.
|
|
95
95
|
|
|
96
|
-
C_LR_MULTITABLES_SINGLE_IGNORED_FILTER_LARGE=Il filtro "{0}" non \u00E8 rilevante per tab "{1}". L\u2019impostazione di questo filtro non incide sui risultati.
|
|
96
|
+
C_LR_MULTITABLES_SINGLE_IGNORED_FILTER_LARGE=Il filtro "{0}" non \u00E8 rilevante per il tab "{1}". L\u2019impostazione di questo filtro non incide sui risultati.
|
|
97
97
|
|
|
98
|
-
C_LR_MULTITABLES_SINGLE_IGNORED_FILTER_SMALL=Impossibile filtrare
|
|
98
|
+
C_LR_MULTITABLES_SINGLE_IGNORED_FILTER_SMALL=Impossibile filtrare i dati in base a "{0}" nel tab "{1}".
|
|
99
99
|
|
|
100
|
-
C_LR_MULTITABLES_MULTI_IGNORED_FILTER_LARGE=Alcuni dei filtri non sono
|
|
100
|
+
C_LR_MULTITABLES_MULTI_IGNORED_FILTER_LARGE=Alcuni dei filtri non sono rilevanti per il tab "{1}" ({0}). L\u2019impostazione di questi filtri non incide sui risultati.
|
|
101
101
|
|
|
102
102
|
C_LR_MULTITABLES_MULTI_IGNORED_FILTER_SMALL=Non \u00E8 possibile utilizzare i seguenti filtri nel tab "{1}"\: "{0}".
|
|
103
103
|
|
|
@@ -116,17 +116,17 @@ C_LR_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA_AND_SEARCH=Dati bozza e impostazio
|
|
|
116
116
|
|
|
117
117
|
C_MULTIVIZ_CHART_IGNORED_FILTER_DRAFT_DATA=Dati bozza non rispecchiati nella view grafico.
|
|
118
118
|
|
|
119
|
-
T_KEYBOARD_SHORTCUT_SHARE_WIN=
|
|
119
|
+
T_KEYBOARD_SHORTCUT_SHARE_WIN=Maiusc+CTRL+S
|
|
120
120
|
|
|
121
|
-
T_KEYBOARD_SHORTCUT_SHARE_MAC=
|
|
121
|
+
T_KEYBOARD_SHORTCUT_SHARE_MAC=Maiusc+CMD+S
|
|
122
122
|
|
|
123
123
|
T_KEYBOARD_SHORTCUT_EDIT_WIN=CTRL+E
|
|
124
124
|
|
|
125
125
|
T_KEYBOARD_SHORTCUT_EDIT_MAC=CMD+E
|
|
126
126
|
|
|
127
|
-
T_KEYBOARD_SHORTCUT_DELETEOP_WIN=CTRL+
|
|
127
|
+
T_KEYBOARD_SHORTCUT_DELETEOP_WIN=CTRL+Canc
|
|
128
128
|
|
|
129
|
-
T_KEYBOARD_SHORTCUT_DELETEOP_MAC=CMD+FN+
|
|
129
|
+
T_KEYBOARD_SHORTCUT_DELETEOP_MAC=CMD+FN+Canc
|
|
130
130
|
|
|
131
131
|
T_KEYBOARD_SHORTCUT_SAVE_WIN=CTRL+S
|
|
132
132
|
|
|
@@ -22,9 +22,9 @@ T_COMMON_OBJECT_PAGE_APPLY_DRAFT=Uporaba
|
|
|
22
22
|
|
|
23
23
|
T_COMMON_OBJECT_PAGE_VALIDATE_DRAFT=Validacija
|
|
24
24
|
|
|
25
|
-
T_OP_OBJECT_PAGE_CREATE=
|
|
25
|
+
T_OP_OBJECT_PAGE_CREATE=Ustvarjanje
|
|
26
26
|
|
|
27
|
-
T_OP_OBJECT_PAGE_SAVE=
|
|
27
|
+
T_OP_OBJECT_PAGE_SAVE=Shranjevanje
|
|
28
28
|
|
|
29
29
|
C_COMMON_OBJECT_PAGE_SAVED_VERSION_BUT=Shranjena verzija
|
|
30
30
|
|