@sapui5/sap.fe.templates 1.149.0 → 1.150.0
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 +82 -3
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +74 -2
- package/src/sap/fe/templates/ListReport/manifest.json +1 -1
- package/src/sap/fe/templates/ListReport/view/fragments/Table.fragment.xml +1 -0
- package/src/sap/fe/templates/ListReport/view/fragments/VariantManagement.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +4 -2
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +102 -73
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +102 -91
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.js +19 -1
- package/src/sap/fe/templates/ObjectPage/components/CollaborationDraft.tsx +17 -0
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +3 -2
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +4 -1
- package/src/sap/fe/templates/ObjectPage/manifest.json +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +2 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/ExpandedHeading.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Heading.fragment.xml +7 -3
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +4 -4
- package/src/sap/fe/templates/ObjectPage/view/fragments/Table.fragment.xml +1 -0
- package/src/sap/fe/templates/library.js +1 -1
|
@@ -141,6 +141,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
141
141
|
newlyInvitedUsers.push(context.getProperty("id"));
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
|
+
_this.fireInviteTelemetry(users.length, newlyInvitedUsers.length);
|
|
144
145
|
try {
|
|
145
146
|
// We request the number of invited users after the share action to see how many users were really invited
|
|
146
147
|
const results = await Promise.all([shareObject(bindingContext, users), _this.requestInvitedUsersInDraft()]);
|
|
@@ -521,6 +522,23 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
521
522
|
let invitedUsers = internalModelContext?.getProperty("collaboration/invitedUsers");
|
|
522
523
|
invitedUsers = invitedUsers.filter(user => user.id !== deleteUserID);
|
|
523
524
|
internalModelContext?.setProperty("collaboration/invitedUsers", invitedUsers);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Reports a Coll Draft invite to GSM. Fire-and-forget; TelemetryService.storeAction
|
|
529
|
+
* gates the disabled state internally, so no isTelemetryEnabled() check is needed here.
|
|
530
|
+
* @param totalInvitees Total users in the dialog at click time (sent to ShareAction).
|
|
531
|
+
* @param countNewInvitees Subset of those whose status was NotYetInvited before this click.
|
|
532
|
+
*/;
|
|
533
|
+
_proto.fireInviteTelemetry = function fireInviteTelemetry(totalInvitees, countNewInvitees) {
|
|
534
|
+
const telemetryEvent = {
|
|
535
|
+
type: "FE.CollDraftInvite",
|
|
536
|
+
parameters: {
|
|
537
|
+
totalInvitees,
|
|
538
|
+
countNewInvitees
|
|
539
|
+
}
|
|
540
|
+
};
|
|
541
|
+
this.getAppComponent()?.getTelemetryService().storeAction(telemetryEvent);
|
|
524
542
|
};
|
|
525
543
|
/**
|
|
526
544
|
* Fetches the list of users that are already invited in the draft.
|
|
@@ -654,4 +672,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
654
672
|
_exports = CollaborationDraft;
|
|
655
673
|
return _exports;
|
|
656
674
|
}, false);
|
|
657
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJzaGFyZU9iamVjdCIsInJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0IiwibmV3VXNlcnMiLCJpbnZpdGVkVXNlciIsImluY2x1ZGVzIiwibWVzc2FnZUhhbmRsZXIiLCJnZXRQYWdlQ29udHJvbGxlciIsInNob3dNZXNzYWdlRGlhbG9nIiwibGVuZ3RoIiwiTWVzc2FnZVRvYXN0Iiwic2hvdyIsImdldFNoYXJlZEl0ZW1OYW1lIiwidG9TdHJpbmciLCJjbG9zZU1hbmFnZURpYWxvZyIsImN1cnJlbnRVc2VyTGlzdCIsImFjdGl2ZVVzZXJzIiwiZ2V0TW9kZWwiLCJtZSIsIkNvbGxhYm9yYXRpb25VdGlscyIsImdldE1lIiwiZ2V0QXBwQ29tcG9uZW50IiwidXNlckNvbnRleHQiLCJ1c2VyRGF0YSIsImdldE9iamVjdCIsImlzTWUiLCJpc0FjdGl2ZSIsImZpbmQiLCJ1IiwidXNlckRlc2NyaXB0aW9uIiwiVXNlckRlc2NyaXB0aW9uIiwiaW5pdGlhbHMiLCJmb3JtYXRJbml0aWFscyIsImdldFRleHQiLCJVc2VyRWRpdGluZ1N0YXRlIiwiSW5Qcm9ncmVzcyIsInN0YXR1cyIsImNvbG9yIiwiZ2V0VXNlckNvbG9yIiwic2V0UHJvcGVydHkiLCJlIiwiY2xvc2UiLCJkZXN0cm95IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJfb3duZXJDb21wb25lbnQiLCJfY29udHJvbExvYWRlZCIsIlByb21pc2VLZWVwZXIiLCJHcmlkVGFibGVDb250cm9sIiwidW5kZWZpbmVkIiwiTGliIiwibG9hZCIsImRlZmF1bHQiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwiR3JpZFRhYmxlQ29sdW1uQ29udHJvbCIsImNvbnRleHRPYmplY3QiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsInJlc29sdmUiLCJfanN4IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJzaG93SGVhZGVyIiwiY2xhc3MiLCJwbGFjZW1lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiSEJveCIsIkF2YXRhciIsImRpc3BsYXlTaXplIiwiYmFja2dyb3VuZENvbG9yIiwiVkJveCIsIkxhYmVsIiwidGV4dCIsImFkZERlcGVuZGVudCIsIkRpYWxvZyIsInRpdGxlIiwiZ2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZyIsImhvcml6b250YWxTY3JvbGxpbmciLCJ2ZXJ0aWNhbFNjcm9sbGluZyIsImNvbnRlbnRXaWR0aCIsInN0cmV0Y2giLCJDb21tb25IZWxwZXIiLCJpc0Rlc2t0b3AiLCJiZWdpbkJ1dHRvbiIsIkJ1dHRvbiIsInByZXNzIiwiZW5hYmxlZCIsInBhcnRzIiwicGF0aCIsImZvcm1hdHRlciIsImZvcm1hdEludml0ZUJ1dHRvbiIsImVuZEJ1dHRvbiIsIndpZHRoIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJzaG93Q2xvc2VCdXR0b24iLCJnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbiIsImdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImJpbmRFbGVtZW50IiwibW9kZWwiLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zIiwiX0ZyYWdtZW50IiwibGFiZWwiLCJUZXh0IiwidGVtcGxhdGUiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJPYmplY3RTdGF0dXMiLCJzdGF0ZSIsImZvcm1hdFVzZXJTdGF0dXNDb2xvciIsImljb24iLCJyZW1vdmVVc2VyIiwidmlzaWJsZSIsInRhYmxlVGl0bGUiLCJJbnZpc2libGVUZXh0Iiwicm93cyIsInZpc2libGVSb3dDb3VudCIsInZpc2libGVSb3dDb3VudE1vZGUiLCJzZWxlY3Rpb25Nb2RlIiwiYXJpYUxhYmVsbGVkQnkiLCJjb2x1bW5zIiwiZGVwZW5kZW50cyIsIkZpZWxkIiwidmFsdWUiLCJhZGRpdGlvbmFsVmFsdWUiLCJkaXNwbGF5IiwidmFsdWVIZWxwIiwicGxhY2Vob2xkZXIiLCJjaGFuZ2UiLCJWYWx1ZUhlbHAiLCJkZWxlZ2F0ZSIsImdldFZhbHVlSGVscERlbGVnYXRlIiwidmFsaWRhdGVJbnB1dCIsInR5cGVhaGVhZCIsIk1EQ1BvcG92ZXIiLCJNVGFibGUiLCJjYXNlU2Vuc2l0aXZlIiwidXNlQXNWYWx1ZUhlbHAiLCJkaWFsb2ciLCJNRENEaWFsb2ciLCJWYWx1ZVN0YXRlIiwiU3VjY2VzcyIsIldhcm5pbmciLCJJbmZvcm1hdGlvbiIsIm5iVXNlcnMiLCJzb21lIiwidHJhbnNpZW50IiwiaXRlbSIsImRlbGV0ZVVzZXJJRCIsImZpbHRlciIsInBhcmFtZXRlcnMiLCIkc2VsZWN0IiwiJCRncm91cElkIiwiaW52aXRlZFVzZXJMaXN0IiwiYmluZExpc3QiLCJnZXRQYXRoIiwicmVxdWVzdENvbnRleHRzIiwiaGVhZGVySW5mbyIsInRhcmdldEVudGl0eVR5cGUiLCJhbm5vdGF0aW9ucyIsIlVJIiwiSGVhZGVySW5mbyIsInNoYXJlZEl0ZW1OYW1lIiwiVGl0bGUiLCJpc0Fubm90YXRpb25PZlR5cGUiLCJpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiIsIlZhbHVlIiwiVHlwZU5hbWUiLCJhY3Rpb25OYW1lIiwidGFyZ2V0RW50aXR5U2V0IiwiQ29tbW9uIiwiRHJhZnRSb290IiwiU2hhcmVBY3Rpb24iLCJhY3Rpb24iLCJyZXNvbHZlUGF0aCIsInVzZXJQYXJhbWV0ZXJzIiwicGFyYW0iLCJwYXlsb2FkIiwicHJvcGVydHlQYXRoIiwicXVhbGlmaWVycyIsInZhbHVlSGVscFF1YWxpZmllciIsImlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwicGFyYW1zIiwidGl0bGVFeHByZXNzaW9uIiwiZm9ybWF0UmVzdWx0IiwiY29sbGFib3JhdGlvbkZvcm1hdHRlciIsImdldEZvcm1hdHRlZFRleHQiLCJjb21waWxlRXhwcmVzc2lvbiIsImdldEludml0ZUJ1dHRvbiIsInNyYyIsInRvb2x0aXAiLCJfZ2V0T3duZXIiLCJnZXRNZXRhTW9kZWwiLCJNb2RlbEhlbHBlciIsImlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwiaXRlbXMiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb2xsYWJvcmF0aW9uRHJhZnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBBY3Rpb24gYXMgVm9jYWJ1bGFyeUFjdGlvbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCB0eXBlIHsgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ29tbW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25fRWRtXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFGaWVsZCwgRGF0YUZpZWxkVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBmb3JtYXRSZXN1bHQsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgdHlwZSB7IEJhY2tlbmRVc2VyLCBVc2VyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHtcblx0Q29sbGFib3JhdGlvblV0aWxzLFxuXHRVc2VyRWRpdGluZ1N0YXRlLFxuXHRVc2VyU3RhdHVzLFxuXHRzaGFyZU9iamVjdFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgY29sbGFib3JhdGlvbkZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9Db2xsYWJvcmF0aW9uRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFByb21pc2VLZWVwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUHJvbWlzZUtlZXBlclwiO1xuaW1wb3J0IHsgaXNBbm5vdGF0aW9uT2ZUeXBlLCBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IFZhbHVlSGVscFBheWxvYWQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVMaXN0SGVscGVyXCI7XG5pbXBvcnQgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgSEJveCBmcm9tIFwic2FwL20vSEJveFwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgTWVzc2FnZVRvYXN0IGZyb20gXCJzYXAvbS9NZXNzYWdlVG9hc3RcIjtcbmltcG9ydCBPYmplY3RTdGF0dXMgZnJvbSBcInNhcC9tL09iamVjdFN0YXR1c1wiO1xuaW1wb3J0IFJlc3BvbnNpdmVQb3BvdmVyIGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC9tL1RhYmxlXCI7XG5pbXBvcnQgVGV4dCBmcm9tIFwic2FwL20vVGV4dFwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEludmlzaWJsZVRleHQgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVRleHRcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IFZhbHVlSGVscCBmcm9tIFwic2FwL3VpL21kYy9WYWx1ZUhlbHBcIjtcbmltcG9ydCBNRENEaWFsb2cgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL0RpYWxvZ1wiO1xuaW1wb3J0IE1EQ1BvcG92ZXIgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL1BvcG92ZXJcIjtcbmltcG9ydCBNVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTVRhYmxlXCI7XG5pbXBvcnQgdHlwZSBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBJbnRlZ2VyIGZyb20gXCJzYXAvdWkvbW9kZWwvdHlwZS9JbnRlZ2VyXCI7XG5pbXBvcnQgdHlwZSBHcmlkVGFibGVDb2x1bW4gZnJvbSBcInNhcC91aS90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZSBmcm9tIFwic2FwL3VpL3RhYmxlL1RhYmxlXCI7XG5cbmNvbnN0IFVTRVJTX1BBUkFNRVRFUlMgPSBcIlVzZXJzXCI7XG5jb25zdCBVU0VSX0lEX1BBUkFNRVRFUiA9IFwiVXNlcklEXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb21wb25lbnRzLkNvbGxhYm9yYXRpb25EcmFmdFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGFib3JhdGlvbkRyYWZ0IGV4dGVuZHMgQnVpbGRpbmdCbG9jayB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdHB1YmxpYyBpZD86IHN0cmluZztcblxuXHRwcml2YXRlIGNvbnRleHRPYmplY3Q/OiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD47XG5cblx0cHJpdmF0ZSB1c2VyRGV0YWlsc1BvcG92ZXI/OiBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZz86IERpYWxvZztcblxuXHRwcml2YXRlIG1hbmFnZURpYWxvZ1VzZXJUYWJsZT86IFRhYmxlO1xuXG5cdHByaXZhdGUgc3RhdGljIEdyaWRUYWJsZUNvbnRyb2w6IHR5cGVvZiBHcmlkVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29sdW1uQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZUNvbHVtbjtcblxuXHRwcml2YXRlIF9jb250cm9sTG9hZGVkPzogUHJvbWlzZUtlZXBlcjx2b2lkPjtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4sIG90aGVycz86IFByb3BlcnRpZXNPZjxDb2xsYWJvcmF0aW9uRHJhZnQ+KSB7XG5cdFx0c3VwZXIocHJvcHMsIG90aGVycyk7XG5cdH1cblxuXHRhc3luYyBvbk1ldGFkYXRhQXZhaWxhYmxlKF9vd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkID0gbmV3IFByb21pc2VLZWVwZXIoKTtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbnRyb2wgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0YXdhaXQgTGliLmxvYWQoeyBuYW1lOiBcInNhcC51aS50YWJsZVwiIH0pO1xuXHRcdFx0Y29uc3QgeyBkZWZhdWx0OiBHcmlkVGFibGVDb250cm9sIH0gPSBhd2FpdCBpbXBvcnQoXCJzYXAvdWkvdGFibGUvVGFibGVcIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9IEdyaWRUYWJsZUNvbnRyb2w7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9Db2x1bW5cIik7XG5cdFx0XHRDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCA9IEdyaWRUYWJsZUNvbHVtbkNvbnRyb2w7XG5cdFx0fVxuXHRcdHRoaXMuY29udGV4dE9iamVjdCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCh0aGlzLmNvbnRleHRQYXRoKTtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLl9jb250cm9sTG9hZGVkLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0XG5cdCAqL1xuXHRzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzID0gKGV2ZW50OiBFdmVudDx7fSwgQ29udHJvbD4pOiB2b2lkID0+IHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoIXRoaXMudXNlckRldGFpbHNQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3ZlciA9IHRoaXMuZ2V0VXNlckRldGFpbHNQb3BvdmVyKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/LnNldEJpbmRpbmdDb250ZXh0KHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LCBcImludGVybmFsXCIpO1xuXHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyPy5vcGVuQnkoc291cmNlKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXNlciBkZXRhaWxzIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldFVzZXJEZXRhaWxzUG9wb3ZlcigpOiBSZXNwb25zaXZlUG9wb3ZlciB7XG5cdFx0Y29uc3QgdXNlckRldGFpbHNQb3BvdmVyID0gKFxuXHRcdFx0PFJlc3BvbnNpdmVQb3BvdmVyIHNob3dIZWFkZXI9e2ZhbHNlfSBjbGFzcz1cInNhcFVpQ29udGVudFBhZGRpbmdcIiBwbGFjZW1lbnQ9XCJCb3R0b21cIj5cblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEF2YXRhciBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiBkaXNwbGF5U2l6ZT1cIlNcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCIgLz5cblx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHRcdDxMYWJlbCBjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQmVnaW5cIiB0ZXh0PVwie2ludGVybmFsPmlkfVwiIC8+XG5cdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQ8L1Jlc3BvbnNpdmVQb3BvdmVyPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudCh1c2VyRGV0YWlsc1BvcG92ZXIpO1xuXG5cdFx0cmV0dXJuIHVzZXJEZXRhaWxzUG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgb3BlbiB0aGUgbWFuYWdlIGRpYWxvZy5cblx0ICpcblx0ICovXG5cdG1hbmFnZUNvbGxhYm9yYXRpb24gPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKCF0aGlzLm1hbmFnZURpYWxvZykge1xuXHRcdFx0dGhpcy5tYW5hZ2VEaWFsb2cgPSB0aGlzLmdldE1hbmFnZURpYWxvZygpO1xuXHRcdH1cblxuXHRcdHRoaXMucmVhZEludml0ZWRVc2VycygpO1xuXHRcdHRoaXMubWFuYWdlRGlhbG9nPy5vcGVuKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hbmFnZSBkaWFsb2cgdXNlZCB0byBpbnZpdGUgZnVydGhlciB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0Y29uc3QgbWFuYWdlRGlhbG9nID0gKFxuXHRcdFx0PERpYWxvZ1xuXHRcdFx0XHR0aXRsZT17dGhpcy5nZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCl9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdHZlcnRpY2FsU2Nyb2xsaW5nPVwiRmFsc2VcIlxuXHRcdFx0XHRjb250ZW50V2lkdGg9XCIzNWVtXCJcblx0XHRcdFx0c3RyZXRjaD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCJmYWxzZVwiIDogXCJ0cnVlXCJ9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0YmVnaW5CdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NPTkZJUk1BVElPTlwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuaW52aXRlVXNlcn1cblx0XHRcdFx0XHRcdFx0dHlwZT1cIkVtcGhhc2l6ZWRcIlxuXHRcdFx0XHRcdFx0XHRlbmFibGVkPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzL2xlbmd0aFwiIH0sIHsgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IHRoaXMuZm9ybWF0SW52aXRlQnV0dG9uXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiAoXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR19DQU5DRUxcIil9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLmNsb3NlTWFuYWdlRGlhbG9nfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxWQm94IGNsYXNzPVwic2FwVWlTbWFsbE1hcmdpblwiPlxuXHRcdFx0XHRcdFx0XHQ8VkJveCB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9NRVNTQUdFU1RSSVBcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiSW5mb3JtYXRpb25cIlxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0ljb249e3RydWV9XG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQ8TGFiZWwgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fSU5QVVRfTEFCRUxcIil9IHJlcXVpcmVkPXt0cnVlfSAvPlxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpfVxuXHRcdFx0XHRcdFx0XHR7dGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKX1cblx0XHRcdFx0XHRcdDwvVkJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hZGREZXBlbmRlbnQobWFuYWdlRGlhbG9nKTtcblx0XHRtYW5hZ2VEaWFsb2cuYmluZEVsZW1lbnQoe1xuXHRcdFx0bW9kZWw6IFwiaW50ZXJuYWxcIixcblx0XHRcdHBhdGg6IFwiY29sbGFib3JhdGlvblwiXG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gbWFuYWdlRGlhbG9nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybmluZyB0aGUgdGFibGUgY29sdW1uIHdpdGggdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2Vycy5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucygpOiBHcmlkVGFibGVDb2x1bW5bXSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB3aWR0aD17Q29tbW9uSGVscGVyLmlzRGVza3RvcCgpID8gXCIxMCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfVVNFUl9BVkFUQVJfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiAoXG5cdFx0XHRcdFx0XHRcdDxIQm94IGFsaWduSXRlbXM9XCJDZW50ZXJcIiBqdXN0aWZ5Q29udGVudD1cIlNwYWNlQmV0d2VlblwiPlxuXHRcdFx0XHRcdFx0XHRcdDxBdmF0YXIgZGlzcGxheVNpemU9XCJYU1wiIGJhY2tncm91bmRDb2xvcj1cIntpbnRlcm5hbD5jb2xvcn1cIiBpbml0aWFscz1cIntpbnRlcm5hbD5pbml0aWFsc31cIiAvPlxuXHRcdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbD5cblx0XHRcdFx0PENvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sIHdpZHRoPXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjM1JVwiIDogXCI2ZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxhYmVsOiA8VGV4dCB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9UQUJMRV9VU0VSX0NPTFVNTlwiKX0gLz4sXG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogPFRleHQgdGV4dD1cIntpbnRlcm5hbD5uYW1lfVwiIC8+XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbD5cblx0XHRcdFx0PENvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sIHdpZHRoPXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjQ2JVwiIDogXCI5ZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxhYmVsOiA8VGV4dCB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9UQUJMRV9VU0VSX1NUQVRVU19DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IChcblx0XHRcdFx0XHRcdFx0PE9iamVjdFN0YXR1c1xuXHRcdFx0XHRcdFx0XHRcdHN0YXRlPXt7IHBhdGg6IFwiaW50ZXJuYWw+c3RhdHVzXCIsIGZvcm1hdHRlcjogdGhpcy5mb3JtYXRVc2VyU3RhdHVzQ29sb3IgfX1cblx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt7IHBhdGg6IFwiaW50ZXJuYWw+c3RhdHVzXCIsIGZvcm1hdHRlcjogdGhpcy5mb3JtYXRVc2VyU3RhdHVzIH19XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbD5cblx0XHRcdFx0PENvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sIHdpZHRoPXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjglXCIgOiBcIjNlbVwifT5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0bGFiZWw6IDxUZXh0IHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1RBQkxFX1JFTU9WRV9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IChcblx0XHRcdFx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0aWNvbj1cInNhcC1pY29uOi8vZGVjbGluZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwiVHJhbnNwYXJlbnRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMucmVtb3ZlVXNlcn1cblx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9XCJ7PSAhISR7aW50ZXJuYWw+dHJhbnNpZW50fSB9XCJcblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Db2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29sdW1uQ29udHJvbD5cblx0XHRcdDwvPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdGFibGUgd2l0aCB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUoKTogVGFibGUgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHRhYmxlVGl0bGUgPSAoXG5cdFx0XHQ8SW52aXNpYmxlVGV4dCB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9UQUJMRV9USVRMRVwiKX0gLz5cblx0XHQpIGFzIEludmlzaWJsZVRleHQ7XG5cblx0XHR0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZSA9IChcblx0XHRcdDxDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbFxuXHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRyb3dzPXt7IHBhdGg6IFwiaW50ZXJuYWw+aW52aXRlZFVzZXJzXCIgfX1cblx0XHRcdFx0dmlzaWJsZVJvd0NvdW50PXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjVcIiA6IFwiM1wifVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnRNb2RlPVwiRml4ZWRcIlxuXHRcdFx0XHRzZWxlY3Rpb25Nb2RlPVwiTm9uZVwiXG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXtbdGFibGVUaXRsZV19XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0Y29sdW1uczogdGhpcy5nZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKCksXG5cdFx0XHRcdFx0ZGVwZW5kZW50czogdGFibGVUaXRsZVxuXHRcdFx0XHR9fVxuXHRcdFx0PC9Db2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbD5cblx0XHQpO1xuXHRcdHJldHVybiB0aGlzLm1hbmFnZURpYWxvZ1VzZXJUYWJsZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBzZWN0aW9uIG9uIHRoZSBkaWFsb2cgcmVsYXRlZCB0byB0aGUgdXNlciBmaWVsZC5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0TWFuYWdlRGlhbG9nQWRkVXNlclNlY3Rpb24oKTogSEJveCB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxIQm94IGNsYXNzPVwic2FwVWlNZWRpdW1NYXJnaW5Cb3R0b21cIiB3aWR0aD1cIjEwMCVcIj5cblx0XHRcdFx0PEZpZWxkXG5cdFx0XHRcdFx0dmFsdWU9XCJ7aW50ZXJuYWw+VXNlcklEfVwiXG5cdFx0XHRcdFx0YWRkaXRpb25hbFZhbHVlPVwie2ludGVybmFsPlVzZXJEZXNjcmlwdGlvbn1cIlxuXHRcdFx0XHRcdGRpc3BsYXk9XCJEZXNjcmlwdGlvblZhbHVlXCJcblx0XHRcdFx0XHR3aWR0aD1cIjEwMCVcIlxuXHRcdFx0XHRcdHJlcXVpcmVkPXt0cnVlfVxuXHRcdFx0XHRcdHZhbHVlSGVscD1cInVzZXJWYWx1ZUhlbHBcIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9JTlBVVF9QTEFDRUhPTERFUlwiKX1cblx0XHRcdFx0XHRjaGFuZ2U9e3RoaXMuYWRkVXNlckZpZWxkQ2hhbmdlZH1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRkZXBlbmRlbnRzOiAoXG5cdFx0XHRcdFx0XHRcdDxWYWx1ZUhlbHAgaWQ9XCJ1c2VyVmFsdWVIZWxwXCIgZGVsZWdhdGU9e3RoaXMuZ2V0VmFsdWVIZWxwRGVsZWdhdGUoKX0gdmFsaWRhdGVJbnB1dD17dHJ1ZX0+XG5cdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGVhaGVhZDogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8TURDUG9wb3Zlcj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8TVRhYmxlIGNhc2VTZW5zaXRpdmU9XCJ0cnVlXCIgdXNlQXNWYWx1ZUhlbHA9XCJmYWxzZVwiIC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvTURDUG9wb3Zlcj5cblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRkaWFsb2c6IDxNRENEaWFsb2cgLz5cblx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHQ8L1ZhbHVlSGVscD5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L0ZpZWxkPlxuXHRcdFx0PC9IQm94PlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIHNldCB0aGUgdXNlciBzdGF0dXMgZGVwZW5kaW5nIG9uIHRoZSBlZGl0aW5nIHN0YXR1cy5cblx0ICogQHBhcmFtIHVzZXJTdGF0dXMgVGhlIGVkaXRpbmcgc3RhdHVzIG9mIHRoZSB1c2VyXG5cdCAqIEByZXR1cm5zIFRoZSB1c2VyIHN0YXR1c1xuXHQgKi9cblx0Zm9ybWF0VXNlclN0YXR1cyA9ICh1c2VyU3RhdHVzOiBVc2VyU3RhdHVzKTogc3RyaW5nID0+IHtcblx0XHRzd2l0Y2ggKHVzZXJTdGF0dXMpIHtcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfQ1VSUkVOVExZX0VESVRJTkdcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9DSEFOR0VTX01BREVcIik7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX05PX0NIQU5HRVNfTUFERVwiKTtcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob3RZZXRJbnZpdGVkOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX05PVF9ZRVRfSU5WSVRFRFwiKTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBzZXQgdGhlIHVzZXIgY29sb3IgZGVwZW5kaW5nIG9uIHRoZSBlZGl0aW5nIHN0YXR1cy5cblx0ICogQHBhcmFtIHVzZXJTdGF0dXMgVGhlIGVkaXRpbmcgc3RhdHVzIG9mIHRoZSB1c2VyXG5cdCAqIEByZXR1cm5zIFRoZSB1c2VyIHN0YXR1cyBjb2xvclxuXHQgKi9cblx0Zm9ybWF0VXNlclN0YXR1c0NvbG9yKHVzZXJTdGF0dXM6IFVzZXJTdGF0dXMpOiBWYWx1ZVN0YXRlIHtcblx0XHRzd2l0Y2ggKHVzZXJTdGF0dXMpIHtcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DdXJyZW50bHlFZGl0aW5nOlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5TdWNjZXNzO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gVmFsdWVTdGF0ZS5XYXJuaW5nO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU6XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZDpcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBWYWx1ZVN0YXRlLkluZm9ybWF0aW9uO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gZW5hYmxlIHRoZSBpbnZpdGUgYnV0dG9uIGRlcGVuZGluZyBvbiB0aGUgaW52aXRlZCB1c2VycyBzdGF0dXMuXG5cdCAqIEBwYXJhbSBuYlVzZXJzIE51bWJlciBvZiB1c2Vyc1xuXHQgKiBAcGFyYW0gaW52aXRlZFVzZXJzIExpc3Qgb2YgdGhlIGludml0ZWQgdXNlcnNcblx0ICogQHJldHVybnMgVHJ1ZSBvciBGYWxzZVxuXHQgKi9cblx0Zm9ybWF0SW52aXRlQnV0dG9uKG5iVXNlcnM6IEludGVnZXIgfCB1bmRlZmluZWQsIGludml0ZWRVc2VyczogVXNlcltdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG5cdFx0aWYgKCFuYlVzZXJzKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiAhIWludml0ZWRVc2Vycz8uc29tZSgodXNlcikgPT4gdXNlci5zdGF0dXMgPT09IDApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCB0aGUgYWRkZWQgdXNlciB0byB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gdXNlcklucHV0IFRoZSB1c2VyIHRvIGJlIGludml0ZWRcblx0ICogQHBhcmFtIGludml0ZWRVc2VycyBUaGUgdXNlcnMgYWxyZWFkeSBpbnZpdGVkXG5cdCAqIEBwYXJhbSBuZXdVc2VyIFRoZSB1c2VyIHRvIGJlIGludml0ZWRcblx0ICovXG5cdGFkZFVzZXIodXNlcklucHV0OiBGaWVsZCwgaW52aXRlZFVzZXJzOiBVc2VyW10sIG5ld1VzZXI6IFVzZXIpOiB2b2lkIHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHVzZXJJbnB1dC5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdGNvbnN0IGFjdGl2ZVVzZXJzID0gKHVzZXJJbnB1dC5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbCkuZ2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiKTtcblx0XHRuZXdVc2VyLm5hbWUgPSBuZXdVc2VyLm5hbWUgfHwgbmV3VXNlci5pZDtcblx0XHRuZXdVc2VyLmluaXRpYWxzID0gQ29sbGFib3JhdGlvblV0aWxzLmZvcm1hdEluaXRpYWxzKG5ld1VzZXIubmFtZSk7XG5cdFx0bmV3VXNlci5jb2xvciA9IENvbGxhYm9yYXRpb25VdGlscy5nZXRVc2VyQ29sb3IobmV3VXNlci5pZCwgYWN0aXZlVXNlcnMsIGludml0ZWRVc2Vycyk7XG5cdFx0bmV3VXNlci50cmFuc2llbnQgPSB0cnVlO1xuXHRcdG5ld1VzZXIuc3RhdHVzID0gVXNlclN0YXR1cy5Ob3RZZXRJbnZpdGVkO1xuXHRcdGludml0ZWRVc2Vycy5wdXNoKG5ld1VzZXIpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiaW52aXRlZFVzZXJzXCIsIGludml0ZWRVc2Vycyk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJVc2VySURcIiwgXCJcIik7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJVc2VyRGVzY3JpcHRpb25cIiwgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgc3RhdGUgb2YgdGhlIHVzZXIgZmllbGQgd2hlbmV2ZXIgY2hhbmdlZC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Qgb2YgdGhlIHVzZXIgaW5wdXRcblx0ICogQHJldHVybnMgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHZhbHVlIHN0YXRlIHdhcyBzZXQuXG5cdCAqL1xuXHRhZGRVc2VyRmllbGRDaGFuZ2VkID0gYXN5bmMgKGV2ZW50OiBGaWVsZCRDaGFuZ2VFdmVudCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGNvbnN0IHVzZXJJbnB1dCA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdHJldHVybiBldmVudFxuXHRcdFx0LmdldFBhcmFtZXRlcihcInByb21pc2VcIilcblx0XHRcdD8udGhlbihcblx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IENvbGxhYm9yYXRpb25EcmFmdCwgbmV3VXNlcklkOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRcdFx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHVzZXJJbnB1dC5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0XHRcdGNvbnN0IGludml0ZWRVc2VyczogVXNlcltdID0gaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJpbnZpdGVkVXNlcnNcIikgfHwgW107XG5cdFx0XHRcdFx0Y29uc3QgbmV3VXNlcjogVXNlciA9IHtcblx0XHRcdFx0XHRcdGlkOiBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJVc2VySURcIiksXG5cdFx0XHRcdFx0XHRuYW1lOiBpbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0UHJvcGVydHkoXCJVc2VyRGVzY3JpcHRpb25cIilcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGlmIChpbnZpdGVkVXNlcnMuZmluZEluZGV4KCh1c2VyKSA9PiB1c2VyLmlkID09PSBuZXdVc2VySWQpID4gLTEpIHtcblx0XHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiRXJyb3JcIik7XG5cdFx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZVRleHQodGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVVNFUl9FUlJPUlwiKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0XHRcdCEoXG5cdFx0XHRcdFx0XHRcdGludml0ZWRVc2Vycy5maW5kSW5kZXgoKHVzZXIpID0+IHVzZXIuaWQgPT09IG5ld1VzZXIuaWQpID4gLTEgfHxcblx0XHRcdFx0XHRcdFx0KG5ld1VzZXIuaWQgPT09IG5ld1VzZXIubmFtZSAmJiBuZXdVc2VyLmlkID09PSBcIlwiKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0dGhpcy5hZGRVc2VyKHVzZXJJbnB1dCwgaW52aXRlZFVzZXJzLCBuZXdVc2VyKTtcblx0XHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlKFwiTm9uZVwiKTtcblx0XHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0uYmluZCh0aGlzKVxuXHRcdFx0KVxuXHRcdFx0LmNhdGNoKFxuXHRcdFx0XHRmdW5jdGlvbiAodGhpczogQ29sbGFib3JhdGlvbkRyYWZ0KTogdm9pZCB7XG5cdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGUoXCJXYXJuaW5nXCIpO1xuXHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dCh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9VU0VSX05PVF9GT1VORFwiKSk7XG5cdFx0XHRcdH0uYmluZCh0aGlzKVxuXHRcdFx0KTtcblx0fTtcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZW1vdmUgYSB1c2VyIGZyb20gdGhlIGxpc3Qgb2YgaW52aXRlZCB1c2VyLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgcmVtb3ZlIGJ1dHRvblxuXHQgKi9cblx0cmVtb3ZlVXNlcihldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiB2b2lkIHtcblx0XHRjb25zdCBpdGVtID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSBpdGVtPy5nZXRCaW5kaW5nQ29udGV4dChcInBhZ2VJbnRlcm5hbFwiKTtcblx0XHRjb25zdCBkZWxldGVVc2VySUQgPSBpdGVtPy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcImlkXCIpO1xuXHRcdGxldCBpbnZpdGVkVXNlcnM6IFVzZXJbXSA9IGludGVybmFsTW9kZWxDb250ZXh0Py5nZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vaW52aXRlZFVzZXJzXCIpO1xuXHRcdGludml0ZWRVc2VycyA9IGludml0ZWRVc2Vycy5maWx0ZXIoKHVzZXIpID0+IHVzZXIuaWQgIT09IGRlbGV0ZVVzZXJJRCk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9pbnZpdGVkVXNlcnNcIiwgaW52aXRlZFVzZXJzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsIHRoZSBzaGFyZSBhY3Rpb24gdG8gdXBkYXRlIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlcnMuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSBpbnZpdGUgYnV0dG9uXG5cdCAqL1xuXHRpbnZpdGVVc2VyID0gYXN5bmMgKGV2ZW50OiBFdmVudDx7fSwgQnV0dG9uPik6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGNvbnN0IHVzZXJzOiBCYWNrZW5kVXNlcltdID0gW10sXG5cdFx0XHRuZXdseUludml0ZWRVc2Vyczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBiaW5kaW5nQ29udGV4dCA9IHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0Y29uc3QgY29udGV4dHMgPSAodGhpcy5tYW5hZ2VEaWFsb2dVc2VyVGFibGU/LmdldEJpbmRpbmcoXCJyb3dzXCIpIGFzIE9EYXRhTGlzdEJpbmRpbmcpLmdldENvbnRleHRzKCk7XG5cdFx0Y29udGV4dHMuZm9yRWFjaChmdW5jdGlvbiAoY29udGV4dCkge1xuXHRcdFx0dXNlcnMucHVzaCh7XG5cdFx0XHRcdFVzZXJJRDogY29udGV4dC5nZXRQcm9wZXJ0eShcImlkXCIpLFxuXHRcdFx0XHRVc2VyQWNjZXNzUm9sZTogXCJPXCIgLy8gRm9yIG5vdyBhY2NvcmRpbmcgdG8gVVggZXZlcnkgdXNlciByZXRyaWV2ZXMgdGhlIG93bmVyIHJvbGVcblx0XHRcdH0pO1xuXHRcdFx0aWYgKGNvbnRleHQuZ2V0UHJvcGVydHkoXCJzdGF0dXNcIikgPT09IFVzZXJTdGF0dXMuTm90WWV0SW52aXRlZCkge1xuXHRcdFx0XHRuZXdseUludml0ZWRVc2Vycy5wdXNoKGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0cnkge1xuXHRcdFx0Ly8gV2UgcmVxdWVzdCB0aGUgbnVtYmVyIG9mIGludml0ZWQgdXNlcnMgYWZ0ZXIgdGhlIHNoYXJlIGFjdGlvbiB0byBzZWUgaG93IG1hbnkgdXNlcnMgd2VyZSByZWFsbHkgaW52aXRlZFxuXHRcdFx0Y29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFtzaGFyZU9iamVjdChiaW5kaW5nQ29udGV4dCwgdXNlcnMpLCB0aGlzLnJlcXVlc3RJbnZpdGVkVXNlcnNJbkRyYWZ0KCldKTtcblx0XHRcdGNvbnN0IG5ld1VzZXJzOiBDb250ZXh0W10gPSBbXTtcblx0XHRcdHJlc3VsdHNbMV0uZm9yRWFjaCgoaW52aXRlZFVzZXIpID0+IHtcblx0XHRcdFx0aWYgKG5ld2x5SW52aXRlZFVzZXJzLmluY2x1ZGVzKGludml0ZWRVc2VyLmdldFByb3BlcnR5KFwiVXNlcklEXCIpKSkge1xuXHRcdFx0XHRcdG5ld1VzZXJzLnB1c2goaW52aXRlZFVzZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IG1lc3NhZ2VIYW5kbGVyID0gdGhpcy5nZXRQYWdlQ29udHJvbGxlcigpIS5tZXNzYWdlSGFuZGxlcjtcblx0XHRcdGF3YWl0IG1lc3NhZ2VIYW5kbGVyLnNob3dNZXNzYWdlRGlhbG9nKCk7XG5cblx0XHRcdHN3aXRjaCAobmV3VXNlcnMubGVuZ3RoKSB7XG5cdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RfTk9fVVNFUlwiLCBbXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyhcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1NVQ0NFU1NfVE9BU1RcIiwgW3RoaXMuZ2V0U2hhcmVkSXRlbU5hbWUoYmluZGluZ0NvbnRleHQpXSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KFxuXHRcdFx0XHRcdFx0dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fU1VDQ0VTU19UT0FTVF9QTFVSQUxcIiwgW1xuXHRcdFx0XHRcdFx0XHRuZXdVc2Vycy5sZW5ndGgudG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0dGhpcy5nZXRTaGFyZWRJdGVtTmFtZShiaW5kaW5nQ29udGV4dClcblx0XHRcdFx0XHRcdF0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIHtcblx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0ZBSUxFRF9UT0FTVFwiKSk7XG5cdFx0fVxuXHRcdHRoaXMuY2xvc2VNYW5hZ2VEaWFsb2coKTtcblx0fTtcblxuXHQvKipcblx0ICogRmV0Y2hlcyB0aGUgbGlzdCBvZiB1c2VycyB0aGF0IGFyZSBhbHJlYWR5IGludml0ZWQgaW4gdGhlIGRyYWZ0LlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHdpdGggdGhlIGxpc3Qgb2YgdXNlciBjb250ZXh0cy5cblx0ICovXG5cdHByaXZhdGUgYXN5bmMgcmVxdWVzdEludml0ZWRVc2Vyc0luRHJhZnQoKTogUHJvbWlzZTxDb250ZXh0W10+IHtcblx0XHRjb25zdCBtb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBwYXJhbWV0ZXJzID0ge1xuXHRcdFx0JHNlbGVjdDogXCJVc2VySUQsVXNlckRlc2NyaXB0aW9uLFVzZXJFZGl0aW5nU3RhdGVcIixcblx0XHRcdCQkZ3JvdXBJZDogXCIkYXV0by5Xb3JrZXJzXCJcblx0XHR9O1xuXHRcdGNvbnN0IGludml0ZWRVc2VyTGlzdCA9IG1vZGVsPy5iaW5kTGlzdChcblx0XHRcdGAke3RoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS9EcmFmdEFkbWluaXN0cmF0aXZlRGF0YS9EcmFmdEFkbWluaXN0cmF0aXZlVXNlcmAsXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRbXSxcblx0XHRcdFtdLFxuXHRcdFx0cGFyYW1ldGVyc1xuXHRcdCkgYXMgT0RhdGFMaXN0QmluZGluZztcblxuXHRcdC8vIGZvciBub3cgd2Ugc2V0IGEgbGltaXQgdG8gMTAwLiB0aGVyZSBzaG91bGRuJ3QgYmUgbW9yZSB0aGFuIGEgZmV3XG5cdFx0cmV0dXJuIGludml0ZWRVc2VyTGlzdC5yZXF1ZXN0Q29udGV4dHMoMCwgMTAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWFkcyB0aGUgY3VycmVudGx5IGludml0ZWQgdXNlciBhbmQgc3RvcmUgaXQgaW4gdGhlIGludGVybmFsIG1vZGVsLlxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb25jZSB0aGUgdXNlcnMgYXJlIHJlYWQuXG5cdCAqL1xuXHRyZWFkSW52aXRlZFVzZXJzID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGN1cnJlbnRVc2VyTGlzdCA9IGF3YWl0IHRoaXMucmVxdWVzdEludml0ZWRVc2Vyc0luRHJhZnQoKTtcblx0XHRcdGNvbnN0IGludml0ZWRVc2VyczogVXNlcltdID0gW107XG5cdFx0XHRjb25zdCBhY3RpdmVVc2VycyA9IHRoaXMuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCIvY29sbGFib3JhdGlvbi9hY3RpdmVVc2Vyc1wiKSB8fCBbXTtcblx0XHRcdGNvbnN0IG1lID0gQ29sbGFib3JhdGlvblV0aWxzLmdldE1lKHRoaXMuZ2V0QXBwQ29tcG9uZW50KCkhKTtcblx0XHRcdGxldCB1c2VyU3RhdHVzOiBVc2VyU3RhdHVzO1xuXHRcdFx0aWYgKGN1cnJlbnRVc2VyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGN1cnJlbnRVc2VyTGlzdC5mb3JFYWNoKCh1c2VyQ29udGV4dCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHVzZXJEYXRhID0gdXNlckNvbnRleHQuZ2V0T2JqZWN0KCkgYXMgQmFja2VuZFVzZXI7XG5cdFx0XHRcdFx0Y29uc3QgaXNNZTogYm9vbGVhbiA9IG1lPy5pZCA9PT0gdXNlckRhdGEuVXNlcklEO1xuXHRcdFx0XHRcdGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVXNlcnMuZmluZCgodTogVXNlcikgPT4gdS5pZCA9PT0gdXNlckRhdGEuVXNlcklEKTtcblx0XHRcdFx0XHRsZXQgdXNlckRlc2NyaXB0aW9uID0gdXNlckRhdGEuVXNlckRlc2NyaXB0aW9uIHx8IHVzZXJEYXRhLlVzZXJJRDtcblx0XHRcdFx0XHRjb25zdCBpbml0aWFscyA9IENvbGxhYm9yYXRpb25VdGlscy5mb3JtYXRJbml0aWFscyh1c2VyRGVzY3JpcHRpb24pO1xuXHRcdFx0XHRcdHVzZXJEZXNjcmlwdGlvbiA9IGlzTWUgPyBgJHtDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0VGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX01FXCIsIHVzZXJEZXNjcmlwdGlvbil9YCA6IHVzZXJEZXNjcmlwdGlvbjtcblx0XHRcdFx0XHRpZiAoaXNBY3RpdmUpIHtcblx0XHRcdFx0XHRcdHVzZXJTdGF0dXMgPSBVc2VyU3RhdHVzLkN1cnJlbnRseUVkaXRpbmc7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh1c2VyRGF0YS5Vc2VyRWRpdGluZ1N0YXRlID09PSBVc2VyRWRpdGluZ1N0YXRlLkluUHJvZ3Jlc3MpIHtcblx0XHRcdFx0XHRcdHVzZXJTdGF0dXMgPSBVc2VyU3RhdHVzLkNoYW5nZXNNYWRlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1c2VyU3RhdHVzID0gVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IHVzZXI6IFVzZXIgPSB7XG5cdFx0XHRcdFx0XHRpZDogdXNlckRhdGEuVXNlcklELFxuXHRcdFx0XHRcdFx0bmFtZTogdXNlckRlc2NyaXB0aW9uLFxuXHRcdFx0XHRcdFx0c3RhdHVzOiB1c2VyU3RhdHVzLFxuXHRcdFx0XHRcdFx0Y29sb3I6IENvbGxhYm9yYXRpb25VdGlscy5nZXRVc2VyQ29sb3IodXNlckRhdGEuVXNlcklELCBhY3RpdmVVc2VycywgaW52aXRlZFVzZXJzKSxcblx0XHRcdFx0XHRcdGluaXRpYWxzOiBpbml0aWFscyxcblx0XHRcdFx0XHRcdG1lOiBpc01lXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRpbnZpdGVkVXNlcnMucHVzaCh1c2VyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvL25vdCB5ZXQgc2hhcmVkLCBqdXN0IGFkZCBtZVxuXHRcdFx0XHRpbnZpdGVkVXNlcnMucHVzaChtZSk7XG5cdFx0XHR9XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vVXNlcklEXCIsIFwiXCIpO1xuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL1VzZXJEZXNjcmlwdGlvblwiLCBcIlwiKTtcblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9pbnZpdGVkVXNlcnNcIiwgaW52aXRlZFVzZXJzKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfUkVBRElOR19VU0VSX0ZBSUxFRFwiKSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0byBiZSBzaGFyZWQuXG5cdCAqIEBwYXJhbSBiaW5kaW5nQ29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgcGFnZS5cblx0ICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0byBiZSBzaGFyZWQuXG5cdCAqL1xuXHRnZXRTaGFyZWRJdGVtTmFtZShiaW5kaW5nQ29udGV4dDogQ29udGV4dCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaGVhZGVySW5mbyA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucy5VST8uSGVhZGVySW5mbztcblx0XHRsZXQgc2hhcmVkSXRlbU5hbWUgPSBcIlwiO1xuXHRcdGNvbnN0IHRpdGxlID0gaGVhZGVySW5mbz8uVGl0bGU7XG5cdFx0aWYgKFxuXHRcdFx0dGl0bGUgJiZcblx0XHRcdGlzQW5ub3RhdGlvbk9mVHlwZTxEYXRhRmllbGRUeXBlcz4odGl0bGUsIFtcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoQWN0aW9uLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoQWN0aW9uR3JvdXAsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbixcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aFVybCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXG5cdFx0XHRdKVxuXHRcdCkge1xuXHRcdFx0c2hhcmVkSXRlbU5hbWUgPSBpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbih0aXRsZS5WYWx1ZSkgPyBiaW5kaW5nQ29udGV4dC5nZXRQcm9wZXJ0eSh0aXRsZS5WYWx1ZS5wYXRoKSA6IHRpdGxlLlZhbHVlO1xuXHRcdH1cblx0XHRyZXR1cm4gc2hhcmVkSXRlbU5hbWUgfHwgKGhlYWRlckluZm8/LlR5cGVOYW1lIGFzIHVua25vd24gYXMgc3RyaW5nKSB8fCBcIlwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlcyB0aGUgZGVsZWdhdGUgcGF5bG9hZCBmb3IgdGhlIHVzZXIgZmllbGQgdmFsdWUgaGVscC5cblx0ICogQHJldHVybnMgVGhlIHZhbHVlIGhlbHAgZGVsZWdhdGUgcGF5bG9hZFxuXHQgKi9cblx0Z2V0VmFsdWVIZWxwRGVsZWdhdGUoKTogeyBuYW1lOiBzdHJpbmc7IHBheWxvYWQ6IFZhbHVlSGVscFBheWxvYWQgfSB7XG5cdFx0Ly8gVGhlIG5vbiBudWxsIGFzc2VydGlvbiBpcyBzYWZlIGhlcmUsIGJlY2F1c2UgdGhlIGFjdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUgYW5ub3RhdGlvbiBpcyBwcmVzZW50XG5cdFx0Y29uc3QgYWN0aW9uTmFtZSA9IChcblx0XHRcdHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5U2V0IS5hbm5vdGF0aW9ucy5Db21tb24gYXMgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ29tbW9uXG5cdFx0KS5EcmFmdFJvb3QhLlNoYXJlQWN0aW9uIS50b1N0cmluZygpO1xuXHRcdC8vIFdlIGFyZSBhbHNvIHN1cmUgdGhhdCB0aGUgYWN0aW9uIGV4aXN0XG5cdFx0Y29uc3QgYWN0aW9uID0gdGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKGFjdGlvbk5hbWUpIGFzIFZvY2FidWxhcnlBY3Rpb247XG5cdFx0Ly8gQnkgZGVmaW5pdGlvbiB0aGUgYWN0aW9uIGhhcyBhIHBhcmFtZXRlciB3aXRoIHRoZSBuYW1lIFwiVXNlcnNcIlxuXHRcdGNvbnN0IHVzZXJQYXJhbWV0ZXJzID0gYWN0aW9uLnBhcmFtZXRlcnMuZmluZCgocGFyYW0pID0+IHBhcmFtLm5hbWUgPT09IFVTRVJTX1BBUkFNRVRFUlMpITtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRuYW1lOiBcInNhcC9mZS9tYWNyb3MvdmFsdWVoZWxwL1ZhbHVlSGVscERlbGVnYXRlXCIsXG5cdFx0XHRwYXlsb2FkOiB7XG5cdFx0XHRcdHByb3BlcnR5UGF0aDogYC8ke3VzZXJQYXJhbWV0ZXJzLnR5cGV9LyR7VVNFUl9JRF9QQVJBTUVURVJ9YCxcblx0XHRcdFx0cXVhbGlmaWVyczoge30sXG5cdFx0XHRcdHZhbHVlSGVscFF1YWxpZmllcjogXCJcIixcblx0XHRcdFx0aXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2c6IHRydWVcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdlbmVyYXRlIHRoZSBleHByZXNzaW9uIGJpbmRpbmcgb2YgdGhlIEludml0YXRpb24gZGlhbG9nLlxuXHQgKiBAcmV0dXJucyBUaGUgZGlhbG9nIHRpdGxlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHQgKi9cblx0Z2V0SW52aXRhdGlvbkRpYWxvZ1RpdGxlRXhwQmluZGluZygpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdFx0Y29uc3QgaGVhZGVySW5mbyA9IHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucy5VST8uSGVhZGVySW5mbztcblx0XHRjb25zdCB0aXRsZSA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbigoaGVhZGVySW5mbz8uVGl0bGUgYXMgRGF0YUZpZWxkIHwgdW5kZWZpbmVkKT8uVmFsdWUsIFtdLCBcIlwiKTtcblx0XHRjb25zdCBwYXJhbXMgPSBbXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0RJQUxPR1wiLCBoZWFkZXJJbmZvPy5UeXBlTmFtZS50b1N0cmluZygpLCB0aXRsZV07XG5cdFx0Y29uc3QgdGl0bGVFeHByZXNzaW9uID0gZm9ybWF0UmVzdWx0KHBhcmFtcywgY29sbGFib3JhdGlvbkZvcm1hdHRlci5nZXRGb3JtYXR0ZWRUZXh0KTtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24odGl0bGVFeHByZXNzaW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNsb3NlIHRoZSBtYW5hZ2UgZGlhbG9nLlxuXHQgKlxuXHQgKi9cblx0Y2xvc2VNYW5hZ2VEaWFsb2cgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5tYW5hZ2VEaWFsb2c/LmNsb3NlKCk7XG5cdFx0dGhpcy5tYW5hZ2VEaWFsb2c/LmRlc3Ryb3koKTtcblx0XHRkZWxldGUgdGhpcy5tYW5hZ2VEaWFsb2c7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGludml0ZSBidXR0b24gaWYgdGhlcmUncyBhIHNoYXJlIGFjdGlvbiBvbiByb290IGxldmVsLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRnZXRJbnZpdGVCdXR0b24oKTogSEJveCB7XG5cdFx0aWYgKCh0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnMuQ29tbW9uIGFzIEVudGl0eVNldEFubm90YXRpb25zX0NvbW1vbik/LkRyYWZ0Um9vdD8uU2hhcmVBY3Rpb24pIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxIQm94IHZpc2libGU9XCJ7dWk+L2lzRWRpdGFibGV9XCIgYWxpZ25JdGVtcz1cIkNlbnRlclwiIGp1c3RpZnlDb250ZW50PVwiU3RhcnRcIj5cblx0XHRcdFx0XHQ8QXZhdGFyXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9XCJUaWxlSWNvblwiXG5cdFx0XHRcdFx0XHRzcmM9XCJzYXAtaWNvbjovL2FkZC1lbXBsb3llZVwiXG5cdFx0XHRcdFx0XHRkaXNwbGF5U2l6ZT1cIlhTXCJcblx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm1hbmFnZUNvbGxhYm9yYXRpb259XG5cdFx0XHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRFX1VTRVJfQVZBVEFSX1RPT0xUSVBcIil9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIDxIQm94IC8+O1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjb250ZW50IG9mIHRoZSBjb2xsYWJvcmF0aW9uIGRyYWZ0IGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLl9nZXRPd25lcigpPy5nZXRNZXRhTW9kZWwoKSAmJiBNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCh0aGlzLl9nZXRPd25lcigpIS5nZXRNZXRhTW9kZWwoKSkpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdDxIQm94XG5cdFx0XHRcdFx0XHRpdGVtcz17eyBwYXRoOiBcImludGVybmFsPi9jb2xsYWJvcmF0aW9uL2FjdGl2ZVVzZXJzXCIgfX1cblx0XHRcdFx0XHRcdGNsYXNzPVwic2FwVWlUaW55TWFyZ2luQmVnaW5cIlxuXHRcdFx0XHRcdFx0dmlzaWJsZT1cIns9ICR7dWk+L2lzRWRpdGFibGV9ICZhbXA7JmFtcDsgJHtpbnRlcm5hbD4vY29sbGFib3JhdGlvbi9jb25uZWN0ZWR9IH1cIlxuXHRcdFx0XHRcdFx0YWxpZ25JdGVtcz1cIkNlbnRlclwiXG5cdFx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudD1cIlN0YXJ0XCJcblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8QXZhdGFyXG5cdFx0XHRcdFx0XHRcdGluaXRpYWxzPVwie2ludGVybmFsPmluaXRpYWxzfVwiXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXlTaXplPVwiWFNcIlxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9XCJ7aW50ZXJuYWw+Y29sb3J9XCJcblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuc2hvd0NvbGxhYm9yYXRpb25Vc2VyRGV0YWlsc31cblx0XHRcdFx0XHRcdFx0dG9vbHRpcD17e1xuXHRcdFx0XHRcdFx0XHRcdHBhcnRzOiBbeyBwYXRoOiBcImludGVybmFsPm5hbWVcIiB9XSxcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXR0ZXI6IChuYW1lOiBzdHJpbmcpID0+XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfQUNUSVZFX1VTRVJfQVZBVEFSX1RPT0xUSVBcIiwgW25hbWVdKVxuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0e3RoaXMuZ2V0SW52aXRlQnV0dG9uKCl9XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF1REEsTUFBTUEsZ0JBQWdCLEdBQUcsT0FBTztFQUNoQyxNQUFNQyxpQkFBaUIsR0FBRyxRQUFRO0VBQUMsSUFHZEMsa0JBQWtCLElBQUFDLElBQUEsR0FEdENDLGNBQWMsQ0FBQywyREFBMkQsQ0FBQyxFQUFBQyxLQUFBLEdBRTFFQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHNUNILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBTyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGNBQUE7SUFpQjdCLFNBQUFWLG1CQUFZVyxLQUF1QyxFQUFFQyxNQUF5QyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUMvRkEsS0FBQSxHQUFBSCxjQUFBLENBQUFJLElBQUEsT0FBTUgsS0FBSyxFQUFFQyxNQUFNLENBQUM7TUFBQ0csMEJBQUEsQ0FBQUYsS0FBQSxpQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsUUFBQUksWUFBQSxFQUFBSixLQUFBO01BaUJ0QjtBQUNEO0FBQ0E7QUFDQTtNQUhDQSxLQUFBLENBSUFLLDRCQUE0QixHQUFJQyxLQUF5QixJQUFXO1FBQ25FLE1BQU1DLE1BQU0sR0FBR0QsS0FBSyxDQUFDRSxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUNSLEtBQUEsQ0FBS1Msa0JBQWtCLEVBQUU7VUFDN0JULEtBQUEsQ0FBS1Msa0JBQWtCLEdBQUdULEtBQUEsQ0FBS1UscUJBQXFCLENBQUMsQ0FBQztRQUN2RDtRQUVBVixLQUFBLENBQUtTLGtCQUFrQixFQUFFRSxpQkFBaUIsQ0FBQ0osTUFBTSxDQUFDSyxpQkFB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
|
|
675
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVU0VSU19QQVJBTUVURVJTIiwiVVNFUl9JRF9QQVJBTUVURVIiLCJDb2xsYWJvcmF0aW9uRHJhZnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsInJlcXVpcmVkIiwiX2RlYzMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJzaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzIiwiZXZlbnQiLCJzb3VyY2UiLCJnZXRTb3VyY2UiLCJ1c2VyRGV0YWlsc1BvcG92ZXIiLCJnZXRVc2VyRGV0YWlsc1BvcG92ZXIiLCJzZXRCaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib3BlbkJ5IiwibWFuYWdlQ29sbGFib3JhdGlvbiIsIm1hbmFnZURpYWxvZyIsImdldE1hbmFnZURpYWxvZyIsInJlYWRJbnZpdGVkVXNlcnMiLCJvcGVuIiwiZm9ybWF0VXNlclN0YXR1cyIsInVzZXJTdGF0dXMiLCJVc2VyU3RhdHVzIiwiQ3VycmVudGx5RWRpdGluZyIsImdldFRyYW5zbGF0ZWRUZXh0IiwiQ2hhbmdlc01hZGUiLCJOb0NoYW5nZXNNYWRlIiwiTm90WWV0SW52aXRlZCIsImFkZFVzZXJGaWVsZENoYW5nZWQiLCJ1c2VySW5wdXQiLCJnZXRQYXJhbWV0ZXIiLCJ0aGVuIiwibmV3VXNlcklkIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJpbnZpdGVkVXNlcnMiLCJnZXRQcm9wZXJ0eSIsIm5ld1VzZXIiLCJpZCIsIm5hbWUiLCJmaW5kSW5kZXgiLCJ1c2VyIiwic2V0VmFsdWVTdGF0ZSIsInNldFZhbHVlU3RhdGVUZXh0IiwiYWRkVXNlciIsImJpbmQiLCJjYXRjaCIsImludml0ZVVzZXIiLCJ1c2VycyIsIm5ld2x5SW52aXRlZFVzZXJzIiwiYmluZGluZ0NvbnRleHQiLCJjb250ZXh0cyIsIm1hbmFnZURpYWxvZ1VzZXJUYWJsZSIsImdldEJpbmRpbmciLCJnZXRDb250ZXh0cyIsImZvckVhY2giLCJjb250ZXh0IiwicHVzaCIsIlVzZXJJRCIsIlVzZXJBY2Nlc3NSb2xlIiwiZmlyZUludml0ZVRlbGVtZXRyeSIsImxlbmd0aCIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwic2hhcmVPYmplY3QiLCJyZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCIsIm5ld1VzZXJzIiwiaW52aXRlZFVzZXIiLCJpbmNsdWRlcyIsIm1lc3NhZ2VIYW5kbGVyIiwiZ2V0UGFnZUNvbnRyb2xsZXIiLCJzaG93TWVzc2FnZURpYWxvZyIsIk1lc3NhZ2VUb2FzdCIsInNob3ciLCJnZXRTaGFyZWRJdGVtTmFtZSIsInRvU3RyaW5nIiwiY2xvc2VNYW5hZ2VEaWFsb2ciLCJjdXJyZW50VXNlckxpc3QiLCJhY3RpdmVVc2VycyIsImdldE1vZGVsIiwibWUiLCJDb2xsYWJvcmF0aW9uVXRpbHMiLCJnZXRNZSIsImdldEFwcENvbXBvbmVudCIsInVzZXJDb250ZXh0IiwidXNlckRhdGEiLCJnZXRPYmplY3QiLCJpc01lIiwiaXNBY3RpdmUiLCJmaW5kIiwidSIsInVzZXJEZXNjcmlwdGlvbiIsIlVzZXJEZXNjcmlwdGlvbiIsImluaXRpYWxzIiwiZm9ybWF0SW5pdGlhbHMiLCJnZXRUZXh0IiwiVXNlckVkaXRpbmdTdGF0ZSIsIkluUHJvZ3Jlc3MiLCJzdGF0dXMiLCJjb2xvciIsImdldFVzZXJDb2xvciIsInNldFByb3BlcnR5IiwiZSIsImNsb3NlIiwiZGVzdHJveSIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiX293bmVyQ29tcG9uZW50IiwiX2NvbnRyb2xMb2FkZWQiLCJQcm9taXNlS2VlcGVyIiwiR3JpZFRhYmxlQ29udHJvbCIsInVuZGVmaW5lZCIsIkxpYiIsImxvYWQiLCJkZWZhdWx0IiwiX191aTVfcmVxdWlyZV9hc3luYyIsIkdyaWRUYWJsZUNvbHVtbkNvbnRyb2wiLCJjb250ZXh0T2JqZWN0IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsImNvbnRleHRQYXRoIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJyZXNvbHZlIiwiX2pzeCIsIlJlc3BvbnNpdmVQb3BvdmVyIiwic2hvd0hlYWRlciIsImNsYXNzIiwicGxhY2VtZW50IiwiY2hpbGRyZW4iLCJfanN4cyIsIkhCb3giLCJBdmF0YXIiLCJkaXNwbGF5U2l6ZSIsImJhY2tncm91bmRDb2xvciIsIlZCb3giLCJMYWJlbCIsInRleHQiLCJhZGREZXBlbmRlbnQiLCJEaWFsb2ciLCJ0aXRsZSIsImdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmciLCJob3Jpem9udGFsU2Nyb2xsaW5nIiwidmVydGljYWxTY3JvbGxpbmciLCJjb250ZW50V2lkdGgiLCJzdHJldGNoIiwiQ29tbW9uSGVscGVyIiwiaXNEZXNrdG9wIiwiYmVnaW5CdXR0b24iLCJCdXR0b24iLCJwcmVzcyIsImVuYWJsZWQiLCJwYXJ0cyIsInBhdGgiLCJmb3JtYXR0ZXIiLCJmb3JtYXRJbnZpdGVCdXR0b24iLCJlbmRCdXR0b24iLCJ3aWR0aCIsIk1lc3NhZ2VTdHJpcCIsInNob3dJY29uIiwic2hvd0Nsb3NlQnV0dG9uIiwiZ2V0TWFuYWdlRGlhbG9nQWRkVXNlclNlY3Rpb24iLCJnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGUiLCJiaW5kRWxlbWVudCIsIm1vZGVsIiwiZ2V0TWFuYWdlRGlhbG9nVXNlclRhYmxlQ29sdW1ucyIsIl9GcmFnbWVudCIsImxhYmVsIiwiVGV4dCIsInRlbXBsYXRlIiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiT2JqZWN0U3RhdHVzIiwic3RhdGUiLCJmb3JtYXRVc2VyU3RhdHVzQ29sb3IiLCJpY29uIiwicmVtb3ZlVXNlciIsInZpc2libGUiLCJ0YWJsZVRpdGxlIiwiSW52aXNpYmxlVGV4dCIsInJvd3MiLCJ2aXNpYmxlUm93Q291bnQiLCJ2aXNpYmxlUm93Q291bnRNb2RlIiwic2VsZWN0aW9uTW9kZSIsImFyaWFMYWJlbGxlZEJ5IiwiY29sdW1ucyIsImRlcGVuZGVudHMiLCJGaWVsZCIsInZhbHVlIiwiYWRkaXRpb25hbFZhbHVlIiwiZGlzcGxheSIsInZhbHVlSGVscCIsInBsYWNlaG9sZGVyIiwiY2hhbmdlIiwiVmFsdWVIZWxwIiwiZGVsZWdhdGUiLCJnZXRWYWx1ZUhlbHBEZWxlZ2F0ZSIsInZhbGlkYXRlSW5wdXQiLCJ0eXBlYWhlYWQiLCJNRENQb3BvdmVyIiwiTVRhYmxlIiwiY2FzZVNlbnNpdGl2ZSIsInVzZUFzVmFsdWVIZWxwIiwiZGlhbG9nIiwiTURDRGlhbG9nIiwiVmFsdWVTdGF0ZSIsIlN1Y2Nlc3MiLCJXYXJuaW5nIiwiSW5mb3JtYXRpb24iLCJuYlVzZXJzIiwic29tZSIsInRyYW5zaWVudCIsIml0ZW0iLCJkZWxldGVVc2VySUQiLCJmaWx0ZXIiLCJ0b3RhbEludml0ZWVzIiwiY291bnROZXdJbnZpdGVlcyIsInRlbGVtZXRyeUV2ZW50IiwicGFyYW1ldGVycyIsImdldFRlbGVtZXRyeVNlcnZpY2UiLCJzdG9yZUFjdGlvbiIsIiRzZWxlY3QiLCIkJGdyb3VwSWQiLCJpbnZpdGVkVXNlckxpc3QiLCJiaW5kTGlzdCIsImdldFBhdGgiLCJyZXF1ZXN0Q29udGV4dHMiLCJoZWFkZXJJbmZvIiwidGFyZ2V0RW50aXR5VHlwZSIsImFubm90YXRpb25zIiwiVUkiLCJIZWFkZXJJbmZvIiwic2hhcmVkSXRlbU5hbWUiLCJUaXRsZSIsImlzQW5ub3RhdGlvbk9mVHlwZSIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwiVmFsdWUiLCJUeXBlTmFtZSIsImFjdGlvbk5hbWUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJDb21tb24iLCJEcmFmdFJvb3QiLCJTaGFyZUFjdGlvbiIsImFjdGlvbiIsInJlc29sdmVQYXRoIiwidXNlclBhcmFtZXRlcnMiLCJwYXJhbSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJxdWFsaWZpZXJzIiwidmFsdWVIZWxwUXVhbGlmaWVyIiwiaXNBY3Rpb25QYXJhbWV0ZXJEaWFsb2ciLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJwYXJhbXMiLCJ0aXRsZUV4cHJlc3Npb24iLCJmb3JtYXRSZXN1bHQiLCJjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIiwiZ2V0Rm9ybWF0dGVkVGV4dCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0SW52aXRlQnV0dG9uIiwic3JjIiwidG9vbHRpcCIsIl9nZXRPd25lciIsImdldE1ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJpdGVtcyIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbGxhYm9yYXRpb25EcmFmdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIEFjdGlvbiBhcyBWb2NhYnVsYXJ5QWN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vbl9FZG1cIjtcbmltcG9ydCB0eXBlIHsgRGF0YUZpZWxkLCBEYXRhRmllbGRUeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGZvcm1hdFJlc3VsdCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB0eXBlIHsgQmFja2VuZFVzZXIsIFVzZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQge1xuXHRDb2xsYWJvcmF0aW9uVXRpbHMsXG5cdFVzZXJFZGl0aW5nU3RhdGUsXG5cdFVzZXJTdGF0dXMsXG5cdHNoYXJlT2JqZWN0XG59IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBjb2xsYWJvcmF0aW9uRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NvbGxhYm9yYXRpb25Gb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUHJvbWlzZUtlZXBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Qcm9taXNlS2VlcGVyXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25PZlR5cGUsIGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgeyBUZWxlbWV0cnlDb2xsRHJhZnRJbnZpdGVFdmVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9zZXJ2aWNlcy9UZWxlbWV0cnlTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgVmFsdWVIZWxwUGF5bG9hZCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUxpc3RIZWxwZXJcIjtcbmltcG9ydCBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJzYXAvbS9EaWFsb2dcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvbS9NZXNzYWdlU3RyaXBcIjtcbmltcG9ydCBNZXNzYWdlVG9hc3QgZnJvbSBcInNhcC9tL01lc3NhZ2VUb2FzdFwiO1xuaW1wb3J0IE9iamVjdFN0YXR1cyBmcm9tIFwic2FwL20vT2JqZWN0U3RhdHVzXCI7XG5pbXBvcnQgUmVzcG9uc2l2ZVBvcG92ZXIgZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZSBmcm9tIFwic2FwL20vVGFibGVcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgSW52aXNpYmxlVGV4dCBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlVGV4dFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgeyBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgRmllbGQkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IEZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgVmFsdWVIZWxwIGZyb20gXCJzYXAvdWkvbWRjL1ZhbHVlSGVscFwiO1xuaW1wb3J0IE1EQ0RpYWxvZyBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvRGlhbG9nXCI7XG5pbXBvcnQgTURDUG9wb3ZlciBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvUG9wb3ZlclwiO1xuaW1wb3J0IE1UYWJsZSBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvY29udGVudC9NVGFibGVcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIEludGVnZXIgZnJvbSBcInNhcC91aS9tb2RlbC90eXBlL0ludGVnZXJcIjtcbmltcG9ydCB0eXBlIEdyaWRUYWJsZUNvbHVtbiBmcm9tIFwic2FwL3VpL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgR3JpZFRhYmxlIGZyb20gXCJzYXAvdWkvdGFibGUvVGFibGVcIjtcblxuY29uc3QgVVNFUlNfUEFSQU1FVEVSUyA9IFwiVXNlcnNcIjtcbmNvbnN0IFVTRVJfSURfUEFSQU1FVEVSID0gXCJVc2VySURcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLmNvbXBvbmVudHMuQ29sbGFib3JhdGlvbkRyYWZ0XCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2xsYWJvcmF0aW9uRHJhZnQgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IHRydWUgfSlcblx0cHVibGljIGNvbnRleHRQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0cHVibGljIGlkPzogc3RyaW5nO1xuXG5cdHByaXZhdGUgY29udGV4dE9iamVjdD86IERhdGFNb2RlbE9iamVjdFBhdGg8RW50aXR5U2V0PjtcblxuXHRwcml2YXRlIHVzZXJEZXRhaWxzUG9wb3Zlcj86IFJlc3BvbnNpdmVQb3BvdmVyO1xuXG5cdHByaXZhdGUgbWFuYWdlRGlhbG9nPzogRGlhbG9nO1xuXG5cdHByaXZhdGUgbWFuYWdlRGlhbG9nVXNlclRhYmxlPzogVGFibGU7XG5cblx0cHJpdmF0ZSBzdGF0aWMgR3JpZFRhYmxlQ29udHJvbDogdHlwZW9mIEdyaWRUYWJsZTtcblxuXHRwcml2YXRlIHN0YXRpYyBHcmlkVGFibGVDb2x1bW5Db250cm9sOiB0eXBlb2YgR3JpZFRhYmxlQ29sdW1uO1xuXG5cdHByaXZhdGUgX2NvbnRyb2xMb2FkZWQ/OiBQcm9taXNlS2VlcGVyPHZvaWQ+O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8Q29sbGFib3JhdGlvbkRyYWZ0Piwgb3RoZXJzPzogUHJvcGVydGllc09mPENvbGxhYm9yYXRpb25EcmFmdD4pIHtcblx0XHRzdXBlcihwcm9wcywgb3RoZXJzKTtcblx0fVxuXG5cdGFzeW5jIG9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRoaXMuX2NvbnRyb2xMb2FkZWQgPSBuZXcgUHJvbWlzZUtlZXBlcigpO1xuXHRcdGlmIChDb2xsYWJvcmF0aW9uRHJhZnQuR3JpZFRhYmxlQ29udHJvbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRhd2FpdCBMaWIubG9hZCh7IG5hbWU6IFwic2FwLnVpLnRhYmxlXCIgfSk7XG5cdFx0XHRjb25zdCB7IGRlZmF1bHQ6IEdyaWRUYWJsZUNvbnRyb2wgfSA9IGF3YWl0IGltcG9ydChcInNhcC91aS90YWJsZS9UYWJsZVwiKTtcblx0XHRcdENvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb250cm9sID0gR3JpZFRhYmxlQ29udHJvbDtcblx0XHRcdGNvbnN0IHsgZGVmYXVsdDogR3JpZFRhYmxlQ29sdW1uQ29udHJvbCB9ID0gYXdhaXQgaW1wb3J0KFwic2FwL3VpL3RhYmxlL0NvbHVtblwiKTtcblx0XHRcdENvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sID0gR3JpZFRhYmxlQ29sdW1uQ29udHJvbDtcblx0XHR9XG5cdFx0dGhpcy5jb250ZXh0T2JqZWN0ID0gdGhpcy5nZXREYXRhTW9kZWxPYmplY3RQYXRoKHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdHRoaXMuX2NvbnRyb2xMb2FkZWQucmVzb2x2ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGFuZCBzaG93IHRoZSB1c2VyIGRldGFpbHMgcG9wb3Zlci5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3Rcblx0ICovXG5cdHNob3dDb2xsYWJvcmF0aW9uVXNlckRldGFpbHMgPSAoZXZlbnQ6IEV2ZW50PHt9LCBDb250cm9sPik6IHZvaWQgPT4ge1xuXHRcdGNvbnN0IHNvdXJjZSA9IGV2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGlmICghdGhpcy51c2VyRGV0YWlsc1BvcG92ZXIpIHtcblx0XHRcdHRoaXMudXNlckRldGFpbHNQb3BvdmVyID0gdGhpcy5nZXRVc2VyRGV0YWlsc1BvcG92ZXIoKTtcblx0XHR9XG5cblx0XHR0aGlzLnVzZXJEZXRhaWxzUG9wb3Zlcj8uc2V0QmluZGluZ0NvbnRleHQoc291cmNlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsIFwiaW50ZXJuYWxcIik7XG5cdFx0dGhpcy51c2VyRGV0YWlsc1BvcG92ZXI/Lm9wZW5CeShzb3VyY2UpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSB1c2VyIGRldGFpbHMgcG9wb3Zlci5cblx0ICogQHJldHVybnMgVGhlIGNvbnRyb2wgdHJlZVxuXHQgKi9cblx0Z2V0VXNlckRldGFpbHNQb3BvdmVyKCk6IFJlc3BvbnNpdmVQb3BvdmVyIHtcblx0XHRjb25zdCB1c2VyRGV0YWlsc1BvcG92ZXIgPSAoXG5cdFx0XHQ8UmVzcG9uc2l2ZVBvcG92ZXIgc2hvd0hlYWRlcj17ZmFsc2V9IGNsYXNzPVwic2FwVWlDb250ZW50UGFkZGluZ1wiIHBsYWNlbWVudD1cIkJvdHRvbVwiPlxuXHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHQ8QXZhdGFyIGluaXRpYWxzPVwie2ludGVybmFsPmluaXRpYWxzfVwiIGRpc3BsYXlTaXplPVwiU1wiIGJhY2tncm91bmRDb2xvcj1cIntpbnRlcm5hbD5jb2xvcn1cIiAvPlxuXHRcdFx0XHRcdDxWQm94PlxuXHRcdFx0XHRcdFx0PExhYmVsIGNsYXNzPVwic2FwVWlNZWRpdW1NYXJnaW5CZWdpblwiIHRleHQ9XCJ7aW50ZXJuYWw+bmFtZX1cIiAvPlxuXHRcdFx0XHRcdFx0PExhYmVsIGNsYXNzPVwic2FwVWlNZWRpdW1NYXJnaW5CZWdpblwiIHRleHQ9XCJ7aW50ZXJuYWw+aWR9XCIgLz5cblx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdDwvSEJveD5cblx0XHRcdDwvUmVzcG9uc2l2ZVBvcG92ZXI+XG5cdFx0KTtcblxuXHRcdHRoaXMuYWRkRGVwZW5kZW50KHVzZXJEZXRhaWxzUG9wb3Zlcik7XG5cblx0XHRyZXR1cm4gdXNlckRldGFpbHNQb3BvdmVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGFuZCBvcGVuIHRoZSBtYW5hZ2UgZGlhbG9nLlxuXHQgKlxuXHQgKi9cblx0bWFuYWdlQ29sbGFib3JhdGlvbiA9ICgpOiB2b2lkID0+IHtcblx0XHRpZiAoIXRoaXMubWFuYWdlRGlhbG9nKSB7XG5cdFx0XHR0aGlzLm1hbmFnZURpYWxvZyA9IHRoaXMuZ2V0TWFuYWdlRGlhbG9nKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZWFkSW52aXRlZFVzZXJzKCk7XG5cdFx0dGhpcy5tYW5hZ2VEaWFsb2c/Lm9wZW4oKTtcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbWFuYWdlIGRpYWxvZyB1c2VkIHRvIGludml0ZSBmdXJ0aGVyIHVzZXJzLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRnZXRNYW5hZ2VEaWFsb2coKTogRGlhbG9nIHtcblx0XHRjb25zdCBtYW5hZ2VEaWFsb2cgPSAoXG5cdFx0XHQ8RGlhbG9nXG5cdFx0XHRcdHRpdGxlPXt0aGlzLmdldEludml0YXRpb25EaWFsb2dUaXRsZUV4cEJpbmRpbmcoKX1cblx0XHRcdFx0aG9yaXpvbnRhbFNjcm9sbGluZz1cIkZhbHNlXCJcblx0XHRcdFx0dmVydGljYWxTY3JvbGxpbmc9XCJGYWxzZVwiXG5cdFx0XHRcdGNvbnRlbnRXaWR0aD1cIjM1ZW1cIlxuXHRcdFx0XHRzdHJldGNoPXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcImZhbHNlXCIgOiBcInRydWVcIn1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRiZWdpbkJ1dHRvbjogKFxuXHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9ESUFMT0dfQ09ORklSTUFUSU9OXCIpfVxuXHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5pbnZpdGVVc2VyfVxuXHRcdFx0XHRcdFx0XHR0eXBlPVwiRW1waGFzaXplZFwiXG5cdFx0XHRcdFx0XHRcdGVuYWJsZWQ9e3tcblx0XHRcdFx0XHRcdFx0XHRwYXJ0czogW3sgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnMvbGVuZ3RoXCIgfSwgeyBwYXRoOiBcImludGVybmFsPmludml0ZWRVc2Vyc1wiIH1dLFxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdHRlcjogdGhpcy5mb3JtYXRJbnZpdGVCdXR0b25cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRlbmRCdXR0b246IChcblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HX0NBTkNFTFwiKX1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMuY2xvc2VNYW5hZ2VEaWFsb2d9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PFZCb3ggY2xhc3M9XCJzYXBVaVNtYWxsTWFyZ2luXCI+XG5cdFx0XHRcdFx0XHRcdDxWQm94IHdpZHRoPVwiMTAwJVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxNZXNzYWdlU3RyaXBcblx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX01FU1NBR0VTVFJJUFwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJJbmZvcm1hdGlvblwiXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93SWNvbj17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbj17ZmFsc2V9XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcFVpTWVkaXVtTWFyZ2luQm90dG9tXCJcblx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdFx0XHRcdDxMYWJlbCB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9JTlBVVF9MQUJFTFwiKX0gcmVxdWlyZWQ9e3RydWV9IC8+XG5cdFx0XHRcdFx0XHRcdHt0aGlzLmdldE1hbmFnZURpYWxvZ0FkZFVzZXJTZWN0aW9uKCl9XG5cdFx0XHRcdFx0XHRcdHt0aGlzLmdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSgpfVxuXHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdClcblx0XHRcdFx0fX1cblx0XHRcdDwvRGlhbG9nPlxuXHRcdCk7XG5cblx0XHR0aGlzLmFkZERlcGVuZGVudChtYW5hZ2VEaWFsb2cpO1xuXHRcdG1hbmFnZURpYWxvZy5iaW5kRWxlbWVudCh7XG5cdFx0XHRtb2RlbDogXCJpbnRlcm5hbFwiLFxuXHRcdFx0cGF0aDogXCJjb2xsYWJvcmF0aW9uXCJcblx0XHR9KTtcblxuXHRcdHJldHVybiBtYW5hZ2VEaWFsb2c7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuaW5nIHRoZSB0YWJsZSBjb2x1bW4gd2l0aCB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRnZXRNYW5hZ2VEaWFsb2dVc2VyVGFibGVDb2x1bW5zKCk6IEdyaWRUYWJsZUNvbHVtbltdIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PD5cblx0XHRcdFx0PENvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sIHdpZHRoPXtDb21tb25IZWxwZXIuaXNEZXNrdG9wKCkgPyBcIjEwJVwiIDogXCIzZW1cIn0+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGxhYmVsOiA8VGV4dCB0ZXh0PXt0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9UQUJMRV9VU0VSX0FWQVRBUl9DT0xVTU5cIil9IC8+LFxuXHRcdFx0XHRcdFx0dGVtcGxhdGU6IChcblx0XHRcdFx0XHRcdFx0PEhCb3ggYWxpZ25JdGVtcz1cIkNlbnRlclwiIGp1c3RpZnlDb250ZW50PVwiU3BhY2VCZXR3ZWVuXCI+XG5cdFx0XHRcdFx0XHRcdFx0PEF2YXRhciBkaXNwbGF5U2l6ZT1cIlhTXCIgYmFja2dyb3VuZENvbG9yPVwie2ludGVybmFsPmNvbG9yfVwiIGluaXRpYWxzPVwie2ludGVybmFsPmluaXRpYWxzfVwiIC8+XG5cdFx0XHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L0NvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sPlxuXHRcdFx0XHQ8Q29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgd2lkdGg9e0NvbW1vbkhlbHBlci5pc0Rlc2t0b3AoKSA/IFwiMzUlXCIgOiBcIjZlbVwifT5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0bGFiZWw6IDxUZXh0IHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1RBQkxFX1VTRVJfQ09MVU1OXCIpfSAvPixcblx0XHRcdFx0XHRcdHRlbXBsYXRlOiA8VGV4dCB0ZXh0PVwie2ludGVybmFsPm5hbWV9XCIgLz5cblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L0NvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sPlxuXHRcdFx0XHQ8Q29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgd2lkdGg9e0NvbW1vbkhlbHBlci5pc0Rlc2t0b3AoKSA/IFwiNDYlXCIgOiBcIjllbVwifT5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0bGFiZWw6IDxUZXh0IHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1RBQkxFX1VTRVJfU1RBVFVTX0NPTFVNTlwiKX0gLz4sXG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8T2JqZWN0U3RhdHVzXG5cdFx0XHRcdFx0XHRcdFx0c3RhdGU9e3sgcGF0aDogXCJpbnRlcm5hbD5zdGF0dXNcIiwgZm9ybWF0dGVyOiB0aGlzLmZvcm1hdFVzZXJTdGF0dXNDb2xvciB9fVxuXHRcdFx0XHRcdFx0XHRcdHRleHQ9e3sgcGF0aDogXCJpbnRlcm5hbD5zdGF0dXNcIiwgZm9ybWF0dGVyOiB0aGlzLmZvcm1hdFVzZXJTdGF0dXMgfX1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L0NvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sPlxuXHRcdFx0XHQ8Q29sbGFib3JhdGlvbkRyYWZ0LkdyaWRUYWJsZUNvbHVtbkNvbnRyb2wgd2lkdGg9e0NvbW1vbkhlbHBlci5pc0Rlc2t0b3AoKSA/IFwiOCVcIiA6IFwiM2VtXCJ9PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRsYWJlbDogPFRleHQgdGV4dD17dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fVEFCTEVfUkVNT1ZFX0NPTFVNTlwiKX0gLz4sXG5cdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKFxuXHRcdFx0XHRcdFx0XHQ8SEJveD5cblx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwic2FwLWljb246Ly9kZWNsaW5lXCJcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJUcmFuc3BhcmVudFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5yZW1vdmVVc2VyfVxuXHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT1cIns9ICEhJHtpbnRlcm5hbD50cmFuc2llbnR9IH1cIlxuXHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L0NvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb2x1bW5Db250cm9sPlxuXHRcdFx0PC8+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSB0YWJsZSB3aXRoIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlcnMuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZSgpOiBUYWJsZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgdGFibGVUaXRsZSA9IChcblx0XHRcdDxJbnZpc2libGVUZXh0IHRleHQ9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1RBQkxFX1RJVExFXCIpfSAvPlxuXHRcdCkgYXMgSW52aXNpYmxlVGV4dDtcblxuXHRcdHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlID0gKFxuXHRcdFx0PENvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb250cm9sXG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHJvd3M9e3sgcGF0aDogXCJpbnRlcm5hbD5pbnZpdGVkVXNlcnNcIiB9fVxuXHRcdFx0XHR2aXNpYmxlUm93Q291bnQ9e0NvbW1vbkhlbHBlci5pc0Rlc2t0b3AoKSA/IFwiNVwiIDogXCIzXCJ9XG5cdFx0XHRcdHZpc2libGVSb3dDb3VudE1vZGU9XCJGaXhlZFwiXG5cdFx0XHRcdHNlbGVjdGlvbk1vZGU9XCJOb25lXCJcblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0YWJsZVRpdGxlXX1cblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRjb2x1bW5zOiB0aGlzLmdldE1hbmFnZURpYWxvZ1VzZXJUYWJsZUNvbHVtbnMoKSxcblx0XHRcdFx0XHRkZXBlbmRlbnRzOiB0YWJsZVRpdGxlXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0NvbGxhYm9yYXRpb25EcmFmdC5HcmlkVGFibGVDb250cm9sPlxuXHRcdCk7XG5cdFx0cmV0dXJuIHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIHNlY3Rpb24gb24gdGhlIGRpYWxvZyByZWxhdGVkIHRvIHRoZSB1c2VyIGZpZWxkLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbCB0cmVlXG5cdCAqL1xuXHRnZXRNYW5hZ2VEaWFsb2dBZGRVc2VyU2VjdGlvbigpOiBIQm94IHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEhCb3ggY2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiIHdpZHRoPVwiMTAwJVwiPlxuXHRcdFx0XHQ8RmllbGRcblx0XHRcdFx0XHR2YWx1ZT1cIntpbnRlcm5hbD5Vc2VySUR9XCJcblx0XHRcdFx0XHRhZGRpdGlvbmFsVmFsdWU9XCJ7aW50ZXJuYWw+VXNlckRlc2NyaXB0aW9ufVwiXG5cdFx0XHRcdFx0ZGlzcGxheT1cIkRlc2NyaXB0aW9uVmFsdWVcIlxuXHRcdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdFx0cmVxdWlyZWQ9e3RydWV9XG5cdFx0XHRcdFx0dmFsdWVIZWxwPVwidXNlclZhbHVlSGVscFwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX0lOUFVUX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0XHRcdGNoYW5nZT17dGhpcy5hZGRVc2VyRmllbGRDaGFuZ2VkfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGRlcGVuZGVudHM6IChcblx0XHRcdFx0XHRcdFx0PFZhbHVlSGVscCBpZD1cInVzZXJWYWx1ZUhlbHBcIiBkZWxlZ2F0ZT17dGhpcy5nZXRWYWx1ZUhlbHBEZWxlZ2F0ZSgpfSB2YWxpZGF0ZUlucHV0PXt0cnVlfT5cblx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZWFoZWFkOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxNRENQb3BvdmVyPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxNVGFibGUgY2FzZVNlbnNpdGl2ZT1cInRydWVcIiB1c2VBc1ZhbHVlSGVscD1cImZhbHNlXCIgLz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9NRENQb3BvdmVyPlxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdGRpYWxvZzogPE1EQ0RpYWxvZyAvPlxuXHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdDwvVmFsdWVIZWxwPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvRmllbGQ+XG5cdFx0XHQ8L0hCb3g+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBGb3JtYXR0ZXIgdG8gc2V0IHRoZSB1c2VyIHN0YXR1cyBkZXBlbmRpbmcgb24gdGhlIGVkaXRpbmcgc3RhdHVzLlxuXHQgKiBAcGFyYW0gdXNlclN0YXR1cyBUaGUgZWRpdGluZyBzdGF0dXMgb2YgdGhlIHVzZXJcblx0ICogQHJldHVybnMgVGhlIHVzZXIgc3RhdHVzXG5cdCAqL1xuXHRmb3JtYXRVc2VyU3RhdHVzID0gKHVzZXJTdGF0dXM6IFVzZXJTdGF0dXMpOiBzdHJpbmcgPT4ge1xuXHRcdHN3aXRjaCAodXNlclN0YXR1cykge1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkN1cnJlbnRseUVkaXRpbmc6XG5cdFx0XHRcdHJldHVybiB0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfVVNFUl9DVVJSRU5UTFlfRURJVElOR1wiKTtcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5DaGFuZ2VzTWFkZTpcblx0XHRcdFx0cmV0dXJuIHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9VU0VSX0NIQU5HRVNfTUFERVwiKTtcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob0NoYW5nZXNNYWRlOlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfTk9fQ0hBTkdFU19NQURFXCIpO1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX1VTRVJfTk9UX1lFVF9JTlZJVEVEXCIpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRm9ybWF0dGVyIHRvIHNldCB0aGUgdXNlciBjb2xvciBkZXBlbmRpbmcgb24gdGhlIGVkaXRpbmcgc3RhdHVzLlxuXHQgKiBAcGFyYW0gdXNlclN0YXR1cyBUaGUgZWRpdGluZyBzdGF0dXMgb2YgdGhlIHVzZXJcblx0ICogQHJldHVybnMgVGhlIHVzZXIgc3RhdHVzIGNvbG9yXG5cdCAqL1xuXHRmb3JtYXRVc2VyU3RhdHVzQ29sb3IodXNlclN0YXR1czogVXNlclN0YXR1cyk6IFZhbHVlU3RhdGUge1xuXHRcdHN3aXRjaCAodXNlclN0YXR1cykge1xuXHRcdFx0Y2FzZSBVc2VyU3RhdHVzLkN1cnJlbnRseUVkaXRpbmc6XG5cdFx0XHRcdHJldHVybiBWYWx1ZVN0YXRlLlN1Y2Nlc3M7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuQ2hhbmdlc01hZGU6XG5cdFx0XHRcdHJldHVybiBWYWx1ZVN0YXRlLldhcm5pbmc7XG5cdFx0XHRjYXNlIFVzZXJTdGF0dXMuTm9DaGFuZ2VzTWFkZTpcblx0XHRcdGNhc2UgVXNlclN0YXR1cy5Ob3RZZXRJbnZpdGVkOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIFZhbHVlU3RhdGUuSW5mb3JtYXRpb247XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHRlciB0byBlbmFibGUgdGhlIGludml0ZSBidXR0b24gZGVwZW5kaW5nIG9uIHRoZSBpbnZpdGVkIHVzZXJzIHN0YXR1cy5cblx0ICogQHBhcmFtIG5iVXNlcnMgTnVtYmVyIG9mIHVzZXJzXG5cdCAqIEBwYXJhbSBpbnZpdGVkVXNlcnMgTGlzdCBvZiB0aGUgaW52aXRlZCB1c2Vyc1xuXHQgKiBAcmV0dXJucyBUcnVlIG9yIEZhbHNlXG5cdCAqL1xuXHRmb3JtYXRJbnZpdGVCdXR0b24obmJVc2VyczogSW50ZWdlciB8IHVuZGVmaW5lZCwgaW52aXRlZFVzZXJzOiBVc2VyW10gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0XHRpZiAoIW5iVXNlcnMpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuICEhaW52aXRlZFVzZXJzPy5zb21lKCh1c2VyKSA9PiB1c2VyLnN0YXR1cyA9PT0gMCk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHRoZSBhZGRlZCB1c2VyIHRvIHRoZSBsaXN0IG9mIGludml0ZWQgdXNlcnMuXG5cdCAqIEBwYXJhbSB1c2VySW5wdXQgVGhlIHVzZXIgdG8gYmUgaW52aXRlZFxuXHQgKiBAcGFyYW0gaW52aXRlZFVzZXJzIFRoZSB1c2VycyBhbHJlYWR5IGludml0ZWRcblx0ICogQHBhcmFtIG5ld1VzZXIgVGhlIHVzZXIgdG8gYmUgaW52aXRlZFxuXHQgKi9cblx0YWRkVXNlcih1c2VySW5wdXQ6IEZpZWxkLCBpbnZpdGVkVXNlcnM6IFVzZXJbXSwgbmV3VXNlcjogVXNlcik6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdXNlcklucHV0LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3QgYWN0aXZlVXNlcnMgPSAodXNlcklucHV0LmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsKS5nZXRQcm9wZXJ0eShcIi9jb2xsYWJvcmF0aW9uL2FjdGl2ZVVzZXJzXCIpO1xuXHRcdG5ld1VzZXIubmFtZSA9IG5ld1VzZXIubmFtZSB8fCBuZXdVc2VyLmlkO1xuXHRcdG5ld1VzZXIuaW5pdGlhbHMgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZm9ybWF0SW5pdGlhbHMobmV3VXNlci5uYW1lKTtcblx0XHRuZXdVc2VyLmNvbG9yID0gQ29sbGFib3JhdGlvblV0aWxzLmdldFVzZXJDb2xvcihuZXdVc2VyLmlkLCBhY3RpdmVVc2VycywgaW52aXRlZFVzZXJzKTtcblx0XHRuZXdVc2VyLnRyYW5zaWVudCA9IHRydWU7XG5cdFx0bmV3VXNlci5zdGF0dXMgPSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQ7XG5cdFx0aW52aXRlZFVzZXJzLnB1c2gobmV3VXNlcik7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJpbnZpdGVkVXNlcnNcIiwgaW52aXRlZFVzZXJzKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcIlVzZXJJRFwiLCBcIlwiKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcIlVzZXJEZXNjcmlwdGlvblwiLCBcIlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBzdGF0ZSBvZiB0aGUgdXNlciBmaWVsZCB3aGVuZXZlciBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgdXNlciBpbnB1dFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb25jZSB0aGUgdmFsdWUgc3RhdGUgd2FzIHNldC5cblx0ICovXG5cdGFkZFVzZXJGaWVsZENoYW5nZWQgPSBhc3luYyAoZXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0Y29uc3QgdXNlcklucHV0ID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0cmV0dXJuIGV2ZW50XG5cdFx0XHQuZ2V0UGFyYW1ldGVyKFwicHJvbWlzZVwiKVxuXHRcdFx0Py50aGVuKFxuXHRcdFx0XHRmdW5jdGlvbiAodGhpczogQ29sbGFib3JhdGlvbkRyYWZ0LCBuZXdVc2VySWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdFx0XHRcdGNvbnN0IGludGVybmFsTW9kZWxDb250ZXh0ID0gdXNlcklucHV0LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRcdFx0Y29uc3QgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImludml0ZWRVc2Vyc1wiKSB8fCBbXTtcblx0XHRcdFx0XHRjb25zdCBuZXdVc2VyOiBVc2VyID0ge1xuXHRcdFx0XHRcdFx0aWQ6IGludGVybmFsTW9kZWxDb250ZXh0Py5nZXRQcm9wZXJ0eShcIlVzZXJJRFwiKSxcblx0XHRcdFx0XHRcdG5hbWU6IGludGVybmFsTW9kZWxDb250ZXh0Py5nZXRQcm9wZXJ0eShcIlVzZXJEZXNjcmlwdGlvblwiKVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0aWYgKGludml0ZWRVc2Vycy5maW5kSW5kZXgoKHVzZXIpID0+IHVzZXIuaWQgPT09IG5ld1VzZXJJZCkgPiAtMSkge1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGUoXCJFcnJvclwiKTtcblx0XHRcdFx0XHRcdHVzZXJJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dCh0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9VU0VSX0VSUk9SXCIpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdFx0IShcblx0XHRcdFx0XHRcdFx0aW52aXRlZFVzZXJzLmZpbmRJbmRleCgodXNlcikgPT4gdXNlci5pZCA9PT0gbmV3VXNlci5pZCkgPiAtMSB8fFxuXHRcdFx0XHRcdFx0XHQobmV3VXNlci5pZCA9PT0gbmV3VXNlci5uYW1lICYmIG5ld1VzZXIuaWQgPT09IFwiXCIpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmFkZFVzZXIodXNlcklucHV0LCBpbnZpdGVkVXNlcnMsIG5ld1VzZXIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGUoXCJOb25lXCIpO1xuXHRcdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fS5iaW5kKHRoaXMpXG5cdFx0XHQpXG5cdFx0XHQuY2F0Y2goXG5cdFx0XHRcdGZ1bmN0aW9uICh0aGlzOiBDb2xsYWJvcmF0aW9uRHJhZnQpOiB2b2lkIHtcblx0XHRcdFx0XHR1c2VySW5wdXQuc2V0VmFsdWVTdGF0ZShcIldhcm5pbmdcIik7XG5cdFx0XHRcdFx0dXNlcklucHV0LnNldFZhbHVlU3RhdGVUZXh0KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEFUSU9OX1VTRVJfTk9UX0ZPVU5EXCIpKTtcblx0XHRcdFx0fS5iaW5kKHRoaXMpXG5cdFx0XHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlbW92ZSBhIHVzZXIgZnJvbSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXIuXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IG9mIHRoZSByZW1vdmUgYnV0dG9uXG5cdCAqL1xuXHRyZW1vdmVVc2VyKGV2ZW50OiBFdmVudDx7fSwgQnV0dG9uPik6IHZvaWQge1xuXHRcdGNvbnN0IGl0ZW0gPSBldmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IGl0ZW0/LmdldEJpbmRpbmdDb250ZXh0KFwicGFnZUludGVybmFsXCIpO1xuXHRcdGNvbnN0IGRlbGV0ZVVzZXJJRCA9IGl0ZW0/LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiaWRcIik7XG5cdFx0bGV0IGludml0ZWRVc2VyczogVXNlcltdID0gaW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9pbnZpdGVkVXNlcnNcIik7XG5cdFx0aW52aXRlZFVzZXJzID0gaW52aXRlZFVzZXJzLmZpbHRlcigodXNlcikgPT4gdXNlci5pZCAhPT0gZGVsZXRlVXNlcklEKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlcG9ydHMgYSBDb2xsIERyYWZ0IGludml0ZSB0byBHU00uIEZpcmUtYW5kLWZvcmdldDsgVGVsZW1ldHJ5U2VydmljZS5zdG9yZUFjdGlvblxuXHQgKiBnYXRlcyB0aGUgZGlzYWJsZWQgc3RhdGUgaW50ZXJuYWxseSwgc28gbm8gaXNUZWxlbWV0cnlFbmFibGVkKCkgY2hlY2sgaXMgbmVlZGVkIGhlcmUuXG5cdCAqIEBwYXJhbSB0b3RhbEludml0ZWVzIFRvdGFsIHVzZXJzIGluIHRoZSBkaWFsb2cgYXQgY2xpY2sgdGltZSAoc2VudCB0byBTaGFyZUFjdGlvbikuXG5cdCAqIEBwYXJhbSBjb3VudE5ld0ludml0ZWVzIFN1YnNldCBvZiB0aG9zZSB3aG9zZSBzdGF0dXMgd2FzIE5vdFlldEludml0ZWQgYmVmb3JlIHRoaXMgY2xpY2suXG5cdCAqL1xuXHRwcml2YXRlIGZpcmVJbnZpdGVUZWxlbWV0cnkodG90YWxJbnZpdGVlczogbnVtYmVyLCBjb3VudE5ld0ludml0ZWVzOiBudW1iZXIpOiB2b2lkIHtcblx0XHRjb25zdCB0ZWxlbWV0cnlFdmVudDogVGVsZW1ldHJ5Q29sbERyYWZ0SW52aXRlRXZlbnQgPSB7XG5cdFx0XHR0eXBlOiBcIkZFLkNvbGxEcmFmdEludml0ZVwiLFxuXHRcdFx0cGFyYW1ldGVyczogeyB0b3RhbEludml0ZWVzLCBjb3VudE5ld0ludml0ZWVzIH1cblx0XHR9O1xuXHRcdHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldFRlbGVtZXRyeVNlcnZpY2UoKS5zdG9yZUFjdGlvbih0ZWxlbWV0cnlFdmVudCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbCB0aGUgc2hhcmUgYWN0aW9uIHRvIHVwZGF0ZSB0aGUgbGlzdCBvZiBpbnZpdGVkIHVzZXJzLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgaW52aXRlIGJ1dHRvblxuXHQgKi9cblx0aW52aXRlVXNlciA9IGFzeW5jIChldmVudDogRXZlbnQ8e30sIEJ1dHRvbj4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcblx0XHRjb25zdCB1c2VyczogQmFja2VuZFVzZXJbXSA9IFtdLFxuXHRcdFx0bmV3bHlJbnZpdGVkVXNlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3QgYmluZGluZ0NvbnRleHQgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IGNvbnRleHRzID0gKHRoaXMubWFuYWdlRGlhbG9nVXNlclRhYmxlPy5nZXRCaW5kaW5nKFwicm93c1wiKSBhcyBPRGF0YUxpc3RCaW5kaW5nKS5nZXRDb250ZXh0cygpO1xuXHRcdGNvbnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0XHRcdHVzZXJzLnB1c2goe1xuXHRcdFx0XHRVc2VySUQ6IGNvbnRleHQuZ2V0UHJvcGVydHkoXCJpZFwiKSxcblx0XHRcdFx0VXNlckFjY2Vzc1JvbGU6IFwiT1wiIC8vIEZvciBub3cgYWNjb3JkaW5nIHRvIFVYIGV2ZXJ5IHVzZXIgcmV0cmlldmVzIHRoZSBvd25lciByb2xlXG5cdFx0XHR9KTtcblx0XHRcdGlmIChjb250ZXh0LmdldFByb3BlcnR5KFwic3RhdHVzXCIpID09PSBVc2VyU3RhdHVzLk5vdFlldEludml0ZWQpIHtcblx0XHRcdFx0bmV3bHlJbnZpdGVkVXNlcnMucHVzaChjb250ZXh0LmdldFByb3BlcnR5KFwiaWRcIikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5maXJlSW52aXRlVGVsZW1ldHJ5KHVzZXJzLmxlbmd0aCwgbmV3bHlJbnZpdGVkVXNlcnMubGVuZ3RoKTtcblxuXHRcdHRyeSB7XG5cdFx0XHQvLyBXZSByZXF1ZXN0IHRoZSBudW1iZXIgb2YgaW52aXRlZCB1c2VycyBhZnRlciB0aGUgc2hhcmUgYWN0aW9uIHRvIHNlZSBob3cgbWFueSB1c2VycyB3ZXJlIHJlYWxseSBpbnZpdGVkXG5cdFx0XHRjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoW3NoYXJlT2JqZWN0KGJpbmRpbmdDb250ZXh0LCB1c2VycyksIHRoaXMucmVxdWVzdEludml0ZWRVc2Vyc0luRHJhZnQoKV0pO1xuXHRcdFx0Y29uc3QgbmV3VXNlcnM6IENvbnRleHRbXSA9IFtdO1xuXHRcdFx0cmVzdWx0c1sxXS5mb3JFYWNoKChpbnZpdGVkVXNlcikgPT4ge1xuXHRcdFx0XHRpZiAobmV3bHlJbnZpdGVkVXNlcnMuaW5jbHVkZXMoaW52aXRlZFVzZXIuZ2V0UHJvcGVydHkoXCJVc2VySURcIikpKSB7XG5cdFx0XHRcdFx0bmV3VXNlcnMucHVzaChpbnZpdGVkVXNlcik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgbWVzc2FnZUhhbmRsZXIgPSB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhLm1lc3NhZ2VIYW5kbGVyO1xuXHRcdFx0YXdhaXQgbWVzc2FnZUhhbmRsZXIuc2hvd01lc3NhZ2VEaWFsb2coKTtcblxuXHRcdFx0c3dpdGNoIChuZXdVc2Vycy5sZW5ndGgpIHtcblx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KFxuXHRcdFx0XHRcdFx0dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fU1VDQ0VTU19UT0FTVF9OT19VU0VSXCIsIFtcblx0XHRcdFx0XHRcdFx0dGhpcy5nZXRTaGFyZWRJdGVtTmFtZShiaW5kaW5nQ29udGV4dClcblx0XHRcdFx0XHRcdF0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KFxuXHRcdFx0XHRcdFx0dGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fU1VDQ0VTU19UT0FTVFwiLCBbdGhpcy5nZXRTaGFyZWRJdGVtTmFtZShiaW5kaW5nQ29udGV4dCldKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0TWVzc2FnZVRvYXN0LnNob3coXG5cdFx0XHRcdFx0XHR0aGlzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfSU5WSVRBVElPTl9TVUNDRVNTX1RPQVNUX1BMVVJBTFwiLCBbXG5cdFx0XHRcdFx0XHRcdG5ld1VzZXJzLmxlbmd0aC50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0KVxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2gge1xuXHRcdFx0TWVzc2FnZVRvYXN0LnNob3codGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRkFJTEVEX1RPQVNUXCIpKTtcblx0XHR9XG5cdFx0dGhpcy5jbG9zZU1hbmFnZURpYWxvZygpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBGZXRjaGVzIHRoZSBsaXN0IG9mIHVzZXJzIHRoYXQgYXJlIGFscmVhZHkgaW52aXRlZCBpbiB0aGUgZHJhZnQuXG5cdCAqIEByZXR1cm5zIFByb21pc2Ugd2l0aCB0aGUgbGlzdCBvZiB1c2VyIGNvbnRleHRzLlxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyByZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpOiBQcm9taXNlPENvbnRleHRbXT4ge1xuXHRcdGNvbnN0IG1vZGVsID0gdGhpcy5nZXRNb2RlbCgpO1xuXHRcdGNvbnN0IHBhcmFtZXRlcnMgPSB7XG5cdFx0XHQkc2VsZWN0OiBcIlVzZXJJRCxVc2VyRGVzY3JpcHRpb24sVXNlckVkaXRpbmdTdGF0ZVwiLFxuXHRcdFx0JCRncm91cElkOiBcIiRhdXRvLldvcmtlcnNcIlxuXHRcdH07XG5cdFx0Y29uc3QgaW52aXRlZFVzZXJMaXN0ID0gbW9kZWw/LmJpbmRMaXN0KFxuXHRcdFx0YCR7dGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCl9L0RyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0QWRtaW5pc3RyYXRpdmVVc2VyYCxcblx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFtdLFxuXHRcdFx0W10sXG5cdFx0XHRwYXJhbWV0ZXJzXG5cdFx0KSBhcyBPRGF0YUxpc3RCaW5kaW5nO1xuXG5cdFx0Ly8gZm9yIG5vdyB3ZSBzZXQgYSBsaW1pdCB0byAxMDAuIHRoZXJlIHNob3VsZG4ndCBiZSBtb3JlIHRoYW4gYSBmZXdcblx0XHRyZXR1cm4gaW52aXRlZFVzZXJMaXN0LnJlcXVlc3RDb250ZXh0cygwLCAxMDApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlYWRzIHRoZSBjdXJyZW50bHkgaW52aXRlZCB1c2VyIGFuZCBzdG9yZSBpdCBpbiB0aGUgaW50ZXJuYWwgbW9kZWwuXG5cdCAqIEByZXR1cm5zIFByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VycyBhcmUgcmVhZC5cblx0ICovXG5cdHJlYWRJbnZpdGVkVXNlcnMgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgY3VycmVudFVzZXJMaXN0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0SW52aXRlZFVzZXJzSW5EcmFmdCgpO1xuXHRcdFx0Y29uc3QgaW52aXRlZFVzZXJzOiBVc2VyW10gPSBbXTtcblx0XHRcdGNvbnN0IGFjdGl2ZVVzZXJzID0gdGhpcy5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9jb2xsYWJvcmF0aW9uL2FjdGl2ZVVzZXJzXCIpIHx8IFtdO1xuXHRcdFx0Y29uc3QgbWUgPSBDb2xsYWJvcmF0aW9uVXRpbHMuZ2V0TWUodGhpcy5nZXRBcHBDb21wb25lbnQoKSEpO1xuXHRcdFx0bGV0IHVzZXJTdGF0dXM6IFVzZXJTdGF0dXM7XG5cdFx0XHRpZiAoY3VycmVudFVzZXJMaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y3VycmVudFVzZXJMaXN0LmZvckVhY2goKHVzZXJDb250ZXh0KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdXNlckRhdGEgPSB1c2VyQ29udGV4dC5nZXRPYmplY3QoKSBhcyBCYWNrZW5kVXNlcjtcblx0XHRcdFx0XHRjb25zdCBpc01lOiBib29sZWFuID0gbWU/LmlkID09PSB1c2VyRGF0YS5Vc2VySUQ7XG5cdFx0XHRcdFx0Y29uc3QgaXNBY3RpdmUgPSBhY3RpdmVVc2Vycy5maW5kKCh1OiBVc2VyKSA9PiB1LmlkID09PSB1c2VyRGF0YS5Vc2VySUQpO1xuXHRcdFx0XHRcdGxldCB1c2VyRGVzY3JpcHRpb24gPSB1c2VyRGF0YS5Vc2VyRGVzY3JpcHRpb24gfHwgdXNlckRhdGEuVXNlcklEO1xuXHRcdFx0XHRcdGNvbnN0IGluaXRpYWxzID0gQ29sbGFib3JhdGlvblV0aWxzLmZvcm1hdEluaXRpYWxzKHVzZXJEZXNjcmlwdGlvbik7XG5cdFx0XHRcdFx0dXNlckRlc2NyaXB0aW9uID0gaXNNZSA/IGAke0NvbGxhYm9yYXRpb25VdGlscy5nZXRUZXh0KFwiQ19DT0xMQUJPUkFUSU9ORFJBRlRfTUVcIiwgdXNlckRlc2NyaXB0aW9uKX1gIDogdXNlckRlc2NyaXB0aW9uO1xuXHRcdFx0XHRcdGlmIChpc0FjdGl2ZSkge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuQ3VycmVudGx5RWRpdGluZztcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHVzZXJEYXRhLlVzZXJFZGl0aW5nU3RhdGUgPT09IFVzZXJFZGl0aW5nU3RhdGUuSW5Qcm9ncmVzcykge1xuXHRcdFx0XHRcdFx0dXNlclN0YXR1cyA9IFVzZXJTdGF0dXMuQ2hhbmdlc01hZGU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHVzZXJTdGF0dXMgPSBVc2VyU3RhdHVzLk5vQ2hhbmdlc01hZGU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgdXNlcjogVXNlciA9IHtcblx0XHRcdFx0XHRcdGlkOiB1c2VyRGF0YS5Vc2VySUQsXG5cdFx0XHRcdFx0XHRuYW1lOiB1c2VyRGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRzdGF0dXM6IHVzZXJTdGF0dXMsXG5cdFx0XHRcdFx0XHRjb2xvcjogQ29sbGFib3JhdGlvblV0aWxzLmdldFVzZXJDb2xvcih1c2VyRGF0YS5Vc2VySUQsIGFjdGl2ZVVzZXJzLCBpbnZpdGVkVXNlcnMpLFxuXHRcdFx0XHRcdFx0aW5pdGlhbHM6IGluaXRpYWxzLFxuXHRcdFx0XHRcdFx0bWU6IGlzTWVcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGludml0ZWRVc2Vycy5wdXNoKHVzZXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vbm90IHlldCBzaGFyZWQsIGp1c3QgYWRkIG1lXG5cdFx0XHRcdGludml0ZWRVc2Vycy5wdXNoKG1lKTtcblx0XHRcdH1cblx0XHRcdGludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiY29sbGFib3JhdGlvbi9Vc2VySURcIiwgXCJcIik7XG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImNvbGxhYm9yYXRpb24vVXNlckRlc2NyaXB0aW9uXCIsIFwiXCIpO1xuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJjb2xsYWJvcmF0aW9uL2ludml0ZWRVc2Vyc1wiLCBpbnZpdGVkVXNlcnMpO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdE1lc3NhZ2VUb2FzdC5zaG93KHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9SRUFESU5HX1VTRVJfRkFJTEVEXCIpKTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0IHRvIGJlIHNoYXJlZC5cblx0ICogQHBhcmFtIGJpbmRpbmdDb250ZXh0IFRoZSBjb250ZXh0IG9mIHRoZSBwYWdlLlxuXHQgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgb2JqZWN0IHRvIGJlIHNoYXJlZC5cblx0ICovXG5cdGdldFNoYXJlZEl0ZW1OYW1lKGJpbmRpbmdDb250ZXh0OiBDb250ZXh0KTogc3RyaW5nIHtcblx0XHRjb25zdCBoZWFkZXJJbmZvID0gdGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5IZWFkZXJJbmZvO1xuXHRcdGxldCBzaGFyZWRJdGVtTmFtZSA9IFwiXCI7XG5cdFx0Y29uc3QgdGl0bGUgPSBoZWFkZXJJbmZvPy5UaXRsZTtcblx0XHRpZiAoXG5cdFx0XHR0aXRsZSAmJlxuXHRcdFx0aXNBbm5vdGF0aW9uT2ZUeXBlPERhdGFGaWVsZFR5cGVzPih0aXRsZSwgW1xuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQsXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb24sXG5cdFx0XHRcdFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb25Hcm91cCxcblx0XHRcdFx0VUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsLFxuXHRcdFx0XHRVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcblx0XHRcdF0pXG5cdFx0KSB7XG5cdFx0XHRzaGFyZWRJdGVtTmFtZSA9IGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKHRpdGxlLlZhbHVlKSA/IGJpbmRpbmdDb250ZXh0LmdldFByb3BlcnR5KHRpdGxlLlZhbHVlLnBhdGgpIDogdGl0bGUuVmFsdWU7XG5cdFx0fVxuXHRcdHJldHVybiBzaGFyZWRJdGVtTmFtZSB8fCAoaGVhZGVySW5mbz8uVHlwZU5hbWUgYXMgdW5rbm93biBhcyBzdHJpbmcpIHx8IFwiXCI7XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGVzIHRoZSBkZWxlZ2F0ZSBwYXlsb2FkIGZvciB0aGUgdXNlciBmaWVsZCB2YWx1ZSBoZWxwLlxuXHQgKiBAcmV0dXJucyBUaGUgdmFsdWUgaGVscCBkZWxlZ2F0ZSBwYXlsb2FkXG5cdCAqL1xuXHRnZXRWYWx1ZUhlbHBEZWxlZ2F0ZSgpOiB7IG5hbWU6IHN0cmluZzsgcGF5bG9hZDogVmFsdWVIZWxwUGF5bG9hZCB9IHtcblx0XHQvLyBUaGUgbm9uIG51bGwgYXNzZXJ0aW9uIGlzIHNhZmUgaGVyZSwgYmVjYXVzZSB0aGUgYWN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBhbm5vdGF0aW9uIGlzIHByZXNlbnRcblx0XHRjb25zdCBhY3Rpb25OYW1lID0gKFxuXHRcdFx0dGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlTZXQhLmFubm90YXRpb25zLkNvbW1vbiBhcyBFbnRpdHlTZXRBbm5vdGF0aW9uc19Db21tb25cblx0XHQpLkRyYWZ0Um9vdCEuU2hhcmVBY3Rpb24hLnRvU3RyaW5nKCk7XG5cdFx0Ly8gV2UgYXJlIGFsc28gc3VyZSB0aGF0IHRoZSBhY3Rpb24gZXhpc3Rcblx0XHRjb25zdCBhY3Rpb24gPSB0aGlzLmNvbnRleHRPYmplY3Q/LnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgoYWN0aW9uTmFtZSkgYXMgVm9jYWJ1bGFyeUFjdGlvbjtcblx0XHQvLyBCeSBkZWZpbml0aW9uIHRoZSBhY3Rpb24gaGFzIGEgcGFyYW1ldGVyIHdpdGggdGhlIG5hbWUgXCJVc2Vyc1wiXG5cdFx0Y29uc3QgdXNlclBhcmFtZXRlcnMgPSBhY3Rpb24ucGFyYW1ldGVycy5maW5kKChwYXJhbSkgPT4gcGFyYW0ubmFtZSA9PT0gVVNFUlNfUEFSQU1FVEVSUykhO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IFwic2FwL2ZlL21hY3Jvcy92YWx1ZWhlbHAvVmFsdWVIZWxwRGVsZWdhdGVcIixcblx0XHRcdHBheWxvYWQ6IHtcblx0XHRcdFx0cHJvcGVydHlQYXRoOiBgLyR7dXNlclBhcmFtZXRlcnMudHlwZX0vJHtVU0VSX0lEX1BBUkFNRVRFUn1gLFxuXHRcdFx0XHRxdWFsaWZpZXJzOiB7fSxcblx0XHRcdFx0dmFsdWVIZWxwUXVhbGlmaWVyOiBcIlwiLFxuXHRcdFx0XHRpc0FjdGlvblBhcmFtZXRlckRpYWxvZzogdHJ1ZVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogR2VuZXJhdGUgdGhlIGV4cHJlc3Npb24gYmluZGluZyBvZiB0aGUgSW52aXRhdGlvbiBkaWFsb2cuXG5cdCAqIEByZXR1cm5zIFRoZSBkaWFsb2cgdGl0bGUgYmluZGluZyBleHByZXNzaW9uXG5cdCAqL1xuXHRnZXRJbnZpdGF0aW9uRGlhbG9nVGl0bGVFeHBCaW5kaW5nKCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0XHRjb25zdCBoZWFkZXJJbmZvID0gdGhpcy5jb250ZXh0T2JqZWN0Py50YXJnZXRFbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5IZWFkZXJJbmZvO1xuXHRcdGNvbnN0IHRpdGxlID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKChoZWFkZXJJbmZvPy5UaXRsZSBhcyBEYXRhRmllbGQgfCB1bmRlZmluZWQpPy5WYWx1ZSwgW10sIFwiXCIpO1xuXHRcdGNvbnN0IHBhcmFtcyA9IFtcIkNfQ09MTEFCT1JBVElPTkRSQUZUX0lOVklUQVRJT05fRElBTE9HXCIsIGhlYWRlckluZm8/LlR5cGVOYW1lLnRvU3RyaW5nKCksIHRpdGxlXTtcblx0XHRjb25zdCB0aXRsZUV4cHJlc3Npb24gPSBmb3JtYXRSZXN1bHQocGFyYW1zLCBjb2xsYWJvcmF0aW9uRm9ybWF0dGVyLmdldEZvcm1hdHRlZFRleHQpO1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbih0aXRsZUV4cHJlc3Npb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY2xvc2UgdGhlIG1hbmFnZSBkaWFsb2cuXG5cdCAqXG5cdCAqL1xuXHRjbG9zZU1hbmFnZURpYWxvZyA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLm1hbmFnZURpYWxvZz8uY2xvc2UoKTtcblx0XHR0aGlzLm1hbmFnZURpYWxvZz8uZGVzdHJveSgpO1xuXHRcdGRlbGV0ZSB0aGlzLm1hbmFnZURpYWxvZztcblx0fTtcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgaW52aXRlIGJ1dHRvbiBpZiB0aGVyZSdzIGEgc2hhcmUgYWN0aW9uIG9uIHJvb3QgbGV2ZWwuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGdldEludml0ZUJ1dHRvbigpOiBIQm94IHtcblx0XHRpZiAoKHRoaXMuY29udGV4dE9iamVjdD8udGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucy5Db21tb24gYXMgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ29tbW9uKT8uRHJhZnRSb290Py5TaGFyZUFjdGlvbikge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PEhCb3ggdmlzaWJsZT1cInt1aT4vaXNFZGl0YWJsZX1cIiBhbGlnbkl0ZW1zPVwiQ2VudGVyXCIganVzdGlmeUNvbnRlbnQ9XCJTdGFydFwiPlxuXHRcdFx0XHRcdDxBdmF0YXJcblx0XHRcdFx0XHRcdGJhY2tncm91bmRDb2xvcj1cIlRpbGVJY29uXCJcblx0XHRcdFx0XHRcdHNyYz1cInNhcC1pY29uOi8vYWRkLWVtcGxveWVlXCJcblx0XHRcdFx0XHRcdGRpc3BsYXlTaXplPVwiWFNcIlxuXHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMubWFuYWdlQ29sbGFib3JhdGlvbn1cblx0XHRcdFx0XHRcdHRvb2x0aXA9e3RoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9JTlZJVEVfVVNFUl9BVkFUQVJfVE9PTFRJUFwiKX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gPEhCb3ggLz47XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbGxhYm9yYXRpb24gZHJhZnQgYnVpbGRpbmcgYmxvY2suXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sIHRyZWVcblx0ICovXG5cdGNyZWF0ZUNvbnRlbnQoKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuX2dldE93bmVyKCk/LmdldE1ldGFNb2RlbCgpICYmIE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKHRoaXMuX2dldE93bmVyKCkhLmdldE1ldGFNb2RlbCgpKSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PEhCb3g+XG5cdFx0XHRcdFx0PEhCb3hcblx0XHRcdFx0XHRcdGl0ZW1zPXt7IHBhdGg6IFwiaW50ZXJuYWw+L2NvbGxhYm9yYXRpb24vYWN0aXZlVXNlcnNcIiB9fVxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaVRpbnlNYXJnaW5CZWdpblwiXG5cdFx0XHRcdFx0XHR2aXNpYmxlPVwiez0gJHt1aT4vaXNFZGl0YWJsZX0gJmFtcDsmYW1wOyAke2ludGVybmFsPi9jb2xsYWJvcmF0aW9uL2Nvbm5lY3RlZH0gfVwiXG5cdFx0XHRcdFx0XHRhbGlnbkl0ZW1zPVwiQ2VudGVyXCJcblx0XHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PVwiU3RhcnRcIlxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdDxBdmF0YXJcblx0XHRcdFx0XHRcdFx0aW5pdGlhbHM9XCJ7aW50ZXJuYWw+aW5pdGlhbHN9XCJcblx0XHRcdFx0XHRcdFx0ZGlzcGxheVNpemU9XCJYU1wiXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmRDb2xvcj1cIntpbnRlcm5hbD5jb2xvcn1cIlxuXHRcdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5zaG93Q29sbGFib3JhdGlvblVzZXJEZXRhaWxzfVxuXHRcdFx0XHRcdFx0XHR0b29sdGlwPXt7XG5cdFx0XHRcdFx0XHRcdFx0cGFydHM6IFt7IHBhdGg6IFwiaW50ZXJuYWw+bmFtZVwiIH1dLFxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdHRlcjogKG5hbWU6IHN0cmluZykgPT5cblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTExBQk9SQVRJT05EUkFGVF9BQ1RJVkVfVVNFUl9BVkFUQVJfVE9PTFRJUFwiLCBbbmFtZV0pXG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0XHR7dGhpcy5nZXRJbnZpdGVCdXR0b24oKX1cblx0XHRcdFx0PC9IQm94PlxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdEQSxNQUFNQSxnQkFBZ0IsR0FBRyxPQUFPO0VBQ2hDLE1BQU1DLGlCQUFpQixHQUFHLFFBQVE7RUFBQyxJQUdkQyxrQkFBa0IsSUFBQUMsSUFBQSxHQUR0Q0MsY0FBYyxDQUFDLDJEQUEyRCxDQUFDLEVBQUFDLEtBQUEsR0FFMUVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFQyxRQUFRLEVBQUU7RUFBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUc1Q0gsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBSixJQUFBLENBQUFPLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsY0FBQTtJQWlCN0IsU0FBQVYsbUJBQVlXLEtBQXVDLEVBQUVDLE1BQXlDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQy9GQSxLQUFBLEdBQUFILGNBQUEsQ0FBQUksSUFBQSxPQUFNSCxLQUFLLEVBQUVDLE1BQU0sQ0FBQztNQUFDRywwQkFBQSxDQUFBRixLQUFBLGlCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxRQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFpQnRCO0FBQ0Q7QUFDQTtBQUNBO01BSENBLEtBQUEsQ0FJQUssNEJBQTRCLEdBQUlDLEtBQXlCLElBQVc7UUFDbkUsTUFBTUMsTUFBTSxHQUFHRCxLQUFLLENBQUNFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQ1IsS0FBQSxDQUFLUyxrQkFBa0IsRUFBRTtVQUM3QlQsS0FBQSxDQUFLUyxrQkFB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
|
|
@@ -20,6 +20,7 @@ import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
|
20
20
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
21
21
|
import PromiseKeeper from "sap/fe/core/helpers/PromiseKeeper";
|
|
22
22
|
import { isAnnotationOfType, isPathAnnotationExpression } from "sap/fe/core/helpers/TypeGuards";
|
|
23
|
+
import type { TelemetryCollDraftInviteEvent } from "sap/fe/core/services/TelemetryServiceFactory";
|
|
23
24
|
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
24
25
|
import CommonHelper from "sap/fe/macros/CommonHelper";
|
|
25
26
|
import type { ValueHelpPayload } from "sap/fe/macros/internal/valuehelp/ValueListHelper";
|
|
@@ -444,6 +445,20 @@ export default class CollaborationDraft extends BuildingBlock {
|
|
|
444
445
|
internalModelContext?.setProperty("collaboration/invitedUsers", invitedUsers);
|
|
445
446
|
}
|
|
446
447
|
|
|
448
|
+
/**
|
|
449
|
+
* Reports a Coll Draft invite to GSM. Fire-and-forget; TelemetryService.storeAction
|
|
450
|
+
* gates the disabled state internally, so no isTelemetryEnabled() check is needed here.
|
|
451
|
+
* @param totalInvitees Total users in the dialog at click time (sent to ShareAction).
|
|
452
|
+
* @param countNewInvitees Subset of those whose status was NotYetInvited before this click.
|
|
453
|
+
*/
|
|
454
|
+
private fireInviteTelemetry(totalInvitees: number, countNewInvitees: number): void {
|
|
455
|
+
const telemetryEvent: TelemetryCollDraftInviteEvent = {
|
|
456
|
+
type: "FE.CollDraftInvite",
|
|
457
|
+
parameters: { totalInvitees, countNewInvitees }
|
|
458
|
+
};
|
|
459
|
+
this.getAppComponent()?.getTelemetryService().storeAction(telemetryEvent);
|
|
460
|
+
}
|
|
461
|
+
|
|
447
462
|
/**
|
|
448
463
|
* Call the share action to update the list of invited users.
|
|
449
464
|
* @param event The event object of the invite button
|
|
@@ -464,6 +479,8 @@ export default class CollaborationDraft extends BuildingBlock {
|
|
|
464
479
|
}
|
|
465
480
|
});
|
|
466
481
|
|
|
482
|
+
this.fireInviteTelemetry(users.length, newlyInvitedUsers.length);
|
|
483
|
+
|
|
467
484
|
try {
|
|
468
485
|
// We request the number of invited users after the share action to see how many users were really invited
|
|
469
486
|
const results = await Promise.all([shareObject(bindingContext, users), this.requestInvitedUsersInDraft()]);
|
|
@@ -49,7 +49,8 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
|
|
|
49
49
|
};
|
|
50
50
|
_proto.onAfterRendering = function onAfterRendering(oEvent) {
|
|
51
51
|
const subSection = this._oParentObjectPageSubSection;
|
|
52
|
-
|
|
52
|
+
const subSectionBlocks = subSection.getBlocks().filter(block => block.isA("sap.fe.templates.ObjectPage.controls.SubSectionBlock"));
|
|
53
|
+
if (subSectionBlocks.length === 1 && this.content && this.content.isA("sap.fe.macros.Table")) {
|
|
53
54
|
const view = CommonUtils.getTargetView(this);
|
|
54
55
|
const sectionLayout = view?.getViewData()?.sectionLayout;
|
|
55
56
|
const tableControl = this.content.getTableDefinition().control;
|
|
@@ -88,4 +89,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/CommonUtils", "sap/fe/co
|
|
|
88
89
|
}), _class2)) || _class);
|
|
89
90
|
return SubSectionBlock;
|
|
90
91
|
}, false);
|
|
91
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCbG9ja0Jhc2VGb3JtQWRqdXN0bWVudCIsInV4YXBMaWIiLCJTdWJTZWN0aW9uQmxvY2siLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImdyb3VwIiwiZGVmYXVsdFZhbHVlIiwiX2RlYzMiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CbG9ja0Jhc2UiLCJhcmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiaW5pdCIsIl9iQ29ubmVjdGVkIiwiX2FwcGx5Rm9ybUFkanVzdG1lbnQiLCJzRm9ybUFkanVzdG1lbnQiLCJnZXRGb3JtQWRqdXN0bWVudCIsIm9WaWV3IiwiX2dldFNlbGVjdGVkVmlld0NvbnRlbnQiLCJvUGFyZW50IiwiX29QYXJlbnRPYmplY3RQYWdlU3ViU2VjdGlvbiIsIm9Gb3JtQWRqdXN0bWVudEZpZWxkcyIsIk5vbmUiLCJfY29tcHV0ZUZvcm1BZGp1c3RtZW50RmllbGRzIiwiX29MYXlvdXRDb25maWciLCJfYWRqdXN0Rm9ybSIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJvRXZlbnQiLCJzdWJTZWN0aW9uIiwiZ2V0QmxvY2tzIiwibGVuZ3RoIiwiY29udGVudCIsImlzQSIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJzZWN0aW9uTGF5b3V0IiwiZ2V0Vmlld0RhdGEiLCJ0YWJsZUNvbnRyb2wiLCJnZXRUYWJsZURlZmluaXRpb24iLCJjb250cm9sIiwicm93Q291bnRNb2RlIiwiY3JlYXRpb25Nb2RlIiwiQ3JlYXRpb25Nb2RlIiwiQ3JlYXRpb25Sb3ciLCJoYXNTdHlsZUNsYXNzIiwiYWRkU3R5bGVDbGFzcyIsInNldE1vZGUiLCJzTW9kZSIsInNldFByb3BlcnR5IiwiY29ubmVjdFRvTW9kZWxzIiwiZ2V0QWdncmVnYXRpb24iLCJCbG9ja0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN1YlNlY3Rpb25CbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZ2dyZWdhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlLCB0eXBlIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgU3ViU2VjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL1N1YlNlY3Rpb25cIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQmxvY2tCYXNlIGZyb20gXCJzYXAvdXhhcC9CbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tCYXNlQ29sdW1uTGF5b3V0IH0gZnJvbSBcInNhcC91eGFwL2xpYnJhcnlcIjtcbmltcG9ydCB1eGFwTGliIGZyb20gXCJzYXAvdXhhcC9saWJyYXJ5XCI7XG5jb25zdCBCbG9ja0Jhc2VGb3JtQWRqdXN0bWVudCA9IHV4YXBMaWIuQmxvY2tCYXNlRm9ybUFkanVzdG1lbnQ7XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuY29udHJvbHMuU3ViU2VjdGlvbkJsb2NrXCIpXG5jbGFzcyBTdWJTZWN0aW9uQmxvY2sgZXh0ZW5kcyBCbG9ja0Jhc2Uge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51eGFwLkJsb2NrQmFzZUNvbHVtbkxheW91dFwiLCBncm91cDogXCJCZWhhdmlvclwiLCBkZWZhdWx0VmFsdWU6IFwiNFwiIH0pXG5cdGNvbHVtbkxheW91dCE6IEJsb2NrQmFzZUNvbHVtbkxheW91dDtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGNvbnRlbnQhOiBDb250cm9sO1xuXG5cdHByaXZhdGUgX29QYXJlbnRPYmplY3RQYWdlU3ViU2VjdGlvbiE6IHsgX29MYXlvdXRDb25maWc6IHVua25vd24gfTtcblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdHN1cGVyLmluaXQoKTtcblx0XHQodGhpcyBhcyB1bmtub3duIGFzIHsgX2JDb25uZWN0ZWQ6IGJvb2xlYW4gfSkuX2JDb25uZWN0ZWQgPSB0cnVlO1xuXHR9XG5cblx0X2FwcGx5Rm9ybUFkanVzdG1lbnQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc0Zvcm1BZGp1c3RtZW50ID0gdGhpcy5nZXRGb3JtQWRqdXN0bWVudCgpLFxuXHRcdFx0b1ZpZXcgPSB0aGlzLl9nZXRTZWxlY3RlZFZpZXdDb250ZW50KCksXG5cdFx0XHRvUGFyZW50ID0gdGhpcy5fb1BhcmVudE9iamVjdFBhZ2VTdWJTZWN0aW9uO1xuXHRcdGxldCBvRm9ybUFkanVzdG1lbnRGaWVsZHM7XG5cblx0XHRpZiAoc0Zvcm1BZGp1c3RtZW50ICE9PSBCbG9ja0Jhc2VGb3JtQWRqdXN0bWVudC5Ob25lICYmIG9WaWV3ICYmIG9QYXJlbnQpIHtcblx0XHRcdG9Gb3JtQWRqdXN0bWVudEZpZWxkcyA9IHRoaXMuX2NvbXB1dGVGb3JtQWRqdXN0bWVudEZpZWxkcyhzRm9ybUFkanVzdG1lbnQsIG9QYXJlbnQuX29MYXlvdXRDb25maWcpO1xuXG5cdFx0XHR0aGlzLl9hZGp1c3RGb3JtKG9WaWV3LCBvRm9ybUFkanVzdG1lbnRGaWVsZHMpO1xuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcob0V2ZW50OiBqUXVlcnkuRXZlbnQpOiB2b2lkIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzdWJTZWN0aW9uID0gdGhpcy5fb1BhcmVudE9iamVjdFBhZ2VTdWJTZWN0aW9uIGFzIHVua25vd24gYXMgU3ViU2VjdGlvbjtcblx0XHRpZiAoc3ViU2VjdGlvbi5nZXRCbG9ja3MoKS5sZW5ndGggPT09IDEgJiYgdGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5pc0E8VGFibGVBUEk+KFwic2FwLmZlLm1hY3Jvcy5UYWJsZVwiKSkge1xuXHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcodGhpcyk7XG5cdFx0XHRjb25zdCBzZWN0aW9uTGF5b3V0ID0gKHZpZXc/LmdldFZpZXdEYXRhKCkgYXMgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MpPy5zZWN0aW9uTGF5b3V0O1xuXHRcdFx0Y29uc3QgdGFibGVDb250cm9sID0gdGhpcy5jb250ZW50LmdldFRhYmxlRGVmaW5pdGlvbigpLmNvbnRyb2w7XG5cblx0XHRcdGlmIChcblx0XHRcdFx0dGFibGVDb250cm9sLnJvd0NvdW50TW9kZSA9PT0gXCJBdXRvXCIgJiZcblx0XHRcdFx0Ly8gRXhjbHVkZSBDcmVhdGlvblJvdyBtb2RlIHVubGVzcyBzZWN0aW9uTGF5b3V0IGlzIFRhYnM6IHRoZSBmaXQtY29udGFpbmVyIHN0eWxlIGNyZWF0ZXMgd2hpdGVzcGFjZSBpbiB0aGUgc3Vic2VjdGlvbiBpbiBkaXNwbGF5IG1vZGUgd2hlbiBDcmVhdGlvblJvdyBpcyB1c2VkIGluIFRhYmxlQ3JlYXRpb25PcHRpb25zXG5cdFx0XHRcdCh0YWJsZUNvbnRyb2wuY3JlYXRpb25Nb2RlICE9PSBDcmVhdGlvbk1vZGUuQ3JlYXRpb25Sb3cgfHwgc2VjdGlvbkxheW91dCA9PT0gXCJUYWJzXCIpICYmXG5cdFx0XHRcdCFzdWJTZWN0aW9uLmhhc1N0eWxlQ2xhc3MoXCJzYXBVeEFQT2JqZWN0UGFnZVN1YlNlY3Rpb25GaXRDb250YWluZXJcIilcblx0XHRcdCkge1xuXHRcdFx0XHRzdWJTZWN0aW9uLmFkZFN0eWxlQ2xhc3MoXCJzYXBVeEFQT2JqZWN0UGFnZVN1YlNlY3Rpb25GaXRDb250YWluZXJcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5vbkFmdGVyUmVuZGVyaW5nKG9FdmVudCk7XG5cdH1cblxuXHRzZXRNb2RlKHNNb2RlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwibW9kZVwiLCBzTW9kZSk7XG5cdFx0Ly8gT1BUSU9OQUw6IHRoaXMuaW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9tb2RlXCIsIHNNb2RlKTtcblx0fVxuXG5cdGNvbm5lY3RUb01vZGVscygpOiB2b2lkIHtcblx0XHQvLyBWaWV3IGlzIGFscmVhZHkgY29ubmVjdGVkIHRvIHRoZSBVSTUgbW9kZWwgdHJlZSwgaGVuY2Ugbm8gZXh0cmEgbG9naWMgcmVxdWlyZWQgaGVyZVxuXHR9XG5cblx0Ly8vIFN1YlNlY3Rpb25CbG9jayB1c2UgYWdncmVnYXRpb24gaW5zdGVhZCBvZiBhIHZpZXcsIGkuZS4gcmV0dXJuIHRoYXQgYXMgdGhlIHZpZXcgY29udGVudFxuXHRfZ2V0U2VsZWN0ZWRWaWV3Q29udGVudCgpOiBNYW5hZ2VkT2JqZWN0IHwgTWFuYWdlZE9iamVjdFtdIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0QWdncmVnYXRpb24oXCJjb250ZW50XCIpO1xuXHR9XG59XG5cbmludGVyZmFjZSBTdWJTZWN0aW9uQmxvY2sge1xuXHRfYWRqdXN0Rm9ybSh2aWV3OiBNYW5hZ2VkT2JqZWN0IHwgTWFuYWdlZE9iamVjdFtdLCBmb3JtRmllbGRzOiB1bmtub3duKTogdm9pZDtcblx0X2NvbXB1dGVGb3JtQWRqdXN0bWVudEZpZWxkcyhzRm9ybUFkanVzdG1lbnQ6IHN0cmluZywgX29MYXlvdXRDb25maWc6IHVua25vd24pOiB1bmtub3duO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTdWJTZWN0aW9uQmxvY2s7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBVUEsTUFBTUEsdUJBQXVCLEdBQUdDLE9BQU8sQ0FBQ0QsdUJBQXVCO0VBQUMsSUFFMURFLGVBQWUsSUFBQUMsSUFBQSxHQURwQkMsY0FBYyxDQUFDLHNEQUFzRCxDQUFDLEVBQUFDLEtBQUEsR0FFckVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsZ0NBQWdDO0lBQUVDLEtBQUssRUFBRSxVQUFVO0lBQUVDLFlBQVksRUFBRTtFQUFJLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzFGQyxXQUFXLENBQUM7SUFBRUosSUFBSSxFQUFFLHFCQUFxQjtJQUFFSyxRQUFRLEVBQUU7RUFBTSxDQUFDLENBQUMsRUFBQVQsSUFBQSxDQUFBVSxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLFVBQUE7SUFBQSxTQUFBYixnQkFBQSxHQUFBYyxJQUFBO01BQUEsSUFBQUMsS0FBQTtNQUFBQSxLQUFBLEdBQUFGLFVBQUEsQ0FBQUcsSUFBQSxVQUFBRixJQUFBO01BQUFHLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFHLFdBQUEsRUFBQUgsS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGFBQUFJLFlBQUEsRUFBQUosS0FBQTtNQUFBLE9BQUFBLEtBQUE7SUFBQTtJQUFBSyxjQUFBLENBQUFwQixlQUFBLEVBQUFhLFVBQUE7SUFBQSxJQUFBUSxNQUFBLEdBQUFyQixlQUFBLENBQUFzQixTQUFBO0lBQUFELE1BQUEsQ0FLOURFLElBQUksR0FBSixTQUFBQSxJQUFJQSxDQUFBLEVBQVM7TUFDWlYsVUFBQSxDQUFBUyxTQUFBLENBQU1DLElBQUksQ0FBQVAsSUFBQTtNQUNULElBQUksQ0FBeUNRLFdBQVcs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
|
|
92
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCbG9ja0Jhc2VGb3JtQWRqdXN0bWVudCIsInV4YXBMaWIiLCJTdWJTZWN0aW9uQmxvY2siLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImdyb3VwIiwiZGVmYXVsdFZhbHVlIiwiX2RlYzMiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CbG9ja0Jhc2UiLCJhcmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiaW5pdCIsIl9iQ29ubmVjdGVkIiwiX2FwcGx5Rm9ybUFkanVzdG1lbnQiLCJzRm9ybUFkanVzdG1lbnQiLCJnZXRGb3JtQWRqdXN0bWVudCIsIm9WaWV3IiwiX2dldFNlbGVjdGVkVmlld0NvbnRlbnQiLCJvUGFyZW50IiwiX29QYXJlbnRPYmplY3RQYWdlU3ViU2VjdGlvbiIsIm9Gb3JtQWRqdXN0bWVudEZpZWxkcyIsIk5vbmUiLCJfY29tcHV0ZUZvcm1BZGp1c3RtZW50RmllbGRzIiwiX29MYXlvdXRDb25maWciLCJfYWRqdXN0Rm9ybSIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJvRXZlbnQiLCJzdWJTZWN0aW9uIiwic3ViU2VjdGlvbkJsb2NrcyIsImdldEJsb2NrcyIsImZpbHRlciIsImJsb2NrIiwiaXNBIiwibGVuZ3RoIiwiY29udGVudCIsInZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJzZWN0aW9uTGF5b3V0IiwiZ2V0Vmlld0RhdGEiLCJ0YWJsZUNvbnRyb2wiLCJnZXRUYWJsZURlZmluaXRpb24iLCJjb250cm9sIiwicm93Q291bnRNb2RlIiwiY3JlYXRpb25Nb2RlIiwiQ3JlYXRpb25Nb2RlIiwiQ3JlYXRpb25Sb3ciLCJoYXNTdHlsZUNsYXNzIiwiYWRkU3R5bGVDbGFzcyIsInNldE1vZGUiLCJzTW9kZSIsInNldFByb3BlcnR5IiwiY29ubmVjdFRvTW9kZWxzIiwiZ2V0QWdncmVnYXRpb24iLCJCbG9ja0Jhc2UiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN1YlNlY3Rpb25CbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZ2dyZWdhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHsgQ3JlYXRpb25Nb2RlLCB0eXBlIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgU3ViU2VjdGlvbiBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9zZWN0aW9uL1N1YlNlY3Rpb25cIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQmxvY2tCYXNlIGZyb20gXCJzYXAvdXhhcC9CbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tCYXNlQ29sdW1uTGF5b3V0IH0gZnJvbSBcInNhcC91eGFwL2xpYnJhcnlcIjtcbmltcG9ydCB1eGFwTGliIGZyb20gXCJzYXAvdXhhcC9saWJyYXJ5XCI7XG5jb25zdCBCbG9ja0Jhc2VGb3JtQWRqdXN0bWVudCA9IHV4YXBMaWIuQmxvY2tCYXNlRm9ybUFkanVzdG1lbnQ7XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuY29udHJvbHMuU3ViU2VjdGlvbkJsb2NrXCIpXG5jbGFzcyBTdWJTZWN0aW9uQmxvY2sgZXh0ZW5kcyBCbG9ja0Jhc2Uge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51eGFwLkJsb2NrQmFzZUNvbHVtbkxheW91dFwiLCBncm91cDogXCJCZWhhdmlvclwiLCBkZWZhdWx0VmFsdWU6IFwiNFwiIH0pXG5cdGNvbHVtbkxheW91dCE6IEJsb2NrQmFzZUNvbHVtbkxheW91dDtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlIH0pXG5cdGNvbnRlbnQhOiBDb250cm9sO1xuXG5cdHByaXZhdGUgX29QYXJlbnRPYmplY3RQYWdlU3ViU2VjdGlvbiE6IHsgX29MYXlvdXRDb25maWc6IHVua25vd24gfTtcblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdHN1cGVyLmluaXQoKTtcblx0XHQodGhpcyBhcyB1bmtub3duIGFzIHsgX2JDb25uZWN0ZWQ6IGJvb2xlYW4gfSkuX2JDb25uZWN0ZWQgPSB0cnVlO1xuXHR9XG5cblx0X2FwcGx5Rm9ybUFkanVzdG1lbnQoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc0Zvcm1BZGp1c3RtZW50ID0gdGhpcy5nZXRGb3JtQWRqdXN0bWVudCgpLFxuXHRcdFx0b1ZpZXcgPSB0aGlzLl9nZXRTZWxlY3RlZFZpZXdDb250ZW50KCksXG5cdFx0XHRvUGFyZW50ID0gdGhpcy5fb1BhcmVudE9iamVjdFBhZ2VTdWJTZWN0aW9uO1xuXHRcdGxldCBvRm9ybUFkanVzdG1lbnRGaWVsZHM7XG5cblx0XHRpZiAoc0Zvcm1BZGp1c3RtZW50ICE9PSBCbG9ja0Jhc2VGb3JtQWRqdXN0bWVudC5Ob25lICYmIG9WaWV3ICYmIG9QYXJlbnQpIHtcblx0XHRcdG9Gb3JtQWRqdXN0bWVudEZpZWxkcyA9IHRoaXMuX2NvbXB1dGVGb3JtQWRqdXN0bWVudEZpZWxkcyhzRm9ybUFkanVzdG1lbnQsIG9QYXJlbnQuX29MYXlvdXRDb25maWcpO1xuXG5cdFx0XHR0aGlzLl9hZGp1c3RGb3JtKG9WaWV3LCBvRm9ybUFkanVzdG1lbnRGaWVsZHMpO1xuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcob0V2ZW50OiBqUXVlcnkuRXZlbnQpOiB2b2lkIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBzdWJTZWN0aW9uID0gdGhpcy5fb1BhcmVudE9iamVjdFBhZ2VTdWJTZWN0aW9uIGFzIHVua25vd24gYXMgU3ViU2VjdGlvbjtcblx0XHRjb25zdCBzdWJTZWN0aW9uQmxvY2tzID0gc3ViU2VjdGlvblxuXHRcdFx0LmdldEJsb2NrcygpXG5cdFx0XHQuZmlsdGVyKChibG9jaykgPT4gYmxvY2suaXNBKFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLmNvbnRyb2xzLlN1YlNlY3Rpb25CbG9ja1wiKSk7XG5cdFx0aWYgKHN1YlNlY3Rpb25CbG9ja3MubGVuZ3RoID09PSAxICYmIHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuaXNBPFRhYmxlQVBJPihcInNhcC5mZS5tYWNyb3MuVGFibGVcIikpIHtcblx0XHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdFx0Y29uc3Qgc2VjdGlvbkxheW91dCA9ICh2aWV3Py5nZXRWaWV3RGF0YSgpIGFzIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzKT8uc2VjdGlvbkxheW91dDtcblx0XHRcdGNvbnN0IHRhYmxlQ29udHJvbCA9IHRoaXMuY29udGVudC5nZXRUYWJsZURlZmluaXRpb24oKS5jb250cm9sO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRhYmxlQ29udHJvbC5yb3dDb3VudE1vZGUgPT09IFwiQXV0b1wiICYmXG5cdFx0XHRcdC8vIEV4Y2x1ZGUgQ3JlYXRpb25Sb3cgbW9kZSB1bmxlc3Mgc2VjdGlvbkxheW91dCBpcyBUYWJzOiB0aGUgZml0LWNvbnRhaW5lciBzdHlsZSBjcmVhdGVzIHdoaXRlc3BhY2UgaW4gdGhlIHN1YnNlY3Rpb24gaW4gZGlzcGxheSBtb2RlIHdoZW4gQ3JlYXRpb25Sb3cgaXMgdXNlZCBpbiBUYWJsZUNyZWF0aW9uT3B0aW9uc1xuXHRcdFx0XHQodGFibGVDb250cm9sLmNyZWF0aW9uTW9kZSAhPT0gQ3JlYXRpb25Nb2RlLkNyZWF0aW9uUm93IHx8IHNlY3Rpb25MYXlvdXQgPT09IFwiVGFic1wiKSAmJlxuXHRcdFx0XHQhc3ViU2VjdGlvbi5oYXNTdHlsZUNsYXNzKFwic2FwVXhBUE9iamVjdFBhZ2VTdWJTZWN0aW9uRml0Q29udGFpbmVyXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0c3ViU2VjdGlvbi5hZGRTdHlsZUNsYXNzKFwic2FwVXhBUE9iamVjdFBhZ2VTdWJTZWN0aW9uRml0Q29udGFpbmVyXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3VwZXIub25BZnRlclJlbmRlcmluZyhvRXZlbnQpO1xuXHR9XG5cblx0c2V0TW9kZShzTW9kZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcIm1vZGVcIiwgc01vZGUpO1xuXHRcdC8vIE9QVElPTkFMOiB0aGlzLmludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvbW9kZVwiLCBzTW9kZSk7XG5cdH1cblxuXHRjb25uZWN0VG9Nb2RlbHMoKTogdm9pZCB7XG5cdFx0Ly8gVmlldyBpcyBhbHJlYWR5IGNvbm5lY3RlZCB0byB0aGUgVUk1IG1vZGVsIHRyZWUsIGhlbmNlIG5vIGV4dHJhIGxvZ2ljIHJlcXVpcmVkIGhlcmVcblx0fVxuXG5cdC8vLyBTdWJTZWN0aW9uQmxvY2sgdXNlIGFnZ3JlZ2F0aW9uIGluc3RlYWQgb2YgYSB2aWV3LCBpLmUuIHJldHVybiB0aGF0IGFzIHRoZSB2aWV3IGNvbnRlbnRcblx0X2dldFNlbGVjdGVkVmlld0NvbnRlbnQoKTogTWFuYWdlZE9iamVjdCB8IE1hbmFnZWRPYmplY3RbXSB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgU3ViU2VjdGlvbkJsb2NrIHtcblx0X2FkanVzdEZvcm0odmlldzogTWFuYWdlZE9iamVjdCB8IE1hbmFnZWRPYmplY3RbXSwgZm9ybUZpZWxkczogdW5rbm93bik6IHZvaWQ7XG5cdF9jb21wdXRlRm9ybUFkanVzdG1lbnRGaWVsZHMoc0Zvcm1BZGp1c3RtZW50OiBzdHJpbmcsIF9vTGF5b3V0Q29uZmlnOiB1bmtub3duKTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU3ViU2VjdGlvbkJsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztFQVVBLE1BQU1BLHVCQUF1QixHQUFHQyxPQUFPLENBQUNELHVCQUF1QjtFQUFDLElBRTFERSxlQUFlLElBQUFDLElBQUEsR0FEcEJDLGNBQWMsQ0FBQyxzREFBc0QsQ0FBQyxFQUFBQyxLQUFBLEdBRXJFQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLGdDQUFnQztJQUFFQyxLQUFLLEVBQUUsVUFBVTtJQUFFQyxZQUFZLEVBQUU7RUFBSSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUcxRkMsV0FBVyxDQUFDO0lBQUVKLElBQUksRUFBRSxxQkFBcUI7SUFBRUssUUFBUSxFQUFFO0VBQU0sQ0FBQyxDQUFDLEVBQUFULElBQUEsQ0FBQVUsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxVQUFBO0lBQUEsU0FBQWIsZ0JBQUEsR0FBQWMsSUFBQTtNQUFBLElBQUFDLEtBQUE7TUFBQUEsS0FBQSxHQUFBRixVQUFBLENBQUFHLElBQUEsVUFBQUYsSUFBQTtNQUFBRywwQkFBQSxDQUFBRixLQUFBLGtCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxhQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFBQSxPQUFBQSxLQUFBO0lBQUE7SUFB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
|
|
@@ -39,7 +39,10 @@ class SubSectionBlock extends BlockBase {
|
|
|
39
39
|
|
|
40
40
|
onAfterRendering(oEvent: jQuery.Event): void | undefined {
|
|
41
41
|
const subSection = this._oParentObjectPageSubSection as unknown as SubSection;
|
|
42
|
-
|
|
42
|
+
const subSectionBlocks = subSection
|
|
43
|
+
.getBlocks()
|
|
44
|
+
.filter((block) => block.isA("sap.fe.templates.ObjectPage.controls.SubSectionBlock"));
|
|
45
|
+
if (subSectionBlocks.length === 1 && this.content && this.content.isA<TableAPI>("sap.fe.macros.Table")) {
|
|
43
46
|
const view = CommonUtils.getTargetView(this);
|
|
44
47
|
const sectionLayout = (view?.getViewData() as ObjectPageManifestSettings)?.sectionLayout;
|
|
45
48
|
const tableControl = this.content.getTableDefinition().control;
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
>
|
|
41
41
|
<template:if test="{sap.fe.i18n>T_COMMON_OBJECT_PAGE_OBJECT_INFO}">
|
|
42
42
|
<f:title>
|
|
43
|
-
<core:Title level="
|
|
43
|
+
<core:Title level="H3" text="{sap.fe.i18n>T_COMMON_OBJECT_PAGE_OBJECT_INFO}" />
|
|
44
44
|
</f:title>
|
|
45
45
|
</template:if>
|
|
46
46
|
<f:dependents>
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
>
|
|
150
150
|
<template:if test="{subSection>title}">
|
|
151
151
|
<f:title>
|
|
152
|
-
<core:Title level="
|
|
152
|
+
<core:Title level="H3" text="{subSection>title}" />
|
|
153
153
|
</f:title>
|
|
154
154
|
</template:if>
|
|
155
155
|
<f:formElements>
|
|
@@ -38,7 +38,7 @@ OP: 'sap/fe/templates/ObjectPage/ObjectPageTemplating'
|
|
|
38
38
|
<template:if test="{header>aiNotice/contentFragmentName}">
|
|
39
39
|
<template:then>
|
|
40
40
|
<fpm:CustomFragment
|
|
41
|
-
id="
|
|
41
|
+
id="{aiNoticeId>}"
|
|
42
42
|
fragmentName="{header>aiNotice/contentFragmentName}"
|
|
43
43
|
contextPath="{fullContextPath>}"
|
|
44
44
|
/>
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
<template:with path="entityType>@com.sap.vocabularies.UI.v1.HeaderInfo" var="headerInfo">
|
|
20
20
|
<template:with path="header>avatar" var="avatar">
|
|
21
21
|
<uxap:expandedHeading>
|
|
22
|
-
<
|
|
22
|
+
<template:with path="header>aiNotice/expandedHeadingId" var="aiNoticeId">
|
|
23
|
+
<core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.ExpandedHeading" type="XML" />
|
|
24
|
+
</template:with>
|
|
23
25
|
</uxap:expandedHeading>
|
|
24
26
|
<uxap:snappedHeading>
|
|
25
27
|
<FlexBox renderType="Bare">
|
|
@@ -64,8 +66,10 @@
|
|
|
64
66
|
</uxap:snappedHeading>
|
|
65
67
|
<template:if test="{= !${header>hasContent} }">
|
|
66
68
|
<uxap:heading>
|
|
67
|
-
<!--
|
|
68
|
-
<
|
|
69
|
+
<!-- Falls back to the expanded heading; uses a distinct id since both slots coexist in the control tree. -->
|
|
70
|
+
<template:with path="header>aiNotice/defaultHeadingId" var="aiNoticeId">
|
|
71
|
+
<core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.ExpandedHeading" type="XML" />
|
|
72
|
+
</template:with>
|
|
69
73
|
</uxap:heading>
|
|
70
74
|
</template:if>
|
|
71
75
|
<uxap:snappedContent>
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
dt:designtime="not-adaptable-visibility"
|
|
25
25
|
id="{headerSection>id}"
|
|
26
26
|
title="{headerSection>title}"
|
|
27
|
-
titleLevel="
|
|
27
|
+
titleLevel="H2"
|
|
28
28
|
visible="{headerSection>visible}"
|
|
29
29
|
titleUppercase="false"
|
|
30
30
|
onSectionLoaded="{section>onSectionLoaded}"
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
retrieveStateHandler="{headerSection>retrieveState}"
|
|
33
33
|
>
|
|
34
34
|
<macroControl:subSections>
|
|
35
|
-
<macroSectionContent:SubSection id="fe::EditableHeaderSubSection" title="{headerSection>title}" titleLevel="
|
|
35
|
+
<macroSectionContent:SubSection id="fe::EditableHeaderSubSection" title="{headerSection>title}" titleLevel="H3">
|
|
36
36
|
<core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.EditableHeaderFacet" type="XML" />
|
|
37
37
|
</macroSectionContent:SubSection>
|
|
38
38
|
</macroControl:subSections>
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<macroControl:Section
|
|
45
45
|
id="{section>id}"
|
|
46
46
|
title="{section>title}"
|
|
47
|
-
titleLevel="
|
|
47
|
+
titleLevel="H2"
|
|
48
48
|
showTitle="{section>showTitle}"
|
|
49
49
|
titleUppercase="false"
|
|
50
50
|
visible="{section>visible}"
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
<macroSectionContent:SubSection
|
|
60
60
|
id="{subSection>id}"
|
|
61
61
|
title="{subSection>title}"
|
|
62
|
-
titleLevel="
|
|
62
|
+
titleLevel="H3"
|
|
63
63
|
showTitle="{subSection>showSubSectionTitle}"
|
|
64
64
|
visible="{subSection>visible}"
|
|
65
65
|
class="{subSection>class}"
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
bindingUpdated=".handlers.onTableBindingUpdated"
|
|
24
24
|
variantSelected=".handlers.onVariantSelected"
|
|
25
25
|
variantSaved=".handlers.onVariantSaved"
|
|
26
|
+
variantManaged=".handlers.onVariantManaged"
|
|
26
27
|
isAlp="{converterContext>hasMultiVisualizations}"
|
|
27
28
|
headerLevel='{= OP.getHeaderLevel(${subSection>}, ${section>subSections}.length > 1 )}'
|
|
28
29
|
headerStyle='{= ${section>subSections}.length > 1 ? "H5" : "H4"}'
|
|
@@ -36,7 +36,7 @@ sap.ui.define(["sap/f/library", "sap/fe/core/library", "sap/fe/macros/library",
|
|
|
36
36
|
controls: [],
|
|
37
37
|
elements: [],
|
|
38
38
|
// eslint-disable-next-line no-template-curly-in-string
|
|
39
|
-
version: "1.
|
|
39
|
+
version: "1.150.0",
|
|
40
40
|
noLibraryCSS: true
|
|
41
41
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
42
|
});
|