@sapui5/sap.fe.macros 1.120.26 → 1.120.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/field/FieldRuntime.js +6 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +5 -1
- package/src/sap/fe/macros/filterBar/adapter/SelectionVariantToStateFilters.js +4 -3
- package/src/sap/fe/macros/filterBar/adapter/SelectionVariantToStateFilters.ts +3 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +3 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +4 -1
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/messagebundle_de.properties +1 -1
- package/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
- package/src/sap/fe/macros/messagebundle_fi.properties +2 -2
- package/src/sap/fe/macros/messagebundle_id.properties +3 -3
- package/src/sap/fe/macros/messages/MessageButton.js +26 -21
- package/src/sap/fe/macros/messages/MessageButton.ts +23 -14
- package/src/sap/fe/macros/multiValueField/MultiValueField.block.js +8 -10
- package/src/sap/fe/macros/multiValueField/MultiValueField.block.ts +9 -11
package/package.json
CHANGED
|
@@ -168,7 +168,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
168
168
|
return new Promise(resolve => {
|
|
169
169
|
setTimeout(resolve, 0);
|
|
170
170
|
});
|
|
171
|
-
}).catch(() => {
|
|
171
|
+
}).catch(async () => {
|
|
172
|
+
return new Promise(resolve => {
|
|
173
|
+
setTimeout(resolve, 0);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
172
176
|
oFEController === null || oFEController === void 0 ? void 0 : oFEController.editFlow.syncTask(valueResolvedAndPatchSent);
|
|
173
177
|
|
|
174
178
|
// if the context is transient, it means the request would fail anyway as the record does not exist in reality
|
|
@@ -831,4 +835,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
|
|
|
831
835
|
*/
|
|
832
836
|
return FieldRuntime;
|
|
833
837
|
}, true);
|
|
834
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb2xsYWJvcmF0aW9uQmluZGluZyIsImZpZWxkIiwiYmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZyIsImlzQSIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiRmllbGRSdW50aW1lIiwidXBsb2FkUHJvbWlzZXMiLCJ1bmRlZmluZWQiLCJjcmVhdGluZ0luYWN0aXZlUm93Iiwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgiLCJvU291cmNlIiwib0NvbnRyb2xsZXIiLCJzTmF2UGF0aCIsIl9yb3V0aW5nIiwib0JpbmRpbmdDb250ZXh0Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZm5OYXZpZ2F0ZSIsIm9Db250ZXh0IiwibmF2aWdhdGVUb1RhcmdldCIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZHJhZnQiLCJwcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbiIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiZ2V0Q29udHJvbGxlciIsIk5hdmlnYXRpb25UeXBlIiwiRm9yd2FyZE5hdmlnYXRpb24iLCJMb2ciLCJlcnJvciIsImlzRHJhZnRJbmRpY2F0b3JWaXNpYmxlIiwic1Byb3BlcnR5UGF0aCIsInNTZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yIiwiSGFzRHJhZnRFbnRpdHkiLCJJc0FjdGl2ZUVudGl0eSIsImhpZGVEcmFmdEluZm8iLCJvblZhbGlkYXRlRmllbGRHcm91cCIsIm9FdmVudCIsIm9GRUNvbnRyb2xsZXIiLCJfZ2V0RXh0ZW5zaW9uQ29udHJvbGxlciIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UiLCJfZmV0Y2hSZWNvbW1lbmRhdGlvbnMiLCJjb250cm9sbGVyIiwidmlldyIsImZpZWxkQmluZGluZ0NvbnRleHQiLCJyZWNvbW1lbmRhdGlvbnNDb250ZXh0IiwiZmllbGRCaW5kaW5nIiwiZmVDb250cm9sbGVyIiwidmFsdWVIZWxwSWQiLCJnZXRWYWx1ZUhlbHAiLCJpbmNsdWRlcyIsInRhYmxlSWQiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwidGFibGUiLCJieUlkIiwiY29udGV4dElkZW50aWZpZXIiLCJnZXRQYXJlbnQiLCJnZXRJZGVudGlmaWVyQ29sdW1uIiwicmVjb21tZW5kYXRpb25zIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UiLCJjb250ZXh0IiwiaGFuZGxlQ2hhbmdlIiwib1NvdXJjZUZpZWxkIiwiZ2V0U291cmNlIiwiYklzVHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJwVmFsdWVSZXNvbHZlZCIsImdldFBhcmFtZXRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwiYlZhbGlkIiwiZmllbGRWYWxpZGl0eSIsImdldEZpZWxkU3RhdGVPbkNoYW5nZSIsInN0YXRlIiwidGhlbiIsIm1QYXJhbWV0ZXJzIiwidmFsaWQiLCJGaWVsZEFQSSIsImhhbmRsZUZpZWxkQ2hhbmdlIiwiY2F0Y2giLCJkZWJ1ZyIsInZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQiLCJzZXRUaW1lb3V0IiwiZWRpdEZsb3ciLCJzeW5jVGFzayIsInByZXBhcmVEZWZlcnJlZFNpZGVFZmZlY3RzRm9yRmllbGQiLCJiQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jIiwiaXNDb25uZWN0ZWQiLCJkYXRhIiwiZ2V0QmluZGluZ0luZm8iLCJwYXJ0cyIsImZpbHRlciIsInBhcnQiLCJwYXRoIiwibWFwIiwiZ2V0UGF0aCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVDb2xsYWJvcmF0aW9uIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJjb250ZW50IiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJoYW5kbGVMaXZlQ2hhbmdlIiwiZXZlbnQiLCJfc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyIiwiZmlsZVVwbG9hZGVyIiwiYmluZGluZ1BhdGgiLCJnZXRQcm9wZXJ0eSIsImZ1bGxQYXRoIiwiaGFuZGxlT3BlblVwbG9hZGVyIiwiTG9jayIsImhhbmRsZUNsb3NlVXBsb2FkZXIiLCJVbmxvY2siLCJtRmllbGRTdGF0ZSIsIl9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzIiwib0JpbmRpbmciLCJnZXREYXRhU3RhdGUiLCJnZXRJbnZhbGlkVmFsdWUiLCJnZXRDb250ZW50IiwiRmllbGRXcmFwcGVyIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZ2V0RWRpdE1vZGUiLCJnZXRDb250ZW50RWRpdCIsImJJc1ZhbGlkIiwiZ2V0TWF4Q29uZGl0aW9ucyIsIm9WYWx1ZUJpbmRpbmdJbmZvIiwiZ2V0VmFsdWUiLCJmaWVsZFZhbHVlIiwidmFsaWRpdHkiLCJfZm5GaXhIYXNoUXVlcnlTdHJpbmciLCJzQ3VycmVudEhhc2giLCJzcGxpdCIsIl9mbkdldExpbmtJbmZvcm1hdGlvbiIsIl9vU291cmNlIiwiX29MaW5rIiwiX3NQcm9wZXJ0eVBhdGgiLCJfc1ZhbHVlIiwiZm5TZXRBY3RpdmUiLCJvTW9kZWwiLCJzU2VtYW50aWNPYmplY3ROYW1lIiwib0ludGVybmFsTW9kZWxDb250ZXh0Iiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9TaGVsbFNlcnZpY2VIZWxwZXIiLCJnZXRTaGVsbFNlcnZpY2VzIiwicEdldExpbmtzUHJvbWlzZSIsImdldExpbmtzV2l0aENhY2hlIiwic2VtYW50aWNPYmplY3QiLCJhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMiLCJnZXRPYmplY3QiLCJTZW1hbnRpY09iamVjdE5hbWUiLCJTZW1hbnRpY09iamVjdEZ1bGxQYXRoIiwiTWV0YU1vZGVsIiwiSW50ZXJuYWxNb2RlbENvbnRleHQiLCJTaGVsbFNlcnZpY2VIZWxwZXIiLCJHZXRMaW5rc1Byb21pc2UiLCJTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsIl9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbiIsIm9TZW1hbnRpY09iamVjdFBheWxvYWQiLCJfb0xpbmtJbmZvIiwiYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9mblF1aWNrVmlld1NldE5ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9vRmluYWxTZW1hbnRpY09iamVjdHMiLCJzVG1wUGF0aCIsImFTZW1hbnRpY09iamVjdFBhdGhzIiwiT2JqZWN0Iiwia2V5cyIsImlQYXRoc0NvdW50IiwiX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwiLCJzVmFsdWUiLCJvQ29udHJvbCIsImJBY3RpdmUiLCJzZXRBY3RpdmUiLCJzZXRUaXRsZUFjdGl2ZSIsIm9Db25kaXRpb25hbFdyYXBwZXIiLCJzZXRDb25kaXRpb24iLCJvTGlua0luZm8iLCJnZXRIYXNoIiwidXBkYXRlU2VtYW50aWNUYXJnZXRzIiwib0ZpbmFsU2VtYW50aWNPYmplY3RzIiwib0Vycm9yIiwiX2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQiLCJfY29udHJvbCIsIl9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbCIsInByb3BlcnR5UGF0aCIsImFDdXN0b21EYXRhIiwic1NlbWFudGljT2JqZWN0UGF0aFZhbHVlIiwib1ZhbHVlQmluZGluZyIsIl9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nIiwic2VtYW50aWNPYmplY3RQYXRoVmFsdWUiLCJjdXN0b21EYXRhIiwiZ2V0S2V5IiwiaW5kZXgiLCJfb0NoYW5nZUV2ZW50IiwiTGlua01vZGVsQ29udGV4dENoYW5nZSIsInNQcm9wZXJ0eSIsInNQYXRoVG9Qcm9wZXJ0eSIsImNvbnRyb2wiLCJtZGNMaW5rIiwiZ2V0RGVwZW5kZW50cyIsImxlbmd0aCIsImdldEN1c3RvbURhdGEiLCJvcGVuRXh0ZXJuYWxMaW5rIiwic291cmNlIiwib3BlbldpbmRvdyIsImNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzIiwibWRjTGlua0lkIiwiZ2V0SWQiLCJpbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyIsInRpdGxlIiwiZ2V0UmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJkZXNjcmlwdGlvbiIsImVuYWJsZUZvcm1hdHRlZFRleHQiLCJpbGx1c3RyYXRpb25TaXplIiwiaWxsdXN0cmF0aW9uVHlwZSIsIklsbHVzdHJhdGVkTWVzc2FnZVR5cGUiLCJUZW50IiwiaWxsdXN0cmF0ZWRNZXNzYWdlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwicG9wb3ZlclNldHRpbmdzIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInNob3dIZWFkZXIiLCJEZXZpY2UiLCJzeXN0ZW0iLCJwaG9uZSIsInBsYWNlbWVudCIsIm1vYmlsZWxpYnJhcnkiLCJQbGFjZW1lbnRUeXBlIiwiQXV0byIsImFmdGVyQ2xvc2UiLCJkZXN0cm95IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJvcGVuTGluayIsInNhcG1MaW5rIiwiaFJlZiIsImdldFRyaWdnZXJIcmVmIiwibGlua0l0ZW1zIiwicmV0cmlldmVMaW5rSXRlbXMiLCJnZXRQYXlsb2FkIiwiaGFzUXVpY2tWaWV3RmFjZXRzIiwicG9wb3ZlciIsImFkZERlcGVuZGVudCIsIm9wZW5CeSIsIm9wZW4iLCJhcHBDb21wb25lbnQiLCJzaGVsbFNlcnZpY2UiLCJzaGVsbEhhc2giLCJwYXJzZVNoZWxsSGFzaCIsIm5hdkFyZ3MiLCJ0YXJnZXQiLCJwYXJhbXMiLCJLZWVwQWxpdmVIZWxwZXIiLCJzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoIiwiaXNTdGlja3lFZGl0TW9kZSIsInRvRXh0ZXJuYWwiLCJuZXdIcmVmIiwiaHJlZkZvckV4dGVybmFsQXN5bmMiLCJwcmVzc0xpbmsiLCJmaW5kRWxlbWVudHMiLCJlbGVtIiwib0ZpZWxkSW5mbyIsInVwbG9hZFN0cmVhbSIsIkZFQ29udHJvbGxlciIsImZpbGVXcmFwcGVyIiwidXBsb2FkVXJsIiwiZ2V0VXBsb2FkVXJsIiwic2V0VUlCdXN5Iiwic2V0VXBsb2FkVXJsIiwicmVtb3ZlQWxsSGVhZGVyUGFyYW1ldGVycyIsInRva2VuIiwiZ2V0SHR0cEhlYWRlcnMiLCJoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4iLCJGaWxlVXBsb2FkZXJQYXJhbWV0ZXIiLCJzZXROYW1lIiwic2V0VmFsdWUiLCJhZGRIZWFkZXJQYXJhbWV0ZXIiLCJlVGFnIiwiaGVhZGVyUGFyYW1ldGVyRVRhZyIsImhlYWRlclBhcmFtZXRlckFjY2VwdCIsImZpbGVzIiwiZmlsZVR5cGUiLCJ0eXBlIiwiaGVhZGVyUGFyYW1ldGVyQ29udGVudFR5cGUiLCJ1cGxvYWRQcm9taXNlIiwicmVqZWN0IiwidXBsb2FkIiwiTWVzc2FnZUJveCIsImhhbmRsZVVwbG9hZENvbXBsZXRlIiwicHJvcGVydHlGaWxlTmFtZSIsInN0YXR1cyIsIk51bWJlciIsIl9kaXNwbGF5TWVzc2FnZUZvckZhaWxlZFVwbG9hZCIsIm5ld0VUYWciLCJldGFnIiwic2V0UHJvcGVydHkiLCJhdmF0YXIiLCJyZWZyZXNoQXZhdGFyQ2FjaGVCdXN0aW5nIiwiX2NhbGxTaWRlRWZmZWN0c0ZvclN0cmVhbSIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJub3RpZmljYXRpb25EYXRhIiwicHVzaCIsInNFcnJvciIsInNNZXNzYWdlVGV4dCIsIkpTT04iLCJwYXJzZSIsIm1lc3NhZ2UiLCJlIiwicmVtb3ZlU3RyZWFtIiwiZGVsZXRlQnV0dG9uIiwiZ2V0SWNvbkZvck1pbWVUeXBlIiwic01pbWVUeXBlIiwiSWNvblBvb2wiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0Iiwic1Byb3BlcnR5VmFsdWUiLCJzUHJvcGVydHlGdWxsUGF0aCIsInNEaXNwbGF5Rm9ybWF0Iiwic1RleHRQcm9wZXJ0eSIsInNQcm9wZXJ0eU5hbWUiLCJDb21tb25IZWxwZXIiLCJyZXF1ZXN0VmFsdWVMaXN0SW5mbyIsIm1WYWx1ZUxpc3RJbmZvIiwib1ZhbHVlTGlzdEluZm8iLCJvVmFsdWVMaXN0TW9kZWwiLCIkbW9kZWwiLCJvTWV0YU1vZGVsVmFsdWVMaXN0Iiwib1BhcmFtV2l0aEtleSIsIlBhcmFtZXRlcnMiLCJmaW5kIiwib1BhcmFtZXRlciIsIkxvY2FsRGF0YVByb3BlcnR5IiwiJFByb3BlcnR5UGF0aCIsIlZhbHVlTGlzdFByb3BlcnR5IiwiRXJyb3IiLCJvVGV4dEFubm90YXRpb24iLCJDb2xsZWN0aW9uUGF0aCIsIiRQYXRoIiwib0ZpbHRlciIsIkZpbHRlciIsIm9wZXJhdG9yIiwidmFsdWUxIiwib0xpc3RCaW5kaW5nIiwiYmluZExpc3QiLCIkc2VsZWN0IiwicmVxdWVzdENvbnRleHRzIiwiYUNvbnRleHRzIiwic0Rlc2NyaXB0aW9uIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsInNNc2ciLCJoYW5kbGVUeXBlTWlzc21hdGNoIiwicmVzb3VyY2VNb2RlbCIsImRldGFpbHMiLCJnZXRQYXJhbWV0ZXJzIiwibWltZVR5cGUiLCJnZXRNaW1lVHlwZSIsInRvU3RyaW5nIiwicmVwbGFjZUFsbCIsImNvbnRlbnRXaWR0aCIsImhhbmRsZUZpbGVTaXplRXhjZWVkIiwiZ2V0TWF4aW11bUZpbGVTaXplIiwidG9GaXhlZCIsIl9jb250cm9sbGVyIiwic2hvd0NvbGxhYm9yYXRpb25FZGl0VXNlciIsIlJlc291cmNlTW9kZWxIZWxwZXIiLCJhZGRTdHlsZUNsYXNzIiwiZ2V0QmluZGluZ3MiLCJzdGFydHNXaXRoIiwiYWN0aXZpdGllcyIsImVkaXRpbmdBY3Rpdml0eSIsImFjdGl2aXR5Iiwia2V5IiwiZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aCIsImRlc3Ryb3lDb250ZW50IiwiYWRkQ29udGVudCIsIkxhYmVsIiwidGV4dCIsIm5hbWUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkUnVudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQWN0aXZpdHlTeW5jXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7IEFjdGl2aXR5LCBnZXRBY3Rpdml0eUtleUZyb21QYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGRyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9kcmFmdFwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFJlc291cmNlTW9kZWxIZWxwZXIsIHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRmllbGRXcmFwcGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgRmlsZVdyYXBwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmlsZVdyYXBwZXJcIjtcbmltcG9ydCB0eXBlIHsgRmllbGRBUElUeXBlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRBUElcIjtcbmltcG9ydCBGaWVsZEFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEFQSVwiO1xuaW1wb3J0IHR5cGUgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSB7ICRJbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCB0eXBlIExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSB7ICRSZXNwb25zaXZlUG9wb3ZlclNldHRpbmdzIH0gZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgUmVzcG9uc2l2ZVBvcG92ZXIgZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgbW9iaWxlbGlicmFyeSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEljb25Qb29sIGZyb20gXCJzYXAvdWkvY29yZS9JY29uUG9vbFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZCRDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgTWRjTGluayB9IGZyb20gXCJzYXAvdWkvbWRjL0xpbmtcIjtcbmltcG9ydCB0eXBlIENvbXBvc2l0ZUJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9Db21wb3NpdGVCaW5kaW5nXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBGaWxlVXBsb2FkZXIgZnJvbSBcInNhcC91aS91bmlmaWVkL0ZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWxlVXBsb2FkZXIkQ2hhbmdlRXZlbnQsIEZpbGVVcGxvYWRlciRVcGxvYWRDb21wbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC91aS91bmlmaWVkL0ZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IEZpbGVVcGxvYWRlclBhcmFtZXRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyUGFyYW1ldGVyXCI7XG5pbXBvcnQgb3BlbldpbmRvdyBmcm9tIFwic2FwL3VpL3V0aWwvb3BlbldpbmRvd1wiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcIi4uL3RhYmxlL1RhYmxlQVBJXCI7XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyB1c2VkIGZvciBjb2xsYWJvcmF0aW9uIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHBhcmFtIGZpZWxkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZ1xuICovXG5mdW5jdGlvbiBnZXRDb2xsYWJvcmF0aW9uQmluZGluZyhmaWVsZDogQ29udHJvbCk6IE9EYXRhTGlzdEJpbmRpbmcgfCBPRGF0YUNvbnRleHRCaW5kaW5nIHtcblx0bGV0IGJpbmRpbmcgPSAoZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KS5nZXRCaW5kaW5nKCk7XG5cblx0aWYgKCFiaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGZpZWxkKTtcblx0XHRiaW5kaW5nID0gKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCkuZ2V0QmluZGluZygpO1xuXHR9XG5cblx0cmV0dXJuIGJpbmRpbmc7XG59XG4vKipcbiAqIFN0YXRpYyBjbGFzcyB1c2VkIGJ5IFwic2FwLnVpLm1kYy5GaWVsZFwiIGR1cmluZyBydW50aW1lXG4gKlxuICogQHByaXZhdGVcbiAqIEBleHBlcmltZW50YWwgVGhpcyBtb2R1bGUgaXMgb25seSBmb3IgaW50ZXJuYWwvZXhwZXJpbWVudGFsIHVzZSFcbiAqL1xuY29uc3QgRmllbGRSdW50aW1lID0ge1xuXHR1cGxvYWRQcm9taXNlczogdW5kZWZpbmVkIGFzIGFueSxcblx0Y3JlYXRpbmdJbmFjdGl2ZVJvdzogZmFsc2UsXG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIGludGVybmFsIG5hdmlnYXRpb24gb24gdGhlIGxpbmsgcGVydGFpbmluZyB0byBEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBvU291cmNlIFNvdXJjZSBvZiB0aGUgcHJlc3MgZXZlbnRcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIEluc3RhbmNlIG9mIHRoZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBzTmF2UGF0aCBUaGUgbmF2aWdhdGlvbiBwYXRoXG5cdCAqL1xuXHRvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDogZnVuY3Rpb24gKG9Tb3VyY2U6IENvbnRyb2wsIG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc05hdlBhdGg6IHN0cmluZykge1xuXHRcdGlmIChvQ29udHJvbGxlci5fcm91dGluZykge1xuXHRcdFx0bGV0IG9CaW5kaW5nQ29udGV4dCA9IG9Tb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9Tb3VyY2UpLFxuXHRcdFx0XHRvTWV0YU1vZGVsID0gb0JpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdGZuTmF2aWdhdGUgPSBmdW5jdGlvbiAob0NvbnRleHQ/OiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob0NvbnRleHQpIHtcblx0XHRcdFx0XHRcdG9CaW5kaW5nQ29udGV4dCA9IG9Db250ZXh0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvQ29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZVRvVGFyZ2V0KG9CaW5kaW5nQ29udGV4dCwgc05hdlBhdGgsIHRydWUpO1xuXHRcdFx0XHR9O1xuXHRcdFx0Ly8gU2hvdyBkcmFmdCBsb3NzIGNvbmZpcm1hdGlvbiBkaWFsb2cgaW4gY2FzZSBvZiBPYmplY3QgcGFnZVxuXHRcdFx0aWYgKChvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueSkuY29udmVydGVyVHlwZSA9PT0gXCJPYmplY3RQYWdlXCIgJiYgIU1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKSkge1xuXHRcdFx0XHRkcmFmdC5wcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbihcblx0XHRcdFx0XHRmbk5hdmlnYXRlLFxuXHRcdFx0XHRcdEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRvQmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0ZHJhZnQuTmF2aWdhdGlvblR5cGUuRm9yd2FyZE5hdmlnYXRpb25cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZuTmF2aWdhdGUoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKFxuXHRcdFx0XHRcIkZpZWxkUnVudGltZTogTm8gcm91dGluZyBsaXN0ZW5lciBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3VuZC4gSW50ZXJuYWwgbmF2aWdhdGlvbiBhYm9ydGVkLlwiLFxuXHRcdFx0XHRcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRSdW50aW1lXCIsXG5cdFx0XHRcdFwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIlxuXHRcdFx0KTtcblx0XHR9XG5cdH0sXG5cblx0aXNEcmFmdEluZGljYXRvclZpc2libGU6IGZ1bmN0aW9uIChcblx0XHRzUHJvcGVydHlQYXRoOiBhbnksXG5cdFx0c1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I6IGFueSxcblx0XHRIYXNEcmFmdEVudGl0eTogYW55LFxuXHRcdElzQWN0aXZlRW50aXR5OiBhbnksXG5cdFx0aGlkZURyYWZ0SW5mbzogYW55XG5cdCkge1xuXHRcdGlmIChJc0FjdGl2ZUVudGl0eSAhPT0gdW5kZWZpbmVkICYmIEhhc0RyYWZ0RW50aXR5ICE9PSB1bmRlZmluZWQgJiYgKCFJc0FjdGl2ZUVudGl0eSB8fCBIYXNEcmFmdEVudGl0eSkgJiYgIWhpZGVEcmFmdEluZm8pIHtcblx0XHRcdHJldHVybiBzUHJvcGVydHlQYXRoID09PSBzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIHZhbGlkYXRlRmllbGRHcm91cCBldmVudC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIG9uVmFsaWRhdGVGaWVsZEdyb3VwXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBUaGUgY29udHJvbGxlciBvZiB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBmaWVsZFxuXHQgKiBAcGFyYW0gb0V2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSB2YWxpZGF0ZUZpZWxkR3JvdXAgZXZlbnRcblx0ICovXG5cdG9uVmFsaWRhdGVGaWVsZEdyb3VwOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IG9iamVjdCwgb0V2ZW50OiBvYmplY3QpIHtcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKG9Db250cm9sbGVyKTtcblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZEdyb3VwQ2hhbmdlKG9FdmVudCk7XG5cdH0sXG5cblx0X2ZldGNoUmVjb21tZW5kYXRpb25zOiBmdW5jdGlvbiAoZmllbGQ6IEZpZWxkLCBjb250cm9sbGVyOiBDb250cm9sbGVyKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZmllbGQpO1xuXHRcdGNvbnN0IGZpZWxkQmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbnNDb250ZXh0O1xuXG5cdFx0Ly8gZGV0ZXJtaW5lIHJlY29tbWVuZGF0aW9uIGNvbnRleHQgdG8gdXNlXG5cdFx0Y29uc3QgZmllbGRCaW5kaW5nID0gKGZpZWxkQmluZGluZ0NvbnRleHQgYXMgQ29udGV4dCk/LmdldEJpbmRpbmcoKTtcblxuXHRcdGlmIChmaWVsZEJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdC8vIGluc2lkZSBhIHRhYmxlLCB1c2UgdGhlIHJvd1xuXHRcdFx0cmVjb21tZW5kYXRpb25zQ29udGV4dCA9IGZpZWxkQmluZGluZ0NvbnRleHQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGluc2lkZSBhIGZvcm0gbm93XG5cdFx0XHQvLyBjYW4gaGF2ZSAxLTEgbmF2aWdhdGlvbiBwcm9wZXJ0eS9kaXJlY3QgcHJvcGVydHkgLSB1c2UgdmlldyBjb250ZXh0XG5cdFx0XHRyZWNvbW1lbmRhdGlvbnNDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdH1cblx0XHRjb25zdCBmZUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlcik7XG5cdFx0Y29uc3QgdmFsdWVIZWxwSWQgPSBmaWVsZC5nZXRWYWx1ZUhlbHAoKTtcblx0XHRpZiAodmFsdWVIZWxwSWQgJiYgdmFsdWVIZWxwSWQuaW5jbHVkZXMoXCI6OlRhYmxlVmFsdWVIZWxwOjpcIikpIHtcblx0XHRcdGNvbnN0IHRhYmxlSWQgPSB2YWx1ZUhlbHBJZC5zdWJzdHJpbmcoMCwgdmFsdWVIZWxwSWQuaW5kZXhPZihcIjo6VGFibGVWYWx1ZUhlbHA6OlwiKSk7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHZpZXcuYnlJZCh0YWJsZUlkKTtcblx0XHRcdGNvbnN0IGNvbnRleHRJZGVudGlmaWVyID0gKHRhYmxlPy5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSk/LmdldElkZW50aWZpZXJDb2x1bW4oKTtcblx0XHRcdGZlQ29udHJvbGxlci5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UoZmllbGQsIFtcblx0XHRcdFx0eyBjb250ZXh0OiByZWNvbW1lbmRhdGlvbnNDb250ZXh0LCBjb250ZXh0SWRlbnRpZmllciB9XG5cdFx0XHRdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZmVDb250cm9sbGVyLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZCwgW3sgY29udGV4dDogcmVjb21tZW5kYXRpb25zQ29udGV4dCB9XSk7XG5cdFx0fVxuXHR9LFxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIGNoYW5nZSBldmVudC5cblx0ICogU3RvcmUgZmllbGQgZ3JvdXAgSURzIG9mIHRoaXMgZmllbGQgZm9yIHJlcXVlc3Rpbmcgc2lkZSBlZmZlY3RzIHdoZW4gcmVxdWlyZWQuXG5cdCAqIFdlIHN0b3JlIHRoZW0gaGVyZSB0byBlbnN1cmUgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUNoYW5nZVxuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgb2YgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgZmllbGRcblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB2b2lkIHtcblx0XHRjb25zdCBvU291cmNlRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbCxcblx0XHRcdGJJc1RyYW5zaWVudCA9IG9Tb3VyY2VGaWVsZCAmJiAob1NvdXJjZUZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgYW55KS5pc1RyYW5zaWVudCgpLFxuXHRcdFx0cFZhbHVlUmVzb2x2ZWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwicHJvbWlzZVwiKSB8fCBQcm9taXNlLnJlc29sdmUoKSxcblx0XHRcdG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRiVmFsaWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsaWRcIiksXG5cdFx0XHRmaWVsZFZhbGlkaXR5ID0gdGhpcy5nZXRGaWVsZFN0YXRlT25DaGFuZ2Uob0V2ZW50KS5zdGF0ZVtcInZhbGlkaXR5XCJdLFxuXHRcdFx0ZmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbDtcblxuXHRcdC8vIFVzZSB0aGUgRkUgQ29udHJvbGxlciBpbnN0ZWFkIG9mIHRoZSBleHRlbnNpb25BUEkgdG8gYWNjZXNzIGludGVybmFsIEZFIGNvbnRyb2xsZXJzXG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihvQ29udHJvbGxlcik7XG5cblx0XHQvLyBUT0RPOiBjdXJyZW50bHkgd2UgaGF2ZSB1bmRlZmluZWQgYW5kIHRydWUuLi4gYW5kIG91ciBjcmVhdGlvbiByb3cgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoaXMuXG5cdFx0Ly8gSSB3b3VsZCBtb3ZlIHRoaXMgbG9naWMgdG8gdGhpcyBwbGFjZSBhcyBpdCdzIGhhcmQgdG8gdW5kZXJzdGFuZCBmb3IgZmllbGQgY29uc3VtZXJcblx0XHRwVmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyBUaGUgZXZlbnQgaXMgZ29uZS4gRm9yIG5vdyB3ZSdsbCBqdXN0IHJlY3JlYXRlIGl0IGFnYWluXG5cdFx0XHRcdChvRXZlbnQgYXMgYW55KS5vU291cmNlID0gb1NvdXJjZTtcblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm1QYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdHZhbGlkOiBiVmFsaWRcblx0XHRcdFx0fTtcblx0XHRcdFx0KEZpZWxkQVBJIGFzIGFueSkuaGFuZGxlQ2hhbmdlKG9FdmVudCwgb0NvbnRyb2xsZXIpO1xuXHRcdFx0XHRpZiAoIWJJc1RyYW5zaWVudCkge1xuXHRcdFx0XHRcdC8vIHRyaWdnZXIgc2lkZSBlZmZlY3RzIHdpdGhvdXQgcmVnaXN0ZXJpbmcgZGVmZXJyZWQgc2lkZSBlZmZlY3RzXG5cdFx0XHRcdFx0Ly8gZGVmZXJyZWQgc2lkZSBlZmZlY3RzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgcHJlcGFyZURlZmVycmVkU2lkZUVmZmVjdHNGb3JGaWVsZCBiZWZvcmUgcFZhbHVlUmVzb2x2ZWQgaXMgcmVzb2x2ZWQuXG5cdFx0XHRcdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRDaGFuZ2Uob0V2ZW50LCBmaWVsZFZhbGlkaXR5LCBwVmFsdWVSZXNvbHZlZCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVjb21tZW5kYXRpb25zXG5cdFx0XHRcdEZpZWxkUnVudGltZS5fZmV0Y2hSZWNvbW1lbmRhdGlvbnMoZmllbGQgYXMgRmllbGQsIG9Db250cm9sbGVyKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoLypvRXJyb3I6IGFueSovKSB7XG5cdFx0XHRcdC8vIFRoZSBldmVudCBpcyBnb25lLiBGb3Igbm93IHdlJ2xsIGp1c3QgcmVjcmVhdGUgaXQgYWdhaW5cblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm9Tb3VyY2UgPSBvU291cmNlO1xuXHRcdFx0XHQob0V2ZW50IGFzIGFueSkubVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0dmFsaWQ6IGZhbHNlXG5cdFx0XHRcdH07XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIlByZXJlcXVpc2l0ZXMgb24gRmllbGQgZm9yIHRoZSBTaWRlRWZmZWN0cyBhbmQgUmVjb21tZW5kYXRpb25zIGhhdmUgYmVlbiByZWplY3RlZFwiKTtcblx0XHRcdFx0Ly8gYXMgdGhlIFVJIG1pZ2h0IG5lZWQgdG8gcmVhY3Qgb24uIFdlIGNvdWxkIHByb3ZpZGUgYSBwYXJhbWV0ZXIgdG8gaW5mb3JtIGlmIHZhbGlkYXRpb25cblx0XHRcdFx0Ly8gd2FzIHN1Y2Nlc3NmdWw/XG5cdFx0XHRcdChGaWVsZEFQSSBhcyBhbnkpLmhhbmRsZUNoYW5nZShvRXZlbnQsIG9Db250cm9sbGVyKTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gRm9yIHRoZSBFZGl0RmxvdyBzeW5jaHJvbml6YXRpb24sIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggcmVxdWVzdCB0byBiZSBzZW50LCBvdGhlcndpc2UgdGhlcmUgY291bGQgYmUgZS5nLiBhY3Rpb24gaW52b2tlZCBpbiBwYXJhbGxlbCB3aXRoIHRoZSBQQVRDSCByZXF1ZXN0LlxuXHRcdC8vIFRoaXMgaXMgZG9uZSB3aXRoIGEgMC10aW1lb3V0LCB0byBhbGxvdyBmb3IgdGhlICdwYXRjaFNlbnQnIGV2ZW50IHRvIGJlIHNlbnQgYnkgdGhlIGJpbmRpbmcgKHRoZW4gdGhlIGludGVybmFsIGVkaXQgZmxvdyBzeW5jaHJvbml6YXRpb24ga2lja3MgaW4gd2l0aCBFZGl0Rmxvdy5oYW5kbGVQYXRjaFNlbnQpLlxuXHRcdGNvbnN0IHZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQgPSBwVmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRzZXRUaW1lb3V0KHJlc29sdmUsIDApO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKCkgPT4ge30pO1xuXHRcdG9GRUNvbnRyb2xsZXI/LmVkaXRGbG93LnN5bmNUYXNrKHZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQpO1xuXG5cdFx0Ly8gaWYgdGhlIGNvbnRleHQgaXMgdHJhbnNpZW50LCBpdCBtZWFucyB0aGUgcmVxdWVzdCB3b3VsZCBmYWlsIGFueXdheSBhcyB0aGUgcmVjb3JkIGRvZXMgbm90IGV4aXN0IGluIHJlYWxpdHlcblx0XHQvLyBUT0RPOiBzaG91bGQgdGhlIHJlcXVlc3QgYmUgbWFkZSBpbiBmdXR1cmUgaWYgdGhlIGNvbnRleHQgaXMgdHJhbnNpZW50P1xuXHRcdGlmIChiSXNUcmFuc2llbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5wcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkKG9FdmVudCwgZmllbGRWYWxpZGl0eSwgcFZhbHVlUmVzb2x2ZWQpO1xuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmllbGQpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiBmaWVsZFZhbGlkaXR5KSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nID0gZ2V0Q29sbGFib3JhdGlvbkJpbmRpbmcoZmllbGQpO1xuXG5cdFx0XHRjb25zdCBkYXRhID0gW1xuXHRcdFx0XHQuLi4oKGZpZWxkLmdldEJpbmRpbmdJbmZvKFwidmFsdWVcIikgfHwgZmllbGQuZ2V0QmluZGluZ0luZm8oXCJzZWxlY3RlZFwiKSk/LnBhcnRzIHx8IFtdKSxcblx0XHRcdFx0Li4uKGZpZWxkLmdldEJpbmRpbmdJbmZvKFwiYWRkaXRpb25hbFZhbHVlXCIpPy5wYXJ0cyB8fCBbXSlcblx0XHRcdF1cblx0XHRcdFx0LmZpbHRlcigocGFydCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBwYXJ0Py5wYXRoICE9PSB1bmRlZmluZWQgJiYgcGFydC5wYXRoLmluZGV4T2YoXCJAQFwiKSA8IDA7IC8vIFJlbW92ZSBiaW5kaW5nIHBhcnRzIHdpdGggQEAgdGhhdCBtYWtlIG5vIHNlbnNlIGZvciBjb2xsYWJvcmF0aW9uIG1lc3NhZ2VzXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5tYXAoZnVuY3Rpb24gKHBhcnQ6IHsgcGF0aDogc3RyaW5nIH0pIHtcblx0XHRcdFx0XHRyZXR1cm4gYCR7ZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke3BhcnQucGF0aH1gO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0Ly8gRnJvbSB0aGlzIHBvaW50LCB3ZSB3aWxsIGFsd2F5cyBzZW5kIGEgY29sbGFib3JhdGlvbiBtZXNzYWdlIChVTkxPQ0sgb3IgQ0hBTkdFKSwgc28gd2UgcmV0YWluXG5cdFx0XHQvLyBhIHBvdGVudGlhbCBVTkxPQ0sgdGhhdCB3b3VsZCBiZSBzZW50IGluIGhhbmRsZUZvY3VzT3V0LCB0byBtYWtlIHN1cmUgaXQncyBzZW50IGFmdGVyIHRoZSBDSEFOR0UgbWVzc2FnZVxuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5yZXRhaW5Bc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblxuXHRcdFx0Y29uc3QgdXBkYXRlQ29sbGFib3JhdGlvbiA9ICgpID0+IHtcblx0XHRcdFx0aWYgKGJpbmRpbmcuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0XHRcdC8vIFRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHRoZSB1c2VyIC0tPiB3YWl0IHVudGlsIGl0J3Mgc2VudCB0byB0aGUgc2VydmVyIGJlZm9yZSBzZW5kaW5nIGEgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzXG5cdFx0XHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZmllbGQsIHsgYWN0aW9uOiBBY3Rpdml0eS5DaGFuZ2UsIGNvbnRlbnQ6IGRhdGEgfSk7XG5cdFx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnJlbGVhc2VBc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnJlbGVhc2VBc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGlmIChvU291cmNlRmllbGQuaXNBKFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0XHRwVmFsdWVSZXNvbHZlZFxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdHVwZGF0ZUNvbGxhYm9yYXRpb24oKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgbGl2ZSBjaGFuZ2UgZXZlbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBoYW5kbGVMaXZlQ2hhbmdlXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVMaXZlQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0KEZpZWxkQVBJIGFzIEZpZWxkQVBJVHlwZSkuaGFuZGxlTGl2ZUNoYW5nZShldmVudCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBzZW5kIGNvbGxhYm9yYXRpb24gbWVzc2FnZXMgZnJvbSBhIEZpbGVVcGxvYWRlci5cblx0ICpcblx0ICogQHBhcmFtIGZpbGVVcGxvYWRlclxuXHQgKiBAcGFyYW0gYWN0aW9uXG5cdCAqL1xuXHRfc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlcjogRmlsZVVwbG9hZGVyLCBhY3Rpb246IEFjdGl2aXR5KTogdm9pZCB7XG5cdFx0aWYgKENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmlsZVVwbG9hZGVyKSkge1xuXHRcdFx0Y29uc3QgYmluZGluZ1BhdGggPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCk/LmdldFByb3BlcnR5KFwicHJvcGVydHlQYXRoXCIpO1xuXHRcdFx0Y29uc3QgZnVsbFBhdGggPSBgJHtmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke2JpbmRpbmdQYXRofWA7XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZmlsZVVwbG9hZGVyLCB7IGFjdGlvbiwgY29udGVudDogZnVsbFBhdGggfSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIHdoZW4gYSBGaWxlVXBsb2FkIGRpYWxvZyBpcyBvcGVuZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBldmVudFxuXHQgKi9cblx0aGFuZGxlT3BlblVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyO1xuXHRcdEZpZWxkUnVudGltZS5fc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlciwgQWN0aXZpdHkuTG9jayk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgd2hlbiBhIEZpbGVVcGxvYWQgZGlhbG9nIGlzIGNsb3NlZC5cblx0ICpcblx0ICogQHBhcmFtIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVDbG9zZVVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyO1xuXHRcdEZpZWxkUnVudGltZS5fc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlciwgQWN0aXZpdHkuVW5sb2NrKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmllbGQgdmFsdWUgYW5kIHZhbGlkaXR5IG9uIGEgY2hhbmdlIGV2ZW50LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZmllbGRWYWxpZGl0eU9uQ2hhbmdlXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIGNoYW5nZSBldmVudFxuXHQgKiBAcmV0dXJucyBGaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHlcblx0ICovXG5cdGdldEZpZWxkU3RhdGVPbkNoYW5nZTogZnVuY3Rpb24gKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB7XG5cdFx0ZmllbGQ6IEZpZWxkO1xuXHRcdHN0YXRlOiB7XG5cdFx0XHRmaWVsZFZhbHVlPzogdW5rbm93bjtcblx0XHRcdHZhbGlkaXR5PzogYm9vbGVhbjtcblx0XHR9O1xuXHR9IHtcblx0XHRsZXQgb1NvdXJjZUZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpIGFzIGFueSxcblx0XHRcdG1GaWVsZFN0YXRlOiB7XG5cdFx0XHRcdGZpZWxkVmFsdWU/OiB1bmtub3duO1xuXHRcdFx0XHR2YWxpZGl0eT86IGJvb2xlYW47XG5cdFx0XHR9ID0ge307XG5cdFx0Y29uc3QgX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMgPSBmdW5jdGlvbiAob0JpbmRpbmc6IGFueSkge1xuXHRcdFx0cmV0dXJuIG9CaW5kaW5nICYmIG9CaW5kaW5nLmdldERhdGFTdGF0ZSgpID8gb0JpbmRpbmcuZ2V0RGF0YVN0YXRlKCkuZ2V0SW52YWxpZFZhbHVlKCkgPT09IHVuZGVmaW5lZCA6IHRydWU7XG5cdFx0fTtcblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRBUElcIikpIHtcblx0XHRcdG9Tb3VyY2VGaWVsZCA9IChvU291cmNlRmllbGQgYXMgRW5oYW5jZVdpdGhVSTU8RmllbGRBUEk+KS5nZXRDb250ZW50KCk7XG5cdFx0fVxuXG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0EoRmllbGRXcmFwcGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpKSAmJiBvU291cmNlRmllbGQuZ2V0RWRpdE1vZGUoKSA9PT0gXCJFZGl0YWJsZVwiKSB7XG5cdFx0XHRvU291cmNlRmllbGQgPSBvU291cmNlRmllbGQuZ2V0Q29udGVudEVkaXQoKVswXTtcblx0XHR9XG5cblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdGxldCBiSXNWYWxpZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWxpZFwiKSB8fCBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiaXNWYWxpZFwiKTtcblx0XHRcdGlmIChiSXNWYWxpZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGlmIChvU291cmNlRmllbGQuZ2V0TWF4Q29uZGl0aW9ucygpID09PSAxKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1ZhbHVlQmluZGluZ0luZm8gPSBvU291cmNlRmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKTtcblx0XHRcdFx0XHRiSXNWYWxpZCA9IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzKG9WYWx1ZUJpbmRpbmdJbmZvICYmIG9WYWx1ZUJpbmRpbmdJbmZvLmJpbmRpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvU291cmNlRmllbGQuZ2V0VmFsdWUoKSA9PT0gXCJcIiAmJiAhb1NvdXJjZUZpZWxkLmdldFByb3BlcnR5KFwicmVxdWlyZWRcIikpIHtcblx0XHRcdFx0XHRiSXNWYWxpZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG1GaWVsZFN0YXRlID0ge1xuXHRcdFx0XHRmaWVsZFZhbHVlOiBvU291cmNlRmllbGQuZ2V0VmFsdWUoKSxcblx0XHRcdFx0dmFsaWRpdHk6ICEhYklzVmFsaWRcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG9Tb3VyY2VGaWVsZCBleHRlbmRzIGZyb20gYSBGaWxlVXBsb2FkZXIgfHwgSW5wdXQgfHwgaXMgYSBDaGVja0JveFxuXHRcdFx0Y29uc3Qgb0JpbmRpbmcgPVxuXHRcdFx0XHRvU291cmNlRmllbGQuZ2V0QmluZGluZyhcInVwbG9hZFVybFwiKSB8fCBvU291cmNlRmllbGQuZ2V0QmluZGluZyhcInZhbHVlXCIpIHx8IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nKFwic2VsZWN0ZWRcIik7XG5cdFx0XHRtRmllbGRTdGF0ZSA9IHtcblx0XHRcdFx0ZmllbGRWYWx1ZTogb0JpbmRpbmcgJiYgb0JpbmRpbmcuZ2V0VmFsdWUoKSxcblx0XHRcdFx0dmFsaWRpdHk6IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzKG9CaW5kaW5nKVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpZWxkOiBvU291cmNlRmllbGQsXG5cdFx0XHRzdGF0ZTogbUZpZWxkU3RhdGVcblx0XHR9O1xuXHR9LFxuXHRfZm5GaXhIYXNoUXVlcnlTdHJpbmc6IGZ1bmN0aW9uIChzQ3VycmVudEhhc2g6IGFueSkge1xuXHRcdGlmIChzQ3VycmVudEhhc2ggJiYgc0N1cnJlbnRIYXNoLmluZGV4T2YoXCI/XCIpICE9PSAtMSkge1xuXHRcdFx0Ly8gc0N1cnJlbnRIYXNoIGNhbiBjb250YWluIHF1ZXJ5IHN0cmluZywgY3V0IGl0IG9mZiFcblx0XHRcdHNDdXJyZW50SGFzaCA9IHNDdXJyZW50SGFzaC5zcGxpdChcIj9cIilbMF07XG5cdFx0fVxuXHRcdHJldHVybiBzQ3VycmVudEhhc2g7XG5cdH0sXG5cdF9mbkdldExpbmtJbmZvcm1hdGlvbjogZnVuY3Rpb24gKF9vU291cmNlOiBhbnksIF9vTGluazogYW55LCBfc1Byb3BlcnR5UGF0aDogYW55LCBfc1ZhbHVlOiBhbnksIGZuU2V0QWN0aXZlOiBhbnkpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBfb0xpbmsgJiYgX29MaW5rLmdldE1vZGVsKCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Nb2RlbCAmJiBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgc1NlbWFudGljT2JqZWN0TmFtZSA9IF9zVmFsdWUgfHwgKF9vU291cmNlICYmIF9vU291cmNlLmdldFZhbHVlKCkpO1xuXHRcdGNvbnN0IG9WaWV3ID0gX29MaW5rICYmIENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoX29MaW5rKTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldyAmJiBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpO1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBvVmlldyAmJiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQob1ZpZXcpO1xuXHRcdGNvbnN0IG9TaGVsbFNlcnZpY2VIZWxwZXIgPSBvQXBwQ29tcG9uZW50ICYmIG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdGNvbnN0IHBHZXRMaW5rc1Byb21pc2UgPSBvU2hlbGxTZXJ2aWNlSGVscGVyICYmIG9TaGVsbFNlcnZpY2VIZWxwZXIuZ2V0TGlua3NXaXRoQ2FjaGUoW1t7IHNlbWFudGljT2JqZWN0OiBzU2VtYW50aWNPYmplY3ROYW1lIH1dXSk7XG5cdFx0Y29uc3QgYVNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zID1cblx0XHRcdG9NZXRhTW9kZWwgJiYgb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7X3NQcm9wZXJ0eVBhdGh9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uc2ApO1xuXHRcdHJldHVybiB7XG5cdFx0XHRTZW1hbnRpY09iamVjdE5hbWU6IHNTZW1hbnRpY09iamVjdE5hbWUsXG5cdFx0XHRTZW1hbnRpY09iamVjdEZ1bGxQYXRoOiBfc1Byb3BlcnR5UGF0aCwgLy9zU2VtYW50aWNPYmplY3RGdWxsUGF0aCxcblx0XHRcdE1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdEludGVybmFsTW9kZWxDb250ZXh0OiBvSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRTaGVsbFNlcnZpY2VIZWxwZXI6IG9TaGVsbFNlcnZpY2VIZWxwZXIsXG5cdFx0XHRHZXRMaW5rc1Byb21pc2U6IHBHZXRMaW5rc1Byb21pc2UsXG5cdFx0XHRTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uczogYVNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zLFxuXHRcdFx0Zm5TZXRBY3RpdmU6IGZuU2V0QWN0aXZlXG5cdFx0fTtcblx0fSxcblx0X2ZuUXVpY2tWaWV3SGFzTmV3Q29uZGl0aW9uOiBmdW5jdGlvbiAob1NlbWFudGljT2JqZWN0UGF5bG9hZDogYW55LCBfb0xpbmtJbmZvOiBhbnkpIHtcblx0XHRpZiAob1NlbWFudGljT2JqZWN0UGF5bG9hZCAmJiBvU2VtYW50aWNPYmplY3RQYXlsb2FkLnBhdGggJiYgb1NlbWFudGljT2JqZWN0UGF5bG9hZC5wYXRoID09PSBfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0RnVsbFBhdGgpIHtcblx0XHRcdC8vIEdvdCB0aGUgcmVzb2x2ZWQgU2VtYW50aWMgT2JqZWN0IVxuXHRcdFx0Y29uc3QgYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciA9XG5cdFx0XHRcdG9TZW1hbnRpY09iamVjdFBheWxvYWRbIV9vTGlua0luZm8uU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMgPyBcIkhhc1RhcmdldHNOb3RGaWx0ZXJlZFwiIDogXCJIYXNUYXJnZXRzXCJdO1xuXHRcdFx0X29MaW5rSW5mby5mblNldEFjdGl2ZSghIWJSZXN1bHRpbmdOZXdDb25kaXRpb25Gb3JDb25kaXRpb25hbFdyYXBwZXIpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sXG5cdF9mblF1aWNrVmlld1NldE5ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlcjogZnVuY3Rpb24gKF9vTGlua0luZm86IGFueSwgX29GaW5hbFNlbWFudGljT2JqZWN0czogYW55KSB7XG5cdFx0aWYgKF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdKSB7XG5cdFx0XHRsZXQgc1RtcFBhdGgsIG9TZW1hbnRpY09iamVjdFBheWxvYWQ7XG5cdFx0XHRjb25zdCBhU2VtYW50aWNPYmplY3RQYXRocyA9IE9iamVjdC5rZXlzKF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdKTtcblx0XHRcdGZvciAoY29uc3QgaVBhdGhzQ291bnQgaW4gYVNlbWFudGljT2JqZWN0UGF0aHMpIHtcblx0XHRcdFx0c1RtcFBhdGggPSBhU2VtYW50aWNPYmplY3RQYXRoc1tpUGF0aHNDb3VudF07XG5cdFx0XHRcdG9TZW1hbnRpY09iamVjdFBheWxvYWQgPVxuXHRcdFx0XHRcdF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdICYmXG5cdFx0XHRcdFx0X29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV1bc1RtcFBhdGhdO1xuXHRcdFx0XHRpZiAoRmllbGRSdW50aW1lLl9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbihvU2VtYW50aWNPYmplY3RQYXlsb2FkLCBfb0xpbmtJbmZvKSkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRfZm5VcGRhdGVTZW1hbnRpY09iamVjdHNUYXJnZXRNb2RlbDogZnVuY3Rpb24gKG9FdmVudDogYW55LCBzVmFsdWU6IGFueSwgb0NvbnRyb2w6IGFueSwgX3NQcm9wZXJ0eVBhdGg6IGFueSkge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQgJiYgb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGxldCBmblNldEFjdGl2ZTtcblx0XHRpZiAob0NvbnRyb2wuaXNBKFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHRmblNldEFjdGl2ZSA9IChiQWN0aXZlOiBib29sZWFuKSA9PiBvQ29udHJvbC5zZXRBY3RpdmUoYkFjdGl2ZSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbC5pc0EoXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpKSB7XG5cdFx0XHRmblNldEFjdGl2ZSA9IChiQWN0aXZlOiBib29sZWFuKSA9PiBvQ29udHJvbC5zZXRUaXRsZUFjdGl2ZShiQWN0aXZlKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0NvbmRpdGlvbmFsV3JhcHBlciA9IG9Db250cm9sICYmIG9Db250cm9sLmdldFBhcmVudCgpO1xuXHRcdGlmIChvQ29uZGl0aW9uYWxXcmFwcGVyICYmIG9Db25kaXRpb25hbFdyYXBwZXIuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db25kaXRpb25hbFdyYXBwZXIuc2V0Q29uZGl0aW9uKGJBY3RpdmUpO1xuXHRcdH1cblx0XHRpZiAoZm5TZXRBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3Qgb0xpbmtJbmZvID0gRmllbGRSdW50aW1lLl9mbkdldExpbmtJbmZvcm1hdGlvbihvU291cmNlLCBvQ29udHJvbCwgX3NQcm9wZXJ0eVBhdGgsIHNWYWx1ZSwgZm5TZXRBY3RpdmUpO1xuXHRcdFx0b0xpbmtJbmZvLmZuU2V0QWN0aXZlID0gZm5TZXRBY3RpdmU7XG5cdFx0XHRjb25zdCBzQ3VycmVudEhhc2ggPSBGaWVsZFJ1bnRpbWUuX2ZuRml4SGFzaFF1ZXJ5U3RyaW5nKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvQ29udHJvbCkuZ2V0U2hlbGxTZXJ2aWNlcygpLmdldEhhc2goKSk7XG5cdFx0XHRDb21tb25VdGlscy51cGRhdGVTZW1hbnRpY1RhcmdldHMoXG5cdFx0XHRcdFtvTGlua0luZm8uR2V0TGlua3NQcm9taXNlXSxcblx0XHRcdFx0W3sgc2VtYW50aWNPYmplY3Q6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWUsIHBhdGg6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdEZ1bGxQYXRoIH1dLFxuXHRcdFx0XHRvTGlua0luZm8uSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdHNDdXJyZW50SGFzaFxuXHRcdFx0KVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAob0ZpbmFsU2VtYW50aWNPYmplY3RzOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob0ZpbmFsU2VtYW50aWNPYmplY3RzKSB7XG5cdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyKG9MaW5rSW5mbywgb0ZpbmFsU2VtYW50aWNPYmplY3RzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHVwZGF0ZSBTZW1hbnRpYyBUYXJnZXRzIG1vZGVsXCIsIG9FcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblx0X2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQoX2NvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRpZiAoIV9jb250cm9sLmdldE1vZGVsKCkgfHwgIV9jb250cm9sLmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9LFxuXHRfY2hlY2tDdXN0b21EYXRhVmFsdWVCZWZvcmVVcGRhdGluZ1NlbWFudGljT2JqZWN0TW9kZWwoX2NvbnRyb2w6IENvbnRyb2wsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBhQ3VzdG9tRGF0YTogQ3VzdG9tRGF0YVtdKTogdm9pZCB7XG5cdFx0bGV0IHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZTogYW55O1xuXHRcdGxldCBvVmFsdWVCaW5kaW5nO1xuXHRcdGNvbnN0IF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nID0gZnVuY3Rpb24gKHNlbWFudGljT2JqZWN0UGF0aFZhbHVlOiBhbnkpIHtcblx0XHRcdHJldHVybiAhKHNlbWFudGljT2JqZWN0UGF0aFZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBzZW1hbnRpY09iamVjdFBhdGhWYWx1ZSA9PT0gXCJvYmplY3RcIik7XG5cdFx0fTtcblx0XHQvLyByZW1vdmUgdGVjaG5pY2FsIGN1c3RvbSBkYXRhcyBzZXQgYnkgVUk1XG5cdFx0YUN1c3RvbURhdGEgPSBhQ3VzdG9tRGF0YS5maWx0ZXIoKGN1c3RvbURhdGEpID0+IGN1c3RvbURhdGEuZ2V0S2V5KCkgIT09IFwic2FwLXVpLWN1c3RvbS1zZXR0aW5nc1wiKTtcblx0XHRmb3IgKGNvbnN0IGluZGV4IGluIGFDdXN0b21EYXRhKSB7XG5cdFx0XHRzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUgPSBhQ3VzdG9tRGF0YVtpbmRleF0uZ2V0VmFsdWUoKTtcblx0XHRcdGlmICghc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlICYmIF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nKHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSkpIHtcblx0XHRcdFx0b1ZhbHVlQmluZGluZyA9IGFDdXN0b21EYXRhW2luZGV4XS5nZXRCaW5kaW5nKFwidmFsdWVcIik7XG5cdFx0XHRcdGlmIChvVmFsdWVCaW5kaW5nKSB7XG5cdFx0XHRcdFx0b1ZhbHVlQmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJjaGFuZ2VcIiwgZnVuY3Rpb24gKF9vQ2hhbmdlRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0RmllbGRSdW50aW1lLl9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsKF9vQ2hhbmdlRXZlbnQsIG51bGwsIF9jb250cm9sLCBwcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nKHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSkpIHtcblx0XHRcdFx0RmllbGRSdW50aW1lLl9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsKG51bGwsIHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSwgX2NvbnRyb2wsIHByb3BlcnR5UGF0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRMaW5rTW9kZWxDb250ZXh0Q2hhbmdlOiBmdW5jdGlvbiAob0V2ZW50OiBhbnksIHNQcm9wZXJ0eTogYW55LCBzUGF0aFRvUHJvcGVydHk6IGFueSk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0aWYgKEZpZWxkUnVudGltZS5fY2hlY2tDb250cm9sSGFzTW9kZWxBbmRCaW5kaW5nQ29udGV4dChjb250cm9sKSkge1xuXHRcdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IGAke3NQYXRoVG9Qcm9wZXJ0eX0vJHtzUHJvcGVydHl9YDtcblx0XHRcdGNvbnN0IG1kY0xpbmsgPSBjb250cm9sLmdldERlcGVuZGVudHMoKS5sZW5ndGggPyBjb250cm9sLmdldERlcGVuZGVudHMoKVswXSA6IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IGFDdXN0b21EYXRhID0gbWRjTGluaz8uZ2V0Q3VzdG9tRGF0YSgpO1xuXHRcdFx0aWYgKGFDdXN0b21EYXRhICYmIGFDdXN0b21EYXRhLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0RmllbGRSdW50aW1lLl9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbChjb250cm9sLCBzUHJvcGVydHlQYXRoLCBhQ3VzdG9tRGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRvcGVuRXh0ZXJuYWxMaW5rOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgYW55O1xuXHRcdGlmIChzb3VyY2UuZGF0YShcInVybFwiKSAmJiBzb3VyY2UuZ2V0UHJvcGVydHkoXCJ0ZXh0XCIpICE9PSBcIlwiKSB7XG5cdFx0XHQvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGluIHRoZSBzYW1lIHRhYiBhcyB0aGUgbGluay4gSXQgd2FzIGRvbmUgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgdHlwZSBvZiBsaW5rcy5cblx0XHRcdG9wZW5XaW5kb3coc291cmNlLmRhdGEoXCJ1cmxcIiksIFwiX3NlbGZcIik7XG5cdFx0fVxuXHR9LFxuXHRjcmVhdGVQb3BvdmVyV2l0aE5vVGFyZ2V0czogZnVuY3Rpb24gKG1kY0xpbms6IE1kY0xpbmspIHtcblx0XHRjb25zdCBtZGNMaW5rSWQgPSBtZGNMaW5rLmdldElkKCk7XG5cdFx0Y29uc3QgaWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3M6ICRJbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyA9IHtcblx0XHRcdHRpdGxlOiBnZXRSZXNvdXJjZU1vZGVsKG1kY0xpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKS5nZXRUZXh0KFwiTV9JTExVU1RSQVRFRE1FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRkZXNjcmlwdGlvbjogZ2V0UmVzb3VyY2VNb2RlbChtZGNMaW5rIGFzIHVua25vd24gYXMgQ29udHJvbCkuZ2V0VGV4dChcIk1fSUxMVVNUUkFURURNRVNTQUdFX0RFU0NSSVBUSU9OXCIpLFxuXHRcdFx0ZW5hYmxlRm9ybWF0dGVkVGV4dDogdHJ1ZSxcblx0XHRcdGlsbHVzdHJhdGlvblNpemU6IFwiRG90XCIsIC8vIElsbHVzdHJhdGVkTWVzc2FnZVNpemUuRG90IG5vdCBhdmFpbGFibGUgaW4gXCJAdHlwZXMvb3BlbnVpNVwiOiBcIjEuMTA3LjBcIlxuXHRcdFx0aWxsdXN0cmF0aW9uVHlwZTogSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5UZW50XG5cdFx0fTtcblx0XHRjb25zdCBpbGx1c3RyYXRlZE1lc3NhZ2UgPSBuZXcgSWxsdXN0cmF0ZWRNZXNzYWdlKGAke21kY0xpbmtJZH0taWxsdXN0cmF0ZWRtZXNzYWdlYCwgaWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3MpO1xuXHRcdGNvbnN0IHBvcG92ZXJTZXR0aW5nczogJFJlc3BvbnNpdmVQb3BvdmVyU2V0dGluZ3MgPSB7XG5cdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nOiBmYWxzZSxcblx0XHRcdHNob3dIZWFkZXI6IERldmljZS5zeXN0ZW0ucGhvbmUsXG5cdFx0XHRwbGFjZW1lbnQ6IG1vYmlsZWxpYnJhcnkuUGxhY2VtZW50VHlwZS5BdXRvLFxuXHRcdFx0Y29udGVudDogW2lsbHVzdHJhdGVkTWVzc2FnZV0sXG5cdFx0XHRhZnRlckNsb3NlOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0XHRcdFx0aWYgKGV2ZW50LmdldFNvdXJjZSgpKSB7XG5cdFx0XHRcdFx0ZXZlbnQuZ2V0U291cmNlKCkuZGVzdHJveSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRyZXR1cm4gbmV3IFJlc3BvbnNpdmVQb3BvdmVyKGAke21kY0xpbmtJZH0tcG9wb3ZlcmAsIHBvcG92ZXJTZXR0aW5ncyk7XG5cdH0sXG5cdG9wZW5MaW5rOiBhc3luYyBmdW5jdGlvbiAobWRjTGluazogTWRjTGluaywgc2FwbUxpbms6IExpbmspIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgaFJlZiA9IGF3YWl0IG1kY0xpbmsuZ2V0VHJpZ2dlckhyZWYoKTtcblx0XHRcdGlmICghaFJlZikge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IGxpbmtJdGVtcyA9IGF3YWl0IG1kY0xpbmsucmV0cmlldmVMaW5rSXRlbXMoKTtcblx0XHRcdFx0XHRpZiAobGlua0l0ZW1zPy5sZW5ndGggPT09IDAgJiYgKG1kY0xpbmsgYXMgYW55KS5nZXRQYXlsb2FkKCkuaGFzUXVpY2tWaWV3RmFjZXRzID09PSBcImZhbHNlXCIpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBvcG92ZXI6IFJlc3BvbnNpdmVQb3BvdmVyID0gRmllbGRSdW50aW1lLmNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzKG1kY0xpbmspO1xuXHRcdFx0XHRcdFx0bWRjTGluay5hZGREZXBlbmRlbnQocG9wb3Zlcik7XG5cdFx0XHRcdFx0XHRwb3BvdmVyLm9wZW5CeShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhd2FpdCBtZGNMaW5rLm9wZW4oc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDYW5ub3QgcmV0cmlldmUgdGhlIFF1aWNrVmlldyBQb3BvdmVyIGRpYWxvZzogJHtlcnJvcn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoc2FwbUxpbmspO1xuXHRcdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsSGFzaCA9IHNoZWxsU2VydmljZS5wYXJzZVNoZWxsSGFzaChoUmVmKTtcblx0XHRcdFx0Y29uc3QgbmF2QXJncyA9IHtcblx0XHRcdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBzaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRhY3Rpb246IHNoZWxsSGFzaC5hY3Rpb25cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcmFtczogc2hlbGxIYXNoLnBhcmFtc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdEtlZXBBbGl2ZUhlbHBlci5zdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoKHZpZXcsIHNoZWxsSGFzaCk7XG5cblx0XHRcdFx0aWYgKENvbW1vblV0aWxzLmlzU3RpY2t5RWRpdE1vZGUoc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRcdC8vVVJMIHBhcmFtcyBhbmQgeGFwcFN0YXRlIGhhcyBiZWVuIGdlbmVyYXRlZCBlYXJsaWVyIGhlbmNlIHVzaW5nIHRvRXh0ZXJuYWxcblx0XHRcdFx0XHRzaGVsbFNlcnZpY2UudG9FeHRlcm5hbChuYXZBcmdzIGFzIGFueSwgYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV3SHJlZiA9IGF3YWl0IHNoZWxsU2VydmljZS5ocmVmRm9yRXh0ZXJuYWxBc3luYyhuYXZBcmdzLCBhcHBDb21wb25lbnQpO1xuXHRcdFx0XHRcdFx0b3BlbldpbmRvdyhuZXdIcmVmKTtcblx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKGBFcnJvciB3aGlsZSByZXRpcmV2aW5nIGhyZWZGb3JFeHRlcm5hbCA6ICR7ZXJyb3J9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihgRXJyb3IgdHJpZ2dlcmluZyBsaW5rIEhyZWY6ICR7ZXJyb3J9YCk7XG5cdFx0fVxuXHR9LFxuXHRwcmVzc0xpbms6IGFzeW5jIGZ1bmN0aW9uIChvRXZlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgc2FwbUxpbmsgPSBvU291cmNlLmlzQShcInNhcC5tLk9iamVjdElkZW50aWZpZXJcIilcblx0XHRcdD8gb1NvdXJjZS5maW5kRWxlbWVudHMoZmFsc2UsIChlbGVtOiBFbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0uaXNBKFwic2FwLm0uTGlua1wiKTtcblx0XHRcdCAgfSlbMF1cblx0XHRcdDogb1NvdXJjZTtcblxuXHRcdGlmIChvU291cmNlLmdldERlcGVuZGVudHMoKSAmJiBvU291cmNlLmdldERlcGVuZGVudHMoKS5sZW5ndGggPiAwICYmIHNhcG1MaW5rLmdldFByb3BlcnR5KFwidGV4dFwiKSAhPT0gXCJcIikge1xuXHRcdFx0Y29uc3Qgb0ZpZWxkSW5mbyA9IG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpWzBdO1xuXHRcdFx0aWYgKG9GaWVsZEluZm8gJiYgb0ZpZWxkSW5mby5pc0EoXCJzYXAudWkubWRjLkxpbmtcIikpIHtcblx0XHRcdFx0YXdhaXQgRmllbGRSdW50aW1lLm9wZW5MaW5rKG9GaWVsZEluZm8sIHNhcG1MaW5rKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNhcG1MaW5rO1xuXHR9LFxuXHR1cGxvYWRTdHJlYW06IGZ1bmN0aW9uIChjb250cm9sbGVyOiBDb250cm9sbGVyLCBldmVudDogRmlsZVVwbG9hZGVyJENoYW5nZUV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyLFxuXHRcdFx0RkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKGNvbnRyb2xsZXIpLFxuXHRcdFx0ZmlsZVdyYXBwZXIgPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcixcblx0XHRcdHVwbG9hZFVybCA9IGZpbGVXcmFwcGVyLmdldFVwbG9hZFVybCgpO1xuXG5cdFx0aWYgKHVwbG9hZFVybCAhPT0gXCJcIikge1xuXHRcdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KHRydWUpO1xuXG5cdFx0XHQvLyB1c2UgdXBsb2FkVXJsIGZyb20gRmlsZVdyYXBwZXIgd2hpY2ggcmV0dXJucyBhIGNhbm9uaWNhbCBVUkxcblx0XHRcdGZpbGVVcGxvYWRlci5zZXRVcGxvYWRVcmwodXBsb2FkVXJsKTtcblxuXHRcdFx0ZmlsZVVwbG9hZGVyLnJlbW92ZUFsbEhlYWRlclBhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IHRva2VuID0gKGZpbGVVcGxvYWRlci5nZXRNb2RlbCgpIGFzIGFueSk/LmdldEh0dHBIZWFkZXJzKClbXCJYLUNTUkYtVG9rZW5cIl07XG5cdFx0XHRpZiAodG9rZW4pIHtcblx0XHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuID0gbmV3IEZpbGVVcGxvYWRlclBhcmFtZXRlcigpO1xuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4uc2V0TmFtZShcIngtY3NyZi10b2tlblwiKTtcblx0XHRcdFx0aGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuLnNldFZhbHVlKHRva2VuKTtcblx0XHRcdFx0ZmlsZVVwbG9hZGVyLmFkZEhlYWRlclBhcmFtZXRlcihoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZVRhZyA9IChmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbCk/LmdldFByb3BlcnR5KFwiQG9kYXRhLmV0YWdcIik7XG5cdFx0XHRpZiAoZVRhZykge1xuXHRcdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJFVGFnID0gbmV3IEZpbGVVcGxvYWRlclBhcmFtZXRlcigpO1xuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJFVGFnLnNldE5hbWUoXCJJZi1NYXRjaFwiKTtcblx0XHRcdFx0Ly8gSWdub3JlIEVUYWcgaW4gY29sbGFib3JhdGlvbiBkcmFmdFxuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJFVGFnLnNldFZhbHVlKENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmlsZVVwbG9hZGVyKSA/IFwiKlwiIDogZVRhZyk7XG5cdFx0XHRcdGZpbGVVcGxvYWRlci5hZGRIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyUGFyYW1ldGVyRVRhZyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJBY2NlcHQgPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJBY2NlcHQuc2V0TmFtZShcIkFjY2VwdFwiKTtcblx0XHRcdGhlYWRlclBhcmFtZXRlckFjY2VwdC5zZXRWYWx1ZShcImFwcGxpY2F0aW9uL2pzb25cIik7XG5cdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckFjY2VwdCk7XG5cblx0XHRcdGNvbnN0IGZpbGVzID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFwiZmlsZXNcIik7XG5cdFx0XHQvLyB0aGVyZSBpcyBvbmx5IG9uZSBmaWxlIGFzIHdlIGFsbG93IHNlbGVjdGluZyBvbmx5IG9uZVxuXHRcdFx0Y29uc3QgZmlsZVR5cGUgPSAoZmlsZXMgJiYgKGZpbGVzWzBdIGFzIEZpbGUpLnR5cGUpIGFzIHN0cmluZztcblxuXHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyQ29udGVudFR5cGUgPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJDb250ZW50VHlwZS5zZXROYW1lKFwiQ29udGVudC1UeXBlXCIpO1xuXHRcdFx0aGVhZGVyUGFyYW1ldGVyQ29udGVudFR5cGUuc2V0VmFsdWUoZmlsZVR5cGUgfHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIik7XG5cdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckNvbnRlbnRUeXBlKTtcblxuXHRcdFx0Ly8gc3luY2hyb25pemUgdXBsb2FkIHdpdGggb3RoZXIgcmVxdWVzdHNcblx0XHRcdGNvbnN0IHVwbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzID0gdGhpcy51cGxvYWRQcm9taXNlcyB8fCB7fTtcblx0XHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0gPSB7XG5cdFx0XHRcdFx0cmVzb2x2ZTogcmVzb2x2ZSxcblx0XHRcdFx0XHRyZWplY3Q6IHJlamVjdFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRmaWxlVXBsb2FkZXIudXBsb2FkKCk7XG5cdFx0XHR9KTtcblx0XHRcdEZFQ29udHJvbGxlci5lZGl0Rmxvdy5zeW5jVGFzayh1cGxvYWRQcm9taXNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC5lcnJvcihnZXRSZXNvdXJjZU1vZGVsKGNvbnRyb2xsZXIpLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIikpO1xuXHRcdH1cblx0fSxcblxuXHRoYW5kbGVVcGxvYWRDb21wbGV0ZTogZnVuY3Rpb24gKFxuXHRcdGV2ZW50OiBGaWxlVXBsb2FkZXIkVXBsb2FkQ29tcGxldGVFdmVudCxcblx0XHRwcm9wZXJ0eUZpbGVOYW1lOiB7IHBhdGg6IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdGNvbnRyb2xsZXI6IENvbnRyb2xsZXJcblx0KSB7XG5cdFx0Y29uc3Qgc3RhdHVzID0gTnVtYmVyKGV2ZW50LmdldFBhcmFtZXRlcihcInN0YXR1c1wiKSksXG5cdFx0XHRmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXIsXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyO1xuXG5cdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KGZhbHNlKTtcblxuXHRcdGNvbnN0IGNvbnRleHQgPSBmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0XHRpZiAoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA+PSA0MDApIHtcblx0XHRcdHRoaXMuX2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkKGV2ZW50KTtcblx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXNbZmlsZVVwbG9hZGVyLmdldElkKCldLnJlamVjdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBuZXdFVGFnID0gKGV2ZW50LmdldFBhcmFtZXRlcihcImhlYWRlcnNcIikgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5ldGFnO1xuXG5cdFx0XHRpZiAobmV3RVRhZykge1xuXHRcdFx0XHQvLyBzZXQgbmV3IGV0YWcgZm9yIGZpbGVuYW1lIHVwZGF0ZSwgYnV0IHdpdGhvdXQgc2VuZGluZyBwYXRjaCByZXF1ZXN0XG5cdFx0XHRcdGNvbnRleHQ/LnNldFByb3BlcnR5KFwiQG9kYXRhLmV0YWdcIiwgbmV3RVRhZywgbnVsbCBhcyBhbnkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgZmlsZW5hbWUgZm9yIGxpbmsgdGV4dFxuXHRcdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkocHJvcGVydHlGaWxlTmFtZS5wYXRoLCBmaWxlVXBsb2FkZXIuZ2V0VmFsdWUoKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGRlbGV0ZSB0aGUgYXZhdGFyIGNhY2hlIHRoYXQgbm90IGdldHMgdXBkYXRlZCBvdGhlcndpc2Vcblx0XHRcdGZpbGVXcmFwcGVyLmF2YXRhcj8ucmVmcmVzaEF2YXRhckNhY2hlQnVzdGluZygpO1xuXG5cdFx0XHR0aGlzLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oZXZlbnQsIGZpbGVXcmFwcGVyLCBjb250cm9sbGVyKTtcblxuXHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGRlbGV0ZSB0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXTtcblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGlzQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKGZpbGVVcGxvYWRlcik7XG5cdFx0aWYgKCFpc0NvbGxhYm9yYXRpb25FbmFibGVkIHx8ICFjb250ZXh0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uRGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdG5vdGlmaWNhdGlvbkRhdGEucHVzaChgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eUZpbGVOYW1lLnBhdGh9YCk7XG5cdFx0fVxuXG5cdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWxlVXBsb2FkZXIpO1xuXHRcdFx0YmluZGluZyA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpLmdldEJpbmRpbmcoKTtcblx0XHR9XG5cdFx0aWYgKGJpbmRpbmcuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCAoKSA9PiB7XG5cdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGZpbGVXcmFwcGVyLCB7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LlVubG9jaywgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHR9XG5cdH0sXG5cblx0X2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkOiBmdW5jdGlvbiAob0V2ZW50OiBGaWxlVXBsb2FkZXIkVXBsb2FkQ29tcGxldGVFdmVudCk6IHZvaWQge1xuXHRcdC8vIGhhbmRsaW5nIG9mIGJhY2tlbmQgZXJyb3JzXG5cdFx0Y29uc3Qgc0Vycm9yID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlUmF3XCIpIHx8IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJyZXNwb25zZVwiKTtcblx0XHRsZXQgc01lc3NhZ2VUZXh0LCBvRXJyb3I7XG5cdFx0dHJ5IHtcblx0XHRcdG9FcnJvciA9IHNFcnJvciAmJiBKU09OLnBhcnNlKHNFcnJvcik7XG5cdFx0XHRzTWVzc2FnZVRleHQgPSBvRXJyb3IuZXJyb3IgJiYgb0Vycm9yLmVycm9yLm1lc3NhZ2U7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c01lc3NhZ2VUZXh0ID0gc0Vycm9yIHx8IGdldFJlc291cmNlTW9kZWwob0V2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2wpLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIik7XG5cdFx0fVxuXHRcdE1lc3NhZ2VCb3guZXJyb3Ioc01lc3NhZ2VUZXh0KTtcblx0fSxcblxuXHRyZW1vdmVTdHJlYW06IGZ1bmN0aW9uIChldmVudDogRXZlbnQsIHByb3BlcnR5RmlsZU5hbWU6IHsgcGF0aDogc3RyaW5nIH0gfCB1bmRlZmluZWQsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBjb250cm9sbGVyOiBDb250cm9sbGVyKSB7XG5cdFx0Y29uc3QgZGVsZXRlQnV0dG9uID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgQnV0dG9uO1xuXHRcdGNvbnN0IGZpbGVXcmFwcGVyID0gZGVsZXRlQnV0dG9uLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgRmlsZVdyYXBwZXI7XG5cdFx0Y29uc3QgY29udGV4dCA9IGZpbGVXcmFwcGVyLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblxuXHRcdC8vIHN0cmVhbXMgYXJlIHJlbW92ZWQgYnkgYXNzaWduaW5nIHRoZSBudWxsIHZhbHVlXG5cdFx0Y29udGV4dC5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIG51bGwpO1xuXHRcdC8vIFdoZW4gc2V0dGluZyB0aGUgcHJvcGVydHkgdG8gbnVsbCwgdGhlIHVwbG9hZFVybCAoQEBNT0RFTC5mb3JtYXQpIGlzIHNldCB0byBcIlwiIGJ5IHRoZSBtb2RlbFxuXHRcdC8vXHR3aXRoIHRoYXQgYW5vdGhlciB1cGxvYWQgaXMgbm90IHBvc3NpYmxlIGJlZm9yZSByZWZyZXNoaW5nIHRoZSBwYWdlXG5cdFx0Ly8gKHJlZnJlc2hpbmcgdGhlIHBhZ2Ugd291bGQgcmVjcmVhdGUgdGhlIFVSTClcblx0XHQvL1x0VGhpcyBpcyB0aGUgd29ya2Fyb3VuZDpcblx0XHQvL1x0V2Ugc2V0IHRoZSBwcm9wZXJ0eSB0byB1bmRlZmluZWQgb25seSBvbiB0aGUgZnJvbnRlbmQgd2hpY2ggd2lsbCByZWNyZWF0ZSB0aGUgdXBsb2FkVXJsXG5cdFx0Y29udGV4dC5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIHVuZGVmaW5lZCwgbnVsbCBhcyBhbnkpO1xuXG5cdFx0dGhpcy5fY2FsbFNpZGVFZmZlY3RzRm9yU3RyZWFtKGV2ZW50LCBmaWxlV3JhcHBlciwgY29udHJvbGxlcik7XG5cblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKGRlbGV0ZUJ1dHRvbik7XG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRcdGlmICghYmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0XHRjb25zdCBvVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZGVsZXRlQnV0dG9uKTtcblx0XHRcdFx0YmluZGluZyA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpLmdldEJpbmRpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0XHRkYXRhLnB1c2goYCR7Y29udGV4dC5nZXRQYXRoKCl9LyR7cHJvcGVydHlGaWxlTmFtZS5wYXRofWApO1xuXHRcdFx0fVxuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGRlbGV0ZUJ1dHRvbiwgeyBhY3Rpb246IEFjdGl2aXR5LkxvY2ssIGNvbnRlbnQ6IGRhdGEgfSk7XG5cblx0XHRcdGJpbmRpbmcuYXR0YWNoRXZlbnRPbmNlKFwicGF0Y2hDb21wbGV0ZWRcIiwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZGVsZXRlQnV0dG9uLCB7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZGVsZXRlQnV0dG9uLCB7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW06IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgb0NvbnRyb2w6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdGNvbnN0IG9GRUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIob0NvbnRyb2xsZXIpO1xuXHRcdGlmIChvQ29udHJvbCAmJiBvQ29udHJvbC5nZXRCaW5kaW5nQ29udGV4dCgpLmlzVHJhbnNpZW50KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sKSB7XG5cdFx0XHRvRXZlbnQub1NvdXJjZSA9IG9Db250cm9sO1xuXHRcdH1cblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZENoYW5nZShvRXZlbnQsIHRoaXMuZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlKG9FdmVudCkuc3RhdGVbXCJ2YWxpZGl0eVwiXSk7XG5cdH0sXG5cblx0Z2V0SWNvbkZvck1pbWVUeXBlOiBmdW5jdGlvbiAoc01pbWVUeXBlOiBhbnkpIHtcblx0XHRyZXR1cm4gSWNvblBvb2wuZ2V0SWNvbkZvck1pbWVUeXBlKHNNaW1lVHlwZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byByZXRyaWV2ZSB0ZXh0IGZyb20gdmFsdWUgbGlzdCBmb3IgRGF0YUZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdFxuXHQgKiBAcGFyYW0gc1Byb3BlcnR5VmFsdWUgVGhlIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBkYXRhZmllbGRcblx0ICogQHBhcmFtIHNQcm9wZXJ0eUZ1bGxQYXRoIFRoZSBwcm9wZXJ0eSBmdWxsIHBhdGgnc1xuXHQgKiBAcGFyYW0gc0Rpc3BsYXlGb3JtYXQgVGhlIGRpc3BsYXkgZm9ybWF0IGZvciB0aGUgZGF0YWZpZWxkXG5cdCAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdmFsdWUgaW4gY29ycmVzcG9uZGluZyBkaXNwbGF5IGZvcm1hdC5cblx0ICovXG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGZ1bmN0aW9uIChzUHJvcGVydHlWYWx1ZTogc3RyaW5nLCBzUHJvcGVydHlGdWxsUGF0aDogc3RyaW5nLCBzRGlzcGxheUZvcm1hdDogc3RyaW5nKSB7XG5cdFx0bGV0IHNUZXh0UHJvcGVydHk6IHN0cmluZztcblx0XHRsZXQgb01ldGFNb2RlbDtcblx0XHRsZXQgc1Byb3BlcnR5TmFtZTogc3RyaW5nO1xuXHRcdGlmIChzUHJvcGVydHlWYWx1ZSkge1xuXHRcdFx0b01ldGFNb2RlbCA9IENvbW1vbkhlbHBlci5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdHNQcm9wZXJ0eU5hbWUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUHJvcGVydHlGdWxsUGF0aH1Ac2FwdWkubmFtZWApO1xuXHRcdFx0cmV0dXJuIG9NZXRhTW9kZWxcblx0XHRcdFx0LnJlcXVlc3RWYWx1ZUxpc3RJbmZvKHNQcm9wZXJ0eUZ1bGxQYXRoLCB0cnVlKVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAobVZhbHVlTGlzdEluZm86IGFueSkge1xuXHRcdFx0XHRcdC8vIHRha2UgdGhlIFwiXCIgb25lIGlmIGV4aXN0cywgb3RoZXJ3aXNlIHRha2UgdGhlIGZpcnN0IG9uZSBpbiB0aGUgb2JqZWN0IFRPRE86IHRvIGJlIGRpc2N1c3NlZFxuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUxpc3RJbmZvID0gbVZhbHVlTGlzdEluZm9bbVZhbHVlTGlzdEluZm9bXCJcIl0gPyBcIlwiIDogT2JqZWN0LmtleXMobVZhbHVlTGlzdEluZm8pWzBdXTtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVMaXN0TW9kZWwgPSBvVmFsdWVMaXN0SW5mby4kbW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbFZhbHVlTGlzdCA9IG9WYWx1ZUxpc3RNb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0XHRjb25zdCBvUGFyYW1XaXRoS2V5ID0gb1ZhbHVlTGlzdEluZm8uUGFyYW1ldGVycy5maW5kKGZ1bmN0aW9uIChvUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvUGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5ICYmIG9QYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkuJFByb3BlcnR5UGF0aCA9PT0gc1Byb3BlcnR5TmFtZTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAob1BhcmFtV2l0aEtleSAmJiAhb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbmNvbnNpc3RlbnQgdmFsdWUgaGVscCBhbm5vdGF0aW9uIGZvciAke3NQcm9wZXJ0eU5hbWV9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9NZXRhTW9kZWxWYWx1ZUxpc3QuZ2V0T2JqZWN0KFxuXHRcdFx0XHRcdFx0YC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofS8ke29QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0YFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAob1RleHRBbm5vdGF0aW9uICYmIG9UZXh0QW5ub3RhdGlvbi4kUGF0aCkge1xuXHRcdFx0XHRcdFx0c1RleHRQcm9wZXJ0eSA9IG9UZXh0QW5ub3RhdGlvbi4kUGF0aDtcblx0XHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXIgPSBuZXcgRmlsdGVyKHtcblx0XHRcdFx0XHRcdFx0cGF0aDogb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IFwiRVFcIixcblx0XHRcdFx0XHRcdFx0dmFsdWUxOiBzUHJvcGVydHlWYWx1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvVmFsdWVMaXN0TW9kZWwuYmluZExpc3QoYC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvRmlsdGVyLCB7XG5cdFx0XHRcdFx0XHRcdCRzZWxlY3Q6IHNUZXh0UHJvcGVydHlcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMik7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNEaXNwbGF5Rm9ybWF0ID0gXCJWYWx1ZVwiO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFDb250ZXh0czogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc0Rlc2NyaXB0aW9uID0gc1RleHRQcm9wZXJ0eSA/IGFDb250ZXh0c1swXT8uZ2V0T2JqZWN0KClbc1RleHRQcm9wZXJ0eV0gOiBcIlwiO1xuXHRcdFx0XHRcdHN3aXRjaCAoc0Rpc3BsYXlGb3JtYXQpIHtcblx0XHRcdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc0Rlc2NyaXB0aW9uO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvcmUuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikuZ2V0VGV4dChcIkNfRk9STUFUX0ZPUl9URVhUX0FSUkFOR0VNRU5UXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRzRGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRcdFx0c1Byb3BlcnR5VmFsdWVcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiQ19GT1JNQVRfRk9SX1RFWFRfQVJSQU5HRU1FTlRcIiwgW1xuXHRcdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eVZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdHNEZXNjcmlwdGlvblxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBzTXNnID1cblx0XHRcdFx0XHRcdG9FcnJvci5zdGF0dXMgJiYgb0Vycm9yLnN0YXR1cyA9PT0gNDA0XG5cdFx0XHRcdFx0XHRcdD8gYE1ldGFkYXRhIG5vdCBmb3VuZCAoJHtvRXJyb3Iuc3RhdHVzfSkgZm9yIHZhbHVlIGhlbHAgb2YgcHJvcGVydHkgJHtzUHJvcGVydHlGdWxsUGF0aH1gXG5cdFx0XHRcdFx0XHRcdDogb0Vycm9yLm1lc3NhZ2U7XG5cdFx0XHRcdFx0TG9nLmVycm9yKHNNc2cpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHR9LFxuXG5cdGhhbmRsZVR5cGVNaXNzbWF0Y2g6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKG9FdmVudC5nZXRTb3VyY2UoKSk7XG5cdFx0TWVzc2FnZUJveC5lcnJvcihyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRVwiKSwge1xuXHRcdFx0ZGV0YWlsczpcblx0XHRcdFx0YDxwPjxzdHJvbmc+JHtyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRV9ERVRBSUxTX1NFTEVDVEVEXCIpfTwvc3Ryb25nPjwvcD4ke1xuXHRcdFx0XHRcdG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkubWltZVR5cGVcblx0XHRcdFx0fTxicj48YnI+YCArXG5cdFx0XHRcdGA8cD48c3Ryb25nPiR7cmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfV1JPTkdfTUlNRVRZUEVfREVUQUlMU19BTExPV0VEXCIpfTwvc3Ryb25nPjwvcD4ke29FdmVudFxuXHRcdFx0XHRcdC5nZXRTb3VyY2UoKVxuXHRcdFx0XHRcdC5nZXRNaW1lVHlwZSgpXG5cdFx0XHRcdFx0LnRvU3RyaW5nKClcblx0XHRcdFx0XHQucmVwbGFjZUFsbChcIixcIiwgXCIsIFwiKX1gLFxuXHRcdFx0Y29udGVudFdpZHRoOiBcIjE1MHB4XCJcblx0XHR9IGFzIGFueSk7XG5cdH0sXG5cblx0aGFuZGxlRmlsZVNpemVFeGNlZWQ6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSAvKmlGaWxlU2l6ZTogYW55Ki8pIHtcblx0XHRNZXNzYWdlQm94LmVycm9yKFxuXHRcdFx0Z2V0UmVzb3VyY2VNb2RlbChvRXZlbnQuZ2V0U291cmNlKCkpLmdldFRleHQoXG5cdFx0XHRcdFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfRklMRV9UT09fQklHXCIsXG5cdFx0XHRcdG9FdmVudC5nZXRTb3VyY2UoKS5nZXRNYXhpbXVtRmlsZVNpemUoKS50b0ZpeGVkKDMpXG5cdFx0XHQpLFxuXHRcdFx0e1xuXHRcdFx0XHRjb250ZW50V2lkdGg6IFwiMTUwcHhcIlxuXHRcdFx0fSBhcyBhbnlcblx0XHQpO1xuXHR9LFxuXG5cdF9nZXRFeHRlbnNpb25Db250cm9sbGVyOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdHJldHVybiBvQ29udHJvbGxlci5pc0EoXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikgPyBvQ29udHJvbGxlci5fY29udHJvbGxlciA6IG9Db250cm9sbGVyO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB3aG8gaXMgZWRpdGluZyB0aGUgZmllbGQgcG9wb3Zlci5cblx0ICpcblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgYXZhdGFyIHdoaWNoIGlzIG5leHQgdG8gdGhlIGZpZWxkIGxvY2tlZFxuXHQgKiBAcGFyYW0gdmlldyBDdXJyZW50IHZpZXdcblx0ICovXG5cdHNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXI6IGZ1bmN0aW9uIChzb3VyY2U6IEF2YXRhciwgdmlldzogVmlldykge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBSZXNvdXJjZU1vZGVsSGVscGVyLmdldFJlc291cmNlTW9kZWwodmlldyk7XG5cdFx0bGV0IHBvcG92ZXIgPSBDb3JlLmJ5SWQoYG1hbmFnZUNvbGxhYm9yYXRpb25EcmFmdC0tZWRpdFVzZXJgKSBhcyBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRcdGlmICghcG9wb3Zlcikge1xuXHRcdFx0cG9wb3ZlciA9IG5ldyBSZXNwb25zaXZlUG9wb3ZlcihcIm1hbmFnZUNvbGxhYm9yYXRpb25EcmFmdC0tZWRpdFVzZXJcIiwge1xuXHRcdFx0XHRzaG93SGVhZGVyOiBmYWxzZSxcblx0XHRcdFx0cGxhY2VtZW50OiBcIkJvdHRvbVwiXG5cdFx0XHR9KTtcblx0XHRcdHBvcG92ZXIuYWRkU3R5bGVDbGFzcyhcInNhcFVpQ29udGVudFBhZGRpbmdcIik7XG5cdFx0XHR2aWV3LmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHR9XG5cblx0XHRjb25zdCBiaW5kaW5nUGF0aCA9IChzb3VyY2UuZ2V0QmluZGluZyhcImluaXRpYWxzXCIpIGFzIENvbXBvc2l0ZUJpbmRpbmcpXG5cdFx0XHQ/LmdldEJpbmRpbmdzKClcblx0XHRcdC5maW5kKChiaW5kaW5nKSA9PiBiaW5kaW5nPy5nZXRQYXRoKCk/LnN0YXJ0c1dpdGgoXCIvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzXCIpKVxuXHRcdFx0LmdldFBhdGgoKTtcblx0XHRjb25zdCBhY3Rpdml0aWVzID0gc291cmNlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik/LmdldE9iamVjdChiaW5kaW5nUGF0aCk7XG5cblx0XHRsZXQgZWRpdGluZ0FjdGl2aXR5OiBVc2VyQWN0aXZpdHkgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGFjdGl2aXRpZXMgJiYgYWN0aXZpdGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlZGl0aW5nQWN0aXZpdHkgPSBhY3Rpdml0aWVzLmZpbmQoKGFjdGl2aXR5OiBVc2VyQWN0aXZpdHkpID0+IHtcblx0XHRcdFx0cmV0dXJuIGFjdGl2aXR5LmtleSA9PT0gZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aChzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSEuZ2V0UGF0aCgpKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRwb3BvdmVyLmRlc3Ryb3lDb250ZW50KCk7XG5cdFx0cG9wb3Zlci5hZGRDb250ZW50KFxuXHRcdFx0bmV3IExhYmVsKHtcblx0XHRcdFx0dGV4dDogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT0xMQUJPUkFUSU9OQVZBVEFSX1VTRVJfRURJVF9GSUVMRFwiLCBbYCR7ZWRpdGluZ0FjdGl2aXR5Py5uYW1lfWBdKVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdHBvcG92ZXIub3BlbkJ5KHNvdXJjZSk7XG5cdH1cbn07XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBGaWVsZFJ1bnRpbWU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7RUFrREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0EsdUJBQXVCLENBQUNDLEtBQWMsRUFBMEM7SUFDeEYsSUFBSUMsT0FBTyxHQUFJRCxLQUFLLENBQUNFLGlCQUFpQixFQUFFLENBQWFDLFVBQVUsRUFBRTtJQUVqRSxJQUFJLENBQUNGLE9BQU8sQ0FBQ0csR0FBRyxDQUFDLHdDQUF3QyxDQUFDLEVBQUU7TUFDM0QsTUFBTUMsS0FBSyxHQUFHQyxXQUFXLENBQUNDLGFBQWEsQ0FBQ1AsS0FBSyxDQUFDO01BQzlDQyxPQUFPLEdBQUlJLEtBQUssQ0FBQ0gsaUJBQWlCLEVBQUUsQ0FBYUMsVUFBVSxFQUFFO0lBQzlEO0lBRUEsT0FBT0YsT0FBTztFQUNmO0VBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTU8sWUFBWSxHQUFHO0lBQ3BCQyxjQUFjLEVBQUVDLFNBQWdCO0lBQ2hDQyxtQkFBbUIsRUFBRSxLQUFLO0lBRTFCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLDZCQUE2QixFQUFFLFVBQVVDLE9BQWdCLEVBQUVDLFdBQTJCLEVBQUVDLFFBQWdCLEVBQUU7TUFDekcsSUFBSUQsV0FBVyxDQUFDRSxRQUFRLEVBQUU7UUFDekIsSUFBSUMsZUFBZSxHQUFHSixPQUFPLENBQUNYLGlCQUFpQixFQUFhO1FBQzVELE1BQU1HLEtBQUssR0FBR0MsV0FBVyxDQUFDQyxhQUFhLENBQUNNLE9BQU8sQ0FBQztVQUMvQ0ssVUFBVSxHQUFHRCxlQUFlLENBQUNFLFFBQVEsRUFBRSxDQUFDQyxZQUFZLEVBQUU7VUFDdERDLFVBQVUsR0FBRyxVQUFVQyxRQUFjLEVBQUU7WUFDdEMsSUFBSUEsUUFBUSxFQUFFO2NBQ2JMLGVBQWUsR0FBR0ssUUFBUTtZQUMzQjtZQUNBUixXQUFXLENBQUNFLFFBQVEsQ0FBQ08sZ0JBQWdCLENBQUNOLGVBQWUsRUFBRUYsUUFBUSxFQUFFLElBQUksQ0FBQztVQUN2RSxDQUFDO1FBQ0Y7UUFDQSxJQUFLVixLQUFLLENBQUNtQixXQUFXLEVBQUUsQ0FBU0MsYUFBYSxLQUFLLFlBQVksSUFBSSxDQUFDQyxXQUFXLENBQUNDLHdCQUF3QixDQUFDVCxVQUFVLENBQUMsRUFBRTtVQUNySFUsS0FBSyxDQUFDQyx5Q0FBeUMsQ0FDOUNSLFVBQVUsRUFDVlMsUUFBUSxDQUFDQyxTQUFTLEVBQ2xCZCxlQUFlLEVBQ2ZaLEtBQUssQ0FBQzJCLGFBQWEsRUFBRSxFQUNyQixJQUFJLEVBQ0pKLEtBQUssQ0FBQ0ssY0FBYyxDQUFDQyxpQkFBaUIsQ0FDdEM7UUFDRixDQUFDLE1BQU07VUFDTmIsVUFBVSxFQUFFO1FBQ2I7TUFDRCxDQUFDLE1BQU07UUFDTmMsR0FBRyxDQUFDQyxLQUFLLENBQ1IsNEZBQTRGLEVBQzVGLGtDQUFrQyxFQUNsQywrQkFBK0IsQ0FDL0I7TUFDRjtJQUNELENBQUM7SUFFREMsdUJBQXVCLEVBQUUsVUFDeEJDLGFBQWtCLEVBQ2xCQyw2QkFBa0MsRUFDbENDLGNBQW1CLEVBQ25CQyxjQUFtQixFQUNuQkMsYUFBa0IsRUFDakI7TUFDRCxJQUFJRCxjQUFjLEtBQUsvQixTQUFTLElBQUk4QixjQUFjLEtBQUs5QixTQUFTLEtBQUssQ0FBQytCLGNBQWMsSUFBSUQsY0FBYyxDQUFDLElBQUksQ0FBQ0UsYUFBYSxFQUFFO1FBQzFILE9BQU9KLGFBQWEsS0FBS0MsNkJBQTZCO01BQ3ZELENBQUMsTUFBTTtRQUNOLE9BQU8sS0FBSztNQUNiO0lBQ0QsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0ksb0JBQW9CLEVBQUUsVUFBVTdCLFdBQW1CLEVBQUU4QixNQUFjLEVBQUU7TUFDcEUsTUFBTUMsYUFBYSxHQUFHckMsWUFBWSxDQUFDc0MsdUJBQXVCLENBQUNoQyxXQUFXLENBQUM7TUFDdkUrQixhQUFhLENBQUNFLFlBQVksQ0FBQ0Msc0JBQXNCLENBQUNKLE1BQU0sQ0FBQztJQUMxRCxDQUFDO0lBRURLLHFCQUFxQixFQUFFLFVBQVVqRCxLQUFZLEVBQUVrRCxVQUFzQixFQUFRO01BQzVFLE1BQU1DLElBQUksR0FBRzdDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDUCxLQUFLLENBQUM7TUFDN0MsTUFBTW9ELG1CQUFtQixHQUFHcEQsS0FBSyxDQUFDRSxpQkFBaUIsRUFBRTtNQUNyRCxJQUFJbUQsc0JBQXNCOztNQUUxQjtNQUNBLE1BQU1DLFlBQVksR0FBSUYsbUJBQW1CLGFBQW5CQSxtQkFBbUIsdUJBQW5CQSxtQkFBbUIsQ0FBY2pELFVBQVUsRUFBRTtNQUVuRSxJQUFJbUQsWUFBWSxDQUFDbEQsR0FBRyxDQUFDLHdDQUF3QyxDQUFDLEVBQUU7UUFDL0Q7UUFDQWlELHNCQUFzQixHQUFHRCxtQkFBbUI7TUFDN0MsQ0FBQyxNQUFNO1FBQ047UUFDQTtRQUNBQyxzQkFBc0IsR0FBR0YsSUFBSSxDQUFDakQsaUJBQWlCLEVBQUU7TUFDbEQ7TUFDQSxNQUFNcUQsWUFBWSxHQUFHL0MsWUFBWSxDQUFDc0MsdUJBQXVCLENBQUNJLFVBQVUsQ0FBQztNQUNyRSxNQUFNTSxXQUFXLEdBQUd4RCxLQUFLLENBQUN5RCxZQUFZLEVBQUU7TUFDeEMsSUFBSUQsV0FBVyxJQUFJQSxXQUFXLENBQUNFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1FBQUE7UUFDOUQsTUFBTUMsT0FBTyxHQUFHSCxXQUFXLENBQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQUVKLFdBQVcsQ0FBQ0ssT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkYsTUFBTUMsS0FBSyxHQUFHWCxJQUFJLENBQUNZLElBQUksQ0FBQ0osT0FBTyxDQUFDO1FBQ2hDLE1BQU1LLGlCQUFpQixHQUFJRixLQUFLLGFBQUxBLEtBQUssMkNBQUxBLEtBQUssQ0FBRUcsU0FBUyxFQUFFLHFEQUFuQixpQkFBa0NDLG1CQUFtQixFQUFFO1FBQ2pGWCxZQUFZLENBQUNZLGVBQWUsQ0FBQ0MseUNBQXlDLENBQUNwRSxLQUFLLEVBQUUsQ0FDN0U7VUFBRXFFLE9BQU8sRUFBRWhCLHNCQUFzQjtVQUFFVztRQUFrQixDQUFDLENBQ3RELENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTlQsWUFBWSxDQUFDWSxlQUFlLENBQUNDLHlDQUF5QyxDQUFDcEUsS0FBSyxFQUFFLENBQUM7VUFBRXFFLE9BQU8sRUFBRWhCO1FBQXVCLENBQUMsQ0FBQyxDQUFDO01BQ3JIO0lBQ0QsQ0FBQztJQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NpQixZQUFZLEVBQUUsVUFBVXhELFdBQTJCLEVBQUU4QixNQUF1RCxFQUFRO01BQ25ILE1BQU0yQixZQUFZLEdBQUczQixNQUFNLENBQUM0QixTQUFTLEVBQWE7UUFDakRDLFlBQVksR0FBR0YsWUFBWSxJQUFLQSxZQUFZLENBQUNyRSxpQkFBaUIsRUFBRSxDQUFTd0UsV0FBVyxFQUFFO1FBQ3RGQyxjQUFjLEdBQUcvQixNQUFNLENBQUNnQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUlDLE9BQU8sQ0FBQ0MsT0FBTyxFQUFFO1FBQ3BFakUsT0FBTyxHQUFHK0IsTUFBTSxDQUFDNEIsU0FBUyxFQUFFO1FBQzVCTyxNQUFNLEdBQUduQyxNQUFNLENBQUNnQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3JDSSxhQUFhLEdBQUcsSUFBSSxDQUFDQyxxQkFBcUIsQ0FBQ3JDLE1BQU0sQ0FBQyxDQUFDc0MsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNwRWxGLEtBQUssR0FBRzRDLE1BQU0sQ0FBQzRCLFNBQVMsRUFBYTs7TUFFdEM7TUFDQSxNQUFNM0IsYUFBYSxHQUFHckMsWUFBWSxDQUFDc0MsdUJBQXVCLENBQUNoQyxXQUFXLENBQUM7O01BRXZFO01BQ0E7TUFDQTZELGNBQWMsQ0FDWlEsSUFBSSxDQUFDLFlBQVk7UUFDakI7UUFDQ3ZDLE1BQU0sQ0FBUy9CLE9BQU8sR0FBR0EsT0FBTztRQUNoQytCLE1BQU0sQ0FBU3dDLFdBQVcsR0FBRztVQUM3QkMsS0FBSyxFQUFFTjtRQUNSLENBQUM7UUFDQU8sUUFBUSxDQUFTaEIsWUFBWSxDQUFDMUIsTUFBTSxFQUFFOUIsV0FBVyxDQUFDO1FBQ25ELElBQUksQ0FBQzJELFlBQVksRUFBRTtVQUNsQjtVQUNBO1VBQ0E1QixhQUFhLENBQUNFLFlBQVksQ0FBQ3dDLGlCQUFpQixDQUFDM0MsTUFBTSxFQUFFb0MsYUFBYSxFQUFFTCxjQUFjLEVBQUUsSUFBSSxDQUFDO1FBQzFGO1FBQ0E7UUFDQW5FLFlBQVksQ0FBQ3lDLHFCQUFxQixDQUFDakQsS0FBSyxFQUFXYyxXQUFXLENBQUM7UUFDL0Q7TUFDRCxDQUFDLENBQUMsQ0FDRDBFLEtBQUssQ0FBQyxTQUFVO01BQUEsR0FBaUI7UUFDakM7UUFDQzVDLE1BQU0sQ0FBUy9CLE9BQU8sR0FBR0EsT0FBTztRQUNoQytCLE1BQU0sQ0FBU3dDLFdBQVcsR0FBRztVQUM3QkMsS0FBSyxFQUFFO1FBQ1IsQ0FBQztRQUNEbEQsR0FBRyxDQUFDc0QsS0FBSyxDQUFDLG1GQUFtRixDQUFDO1FBQzlGO1FBQ0E7UUFDQ0gsUUFBUSxDQUFTaEIsWUFBWSxDQUFDMUIsTUFBTSxFQUFFOUIsV0FBVyxDQUFDO01BQ3BELENBQUMsQ0FBQzs7TUFFSDtNQUNBO01BQ0EsTUFBTTRFLHlCQUF5QixHQUFHZixjQUFjLENBQzlDUSxJQUFJLENBQUMsWUFBWTtRQUNqQixPQUFPLElBQUlOLE9BQU8sQ0FBUUMsT0FBTyxJQUFLO1VBQ3JDYSxVQUFVLENBQUNiLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDLENBQ0RVLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ2pCM0MsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUUrQyxRQUFRLENBQUNDLFFBQVEsQ0FBQ0gseUJBQXlCLENBQUM7O01BRTNEO01BQ0E7TUFDQSxJQUFJakIsWUFBWSxFQUFFO1FBQ2pCO01BQ0Q7TUFFQTVCLGFBQWEsQ0FBQ0UsWUFBWSxDQUFDK0Msa0NBQWtDLENBQUNsRCxNQUFNLEVBQUVvQyxhQUFhLEVBQUVMLGNBQWMsQ0FBQztNQUNwRztNQUNBLE1BQU1vQixxQkFBcUIsR0FBR0MseUJBQXlCLENBQUNDLFdBQVcsQ0FBQ2pHLEtBQUssQ0FBQztNQUUxRSxJQUFJK0YscUJBQXFCLElBQUlmLGFBQWEsRUFBRTtRQUFBO1FBQzNDLE1BQU0vRSxPQUFPLEdBQUdGLHVCQUF1QixDQUFDQyxLQUFLLENBQUM7UUFFOUMsTUFBTWtHLElBQUksR0FBRyxDQUNaLElBQUksU0FBQ2xHLEtBQUssQ0FBQ21HLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSW5HLEtBQUssQ0FBQ21HLGNBQWMsQ0FBQyxVQUFVLENBQUMseUNBQWxFLEtBQXFFQyxLQUFLLEtBQUksRUFBRSxDQUFDLEVBQ3JGLElBQUksMEJBQUFwRyxLQUFLLENBQUNtRyxjQUFjLENBQUMsaUJBQWlCLENBQUMsMERBQXZDLHNCQUF5Q0MsS0FBSyxLQUFJLEVBQUUsQ0FBQyxDQUN6RCxDQUNDQyxNQUFNLENBQUVDLElBQUksSUFBSztVQUNqQixPQUFPLENBQUFBLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFQyxJQUFJLE1BQUs3RixTQUFTLElBQUk0RixJQUFJLENBQUNDLElBQUksQ0FBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FDRDJDLEdBQUcsQ0FBQyxVQUFVRixJQUFzQixFQUFFO1VBQUE7VUFDdEMsT0FBUSw0QkFBRXRHLEtBQUssQ0FBQ0UsaUJBQWlCLEVBQUUsMERBQXpCLHNCQUEyQnVHLE9BQU8sRUFBRyxJQUFHSCxJQUFJLENBQUNDLElBQUssRUFBQztRQUM5RCxDQUFDLENBQUM7O1FBRUg7UUFDQTtRQUNBUCx5QkFBeUIsQ0FBQ1UsbUJBQW1CLENBQUMxRyxLQUFLLEVBQUVrRyxJQUFJLENBQUM7UUFFMUQsTUFBTVMsbUJBQW1CLEdBQUcsTUFBTTtVQUNqQyxJQUFJMUcsT0FBTyxDQUFDMkcsaUJBQWlCLEVBQUUsRUFBRTtZQUNoQztZQUNBM0csT0FBTyxDQUFDNEcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLFlBQVk7Y0FDckRiLHlCQUF5QixDQUFDYyxJQUFJLENBQUM5RyxLQUFLLEVBQUU7Z0JBQUUrRyxNQUFNLEVBQUVDLFFBQVEsQ0FBQ0MsTUFBTTtnQkFBRUMsT0FBTyxFQUFFaEI7Y0FBSyxDQUFDLENBQUM7Y0FDakZGLHlCQUF5QixDQUFDbUIsb0JBQW9CLENBQUNuSCxLQUFLLEVBQUVrRyxJQUFJLENBQUM7WUFDNUQsQ0FBQyxDQUFDO1VBQ0gsQ0FBQyxNQUFNO1lBQ05GLHlCQUF5QixDQUFDbUIsb0JBQW9CLENBQUNuSCxLQUFLLEVBQUVrRyxJQUFJLENBQUM7VUFDNUQ7UUFDRCxDQUFDO1FBQ0QsSUFBSTNCLFlBQVksQ0FBQ25FLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1VBQ3pDdUUsY0FBYyxDQUNaUSxJQUFJLENBQUMsTUFBTTtZQUNYd0IsbUJBQW1CLEVBQUU7WUFDckI7VUFDRCxDQUFDLENBQUMsQ0FDRG5CLEtBQUssQ0FBQyxNQUFNO1lBQ1ptQixtQkFBbUIsRUFBRTtVQUN0QixDQUFDLENBQUM7UUFDSixDQUFDLE1BQU07VUFDTkEsbUJBQW1CLEVBQUU7UUFDdEI7TUFDRDtJQUNELENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDUyxnQkFBZ0IsRUFBRSxVQUFVQyxLQUFZLEVBQVE7TUFDOUMvQixRQUFRLENBQWtCOEIsZ0JBQWdCLENBQUNDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLHdDQUF3QyxDQUFDQyxZQUEwQixFQUFFUixNQUFnQixFQUFRO01BQzVGLElBQUlmLHlCQUF5QixDQUFDQyxXQUFXLENBQUNzQixZQUFZLENBQUMsRUFBRTtRQUFBO1FBQ3hELE1BQU1DLFdBQVcsNEJBQUdELFlBQVksQ0FBQ3RELFNBQVMsRUFBRSwwREFBeEIsc0JBQTBCd0QsV0FBVyxDQUFDLGNBQWMsQ0FBQztRQUN6RSxNQUFNQyxRQUFRLEdBQUksNEJBQUVILFlBQVksQ0FBQ3JILGlCQUFpQixFQUFFLDBEQUFoQyxzQkFBa0N1RyxPQUFPLEVBQUcsSUFBR2UsV0FBWSxFQUFDO1FBQ2hGeEIseUJBQXlCLENBQUNjLElBQUksQ0FBQ1MsWUFBWSxFQUFFO1VBQUVSLE1BQU07VUFBRUcsT0FBTyxFQUFFUTtRQUFTLENBQUMsQ0FBQztNQUM1RTtJQUNELENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLGtCQUFrQixFQUFFLFVBQVVOLEtBQVksRUFBUTtNQUNqRCxNQUFNRSxZQUFZLEdBQUdGLEtBQUssQ0FBQzdDLFNBQVMsRUFBa0I7TUFDdERoRSxZQUFZLENBQUM4Ryx3Q0FBd0MsQ0FBQ0MsWUFBWSxFQUFFUCxRQUFRLENBQUNZLElBQUksQ0FBQztJQUNuRixDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxtQkFBbUIsRUFBRSxVQUFVUixLQUFZLEVBQVE7TUFDbEQsTUFBTUUsWUFBWSxHQUFHRixLQUFLLENBQUM3QyxTQUFTLEVBQWtCO01BQ3REaEUsWUFBWSxDQUFDOEcsd0NBQXdDLENBQUNDLFlBQVksRUFBRVAsUUFBUSxDQUFDYyxNQUFNLENBQUM7SUFDckYsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQzdDLHFCQUFxQixFQUFFLFVBQVVyQyxNQUF1RCxFQU10RjtNQUNELElBQUkyQixZQUFZLEdBQUczQixNQUFNLENBQUM0QixTQUFTLEVBQVM7UUFDM0N1RCxXQUdDLEdBQUcsQ0FBQyxDQUFDO01BQ1AsTUFBTUMsdUJBQXVCLEdBQUcsVUFBVUMsUUFBYSxFQUFFO1FBQ3hELE9BQU9BLFFBQVEsSUFBSUEsUUFBUSxDQUFDQyxZQUFZLEVBQUUsR0FBR0QsUUFBUSxDQUFDQyxZQUFZLEVBQUUsQ0FBQ0MsZUFBZSxFQUFFLEtBQUt6SCxTQUFTLEdBQUcsSUFBSTtNQUM1RyxDQUFDO01BQ0QsSUFBSTZELFlBQVksQ0FBQ25FLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFO1FBQ3JEbUUsWUFBWSxHQUFJQSxZQUFZLENBQThCNkQsVUFBVSxFQUFFO01BQ3ZFO01BRUEsSUFBSTdELFlBQVksQ0FBQ25FLEdBQUcsQ0FBQ2lJLFlBQVksQ0FBQ0MsV0FBVyxFQUFFLENBQUNDLE9BQU8sRUFBRSxDQUFDLElBQUloRSxZQUFZLENBQUNpRSxXQUFXLEVBQUUsS0FBSyxVQUFVLEVBQUU7UUFDeEdqRSxZQUFZLEdBQUdBLFlBQVksQ0FBQ2tFLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztNQUNoRDtNQUVBLElBQUlsRSxZQUFZLENBQUNuRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRTtRQUN6QyxJQUFJc0ksUUFBUSxHQUFHOUYsTUFBTSxDQUFDZ0MsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJaEMsTUFBTSxDQUFDZ0MsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUM3RSxJQUFJOEQsUUFBUSxLQUFLaEksU0FBUyxFQUFFO1VBQzNCLElBQUk2RCxZQUFZLENBQUNvRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUMxQyxNQUFNQyxpQkFBaUIsR0FBR3JFLFlBQVksQ0FBQzRCLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDOUR1QyxRQUFRLEdBQUdWLHVCQUF1QixDQUFDWSxpQkFBaUIsSUFBSUEsaUJBQWlCLENBQUMzSSxPQUFPLENBQUM7VUFDbkY7VUFDQSxJQUFJc0UsWUFBWSxDQUFDc0UsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUN0RSxZQUFZLENBQUNrRCxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUVpQixRQUFRLEdBQUcsSUFBSTtVQUNoQjtRQUNEO1FBQ0FYLFdBQVcsR0FBRztVQUNiZSxVQUFVLEVBQUV2RSxZQUFZLENBQUNzRSxRQUFRLEVBQUU7VUFDbkNFLFFBQVEsRUFBRSxDQUFDLENBQUNMO1FBQ2IsQ0FBQztNQUNGLENBQUMsTUFBTTtRQUNOO1FBQ0EsTUFBTVQsUUFBUSxHQUNiMUQsWUFBWSxDQUFDcEUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJb0UsWUFBWSxDQUFDcEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJb0UsWUFBWSxDQUFDcEUsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUNoSDRILFdBQVcsR0FBRztVQUNiZSxVQUFVLEVBQUViLFFBQVEsSUFBSUEsUUFBUSxDQUFDWSxRQUFRLEVBQUU7VUFDM0NFLFFBQVEsRUFBRWYsdUJBQXVCLENBQUNDLFFBQVE7UUFDM0MsQ0FBQztNQUNGO01BQ0EsT0FBTztRQUNOakksS0FBSyxFQUFFdUUsWUFBWTtRQUNuQlcsS0FBSyxFQUFFNkM7TUFDUixDQUFDO0lBQ0YsQ0FBQztJQUNEaUIscUJBQXFCLEVBQUUsVUFBVUMsWUFBaUIsRUFBRTtNQUNuRCxJQUFJQSxZQUFZLElBQUlBLFlBQVksQ0FBQ3BGLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNyRDtRQUNBb0YsWUFBWSxHQUFHQSxZQUFZLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDMUM7TUFDQSxPQUFPRCxZQUFZO0lBQ3BCLENBQUM7SUFDREUscUJBQXFCLEVBQUUsVUFBVUMsUUFBYSxFQUFFQyxNQUFXLEVBQUVDLGNBQW1CLEVBQUVDLE9BQVksRUFBRUMsV0FBZ0IsRUFBRTtNQUNqSCxNQUFNQyxNQUFNLEdBQUdKLE1BQU0sSUFBSUEsTUFBTSxDQUFDbEksUUFBUSxFQUFFO01BQzFDLE1BQU1ELFVBQVUsR0FBR3VJLE1BQU0sSUFBSUEsTUFBTSxDQUFDckksWUFBWSxFQUFFO01BQ2xELE1BQU1zSSxtQkFBbUIsR0FBR0gsT0FBTyxJQUFLSCxRQUFRLElBQUlBLFFBQVEsQ0FBQ1AsUUFBUSxFQUFHO01BQ3hFLE1BQU14SSxLQUFLLEdBQUdnSixNQUFNLElBQUkvSSxXQUFXLENBQUNDLGFBQWEsQ0FBQzhJLE1BQU0sQ0FBQztNQUN6RCxNQUFNTSxxQkFBcUIsR0FBR3RKLEtBQUssSUFBSUEsS0FBSyxDQUFDSCxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7TUFDMUUsTUFBTTBKLGFBQWEsR0FBR3ZKLEtBQUssSUFBSUMsV0FBVyxDQUFDdUosZUFBZSxDQUFDeEosS0FBSyxDQUFDO01BQ2pFLE1BQU15SixtQkFBbUIsR0FBR0YsYUFBYSxJQUFJQSxhQUFhLENBQUNHLGdCQUFnQixFQUFFO01BQzdFLE1BQU1DLGdCQUFnQixHQUFHRixtQkFBbUIsSUFBSUEsbUJBQW1CLENBQUNHLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUFFQyxjQUFjLEVBQUVSO01BQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDbEksTUFBTVMsaUNBQWlDLEdBQ3RDakosVUFBVSxJQUFJQSxVQUFVLENBQUNrSixTQUFTLENBQUUsR0FBRWQsY0FBZSxrRUFBaUUsQ0FBQztNQUN4SCxPQUFPO1FBQ05lLGtCQUFrQixFQUFFWCxtQkFBbUI7UUFDdkNZLHNCQUFzQixFQUFFaEIsY0FBYztRQUFFO1FBQ3hDaUIsU0FBUyxFQUFFckosVUFBVTtRQUNyQnNKLG9CQUFvQixFQUFFYixxQkFBcUI7UUFDM0NjLGtCQUFrQixFQUFFWCxtQkFBbUI7UUFDdkNZLGVBQWUsRUFBRVYsZ0JBQWdCO1FBQ2pDVyxnQ0FBZ0MsRUFBRVIsaUNBQWlDO1FBQ25FWCxXQUFXLEVBQUVBO01BQ2QsQ0FBQztJQUNGLENBQUM7SUFDRG9CLDJCQUEyQixFQUFFLFVBQVVDLHNCQUEyQixFQUFFQyxVQUFlLEVBQUU7TUFDcEYsSUFBSUQsc0JBQXNCLElBQUlBLHNCQUFzQixDQUFDdEUsSUFBSSxJQUFJc0Usc0JBQXNCLENBQUN0RSxJQUFJLEtBQUt1RSxVQUFVLENBQUNSLHNCQUFzQixFQUFFO1FBQy9IO1FBQ0EsTUFBTVMsMkNBQTJDLEdBQ2hERixzQkFBc0IsQ0FBQyxDQUFDQyxVQUFVLENBQUNILGdDQUFnQyxHQUFHLHVCQUF1QixHQUFHLFlBQVksQ0FBQztRQUM5R0csVUFBVSxDQUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQ3VCLDJDQUEyQyxDQUFDO1FBQ3JFLE9BQU8sSUFBSTtNQUNaLENBQUMsTUFBTTtRQUNOLE9BQU8sS0FBSztNQUNiO0lBQ0QsQ0FBQztJQUNEQyxnREFBZ0QsRUFBRSxVQUFVRixVQUFlLEVBQUVHLHNCQUEyQixFQUFFO01BQ3pHLElBQUlBLHNCQUFzQixDQUFDSCxVQUFVLENBQUNULGtCQUFrQixDQUFDLEVBQUU7UUFDMUQsSUFBSWEsUUFBUSxFQUFFTCxzQkFBc0I7UUFDcEMsTUFBTU0sb0JBQW9CLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSixzQkFBc0IsQ0FBQ0gsVUFBVSxDQUFDVCxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9GLEtBQUssTUFBTWlCLFdBQVcsSUFBSUgsb0JBQW9CLEVBQUU7VUFDL0NELFFBQVEsR0FBR0Msb0JBQW9CLENBQUNHLFdBQVcsQ0FBQztVQUM1Q1Qsc0JBQXNCLEdBQ3JCSSxzQkFBc0IsQ0FBQ0gsVUFBVSxDQUFDVCxrQkFBa0IsQ0FBQyxJQUNyRFksc0JBQXNCLENBQUNILFVBQVUsQ0FBQ1Qsa0JBQWtCLENBQUMsQ0FBQ2EsUUFBUSxDQUFDO1VBQ2hFLElBQUkxSyxZQUFZLENBQUNvSywyQkFBMkIsQ0FBQ0Msc0JBQXNCLEVBQUVDLFVBQVUsQ0FBQyxFQUFFO1lBQ2pGO1VBQ0Q7UUFDRDtNQUNEO0lBQ0QsQ0FBQztJQUNEUyxtQ0FBbUMsRUFBRSxVQUFVM0ksTUFBVyxFQUFFNEksTUFBVyxFQUFFQyxRQUFhLEVBQUVuQyxjQUFtQixFQUFFO01BQzVHLE1BQU16SSxPQUFPLEdBQUcrQixNQUFNLElBQUlBLE1BQU0sQ0FBQzRCLFNBQVMsRUFBRTtNQUM1QyxJQUFJZ0YsV0FBVztNQUNmLElBQUlpQyxRQUFRLENBQUNyTCxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRTtRQUN2Q29KLFdBQVcsR0FBSWtDLE9BQWdCLElBQUtELFFBQVEsQ0FBQ0UsU0FBUyxDQUFDRCxPQUFPLENBQUM7TUFDaEU7TUFDQSxJQUFJRCxRQUFRLENBQUNyTCxHQUFHLENBQUMsd0JBQXdCLENBQUMsRUFBRTtRQUMzQ29KLFdBQVcsR0FBSWtDLE9BQWdCLElBQUtELFFBQVEsQ0FBQ0csY0FBYyxDQUFDRixPQUFPLENBQUM7TUFDckU7TUFDQSxNQUFNRyxtQkFBbUIsR0FBR0osUUFBUSxJQUFJQSxRQUFRLENBQUN4SCxTQUFTLEVBQUU7TUFDNUQsSUFBSTRILG1CQUFtQixJQUFJQSxtQkFBbUIsQ0FBQ3pMLEdBQUcsQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFO1FBQ2hHb0osV0FBVyxHQUFJa0MsT0FBZ0IsSUFBS0csbUJBQW1CLENBQUNDLFlBQVksQ0FBQ0osT0FBTyxDQUFDO01BQzlFO01BQ0EsSUFBSWxDLFdBQVcsS0FBSzlJLFNBQVMsRUFBRTtRQUM5QixNQUFNcUwsU0FBUyxHQUFHdkwsWUFBWSxDQUFDMkkscUJBQXFCLENBQUN0SSxPQUFPLEVBQUU0SyxRQUFRLEVBQUVuQyxjQUFjLEVBQUVrQyxNQUFNLEVBQUVoQyxXQUFXLENBQUM7UUFDNUd1QyxTQUFTLENBQUN2QyxXQUFXLEdBQUdBLFdBQVc7UUFDbkMsTUFBTVAsWUFBWSxHQUFHekksWUFBWSxDQUFDd0kscUJBQXFCLENBQUMxSSxXQUFXLENBQUN1SixlQUFlLENBQUM0QixRQUFRLENBQUMsQ0FBQzFCLGdCQUFnQixFQUFFLENBQUNpQyxPQUFPLEVBQUUsQ0FBQztRQUMzSDFMLFdBQVcsQ0FBQzJMLHFCQUFxQixDQUNoQyxDQUFDRixTQUFTLENBQUNyQixlQUFlLENBQUMsRUFDM0IsQ0FBQztVQUFFUixjQUFjLEVBQUU2QixTQUFTLENBQUMxQixrQkFBa0I7VUFBRTlELElBQUksRUFBRXdGLFNBQVMsQ0FBQ3pCO1FBQXVCLENBQUMsQ0FBQyxFQUMxRnlCLFNBQVMsQ0FBQ3ZCLG9CQUFvQixFQUM5QnZCLFlBQVksQ0FDWixDQUNDOUQsSUFBSSxDQUFDLFVBQVUrRyxxQkFBMEIsRUFBRTtVQUMzQyxJQUFJQSxxQkFBcUIsRUFBRTtZQUMxQjFMLFlBQVksQ0FBQ3dLLGdEQUFnRCxDQUFDZSxTQUFTLEVBQUVHLHFCQUFxQixDQUFDO1VBQ2hHO1VBQ0E7UUFDRCxDQUFDLENBQUMsQ0FDRDFHLEtBQUssQ0FBQyxVQUFVMkcsTUFBVyxFQUFFO1VBQzdCaEssR0FBRyxDQUFDQyxLQUFLLENBQUMsc0NBQXNDLEVBQUUrSixNQUFNLENBQUM7UUFDMUQsQ0FBQyxDQUFDO01BQ0o7SUFDRCxDQUFDO0lBQ0RDLHNDQUFzQyxDQUFDQyxRQUFpQixFQUFFO01BQ3pELElBQUksQ0FBQ0EsUUFBUSxDQUFDbEwsUUFBUSxFQUFFLElBQUksQ0FBQ2tMLFFBQVEsQ0FBQ25NLGlCQUFpQixFQUFFLEVBQUU7UUFDMUQsT0FBTyxLQUFLO01BQ2IsQ0FBQyxNQUFNO1FBQ04sT0FBTyxJQUFJO01BQ1o7SUFDRCxDQUFDO0lBQ0RvTSxzREFBc0QsQ0FBQ0QsUUFBaUIsRUFBRUUsWUFBb0IsRUFBRUMsV0FBeUIsRUFBUTtNQUNoSSxJQUFJQyx3QkFBNkI7TUFDakMsSUFBSUMsYUFBYTtNQUNqQixNQUFNQywwQkFBMEIsR0FBRyxVQUFVQyx1QkFBNEIsRUFBRTtRQUMxRSxPQUFPLEVBQUVBLHVCQUF1QixLQUFLLElBQUksSUFBSSxPQUFPQSx1QkFBdUIsS0FBSyxRQUFRLENBQUM7TUFDMUYsQ0FBQztNQUNEO01BQ0FKLFdBQVcsR0FBR0EsV0FBVyxDQUFDbkcsTUFBTSxDQUFFd0csVUFBVSxJQUFLQSxVQUFVLENBQUNDLE1BQU0sRUFBRSxLQUFLLHdCQUF3QixDQUFDO01BQ2xHLEtBQUssTUFBTUMsS0FBSyxJQUFJUCxXQUFXLEVBQUU7UUFDaENDLHdCQUF3QixHQUFHRCxXQUFXLENBQUNPLEtBQUssQ0FBQyxDQUFDbEUsUUFBUSxFQUFFO1FBQ3hELElBQUksQ0FBQzRELHdCQUF3QixJQUFJRSwwQkFBMEIsQ0FBQ0Ysd0JBQXdCLENBQUMsRUFBRTtVQUN0RkMsYUFBYSxHQUFHRixXQUFXLENBQUNPLEtBQUssQ0FBQyxDQUFDNU0sVUFBVSxDQUFDLE9BQU8sQ0FBQztVQUN0RCxJQUFJdU0sYUFBYSxFQUFFO1lBQ2xCQSxhQUFhLENBQUM3RixlQUFlLENBQUMsUUFBUSxFQUFFLFVBQVVtRyxhQUFrQixFQUFFO2NBQ3JFeE0sWUFBWSxDQUFDK0ssbUNBQW1DLENBQUN5QixhQUFhLEVBQUUsSUFBSSxFQUFFWCxRQUFRLEVBQUVFLFlBQVksQ0FBQztZQUM5RixDQUFDLENBQUM7VUFDSDtRQUNELENBQUMsTUFBTSxJQUFJSSwwQkFBMEIsQ0FBQ0Ysd0JBQXdCLENBQUMsRUFBRTtVQUNoRWpNLFlBQVksQ0FBQytLLG1DQUFtQyxDQUFDLElBQUksRUFBRWtCLHdCQUF3QixFQUFFSixRQUFRLEVBQUVFLFlBQVksQ0FBQztRQUN6RztNQUNEO0lBQ0QsQ0FBQztJQUNEVSxzQkFBc0IsRUFBRSxVQUFVckssTUFBVyxFQUFFc0ssU0FBYyxFQUFFQyxlQUFvQixFQUFRO01BQzFGLE1BQU1DLE9BQU8sR0FBR3hLLE1BQU0sQ0FBQzRCLFNBQVMsRUFBRTtNQUNsQyxJQUFJaEUsWUFBWSxDQUFDNEwsc0NBQXNDLENBQUNnQixPQUFPLENBQUMsRUFBRTtRQUNqRSxNQUFNOUssYUFBYSxHQUFJLEdBQUU2SyxlQUFnQixJQUFHRCxTQUFVLEVBQUM7UUFDdkQsTUFBTUcsT0FBTyxHQUFHRCxPQUFPLENBQUNFLGFBQWEsRUFBRSxDQUFDQyxNQUFNLEdBQUdILE9BQU8sQ0FBQ0UsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUc1TSxTQUFTO1FBQ3ZGLE1BQU04TCxXQUFXLEdBQUdhLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFRyxhQUFhLEVBQUU7UUFDNUMsSUFBSWhCLFdBQVcsSUFBSUEsV0FBVyxDQUFDZSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQzFDL00sWUFBWSxDQUFDOEwsc0RBQXNELENBQUNjLE9BQU8sRUFBRTlLLGFBQWEsRUFBRWtLLFdBQVcsQ0FBQztRQUN6RztNQUNEO0lBQ0QsQ0FBQztJQUNEaUIsZ0JBQWdCLEVBQUUsVUFBVXBHLEtBQVksRUFBRTtNQUN6QyxNQUFNcUcsTUFBTSxHQUFHckcsS0FBSyxDQUFDN0MsU0FBUyxFQUFTO01BQ3ZDLElBQUlrSixNQUFNLENBQUN4SCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUl3SCxNQUFNLENBQUNqRyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzVEO1FBQ0FrRyxVQUFVLENBQUNELE1BQU0sQ0FBQ3hILElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUM7TUFDeEM7SUFDRCxDQUFDO0lBQ0QwSCwwQkFBMEIsRUFBRSxVQUFVUCxPQUFnQixFQUFFO01BQ3ZELE1BQU1RLFNBQVMsR0FBR1IsT0FBTyxDQUFDUyxLQUFLLEVBQUU7TUFDakMsTUFBTUMsMEJBQXVELEdBQUc7UUFDL0RDLEtBQUssRUFBRUMsZ0JBQWdCLENBQUNaLE9BQU8sQ0FBdUIsQ0FBQ2EsT0FBTyxDQUFDLDRCQUE0QixDQUFDO1FBQzVGQyxXQUFXLEVBQUVGLGdCQUFnQixDQUFDWixPQUFPLENBQXVCLENBQUNhLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQztRQUN4R0UsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QkMsZ0JBQWdCLEVBQUUsS0FBSztRQUFFO1FBQ3pCQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDO01BQzFDLENBQUM7TUFDRCxNQUFNQyxrQkFBa0IsR0FBRyxJQUFJQyxrQkFBa0IsQ0FBRSxHQUFFYixTQUFVLHFCQUFvQixFQUFFRSwwQkFBMEIsQ0FBQztNQUNoSCxNQUFNWSxlQUEyQyxHQUFHO1FBQ25EQyxtQkFBbUIsRUFBRSxLQUFLO1FBQzFCQyxVQUFVLEVBQUVDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLO1FBQy9CQyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ0MsYUFBYSxDQUFDQyxJQUFJO1FBQzNDbEksT0FBTyxFQUFFLENBQUN1SCxrQkFBa0IsQ0FBQztRQUM3QlksVUFBVSxFQUFFLFVBQVVoSSxLQUFLLEVBQUU7VUFDNUIsSUFBSUEsS0FBSyxDQUFDN0MsU0FBUyxFQUFFLEVBQUU7WUFDdEI2QyxLQUFLLENBQUM3QyxTQUFTLEVBQUUsQ0FBQzhLLE9BQU8sRUFBRTtVQUM1QjtRQUNEO01BQ0QsQ0FBQztNQUNELE9BQU8sSUFBSUMsaUJBQWlCLENBQUUsR0FBRTFCLFNBQVUsVUFBUyxFQUFFYyxlQUFlLENBQUM7SUFDdEUsQ0FBQztJQUNEYSxRQUFRLEVBQUUsZ0JBQWdCbkMsT0FBZ0IsRUFBRW9DLFFBQWMsRUFBRTtNQUMzRCxJQUFJO1FBQ0gsTUFBTUMsSUFBSSxHQUFHLE1BQU1yQyxPQUFPLENBQUNzQyxjQUFjLEVBQUU7UUFDM0MsSUFBSSxDQUFDRCxJQUFJLEVBQUU7VUFDVixJQUFJO1lBQ0gsTUFBTUUsU0FBUyxHQUFHLE1BQU12QyxPQUFPLENBQUN3QyxpQkFBaUIsRUFBRTtZQUNuRCxJQUFJLENBQUFELFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFckMsTUFBTSxNQUFLLENBQUMsSUFBS0YsT0FBTyxDQUFTeUMsVUFBVSxFQUFFLENBQUNDLGtCQUFrQixLQUFLLE9BQU8sRUFBRTtjQUM1RixNQUFNQyxPQUEwQixHQUFHeFAsWUFBWSxDQUFDb04sMEJBQTBCLENBQUNQLE9BQU8sQ0FBQztjQUNuRkEsT0FBTyxDQUFDNEMsWUFBWSxDQUFDRCxPQUFPLENBQUM7Y0FDN0JBLE9BQU8sQ0FBQ0UsTUFBTSxDQUFDVCxRQUFRLENBQXVCO1lBQy9DLENBQUMsTUFBTTtjQUNOLE1BQU1wQyxPQUFPLENBQUM4QyxJQUFJLENBQUNWLFFBQVEsQ0FBdUI7WUFDbkQ7VUFDRCxDQUFDLENBQUMsT0FBT3JOLEtBQUssRUFBRTtZQUNmRCxHQUFHLENBQUNDLEtBQUssQ0FBRSxpREFBZ0RBLEtBQU0sRUFBQyxDQUFDO1VBQ3BFO1FBQ0QsQ0FBQyxNQUFNO1VBQ04sTUFBTWUsSUFBSSxHQUFHN0MsV0FBVyxDQUFDQyxhQUFhLENBQUNrUCxRQUFRLENBQUM7VUFDaEQsTUFBTVcsWUFBWSxHQUFHOVAsV0FBVyxDQUFDdUosZUFBZSxDQUFDMUcsSUFBSSxDQUFDO1VBQ3RELE1BQU1rTixZQUFZLEdBQUdELFlBQVksQ0FBQ3JHLGdCQUFnQixFQUFFO1VBQ3BELE1BQU11RyxTQUFTLEdBQUdELFlBQVksQ0FBQ0UsY0FBYyxDQUFDYixJQUFJLENBQUM7VUFDbkQsTUFBTWMsT0FBTyxHQUFHO1lBQ2ZDLE1BQU0sRUFBRTtjQUNQdkcsY0FBYyxFQUFFb0csU0FBUyxDQUFDcEcsY0FBYztjQUN4Q25ELE1BQU0sRUFBRXVKLFNBQVMsQ0FBQ3ZKO1lBQ25CLENBQUM7WUFDRDJKLE1BQU0sRUFBRUosU0FBUyxDQUFDSTtVQUNuQixDQUFDO1VBRURDLGVBQWUsQ0FBQ0Msa0NBQWtDLENBQUN6TixJQUFJLEVBQUVtTixTQUFTLENBQUM7VUFFbkUsSUFBSWhRLFdBQVcsQ0FBQ3VRLGdCQUFnQixDQUFDcEIsUUFBUSxDQUF1QixLQUFLLElBQUksRUFBRTtZQUMxRTtZQUNBWSxZQUFZLENBQUNTLFVBQVUsQ0FBQ04sT0FBTyxFQUFTSixZQUFZLENBQUM7VUFDdEQsQ0FBQyxNQUFNO1lBQ04sSUFBSTtjQUNILE1BQU1XLE9BQU8sR0FBRyxNQUFNVixZQUFZLENBQUNXLG9CQUFvQixDQUFDUixPQUFPLEVBQUVKLFlBQVksQ0FBQztjQUM5RXpDLFVBQVUsQ0FBQ29ELE9BQU8sQ0FBQztZQUNwQixDQUFDLENBQUMsT0FBTzNPLEtBQUssRUFBRTtjQUNmRCxHQUFHLENBQUNDLEtBQUssQ0FBRSw0Q0FBMkNBLEtBQU0sRUFBQyxDQUFDO1lBQy9EO1VBQ0Q7UUFDRDtNQUNELENBQUMsQ0FBQyxPQUFPQSxLQUFLLEVBQUU7UUFDZkQsR0FBRyxDQUFDQyxLQUFLLENBQUUsK0JBQThCQSxLQUFNLEVBQUMsQ0FBQztNQUNsRDtJQUNELENBQUM7SUFDRDZPLFNBQVMsRUFBRSxnQkFBZ0JyTyxNQUFXLEVBQWlCO01BQ3RELE1BQU0vQixPQUFPLEdBQUcrQixNQUFNLENBQUM0QixTQUFTLEVBQUU7TUFDbEMsTUFBTWlMLFFBQVEsR0FBRzVPLE9BQU8sQ0FBQ1QsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEdBQ25EUyxPQUFPLENBQUNxUSxZQUFZLENBQUMsS0FBSyxFQUFHQyxJQUFhLElBQUs7UUFDL0MsT0FBT0EsSUFBSSxDQUFDL1EsR0FBRyxDQUFDLFlBQVksQ0FBQztNQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FDTFMsT0FBTztNQUVWLElBQUlBLE9BQU8sQ0FBQ3lNLGFBQWEsRUFBRSxJQUFJek0sT0FBTyxDQUFDeU0sYUFBYSxFQUFFLENBQUNDLE1BQU0sR0FBRyxDQUFDLElBQUlrQyxRQUFRLENBQUNoSSxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3pHLE1BQU0ySixVQUFVLEdBQUd2USxPQUFPLENBQUN5TSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSThELFVBQVUsSUFBSUEsVUFBVSxDQUFDaFIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7VUFDcEQsTUFBTUksWUFBWSxDQUFDZ1AsUUFBUSxDQUFDNEIsVUFBVSxFQUFFM0IsUUFBUSxDQUFDO1FBQ2xEO01BQ0Q7TUFDQSxPQUFPQSxRQUFRO0lBQ2hCLENBQUM7SUFDRDRCLFlBQVksRUFBRSxVQUFVbk8sVUFBc0IsRUFBRW1FLEtBQStCLEVBQVE7TUFDdEYsTUFBTUUsWUFBWSxHQUFHRixLQUFLLENBQUM3QyxTQUFTLEVBQWtCO1FBQ3JEOE0sWUFBWSxHQUFHOVEsWUFBWSxDQUFDc0MsdUJBQXVCLENBQUNJLFVBQVUsQ0FBQztRQUMvRHFPLFdBQVcsR0FBR2hLLFlBQVksQ0FBQ3RELFNBQVMsRUFBNEI7UUFDaEV1TixTQUFTLEdBQUdELFdBQVcsQ0FBQ0UsWUFBWSxFQUFFO01BRXZDLElBQUlELFNBQVMsS0FBSyxFQUFFLEVBQUU7UUFBQTtRQUNyQkQsV0FBVyxDQUFDRyxTQUFTLENBQUMsSUFBSSxDQUFDOztRQUUzQjtRQUNBbkssWUFBWSxDQUFDb0ssWUFBWSxDQUFDSCxTQUFTLENBQUM7UUFFcENqSyxZQUFZLENBQUNxSyx5QkFBeUIsRUFBRTtRQUN4QyxNQUFNQyxLQUFLLDRCQUFJdEssWUFBWSxDQUFDcEcsUUFBUSxFQUFFLDBEQUF4QixzQkFBa0MyUSxjQUFjLEVBQUUsQ0FBQyxjQUFjLENBQUM7UUFDaEYsSUFBSUQsS0FBSyxFQUFFO1VBQ1YsTUFBTUUsd0JBQXdCLEdBQUcsSUFBSUMscUJBQXFCLEVBQUU7VUFDNURELHdCQUF3QixDQUFDRSxPQUFPLENBQUMsY0FBYyxDQUFDO1VBQ2hERix3QkFBd0IsQ0FBQ0csUUFBUSxDQUFDTCxLQUFLLENBQUM7VUFDeEN0SyxZQUFZLENBQUM0SyxrQkFBa0IsQ0FBQ0osd0JBQXdCLENBQUM7UUFDMUQ7UUFDQSxNQUFNSyxJQUFJLDZCQUFJN0ssWUFBWSxDQUFDckgsaUJBQWlCLEVBQUUsMkRBQWpDLHVCQUFrRXVILFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDekcsSUFBSTJLLElBQUksRUFBRTtVQUNULE1BQU1DLG1CQUFtQixHQUFHLElBQUlMLHFCQUFxQixFQUFFO1VBQ3ZESyxtQkFBbUIsQ0FBQ0osT0FBTyxDQUFDLFVBQVUsQ0FBQztVQUN2QztVQUNBSSxtQkFBbUIsQ0FBQ0gsUUFBUSxDQUFDbE0seUJBQXlCLENBQUNDLFdBQVcsQ0FBQ3NCLFlBQVksQ0FBQyxHQUFHLEdBQUcsR0FBRzZLLElBQUksQ0FBQztVQUM5RjdLLFlBQVksQ0FBQzRLLGtCQUFrQixDQUFDRSxtQkFBbUIsQ0FBQztRQUNyRDtRQUNBLE1BQU1DLHFCQUFxQixHQUFHLElBQUlOLHFCQUFxQixFQUFFO1FBQ3pETSxxQkFBcUIsQ0FBQ0wsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUN2Q0sscUJBQXFCLENBQUNKLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRDNLLFlBQVksQ0FBQzRLLGtCQUFrQixDQUFDRyxxQkFBcUIsQ0FBQztRQUV0RCxNQUFNQyxLQUFLLEdBQUdsTCxLQUFLLENBQUN6QyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3pDO1FBQ0EsTUFBTTROLFFBQVEsR0FBSUQsS0FBSyxJQUFLQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQVVFLElBQWU7UUFFN0QsTUFBTUMsMEJBQTBCLEdBQUcsSUFBSVYscUJBQXFCLEVBQUU7UUFDOURVLDBCQUEwQixDQUFDVCxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ2xEUywwQkFBMEIsQ0FBQ1IsUUFBUSxDQUFDTSxRQUFRLElBQUksMEJBQTBCLENBQUM7UUFDM0VqTCxZQUFZLENBQUM0SyxrQkFBa0IsQ0FBQ08sMEJBQTBCLENBQUM7O1FBRTNEO1FBQ0EsTUFBTUMsYUFBYSxHQUFHLElBQUk5TixPQUFPLENBQUMsQ0FBQ0MsT0FBWSxFQUFFOE4sTUFBVyxLQUFLO1VBQ2hFLElBQUksQ0FBQ25TLGNBQWMsR0FBRyxJQUFJLENBQUNBLGNBQWMsSUFBSSxDQUFDLENBQUM7VUFDL0MsSUFBSSxDQUFDQSxjQUFjLENBQUM4RyxZQUFZLENBQUN1RyxLQUFLLEVBQUUsQ0FBQyxHQUFHO1lBQzNDaEosT0FBTyxFQUFFQSxPQUFPO1lBQ2hCOE4sTUFBTSxFQUFFQTtVQUNULENBQUM7VUFDRHJMLFlBQVksQ0FBQ3NMLE1BQU0sRUFBRTtRQUN0QixDQUFDLENBQUM7UUFDRnZCLFlBQVksQ0FBQzFMLFFBQVEsQ0FBQ0MsUUFBUSxDQUFDOE0sYUFBYSxDQUFDO01BQzlDLENBQUMsTUFBTTtRQUNORyxVQUFVLENBQUMxUSxLQUFLLENBQUM2TCxnQkFBZ0IsQ0FBQy9LLFVBQVUsQ0FBQyxDQUFDZ0wsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7TUFDNUY7SUFDRCxDQUFDO0lBRUQ2RSxvQkFBb0IsRUFBRSxVQUNyQjFMLEtBQXVDLEVBQ3ZDMkwsZ0JBQThDLEVBQzlDekcsWUFBb0IsRUFDcEJySixVQUFzQixFQUNyQjtNQUNELE1BQU0rUCxNQUFNLEdBQUdDLE1BQU0sQ0FBQzdMLEtBQUssQ0FBQ3pDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRDJDLFlBQVksR0FBR0YsS0FBSyxDQUFDN0MsU0FBUyxFQUFrQjtRQUNoRCtNLFdBQVcsR0FBR2hLLFlBQVksQ0FBQ3RELFNBQVMsRUFBNEI7TUFFakVzTixXQUFXLENBQUNHLFNBQVMsQ0FBQyxLQUFLLENBQUM7TUFFNUIsTUFBTXJOLE9BQU8sR0FBR2tELFlBQVksQ0FBQ3JILGlCQUFpQixFQUFnQztNQUM5RSxJQUFJK1MsTUFBTSxLQUFLLENBQUMsSUFBSUEsTUFBTSxJQUFJLEdBQUcsRUFBRTtRQUNsQyxJQUFJLENBQUNFLDhCQUE4QixDQUFDOUwsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQzVHLGNBQWMsQ0FBQzhHLFlBQVksQ0FBQ3VHLEtBQUssRUFBRSxDQUFDLENBQUM4RSxNQUFNLEVBQUU7TUFDbkQsQ0FBQyxNQUFNO1FBQUE7UUFDTixNQUFNUSxPQUFPLDBCQUFJL0wsS0FBSyxDQUFDekMsWUFBWSxDQUFDLFNBQVMsQ0FBQyx3REFBOUIsb0JBQTREeU8sSUFBSTtRQUVoRixJQUFJRCxPQUFPLEVBQUU7VUFDWjtVQUNBL08sT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVpUCxXQUFXLENBQUMsYUFBYSxFQUFFRixPQUFPLEVBQUUsSUFBSSxDQUFRO1FBQzFEOztRQUVBO1FBQ0EsSUFBSUosZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZUFBaEJBLGdCQUFnQixDQUFFek0sSUFBSSxFQUFFO1VBQzNCbEMsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVpUCxXQUFXLENBQUNOLGdCQUFnQixDQUFDek0sSUFBSSxFQUFFZ0IsWUFBWSxDQUFDc0IsUUFBUSxFQUFFLENBQUM7UUFDckU7O1FBRUE7UUFDQSx1QkFBQTBJLFdBQVcsQ0FBQ2dDLE1BQU0sd0RBQWxCLG9CQUFvQkMseUJBQXlCLEVBQUU7UUFFL0MsSUFBSSxDQUFDQyx5QkFBeUIsQ0FBQ3BNLEtBQUssRUFBRWtLLFdBQVcsRUFBRXJPLFVBQVUsQ0FBQztRQUU5RCxJQUFJLENBQUN6QyxjQUFjLENBQUM4RyxZQUFZLENBQUN1RyxLQUFLLEVBQUUsQ0FBQyxDQUFDaEosT0FBTyxFQUFFO01BQ3BEO01BRUEsT0FBTyxJQUFJLENBQUNyRSxjQUFjLENBQUM4RyxZQUFZLENBQUN1RyxLQUFLLEVBQUUsQ0FBQzs7TUFFaEQ7TUFDQSxNQUFNNEYsc0JBQXNCLEdBQUcxTix5QkFBeUIsQ0FBQ0MsV0FBVyxDQUFDc0IsWUFBWSxDQUFDO01BQ2xGLElBQUksQ0FBQ21NLHNCQUFzQixJQUFJLENBQUNyUCxPQUFPLEVBQUU7UUFDeEM7TUFDRDtNQUVBLE1BQU1zUCxnQkFBZ0IsR0FBRyxDQUFFLEdBQUV0UCxPQUFPLENBQUNvQyxPQUFPLEVBQUcsSUFBRzhGLFlBQWEsRUFBQyxDQUFDO01BQ2pFLElBQUl5RyxnQkFBZ0IsYUFBaEJBLGdCQUFnQixlQUFoQkEsZ0JBQWdCLENBQUV6TSxJQUFJLEVBQUU7UUFDM0JvTixnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFFLEdBQUV2UCxPQUFPLENBQUNvQyxPQUFPLEVBQUcsSUFBR3VNLGdCQUFnQixDQUFDek0sSUFBSyxFQUFDLENBQUM7TUFDdkU7TUFFQSxJQUFJdEcsT0FBTyxHQUFHb0UsT0FBTyxDQUFDbEUsVUFBVSxFQUFFO01BQ2xDLElBQUksQ0FBQ0YsT0FBTyxDQUFDRyxHQUFHLENBQUMsd0NBQXdDLENBQUMsRUFBRTtRQUMzRCxNQUFNQyxLQUFLLEdBQUdDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDZ0gsWUFBWSxDQUFDO1FBQ3JEdEgsT0FBTyxHQUFJSSxLQUFLLENBQUNILGlCQUFpQixFQUFFLENBQWFDLFVBQVUsRUFBRTtNQUM5RDtNQUNBLElBQUlGLE9BQU8sQ0FBQzJHLGlCQUFpQixFQUFFLEVBQUU7UUFDaEMzRyxPQUFPLENBQUM0RyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsTUFBTTtVQUMvQ2IseUJBQXlCLENBQUNjLElBQUksQ0FBQ3lLLFdBQVcsRUFBRTtZQUFFeEssTUFBTSxFQUFFQyxRQUFRLENBQUNDLE1BQU07WUFBRUMsT0FBTyxFQUFFeU07VUFBaUIsQ0FBQyxDQUFDO1VBQ25HM04seUJBQXlCLENBQUNjLElBQUksQ0FBQ3lLLFdBQVcsRUFBRTtZQUFFeEssTUFBTSxFQUFFQyxRQUFRLENBQUNjLE1BQU07WUFBRVosT0FBTyxFQUFFeU07VUFBaUIsQ0FBQyxDQUFDO1FBQ3BHLENBQUMsQ0FBQztNQUNILENBQUMsTUFBTTtRQUNOM04seUJBQXlCLENBQUNjLElBQUksQ0FBQ3lLLFdBQVcsRUFBRTtVQUFFeEssTUFBTSxFQUFFQyxRQUFRLENBQUNDLE1BQU07VUFBRUMsT0FBTyxFQUFFeU07UUFBaUIsQ0FBQyxDQUFDO1FBQ25HM04seUJBQXlCLENBQUNjLElBQUksQ0FBQ3lLLFdBQVcsRUFBRTtVQUFFeEssTUFBTSxFQUFFQyxRQUFRLENBQUNjLE1BQU07VUFBRVosT0FBTyxFQUFFeU07UUFBaUIsQ0FBQyxDQUFDO01BQ3BHO0lBQ0QsQ0FBQztJQUVEUiw4QkFBOEIsRUFBRSxVQUFVdlEsTUFBd0MsRUFBUTtNQUN6RjtNQUNBLE1BQU1pUixNQUFNLEdBQUdqUixNQUFNLENBQUNnQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUloQyxNQUFNLENBQUNnQyxZQUFZLENBQUMsVUFBVSxDQUFDO01BQ3BGLElBQUlrUCxZQUFZLEVBQUUzSCxNQUFNO01BQ3hCLElBQUk7UUFDSEEsTUFBTSxHQUFHMEgsTUFBTSxJQUFJRSxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxDQUFDO1FBQ3JDQyxZQUFZLEdBQUczSCxNQUFNLENBQUMvSixLQUFLLElBQUkrSixNQUFNLENBQUMvSixLQUFLLENBQUM2UixPQUFPO01BQ3BELENBQUMsQ0FBQyxPQUFPQyxDQUFDLEVBQUU7UUFDWEosWUFBWSxHQUFHRCxNQUFNLElBQUk1RixnQkFBZ0IsQ0FBQ3JMLE1BQU0sQ0FBQzRCLFNBQVMsRUFBRSxDQUFZLENBQUMwSixPQUFPLENBQUMsbUNBQW1DLENBQUM7TUFDdEg7TUFDQTRFLFVBQVUsQ0FBQzFRLEtBQUssQ0FBQzBSLFlBQVksQ0FBQztJQUMvQixDQUFDO0lBRURLLFlBQVksRUFBRSxVQUFVOU0sS0FBWSxFQUFFMkwsZ0JBQThDLEVBQUV6RyxZQUFvQixFQUFFckosVUFBc0IsRUFBRTtNQUNuSSxNQUFNa1IsWUFBWSxHQUFHL00sS0FBSyxDQUFDN0MsU0FBUyxFQUFZO01BQ2hELE1BQU0rTSxXQUFXLEdBQUc2QyxZQUFZLENBQUNuUSxTQUFTLEVBQTRCO01BQ3RFLE1BQU1JLE9BQU8sR0FBR2tOLFdBQVcsQ0FBQ3JSLGlCQUFpQixFQUFhOztNQUUxRDtNQUNBbUUsT0FBTyxDQUFDaVAsV0FBVyxDQUFDL0csWUFBWSxFQUFFLElBQUksQ0FBQztNQUN2QztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0FsSSxPQUFPLENBQUNpUCxXQUFXLENBQUMvRyxZQUFZLEVBQUU3TCxTQUFTLEVBQUUsSUFBSSxDQUFRO01BRXpELElBQUksQ0FBQytTLHlCQUF5QixDQUFDcE0sS0FBSyxFQUFFa0ssV0FBVyxFQUFFck8sVUFBVSxDQUFDOztNQUU5RDtNQUNBLE1BQU02QyxxQkFBcUIsR0FBR0MseUJBQXlCLENBQUNDLFdBQVcsQ0FBQ21PLFlBQVksQ0FBQztNQUNqRixJQUFJck8scUJBQXFCLEVBQUU7UUFDMUIsSUFBSTlGLE9BQU8sR0FBR29FLE9BQU8sQ0FBQ2xFLFVBQVUsRUFBRTtRQUNsQyxJQUFJLENBQUNGLE9BQU8sQ0FBQ0csR0FBRyxDQUFDLHdDQUF3QyxDQUFDLEVBQUU7VUFDM0QsTUFBTUMsS0FBSyxHQUFHQyxXQUFXLENBQUNDLGFBQWEsQ0FBQzZULFlBQVksQ0FBQztVQUNyRG5VLE9BQU8sR0FBSUksS0FBSyxDQUFDSCxpQkFBaUIsRUFBRSxDQUFhQyxVQUFVLEVBQUU7UUFDOUQ7UUFFQSxNQUFNK0YsSUFBSSxHQUFHLENBQUUsR0FBRTdCLE9BQU8sQ0FBQ29DLE9BQU8sRUFBRyxJQUFHOEYsWUFBYSxFQUFDLENBQUM7UUFDckQsSUFBSXlHLGdCQUFnQixhQUFoQkEsZ0JBQWdCLGVBQWhCQSxnQkFBZ0IsQ0FBRXpNLElBQUksRUFBRTtVQUMzQkwsSUFBSSxDQUFDME4sSUFBSSxDQUFFLEdBQUV2UCxPQUFPLENBQUNvQyxPQUFPLEVBQUcsSUFBR3VNLGdCQUFnQixDQUFDek0sSUFBSyxFQUFDLENBQUM7UUFDM0Q7UUFDQVAseUJBQXlCLENBQUNjLElBQUksQ0FBQ3NOLFlBQVksRUFBRTtVQUFFck4sTUFBTSxFQUFFQyxRQUFRLENBQUNZLElBQUk7VUFBRVYsT0FBTyxFQUFFaEI7UUFBSyxDQUFDLENBQUM7UUFFdEZqRyxPQUFPLENBQUM0RyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsWUFBWTtVQUNyRGIseUJBQXlCLENBQUNjLElBQUksQ0FBQ3NOLFlBQVksRUFBRTtZQUFFck4sTUFBTSxFQUFFQyxRQUFRLENBQUNDLE1BQU07WUFBRUMsT0FBTyxFQUFFaEI7VUFBSyxDQUFDLENBQUM7VUFDeEZGLHlCQUF5QixDQUFDYyxJQUFJLENBQUNzTixZQUFZLEVBQUU7WUFBRXJOLE1BQU0sRUFBRUMsUUFBUSxDQUFDYyxNQUFNO1lBQUVaLE9BQU8sRUFBRWhCO1VBQUssQ0FBQyxDQUFDO1FBQ3pGLENBQUMsQ0FBQztNQUNIO0lBQ0QsQ0FBQztJQUVEdU4seUJBQXlCLEVBQUUsVUFBVTdRLE1BQVcsRUFBRTZJLFFBQWEsRUFBRTNLLFdBQWdCLEVBQUU7TUFDbEYsTUFBTStCLGFBQWEsR0FBR3JDLFlBQVksQ0FBQ3NDLHVCQUF1QixDQUFDaEMsV0FBVyxDQUFDO01BQ3ZFLElBQUkySyxRQUFRLElBQUlBLFFBQVEsQ0FBQ3ZMLGlCQUFpQixFQUFFLENBQUN3RSxXQUFXLEVBQUUsRUFBRTtRQUMzRDtNQUNEO01BQ0EsSUFBSStHLFFBQVEsRUFBRTtRQUNiN0ksTUFBTSxDQUFDL0IsT0FBTyxHQUFHNEssUUFBUTtNQUMxQjtNQUNBNUksYUFBYSxDQUFDRSxZQUFZLENBQUN3QyxpQkFBaUIsQ0FBQzNDLE1BQU0sRUFBRSxJQUFJLENBQUNxQyxxQkFBcUIsQ0FBQ3JDLE1BQU0sQ0FBQyxDQUFDc0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRG1QLGtCQUFrQixFQUFFLFVBQVVDLFNBQWMsRUFBRTtNQUM3QyxPQUFPQyxRQUFRLENBQUNGLGtCQUFrQixDQUFDQyxTQUFTLENBQUM7SUFDOUMsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NFLHlCQUF5QixFQUFFLFVBQVVDLGNBQXNCLEVBQUVDLGlCQUF5QixFQUFFQyxjQUFzQixFQUFFO01BQy9HLElBQUlDLGFBQXFCO01BQ3pCLElBQUkxVCxVQUFVO01BQ2QsSUFBSTJULGFBQXFCO01BQ3pCLElBQUlKLGNBQWMsRUFBRTtRQUNuQnZULFVBQVUsR0FBRzRULFlBQVksQ0FBQzFULFlBQVksRUFBRTtRQUN4Q3lULGFBQWEsR0FBRzNULFVBQVUsQ0FBQ2tKLFNBQVMsQ0FBRSxHQUFFc0ssaUJBQWtCLGFBQVksQ0FBQztRQUN2RSxPQUFPeFQsVUFBVSxDQUNmNlQsb0JBQW9CLENBQUNMLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUM3Q3ZQLElBQUksQ0FBQyxVQUFVNlAsY0FBbUIsRUFBRTtVQUNwQztVQUNBLE1BQU1DLGNBQWMsR0FBR0QsY0FBYyxDQUFDQSxjQUFjLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHNUosTUFBTSxDQUFDQyxJQUFJLENBQUMySixjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUMvRixNQUFNRSxlQUFlLEdBQUdELGNBQWMsQ0FBQ0UsTUFBTTtVQUM3QyxNQUFNQyxtQkFBbUIsR0FBR0YsZUFBZSxDQUFDOVQsWUFBWSxFQUFFO1VBQzFELE1BQU1pVSxhQUFhLEdBQUdKLGNBQWMsQ0FBQ0ssVUFBVSxDQUFDQyxJQUFJLENBQUMsVUFBVUMsVUFBZSxFQUFFO1lBQy9FLE9BQU9BLFVBQVUsQ0FBQ0MsaUJBQWlCLElBQUlELFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLGFBQWEsS0FBS2IsYUFBYTtVQUNwRyxDQUFDLENBQUM7VUFDRixJQUFJUSxhQUFhLElBQUksQ0FBQ0EsYUFBYSxDQUFDTSxpQkFBaUIsRUFBRTtZQUN0RCxNQUFNLElBQUlDLEtBQUssQ0FBRSwwQ0FBeUNmLGFBQWMsRUFBQyxDQUFDO1VBQzNFO1VBQ0EsTUFBTWdCLGVBQWUsR0FBR1QsbUJBQW1CLENBQUNoTCxTQUFTLENBQ25ELElBQUc2SyxjQUFjLENBQUNhLGNBQWUsSUFBR1QsYUFBYSxDQUFDTSxpQkFBa0Isc0NBQXFDLENBQzFHO1VBRUQsSUFBSUUsZUFBZSxJQUFJQSxlQUFlLENBQUNFLEtBQUssRUFBRTtZQUM3Q25CLGFBQWEsR0FBR2lCLGVBQWUsQ0FBQ0UsS0FBSztZQUNyQyxNQUFNQyxPQUFPLEdBQUcsSUFBSUMsTUFBTSxDQUFDO2NBQzFCMVAsSUFBSSxFQUFFOE8sYUFBYSxDQUFDTSxpQkFBaUI7Y0FDckNPLFFBQVEsRUFBRSxJQUFJO2NBQ2RDLE1BQU0sRUFBRTFCO1lBQ1QsQ0FBQyxDQUFDO1lBQ0YsTUFBTTJCLFlBQVksR0FBR2xCLGVBQWUsQ0FBQ21CLFFBQVEsQ0FBRSxJQUFHcEIsY0FBYyxDQUFDYSxjQUFlLEVBQUMsRUFBRXBWLFNBQVMsRUFBRUEsU0FBUyxFQUFFc1YsT0FBTyxFQUFFO2NBQ2pITSxPQUFPLEVBQUUxQjtZQUNWLENBQUMsQ0FBQztZQUNGLE9BQU93QixZQUFZLENBQUNHLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1VBQzFDLENBQUMsTUFBTTtZQUNONUIsY0FBYyxHQUFHLE9BQU87WUFDeEIsT0FBT0YsY0FBYztVQUN0QjtRQUNELENBQUMsQ0FBQyxDQUNEdFAsSUFBSSxDQUFDLFVBQVVxUixTQUFjLEVBQUU7VUFBQTtVQUMvQixNQUFNQyxZQUFZLEdBQUc3QixhQUFhLGtCQUFHNEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxnREFBWixZQUFjcE0sU0FBUyxFQUFFLENBQUN3SyxhQUFhLENBQUMsR0FBRyxFQUFFO1VBQ2xGLFFBQVFELGNBQWM7WUFDckIsS0FBSyxhQUFhO2NBQ2pCLE9BQU84QixZQUFZO1lBQ3BCLEtBQUssa0JBQWtCO2NBQ3RCLE9BQU9DLElBQUksQ0FBQ0Msd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUN6SSxPQUFPLENBQUMsK0JBQStCLEVBQUUsQ0FDNUZ1SSxZQUFZLEVBQ1poQyxjQUFjLENBQ2QsQ0FBQztZQUNILEtBQUssa0JBQWtCO2NBQ3RCLE9BQU9pQyxJQUFJLENBQUNDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDekksT0FBTyxDQUFDLCtCQUErQixFQUFFLENBQzVGdUcsY0FBYyxFQUNkZ0MsWUFBWSxDQUNaLENBQUM7WUFDSDtjQUNDLE9BQU9oQyxjQUFjO1VBQUM7UUFFekIsQ0FBQyxDQUFDLENBQ0RqUCxLQUFLLENBQUMsVUFBVTJHLE1BQVcsRUFBRTtVQUM3QixNQUFNeUssSUFBSSxHQUNUekssTUFBTSxDQUFDOEcsTUFBTSxJQUFJOUcsTUFBTSxDQUFDOEcsTUFBTSxLQUFLLEdBQUcsR0FDbEMsdUJBQXNCOUcsTUFBTSxDQUFDOEcsTUFBTyxnQ0FBK0J5QixpQkFBa0IsRUFBQyxHQUN2RnZJLE1BQU0sQ0FBQzhILE9BQU87VUFDbEI5UixHQUFHLENBQUNDLEtBQUssQ0FBQ3dVLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUM7TUFDSjtNQUNBLE9BQU9uQyxjQUFjO0lBQ3RCLENBQUM7SUFFRG9DLG1CQUFtQixFQUFFLFVBQVVqVSxNQUFXLEVBQUU7TUFDM0MsTUFBTWtVLGFBQWEsR0FBRzdJLGdCQUFnQixDQUFDckwsTUFBTSxDQUFDNEIsU0FBUyxFQUFFLENBQUM7TUFDMURzTyxVQUFVLENBQUMxUSxLQUFLLENBQUMwVSxhQUFhLENBQUM1SSxPQUFPLENBQUMscUNBQXFDLENBQUMsRUFBRTtRQUM5RTZJLE9BQU8sRUFDTCxjQUFhRCxhQUFhLENBQUM1SSxPQUFPLENBQUMsc0RBQXNELENBQUUsZ0JBQzNGdEwsTUFBTSxDQUFDb1UsYUFBYSxFQUFFLENBQUNDLFFBQ3ZCLFVBQVMsR0FDVCxjQUFhSCxhQUFhLENBQUM1SSxPQUFPLENBQUMscURBQXFELENBQUUsZ0JBQWV0TCxNQUFNLENBQzlHNEIsU0FBUyxFQUFFLENBQ1gwUyxXQUFXLEVBQUUsQ0FDYkMsUUFBUSxFQUFFLENBQ1ZDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFFLEVBQUM7UUFDMUJDLFlBQVksRUFBRTtNQUNmLENBQUMsQ0FBUTtJQUNWLENBQUM7SUFFREMsb0JBQW9CLEVBQUUsVUFBVTFVLE1BQVcsRUFBcUI7TUFDL0RrUSxVQUFVLENBQUMxUSxLQUFLLENBQ2Y2TCxnQkFBZ0IsQ0FBQ3JMLE1BQU0sQ0FBQzRCLFNBQVMsRUFBRSxDQUFDLENBQUMwSixPQUFPLENBQzNDLG1DQUFtQyxFQUNuQ3RMLE1BQU0sQ0FBQzRCLFNBQVMsRUFBRSxDQUFDK1Msa0JBQWtCLEVBQUUsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUNsRCxFQUNEO1FBQ0NILFlBQVksRUFBRTtNQUNmLENBQUMsQ0FDRDtJQUNGLENBQUM7SUFFRHZVLHVCQUF1QixFQUFFLFVBQVVoQyxXQUFnQixFQUFFO01BQ3BELE9BQU9BLFdBQVcsQ0FBQ1YsR0FBRyxDQUFDLDBCQUEwQixDQUFDLEdBQUdVLFdBQVcsQ0FBQzJXLFdBQVcsR0FBRzNXLFdBQVc7SUFDM0YsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDNFcseUJBQXlCLEVBQUUsVUFBVWhLLE1BQWMsRUFBRXZLLElBQVUsRUFBRTtNQUFBO01BQ2hFLE1BQU0yVCxhQUFhLEdBQUdhLG1CQUFtQixDQUFDMUosZ0JBQWdCLENBQUM5SyxJQUFJLENBQUM7TUFDaEUsSUFBSTZNLE9BQU8sR0FBRzBHLElBQUksQ0FBQzNTLElBQUksQ0FBRSxvQ0FBbUMsQ0FBc0I7TUFFbEYsSUFBSSxDQUFDaU0sT0FBTyxFQUFFO1FBQ2JBLE9BQU8sR0FBRyxJQUFJVCxpQkFBaUIsQ0FBQyxvQ0FBb0MsRUFBRTtVQUNyRVYsVUFBVSxFQUFFLEtBQUs7VUFDakJJLFNBQVMsRUFBRTtRQUNaLENBQUMsQ0FBQztRQUNGZSxPQUFPLENBQUM0SCxhQUFhLENBQUMscUJBQXFCLENBQUM7UUFDNUN6VSxJQUFJLENBQUM4TSxZQUFZLENBQUNELE9BQU8sQ0FBQztNQUMzQjtNQUVBLE1BQU14SSxXQUFXLHlCQUFJa0csTUFBTSxDQUFDdk4sVUFBVSxDQUFDLFVBQVUsQ0FBQyx1REFBOUIsbUJBQ2pCMFgsV0FBVyxFQUFFLENBQ2R0QyxJQUFJLENBQUV0VixPQUFPO1FBQUE7UUFBQSxPQUFLQSxPQUFPLGFBQVBBLE9BQU8sMkNBQVBBLE9BQU8sQ0FBRXdHLE9BQU8sRUFBRSxxREFBbEIsaUJBQW9CcVIsVUFBVSxDQUFDLDJCQUEyQixDQUFDO01BQUEsRUFBQyxDQUM5RXJSLE9BQU8sRUFBRTtNQUNYLE1BQU1zUixVQUFVLDRCQUFHckssTUFBTSxDQUFDeE4saUJBQWlCLENBQUMsVUFBVSxDQUFDLDBEQUFwQyxzQkFBc0NrSyxTQUFTLENBQUM1QyxXQUFXLENBQUM7TUFFL0UsSUFBSXdRLGVBQXlDO01BQzdDLElBQUlELFVBQVUsSUFBSUEsVUFBVSxDQUFDeEssTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN4Q3lLLGVBQWUsR0FBR0QsVUFBVSxDQUFDeEMsSUFBSSxDQUFFMEMsUUFBc0IsSUFBSztVQUM3RCxPQUFPQSxRQUFRLENBQUNDLEdBQUcsS0FBS0Msc0JBQXNCLENBQUN6SyxNQUFNLENBQUN4TixpQkFBaUIsRUFBRSxDQUFFdUcsT0FBTyxFQUFFLENBQUM7UUFDdEYsQ0FBQyxDQUFDO01BQ0g7TUFDQXVKLE9BQU8sQ0FBQ29JLGNBQWMsRUFBRTtNQUN4QnBJLE9BQU8sQ0FBQ3FJLFVBQVUsQ0FDakIsSUFBSUMsS0FBSyxDQUFDO1FBQ1RDLElBQUksRUFBRXpCLGFBQWEsQ0FBQzVJLE9BQU8sQ0FBQyx1Q0FBdUMsRUFBRSxDQUFFLHVCQUFFOEosZUFBZSxxREFBZixpQkFBaUJRLElBQUssRUFBQyxDQUFDO01BQ2xHLENBQUMsQ0FBQyxDQUNGO01BQ0R4SSxPQUFPLENBQUNFLE1BQU0sQ0FBQ3hDLE1BQU0sQ0FBQztJQUN2QjtFQUNELENBQUM7O0VBRUQ7QUFDQTtBQUNBO0VBRkEsT0FHZWxOLFlBQVk7QUFBQSJ9
|
|
838
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb2xsYWJvcmF0aW9uQmluZGluZyIsImZpZWxkIiwiYmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZyIsImlzQSIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiRmllbGRSdW50aW1lIiwidXBsb2FkUHJvbWlzZXMiLCJ1bmRlZmluZWQiLCJjcmVhdGluZ0luYWN0aXZlUm93Iiwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgiLCJvU291cmNlIiwib0NvbnRyb2xsZXIiLCJzTmF2UGF0aCIsIl9yb3V0aW5nIiwib0JpbmRpbmdDb250ZXh0Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZm5OYXZpZ2F0ZSIsIm9Db250ZXh0IiwibmF2aWdhdGVUb1RhcmdldCIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZHJhZnQiLCJwcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbiIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiZ2V0Q29udHJvbGxlciIsIk5hdmlnYXRpb25UeXBlIiwiRm9yd2FyZE5hdmlnYXRpb24iLCJMb2ciLCJlcnJvciIsImlzRHJhZnRJbmRpY2F0b3JWaXNpYmxlIiwic1Byb3BlcnR5UGF0aCIsInNTZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yIiwiSGFzRHJhZnRFbnRpdHkiLCJJc0FjdGl2ZUVudGl0eSIsImhpZGVEcmFmdEluZm8iLCJvblZhbGlkYXRlRmllbGRHcm91cCIsIm9FdmVudCIsIm9GRUNvbnRyb2xsZXIiLCJfZ2V0RXh0ZW5zaW9uQ29udHJvbGxlciIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UiLCJfZmV0Y2hSZWNvbW1lbmRhdGlvbnMiLCJjb250cm9sbGVyIiwidmlldyIsImZpZWxkQmluZGluZ0NvbnRleHQiLCJyZWNvbW1lbmRhdGlvbnNDb250ZXh0IiwiZmllbGRCaW5kaW5nIiwiZmVDb250cm9sbGVyIiwidmFsdWVIZWxwSWQiLCJnZXRWYWx1ZUhlbHAiLCJpbmNsdWRlcyIsInRhYmxlSWQiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwidGFibGUiLCJieUlkIiwiY29udGV4dElkZW50aWZpZXIiLCJnZXRQYXJlbnQiLCJnZXRJZGVudGlmaWVyQ29sdW1uIiwicmVjb21tZW5kYXRpb25zIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UiLCJjb250ZXh0IiwiaGFuZGxlQ2hhbmdlIiwib1NvdXJjZUZpZWxkIiwiZ2V0U291cmNlIiwiYklzVHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJwVmFsdWVSZXNvbHZlZCIsImdldFBhcmFtZXRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwiYlZhbGlkIiwiZmllbGRWYWxpZGl0eSIsImdldEZpZWxkU3RhdGVPbkNoYW5nZSIsInN0YXRlIiwidGhlbiIsIm1QYXJhbWV0ZXJzIiwidmFsaWQiLCJGaWVsZEFQSSIsImhhbmRsZUZpZWxkQ2hhbmdlIiwiY2F0Y2giLCJkZWJ1ZyIsInZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQiLCJzZXRUaW1lb3V0IiwiZWRpdEZsb3ciLCJzeW5jVGFzayIsInByZXBhcmVEZWZlcnJlZFNpZGVFZmZlY3RzRm9yRmllbGQiLCJiQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jIiwiaXNDb25uZWN0ZWQiLCJkYXRhIiwiZ2V0QmluZGluZ0luZm8iLCJwYXJ0cyIsImZpbHRlciIsInBhcnQiLCJwYXRoIiwibWFwIiwiZ2V0UGF0aCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVDb2xsYWJvcmF0aW9uIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJjb250ZW50IiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJoYW5kbGVMaXZlQ2hhbmdlIiwiZXZlbnQiLCJfc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyIiwiZmlsZVVwbG9hZGVyIiwiYmluZGluZ1BhdGgiLCJnZXRQcm9wZXJ0eSIsImZ1bGxQYXRoIiwiaGFuZGxlT3BlblVwbG9hZGVyIiwiTG9jayIsImhhbmRsZUNsb3NlVXBsb2FkZXIiLCJVbmxvY2siLCJtRmllbGRTdGF0ZSIsIl9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzIiwib0JpbmRpbmciLCJnZXREYXRhU3RhdGUiLCJnZXRJbnZhbGlkVmFsdWUiLCJnZXRDb250ZW50IiwiRmllbGRXcmFwcGVyIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZ2V0RWRpdE1vZGUiLCJnZXRDb250ZW50RWRpdCIsImJJc1ZhbGlkIiwiZ2V0TWF4Q29uZGl0aW9ucyIsIm9WYWx1ZUJpbmRpbmdJbmZvIiwiZ2V0VmFsdWUiLCJmaWVsZFZhbHVlIiwidmFsaWRpdHkiLCJfZm5GaXhIYXNoUXVlcnlTdHJpbmciLCJzQ3VycmVudEhhc2giLCJzcGxpdCIsIl9mbkdldExpbmtJbmZvcm1hdGlvbiIsIl9vU291cmNlIiwiX29MaW5rIiwiX3NQcm9wZXJ0eVBhdGgiLCJfc1ZhbHVlIiwiZm5TZXRBY3RpdmUiLCJvTW9kZWwiLCJzU2VtYW50aWNPYmplY3ROYW1lIiwib0ludGVybmFsTW9kZWxDb250ZXh0Iiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9TaGVsbFNlcnZpY2VIZWxwZXIiLCJnZXRTaGVsbFNlcnZpY2VzIiwicEdldExpbmtzUHJvbWlzZSIsImdldExpbmtzV2l0aENhY2hlIiwic2VtYW50aWNPYmplY3QiLCJhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMiLCJnZXRPYmplY3QiLCJTZW1hbnRpY09iamVjdE5hbWUiLCJTZW1hbnRpY09iamVjdEZ1bGxQYXRoIiwiTWV0YU1vZGVsIiwiSW50ZXJuYWxNb2RlbENvbnRleHQiLCJTaGVsbFNlcnZpY2VIZWxwZXIiLCJHZXRMaW5rc1Byb21pc2UiLCJTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsIl9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbiIsIm9TZW1hbnRpY09iamVjdFBheWxvYWQiLCJfb0xpbmtJbmZvIiwiYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9mblF1aWNrVmlld1NldE5ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9vRmluYWxTZW1hbnRpY09iamVjdHMiLCJzVG1wUGF0aCIsImFTZW1hbnRpY09iamVjdFBhdGhzIiwiT2JqZWN0Iiwia2V5cyIsImlQYXRoc0NvdW50IiwiX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwiLCJzVmFsdWUiLCJvQ29udHJvbCIsImJBY3RpdmUiLCJzZXRBY3RpdmUiLCJzZXRUaXRsZUFjdGl2ZSIsIm9Db25kaXRpb25hbFdyYXBwZXIiLCJzZXRDb25kaXRpb24iLCJvTGlua0luZm8iLCJnZXRIYXNoIiwidXBkYXRlU2VtYW50aWNUYXJnZXRzIiwib0ZpbmFsU2VtYW50aWNPYmplY3RzIiwib0Vycm9yIiwiX2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQiLCJfY29udHJvbCIsIl9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbCIsInByb3BlcnR5UGF0aCIsImFDdXN0b21EYXRhIiwic1NlbWFudGljT2JqZWN0UGF0aFZhbHVlIiwib1ZhbHVlQmluZGluZyIsIl9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nIiwic2VtYW50aWNPYmplY3RQYXRoVmFsdWUiLCJjdXN0b21EYXRhIiwiZ2V0S2V5IiwiaW5kZXgiLCJfb0NoYW5nZUV2ZW50IiwiTGlua01vZGVsQ29udGV4dENoYW5nZSIsInNQcm9wZXJ0eSIsInNQYXRoVG9Qcm9wZXJ0eSIsImNvbnRyb2wiLCJtZGNMaW5rIiwiZ2V0RGVwZW5kZW50cyIsImxlbmd0aCIsImdldEN1c3RvbURhdGEiLCJvcGVuRXh0ZXJuYWxMaW5rIiwic291cmNlIiwib3BlbldpbmRvdyIsImNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzIiwibWRjTGlua0lkIiwiZ2V0SWQiLCJpbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyIsInRpdGxlIiwiZ2V0UmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJkZXNjcmlwdGlvbiIsImVuYWJsZUZvcm1hdHRlZFRleHQiLCJpbGx1c3RyYXRpb25TaXplIiwiaWxsdXN0cmF0aW9uVHlwZSIsIklsbHVzdHJhdGVkTWVzc2FnZVR5cGUiLCJUZW50IiwiaWxsdXN0cmF0ZWRNZXNzYWdlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwicG9wb3ZlclNldHRpbmdzIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInNob3dIZWFkZXIiLCJEZXZpY2UiLCJzeXN0ZW0iLCJwaG9uZSIsInBsYWNlbWVudCIsIm1vYmlsZWxpYnJhcnkiLCJQbGFjZW1lbnRUeXBlIiwiQXV0byIsImFmdGVyQ2xvc2UiLCJkZXN0cm95IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJvcGVuTGluayIsInNhcG1MaW5rIiwiaFJlZiIsImdldFRyaWdnZXJIcmVmIiwibGlua0l0ZW1zIiwicmV0cmlldmVMaW5rSXRlbXMiLCJnZXRQYXlsb2FkIiwiaGFzUXVpY2tWaWV3RmFjZXRzIiwicG9wb3ZlciIsImFkZERlcGVuZGVudCIsIm9wZW5CeSIsIm9wZW4iLCJhcHBDb21wb25lbnQiLCJzaGVsbFNlcnZpY2UiLCJzaGVsbEhhc2giLCJwYXJzZVNoZWxsSGFzaCIsIm5hdkFyZ3MiLCJ0YXJnZXQiLCJwYXJhbXMiLCJLZWVwQWxpdmVIZWxwZXIiLCJzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoIiwiaXNTdGlja3lFZGl0TW9kZSIsInRvRXh0ZXJuYWwiLCJuZXdIcmVmIiwiaHJlZkZvckV4dGVybmFsQXN5bmMiLCJwcmVzc0xpbmsiLCJmaW5kRWxlbWVudHMiLCJlbGVtIiwib0ZpZWxkSW5mbyIsInVwbG9hZFN0cmVhbSIsIkZFQ29udHJvbGxlciIsImZpbGVXcmFwcGVyIiwidXBsb2FkVXJsIiwiZ2V0VXBsb2FkVXJsIiwic2V0VUlCdXN5Iiwic2V0VXBsb2FkVXJsIiwicmVtb3ZlQWxsSGVhZGVyUGFyYW1ldGVycyIsInRva2VuIiwiZ2V0SHR0cEhlYWRlcnMiLCJoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4iLCJGaWxlVXBsb2FkZXJQYXJhbWV0ZXIiLCJzZXROYW1lIiwic2V0VmFsdWUiLCJhZGRIZWFkZXJQYXJhbWV0ZXIiLCJlVGFnIiwiaGVhZGVyUGFyYW1ldGVyRVRhZyIsImhlYWRlclBhcmFtZXRlckFjY2VwdCIsImZpbGVzIiwiZmlsZVR5cGUiLCJ0eXBlIiwiaGVhZGVyUGFyYW1ldGVyQ29udGVudFR5cGUiLCJ1cGxvYWRQcm9taXNlIiwicmVqZWN0IiwidXBsb2FkIiwiTWVzc2FnZUJveCIsImhhbmRsZVVwbG9hZENvbXBsZXRlIiwicHJvcGVydHlGaWxlTmFtZSIsInN0YXR1cyIsIk51bWJlciIsIl9kaXNwbGF5TWVzc2FnZUZvckZhaWxlZFVwbG9hZCIsIm5ld0VUYWciLCJldGFnIiwic2V0UHJvcGVydHkiLCJhdmF0YXIiLCJyZWZyZXNoQXZhdGFyQ2FjaGVCdXN0aW5nIiwiX2NhbGxTaWRlRWZmZWN0c0ZvclN0cmVhbSIsImlzQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJub3RpZmljYXRpb25EYXRhIiwicHVzaCIsInNFcnJvciIsInNNZXNzYWdlVGV4dCIsIkpTT04iLCJwYXJzZSIsIm1lc3NhZ2UiLCJlIiwicmVtb3ZlU3RyZWFtIiwiZGVsZXRlQnV0dG9uIiwiZ2V0SWNvbkZvck1pbWVUeXBlIiwic01pbWVUeXBlIiwiSWNvblBvb2wiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0Iiwic1Byb3BlcnR5VmFsdWUiLCJzUHJvcGVydHlGdWxsUGF0aCIsInNEaXNwbGF5Rm9ybWF0Iiwic1RleHRQcm9wZXJ0eSIsInNQcm9wZXJ0eU5hbWUiLCJDb21tb25IZWxwZXIiLCJyZXF1ZXN0VmFsdWVMaXN0SW5mbyIsIm1WYWx1ZUxpc3RJbmZvIiwib1ZhbHVlTGlzdEluZm8iLCJvVmFsdWVMaXN0TW9kZWwiLCIkbW9kZWwiLCJvTWV0YU1vZGVsVmFsdWVMaXN0Iiwib1BhcmFtV2l0aEtleSIsIlBhcmFtZXRlcnMiLCJmaW5kIiwib1BhcmFtZXRlciIsIkxvY2FsRGF0YVByb3BlcnR5IiwiJFByb3BlcnR5UGF0aCIsIlZhbHVlTGlzdFByb3BlcnR5IiwiRXJyb3IiLCJvVGV4dEFubm90YXRpb24iLCJDb2xsZWN0aW9uUGF0aCIsIiRQYXRoIiwib0ZpbHRlciIsIkZpbHRlciIsIm9wZXJhdG9yIiwidmFsdWUxIiwib0xpc3RCaW5kaW5nIiwiYmluZExpc3QiLCIkc2VsZWN0IiwicmVxdWVzdENvbnRleHRzIiwiYUNvbnRleHRzIiwic0Rlc2NyaXB0aW9uIiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsInNNc2ciLCJoYW5kbGVUeXBlTWlzc21hdGNoIiwicmVzb3VyY2VNb2RlbCIsImRldGFpbHMiLCJnZXRQYXJhbWV0ZXJzIiwibWltZVR5cGUiLCJnZXRNaW1lVHlwZSIsInRvU3RyaW5nIiwicmVwbGFjZUFsbCIsImNvbnRlbnRXaWR0aCIsImhhbmRsZUZpbGVTaXplRXhjZWVkIiwiZ2V0TWF4aW11bUZpbGVTaXplIiwidG9GaXhlZCIsIl9jb250cm9sbGVyIiwic2hvd0NvbGxhYm9yYXRpb25FZGl0VXNlciIsIlJlc291cmNlTW9kZWxIZWxwZXIiLCJhZGRTdHlsZUNsYXNzIiwiZ2V0QmluZGluZ3MiLCJzdGFydHNXaXRoIiwiYWN0aXZpdGllcyIsImVkaXRpbmdBY3Rpdml0eSIsImFjdGl2aXR5Iiwia2V5IiwiZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aCIsImRlc3Ryb3lDb250ZW50IiwiYWRkQ29udGVudCIsIkxhYmVsIiwidGV4dCIsIm5hbWUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkUnVudGltZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQWN0aXZpdHlTeW5jXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCB7IEFjdGl2aXR5LCBnZXRBY3Rpdml0eUtleUZyb21QYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGRyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9kcmFmdFwiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEtlZXBBbGl2ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9LZWVwQWxpdmVIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFJlc291cmNlTW9kZWxIZWxwZXIsIHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRmllbGRXcmFwcGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgRmlsZVdyYXBwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmlsZVdyYXBwZXJcIjtcbmltcG9ydCB0eXBlIHsgRmllbGRBUElUeXBlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRBUElcIjtcbmltcG9ydCBGaWVsZEFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEFQSVwiO1xuaW1wb3J0IHR5cGUgQXZhdGFyIGZyb20gXCJzYXAvbS9BdmF0YXJcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSB7ICRJbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2UgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZVR5cGUgZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCB0eXBlIExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSB7ICRSZXNwb25zaXZlUG9wb3ZlclNldHRpbmdzIH0gZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgUmVzcG9uc2l2ZVBvcG92ZXIgZnJvbSBcInNhcC9tL1Jlc3BvbnNpdmVQb3BvdmVyXCI7XG5pbXBvcnQgbW9iaWxlbGlicmFyeSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IERldmljZSBmcm9tIFwic2FwL3VpL0RldmljZVwiO1xuaW1wb3J0IHR5cGUgRXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IHR5cGUgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEljb25Qb29sIGZyb20gXCJzYXAvdWkvY29yZS9JY29uUG9vbFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBGaWVsZCBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZCRDaGFuZ2VFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgTWRjTGluayB9IGZyb20gXCJzYXAvdWkvbWRjL0xpbmtcIjtcbmltcG9ydCB0eXBlIENvbXBvc2l0ZUJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9Db21wb3NpdGVCaW5kaW5nXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBGaWxlVXBsb2FkZXIgZnJvbSBcInNhcC91aS91bmlmaWVkL0ZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWxlVXBsb2FkZXIkQ2hhbmdlRXZlbnQsIEZpbGVVcGxvYWRlciRVcGxvYWRDb21wbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC91aS91bmlmaWVkL0ZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IEZpbGVVcGxvYWRlclBhcmFtZXRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyUGFyYW1ldGVyXCI7XG5pbXBvcnQgb3BlbldpbmRvdyBmcm9tIFwic2FwL3VpL3V0aWwvb3BlbldpbmRvd1wiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcIi4uL3RhYmxlL1RhYmxlQVBJXCI7XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyB1c2VkIGZvciBjb2xsYWJvcmF0aW9uIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHBhcmFtIGZpZWxkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZ1xuICovXG5mdW5jdGlvbiBnZXRDb2xsYWJvcmF0aW9uQmluZGluZyhmaWVsZDogQ29udHJvbCk6IE9EYXRhTGlzdEJpbmRpbmcgfCBPRGF0YUNvbnRleHRCaW5kaW5nIHtcblx0bGV0IGJpbmRpbmcgPSAoZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KS5nZXRCaW5kaW5nKCk7XG5cblx0aWYgKCFiaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGZpZWxkKTtcblx0XHRiaW5kaW5nID0gKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCkuZ2V0QmluZGluZygpO1xuXHR9XG5cblx0cmV0dXJuIGJpbmRpbmc7XG59XG4vKipcbiAqIFN0YXRpYyBjbGFzcyB1c2VkIGJ5IFwic2FwLnVpLm1kYy5GaWVsZFwiIGR1cmluZyBydW50aW1lXG4gKlxuICogQHByaXZhdGVcbiAqIEBleHBlcmltZW50YWwgVGhpcyBtb2R1bGUgaXMgb25seSBmb3IgaW50ZXJuYWwvZXhwZXJpbWVudGFsIHVzZSFcbiAqL1xuY29uc3QgRmllbGRSdW50aW1lID0ge1xuXHR1cGxvYWRQcm9taXNlczogdW5kZWZpbmVkIGFzIGFueSxcblx0Y3JlYXRpbmdJbmFjdGl2ZVJvdzogZmFsc2UsXG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIGludGVybmFsIG5hdmlnYXRpb24gb24gdGhlIGxpbmsgcGVydGFpbmluZyB0byBEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBvU291cmNlIFNvdXJjZSBvZiB0aGUgcHJlc3MgZXZlbnRcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIEluc3RhbmNlIG9mIHRoZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBzTmF2UGF0aCBUaGUgbmF2aWdhdGlvbiBwYXRoXG5cdCAqL1xuXHRvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDogZnVuY3Rpb24gKG9Tb3VyY2U6IENvbnRyb2wsIG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc05hdlBhdGg6IHN0cmluZykge1xuXHRcdGlmIChvQ29udHJvbGxlci5fcm91dGluZykge1xuXHRcdFx0bGV0IG9CaW5kaW5nQ29udGV4dCA9IG9Tb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9Tb3VyY2UpLFxuXHRcdFx0XHRvTWV0YU1vZGVsID0gb0JpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdGZuTmF2aWdhdGUgPSBmdW5jdGlvbiAob0NvbnRleHQ/OiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob0NvbnRleHQpIHtcblx0XHRcdFx0XHRcdG9CaW5kaW5nQ29udGV4dCA9IG9Db250ZXh0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvQ29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZVRvVGFyZ2V0KG9CaW5kaW5nQ29udGV4dCwgc05hdlBhdGgsIHRydWUpO1xuXHRcdFx0XHR9O1xuXHRcdFx0Ly8gU2hvdyBkcmFmdCBsb3NzIGNvbmZpcm1hdGlvbiBkaWFsb2cgaW4gY2FzZSBvZiBPYmplY3QgcGFnZVxuXHRcdFx0aWYgKChvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueSkuY29udmVydGVyVHlwZSA9PT0gXCJPYmplY3RQYWdlXCIgJiYgIU1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKSkge1xuXHRcdFx0XHRkcmFmdC5wcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbihcblx0XHRcdFx0XHRmbk5hdmlnYXRlLFxuXHRcdFx0XHRcdEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRvQmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0ZHJhZnQuTmF2aWdhdGlvblR5cGUuRm9yd2FyZE5hdmlnYXRpb25cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZuTmF2aWdhdGUoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKFxuXHRcdFx0XHRcIkZpZWxkUnVudGltZTogTm8gcm91dGluZyBsaXN0ZW5lciBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3VuZC4gSW50ZXJuYWwgbmF2aWdhdGlvbiBhYm9ydGVkLlwiLFxuXHRcdFx0XHRcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRSdW50aW1lXCIsXG5cdFx0XHRcdFwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIlxuXHRcdFx0KTtcblx0XHR9XG5cdH0sXG5cblx0aXNEcmFmdEluZGljYXRvclZpc2libGU6IGZ1bmN0aW9uIChcblx0XHRzUHJvcGVydHlQYXRoOiBhbnksXG5cdFx0c1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I6IGFueSxcblx0XHRIYXNEcmFmdEVudGl0eTogYW55LFxuXHRcdElzQWN0aXZlRW50aXR5OiBhbnksXG5cdFx0aGlkZURyYWZ0SW5mbzogYW55XG5cdCkge1xuXHRcdGlmIChJc0FjdGl2ZUVudGl0eSAhPT0gdW5kZWZpbmVkICYmIEhhc0RyYWZ0RW50aXR5ICE9PSB1bmRlZmluZWQgJiYgKCFJc0FjdGl2ZUVudGl0eSB8fCBIYXNEcmFmdEVudGl0eSkgJiYgIWhpZGVEcmFmdEluZm8pIHtcblx0XHRcdHJldHVybiBzUHJvcGVydHlQYXRoID09PSBzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIHZhbGlkYXRlRmllbGRHcm91cCBldmVudC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIG9uVmFsaWRhdGVGaWVsZEdyb3VwXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBUaGUgY29udHJvbGxlciBvZiB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBmaWVsZFxuXHQgKiBAcGFyYW0gb0V2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSB2YWxpZGF0ZUZpZWxkR3JvdXAgZXZlbnRcblx0ICovXG5cdG9uVmFsaWRhdGVGaWVsZEdyb3VwOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IG9iamVjdCwgb0V2ZW50OiBvYmplY3QpIHtcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKG9Db250cm9sbGVyKTtcblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZEdyb3VwQ2hhbmdlKG9FdmVudCk7XG5cdH0sXG5cblx0X2ZldGNoUmVjb21tZW5kYXRpb25zOiBmdW5jdGlvbiAoZmllbGQ6IEZpZWxkLCBjb250cm9sbGVyOiBDb250cm9sbGVyKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZmllbGQpO1xuXHRcdGNvbnN0IGZpZWxkQmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbnNDb250ZXh0O1xuXG5cdFx0Ly8gZGV0ZXJtaW5lIHJlY29tbWVuZGF0aW9uIGNvbnRleHQgdG8gdXNlXG5cdFx0Y29uc3QgZmllbGRCaW5kaW5nID0gKGZpZWxkQmluZGluZ0NvbnRleHQgYXMgQ29udGV4dCk/LmdldEJpbmRpbmcoKTtcblxuXHRcdGlmIChmaWVsZEJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdC8vIGluc2lkZSBhIHRhYmxlLCB1c2UgdGhlIHJvd1xuXHRcdFx0cmVjb21tZW5kYXRpb25zQ29udGV4dCA9IGZpZWxkQmluZGluZ0NvbnRleHQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGluc2lkZSBhIGZvcm0gbm93XG5cdFx0XHQvLyBjYW4gaGF2ZSAxLTEgbmF2aWdhdGlvbiBwcm9wZXJ0eS9kaXJlY3QgcHJvcGVydHkgLSB1c2UgdmlldyBjb250ZXh0XG5cdFx0XHRyZWNvbW1lbmRhdGlvbnNDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdH1cblx0XHRjb25zdCBmZUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlcik7XG5cdFx0Y29uc3QgdmFsdWVIZWxwSWQgPSBmaWVsZC5nZXRWYWx1ZUhlbHAoKTtcblx0XHRpZiAodmFsdWVIZWxwSWQgJiYgdmFsdWVIZWxwSWQuaW5jbHVkZXMoXCI6OlRhYmxlVmFsdWVIZWxwOjpcIikpIHtcblx0XHRcdGNvbnN0IHRhYmxlSWQgPSB2YWx1ZUhlbHBJZC5zdWJzdHJpbmcoMCwgdmFsdWVIZWxwSWQuaW5kZXhPZihcIjo6VGFibGVWYWx1ZUhlbHA6OlwiKSk7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHZpZXcuYnlJZCh0YWJsZUlkKTtcblx0XHRcdGNvbnN0IGNvbnRleHRJZGVudGlmaWVyID0gKHRhYmxlPy5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSk/LmdldElkZW50aWZpZXJDb2x1bW4oKTtcblx0XHRcdGZlQ29udHJvbGxlci5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UoZmllbGQsIFtcblx0XHRcdFx0eyBjb250ZXh0OiByZWNvbW1lbmRhdGlvbnNDb250ZXh0LCBjb250ZXh0SWRlbnRpZmllciB9XG5cdFx0XHRdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZmVDb250cm9sbGVyLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZCwgW3sgY29udGV4dDogcmVjb21tZW5kYXRpb25zQ29udGV4dCB9XSk7XG5cdFx0fVxuXHR9LFxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIGNoYW5nZSBldmVudC5cblx0ICogU3RvcmUgZmllbGQgZ3JvdXAgSURzIG9mIHRoaXMgZmllbGQgZm9yIHJlcXVlc3Rpbmcgc2lkZSBlZmZlY3RzIHdoZW4gcmVxdWlyZWQuXG5cdCAqIFdlIHN0b3JlIHRoZW0gaGVyZSB0byBlbnN1cmUgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUNoYW5nZVxuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgb2YgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgZmllbGRcblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB2b2lkIHtcblx0XHRjb25zdCBvU291cmNlRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbCxcblx0XHRcdGJJc1RyYW5zaWVudCA9IG9Tb3VyY2VGaWVsZCAmJiAob1NvdXJjZUZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgYW55KS5pc1RyYW5zaWVudCgpLFxuXHRcdFx0cFZhbHVlUmVzb2x2ZWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwicHJvbWlzZVwiKSB8fCBQcm9taXNlLnJlc29sdmUoKSxcblx0XHRcdG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRiVmFsaWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsaWRcIiksXG5cdFx0XHRmaWVsZFZhbGlkaXR5ID0gdGhpcy5nZXRGaWVsZFN0YXRlT25DaGFuZ2Uob0V2ZW50KS5zdGF0ZVtcInZhbGlkaXR5XCJdLFxuXHRcdFx0ZmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbDtcblxuXHRcdC8vIFVzZSB0aGUgRkUgQ29udHJvbGxlciBpbnN0ZWFkIG9mIHRoZSBleHRlbnNpb25BUEkgdG8gYWNjZXNzIGludGVybmFsIEZFIGNvbnRyb2xsZXJzXG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihvQ29udHJvbGxlcik7XG5cblx0XHQvLyBUT0RPOiBjdXJyZW50bHkgd2UgaGF2ZSB1bmRlZmluZWQgYW5kIHRydWUuLi4gYW5kIG91ciBjcmVhdGlvbiByb3cgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoaXMuXG5cdFx0Ly8gSSB3b3VsZCBtb3ZlIHRoaXMgbG9naWMgdG8gdGhpcyBwbGFjZSBhcyBpdCdzIGhhcmQgdG8gdW5kZXJzdGFuZCBmb3IgZmllbGQgY29uc3VtZXJcblx0XHRwVmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyBUaGUgZXZlbnQgaXMgZ29uZS4gRm9yIG5vdyB3ZSdsbCBqdXN0IHJlY3JlYXRlIGl0IGFnYWluXG5cdFx0XHRcdChvRXZlbnQgYXMgYW55KS5vU291cmNlID0gb1NvdXJjZTtcblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm1QYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdHZhbGlkOiBiVmFsaWRcblx0XHRcdFx0fTtcblx0XHRcdFx0KEZpZWxkQVBJIGFzIGFueSkuaGFuZGxlQ2hhbmdlKG9FdmVudCwgb0NvbnRyb2xsZXIpO1xuXHRcdFx0XHRpZiAoIWJJc1RyYW5zaWVudCkge1xuXHRcdFx0XHRcdC8vIHRyaWdnZXIgc2lkZSBlZmZlY3RzIHdpdGhvdXQgcmVnaXN0ZXJpbmcgZGVmZXJyZWQgc2lkZSBlZmZlY3RzXG5cdFx0XHRcdFx0Ly8gZGVmZXJyZWQgc2lkZSBlZmZlY3RzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgcHJlcGFyZURlZmVycmVkU2lkZUVmZmVjdHNGb3JGaWVsZCBiZWZvcmUgcFZhbHVlUmVzb2x2ZWQgaXMgcmVzb2x2ZWQuXG5cdFx0XHRcdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRDaGFuZ2Uob0V2ZW50LCBmaWVsZFZhbGlkaXR5LCBwVmFsdWVSZXNvbHZlZCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVjb21tZW5kYXRpb25zXG5cdFx0XHRcdEZpZWxkUnVudGltZS5fZmV0Y2hSZWNvbW1lbmRhdGlvbnMoZmllbGQgYXMgRmllbGQsIG9Db250cm9sbGVyKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoLypvRXJyb3I6IGFueSovKSB7XG5cdFx0XHRcdC8vIFRoZSBldmVudCBpcyBnb25lLiBGb3Igbm93IHdlJ2xsIGp1c3QgcmVjcmVhdGUgaXQgYWdhaW5cblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm9Tb3VyY2UgPSBvU291cmNlO1xuXHRcdFx0XHQob0V2ZW50IGFzIGFueSkubVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0dmFsaWQ6IGZhbHNlXG5cdFx0XHRcdH07XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIlByZXJlcXVpc2l0ZXMgb24gRmllbGQgZm9yIHRoZSBTaWRlRWZmZWN0cyBhbmQgUmVjb21tZW5kYXRpb25zIGhhdmUgYmVlbiByZWplY3RlZFwiKTtcblx0XHRcdFx0Ly8gYXMgdGhlIFVJIG1pZ2h0IG5lZWQgdG8gcmVhY3Qgb24uIFdlIGNvdWxkIHByb3ZpZGUgYSBwYXJhbWV0ZXIgdG8gaW5mb3JtIGlmIHZhbGlkYXRpb25cblx0XHRcdFx0Ly8gd2FzIHN1Y2Nlc3NmdWw/XG5cdFx0XHRcdChGaWVsZEFQSSBhcyBhbnkpLmhhbmRsZUNoYW5nZShvRXZlbnQsIG9Db250cm9sbGVyKTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gRm9yIHRoZSBFZGl0RmxvdyBzeW5jaHJvbml6YXRpb24sIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggcmVxdWVzdCB0byBiZSBzZW50LCBvdGhlcndpc2UgdGhlcmUgY291bGQgYmUgZS5nLiBhY3Rpb24gaW52b2tlZCBpbiBwYXJhbGxlbCB3aXRoIHRoZSBQQVRDSCByZXF1ZXN0LlxuXHRcdC8vIFRoaXMgaXMgZG9uZSB3aXRoIGEgMC10aW1lb3V0LCB0byBhbGxvdyBmb3IgdGhlICdwYXRjaFNlbnQnIGV2ZW50IHRvIGJlIHNlbnQgYnkgdGhlIGJpbmRpbmcgKHRoZW4gdGhlIGludGVybmFsIGVkaXQgZmxvdyBzeW5jaHJvbml6YXRpb24ga2lja3MgaW4gd2l0aCBFZGl0Rmxvdy5oYW5kbGVQYXRjaFNlbnQpLlxuXHRcdGNvbnN0IHZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQgPSBwVmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRzZXRUaW1lb3V0KHJlc29sdmUsIDApO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRzZXRUaW1lb3V0KHJlc29sdmUsIDApO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdG9GRUNvbnRyb2xsZXI/LmVkaXRGbG93LnN5bmNUYXNrKHZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQpO1xuXG5cdFx0Ly8gaWYgdGhlIGNvbnRleHQgaXMgdHJhbnNpZW50LCBpdCBtZWFucyB0aGUgcmVxdWVzdCB3b3VsZCBmYWlsIGFueXdheSBhcyB0aGUgcmVjb3JkIGRvZXMgbm90IGV4aXN0IGluIHJlYWxpdHlcblx0XHQvLyBUT0RPOiBzaG91bGQgdGhlIHJlcXVlc3QgYmUgbWFkZSBpbiBmdXR1cmUgaWYgdGhlIGNvbnRleHQgaXMgdHJhbnNpZW50P1xuXHRcdGlmIChiSXNUcmFuc2llbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5wcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkKG9FdmVudCwgZmllbGRWYWxpZGl0eSwgcFZhbHVlUmVzb2x2ZWQpO1xuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmllbGQpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiBmaWVsZFZhbGlkaXR5KSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nID0gZ2V0Q29sbGFib3JhdGlvbkJpbmRpbmcoZmllbGQpO1xuXG5cdFx0XHRjb25zdCBkYXRhID0gW1xuXHRcdFx0XHQuLi4oKGZpZWxkLmdldEJpbmRpbmdJbmZvKFwidmFsdWVcIikgfHwgZmllbGQuZ2V0QmluZGluZ0luZm8oXCJzZWxlY3RlZFwiKSk/LnBhcnRzIHx8IFtdKSxcblx0XHRcdFx0Li4uKGZpZWxkLmdldEJpbmRpbmdJbmZvKFwiYWRkaXRpb25hbFZhbHVlXCIpPy5wYXJ0cyB8fCBbXSlcblx0XHRcdF1cblx0XHRcdFx0LmZpbHRlcigocGFydCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBwYXJ0Py5wYXRoICE9PSB1bmRlZmluZWQgJiYgcGFydC5wYXRoLmluZGV4T2YoXCJAQFwiKSA8IDA7IC8vIFJlbW92ZSBiaW5kaW5nIHBhcnRzIHdpdGggQEAgdGhhdCBtYWtlIG5vIHNlbnNlIGZvciBjb2xsYWJvcmF0aW9uIG1lc3NhZ2VzXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5tYXAoZnVuY3Rpb24gKHBhcnQ6IHsgcGF0aDogc3RyaW5nIH0pIHtcblx0XHRcdFx0XHRyZXR1cm4gYCR7ZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke3BhcnQucGF0aH1gO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0Ly8gRnJvbSB0aGlzIHBvaW50LCB3ZSB3aWxsIGFsd2F5cyBzZW5kIGEgY29sbGFib3JhdGlvbiBtZXNzYWdlIChVTkxPQ0sgb3IgQ0hBTkdFKSwgc28gd2UgcmV0YWluXG5cdFx0XHQvLyBhIHBvdGVudGlhbCBVTkxPQ0sgdGhhdCB3b3VsZCBiZSBzZW50IGluIGhhbmRsZUZvY3VzT3V0LCB0byBtYWtlIHN1cmUgaXQncyBzZW50IGFmdGVyIHRoZSBDSEFOR0UgbWVzc2FnZVxuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5yZXRhaW5Bc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblxuXHRcdFx0Y29uc3QgdXBkYXRlQ29sbGFib3JhdGlvbiA9ICgpID0+IHtcblx0XHRcdFx0aWYgKGJpbmRpbmcuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0XHRcdC8vIFRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHRoZSB1c2VyIC0tPiB3YWl0IHVudGlsIGl0J3Mgc2VudCB0byB0aGUgc2VydmVyIGJlZm9yZSBzZW5kaW5nIGEgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzXG5cdFx0XHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZmllbGQsIHsgYWN0aW9uOiBBY3Rpdml0eS5DaGFuZ2UsIGNvbnRlbnQ6IGRhdGEgfSk7XG5cdFx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnJlbGVhc2VBc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnJlbGVhc2VBc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGlmIChvU291cmNlRmllbGQuaXNBKFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0XHRwVmFsdWVSZXNvbHZlZFxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdHVwZGF0ZUNvbGxhYm9yYXRpb24oKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgbGl2ZSBjaGFuZ2UgZXZlbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBoYW5kbGVMaXZlQ2hhbmdlXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVMaXZlQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0KEZpZWxkQVBJIGFzIEZpZWxkQVBJVHlwZSkuaGFuZGxlTGl2ZUNoYW5nZShldmVudCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBzZW5kIGNvbGxhYm9yYXRpb24gbWVzc2FnZXMgZnJvbSBhIEZpbGVVcGxvYWRlci5cblx0ICpcblx0ICogQHBhcmFtIGZpbGVVcGxvYWRlclxuXHQgKiBAcGFyYW0gYWN0aW9uXG5cdCAqL1xuXHRfc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlcjogRmlsZVVwbG9hZGVyLCBhY3Rpb246IEFjdGl2aXR5KTogdm9pZCB7XG5cdFx0aWYgKENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmlsZVVwbG9hZGVyKSkge1xuXHRcdFx0Y29uc3QgYmluZGluZ1BhdGggPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCk/LmdldFByb3BlcnR5KFwicHJvcGVydHlQYXRoXCIpO1xuXHRcdFx0Y29uc3QgZnVsbFBhdGggPSBgJHtmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke2JpbmRpbmdQYXRofWA7XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZmlsZVVwbG9hZGVyLCB7IGFjdGlvbiwgY29udGVudDogZnVsbFBhdGggfSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIHdoZW4gYSBGaWxlVXBsb2FkIGRpYWxvZyBpcyBvcGVuZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBldmVudFxuXHQgKi9cblx0aGFuZGxlT3BlblVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyO1xuXHRcdEZpZWxkUnVudGltZS5fc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlciwgQWN0aXZpdHkuTG9jayk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgd2hlbiBhIEZpbGVVcGxvYWQgZGlhbG9nIGlzIGNsb3NlZC5cblx0ICpcblx0ICogQHBhcmFtIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVDbG9zZVVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyO1xuXHRcdEZpZWxkUnVudGltZS5fc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlciwgQWN0aXZpdHkuVW5sb2NrKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmllbGQgdmFsdWUgYW5kIHZhbGlkaXR5IG9uIGEgY2hhbmdlIGV2ZW50LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZmllbGRWYWxpZGl0eU9uQ2hhbmdlXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIGNoYW5nZSBldmVudFxuXHQgKiBAcmV0dXJucyBGaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHlcblx0ICovXG5cdGdldEZpZWxkU3RhdGVPbkNoYW5nZTogZnVuY3Rpb24gKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB7XG5cdFx0ZmllbGQ6IEZpZWxkO1xuXHRcdHN0YXRlOiB7XG5cdFx0XHRmaWVsZFZhbHVlPzogdW5rbm93bjtcblx0XHRcdHZhbGlkaXR5PzogYm9vbGVhbjtcblx0XHR9O1xuXHR9IHtcblx0XHRsZXQgb1NvdXJjZUZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpIGFzIGFueSxcblx0XHRcdG1GaWVsZFN0YXRlOiB7XG5cdFx0XHRcdGZpZWxkVmFsdWU/OiB1bmtub3duO1xuXHRcdFx0XHR2YWxpZGl0eT86IGJvb2xlYW47XG5cdFx0XHR9ID0ge307XG5cdFx0Y29uc3QgX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMgPSBmdW5jdGlvbiAob0JpbmRpbmc6IGFueSkge1xuXHRcdFx0cmV0dXJuIG9CaW5kaW5nICYmIG9CaW5kaW5nLmdldERhdGFTdGF0ZSgpID8gb0JpbmRpbmcuZ2V0RGF0YVN0YXRlKCkuZ2V0SW52YWxpZFZhbHVlKCkgPT09IHVuZGVmaW5lZCA6IHRydWU7XG5cdFx0fTtcblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRBUElcIikpIHtcblx0XHRcdG9Tb3VyY2VGaWVsZCA9IChvU291cmNlRmllbGQgYXMgRW5oYW5jZVdpdGhVSTU8RmllbGRBUEk+KS5nZXRDb250ZW50KCk7XG5cdFx0fVxuXG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0EoRmllbGRXcmFwcGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpKSAmJiBvU291cmNlRmllbGQuZ2V0RWRpdE1vZGUoKSA9PT0gXCJFZGl0YWJsZVwiKSB7XG5cdFx0XHRvU291cmNlRmllbGQgPSBvU291cmNlRmllbGQuZ2V0Q29udGVudEVkaXQoKVswXTtcblx0XHR9XG5cblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdGxldCBiSXNWYWxpZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWxpZFwiKSB8fCBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiaXNWYWxpZFwiKTtcblx0XHRcdGlmIChiSXNWYWxpZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGlmIChvU291cmNlRmllbGQuZ2V0TWF4Q29uZGl0aW9ucygpID09PSAxKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1ZhbHVlQmluZGluZ0luZm8gPSBvU291cmNlRmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKTtcblx0XHRcdFx0XHRiSXNWYWxpZCA9IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzKG9WYWx1ZUJpbmRpbmdJbmZvICYmIG9WYWx1ZUJpbmRpbmdJbmZvLmJpbmRpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvU291cmNlRmllbGQuZ2V0VmFsdWUoKSA9PT0gXCJcIiAmJiAhb1NvdXJjZUZpZWxkLmdldFByb3BlcnR5KFwicmVxdWlyZWRcIikpIHtcblx0XHRcdFx0XHRiSXNWYWxpZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG1GaWVsZFN0YXRlID0ge1xuXHRcdFx0XHRmaWVsZFZhbHVlOiBvU291cmNlRmllbGQuZ2V0VmFsdWUoKSxcblx0XHRcdFx0dmFsaWRpdHk6ICEhYklzVmFsaWRcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG9Tb3VyY2VGaWVsZCBleHRlbmRzIGZyb20gYSBGaWxlVXBsb2FkZXIgfHwgSW5wdXQgfHwgaXMgYSBDaGVja0JveFxuXHRcdFx0Y29uc3Qgb0JpbmRpbmcgPVxuXHRcdFx0XHRvU291cmNlRmllbGQuZ2V0QmluZGluZyhcInVwbG9hZFVybFwiKSB8fCBvU291cmNlRmllbGQuZ2V0QmluZGluZyhcInZhbHVlXCIpIHx8IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nKFwic2VsZWN0ZWRcIik7XG5cdFx0XHRtRmllbGRTdGF0ZSA9IHtcblx0XHRcdFx0ZmllbGRWYWx1ZTogb0JpbmRpbmcgJiYgb0JpbmRpbmcuZ2V0VmFsdWUoKSxcblx0XHRcdFx0dmFsaWRpdHk6IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzKG9CaW5kaW5nKVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpZWxkOiBvU291cmNlRmllbGQsXG5cdFx0XHRzdGF0ZTogbUZpZWxkU3RhdGVcblx0XHR9O1xuXHR9LFxuXHRfZm5GaXhIYXNoUXVlcnlTdHJpbmc6IGZ1bmN0aW9uIChzQ3VycmVudEhhc2g6IGFueSkge1xuXHRcdGlmIChzQ3VycmVudEhhc2ggJiYgc0N1cnJlbnRIYXNoLmluZGV4T2YoXCI/XCIpICE9PSAtMSkge1xuXHRcdFx0Ly8gc0N1cnJlbnRIYXNoIGNhbiBjb250YWluIHF1ZXJ5IHN0cmluZywgY3V0IGl0IG9mZiFcblx0XHRcdHNDdXJyZW50SGFzaCA9IHNDdXJyZW50SGFzaC5zcGxpdChcIj9cIilbMF07XG5cdFx0fVxuXHRcdHJldHVybiBzQ3VycmVudEhhc2g7XG5cdH0sXG5cdF9mbkdldExpbmtJbmZvcm1hdGlvbjogZnVuY3Rpb24gKF9vU291cmNlOiBhbnksIF9vTGluazogYW55LCBfc1Byb3BlcnR5UGF0aDogYW55LCBfc1ZhbHVlOiBhbnksIGZuU2V0QWN0aXZlOiBhbnkpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBfb0xpbmsgJiYgX29MaW5rLmdldE1vZGVsKCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Nb2RlbCAmJiBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgc1NlbWFudGljT2JqZWN0TmFtZSA9IF9zVmFsdWUgfHwgKF9vU291cmNlICYmIF9vU291cmNlLmdldFZhbHVlKCkpO1xuXHRcdGNvbnN0IG9WaWV3ID0gX29MaW5rICYmIENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoX29MaW5rKTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldyAmJiBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpO1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBvVmlldyAmJiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQob1ZpZXcpO1xuXHRcdGNvbnN0IG9TaGVsbFNlcnZpY2VIZWxwZXIgPSBvQXBwQ29tcG9uZW50ICYmIG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdGNvbnN0IHBHZXRMaW5rc1Byb21pc2UgPSBvU2hlbGxTZXJ2aWNlSGVscGVyICYmIG9TaGVsbFNlcnZpY2VIZWxwZXIuZ2V0TGlua3NXaXRoQ2FjaGUoW1t7IHNlbWFudGljT2JqZWN0OiBzU2VtYW50aWNPYmplY3ROYW1lIH1dXSk7XG5cdFx0Y29uc3QgYVNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zID1cblx0XHRcdG9NZXRhTW9kZWwgJiYgb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7X3NQcm9wZXJ0eVBhdGh9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uc2ApO1xuXHRcdHJldHVybiB7XG5cdFx0XHRTZW1hbnRpY09iamVjdE5hbWU6IHNTZW1hbnRpY09iamVjdE5hbWUsXG5cdFx0XHRTZW1hbnRpY09iamVjdEZ1bGxQYXRoOiBfc1Byb3BlcnR5UGF0aCwgLy9zU2VtYW50aWNPYmplY3RGdWxsUGF0aCxcblx0XHRcdE1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdEludGVybmFsTW9kZWxDb250ZXh0OiBvSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRTaGVsbFNlcnZpY2VIZWxwZXI6IG9TaGVsbFNlcnZpY2VIZWxwZXIsXG5cdFx0XHRHZXRMaW5rc1Byb21pc2U6IHBHZXRMaW5rc1Byb21pc2UsXG5cdFx0XHRTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uczogYVNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zLFxuXHRcdFx0Zm5TZXRBY3RpdmU6IGZuU2V0QWN0aXZlXG5cdFx0fTtcblx0fSxcblx0X2ZuUXVpY2tWaWV3SGFzTmV3Q29uZGl0aW9uOiBmdW5jdGlvbiAob1NlbWFudGljT2JqZWN0UGF5bG9hZDogYW55LCBfb0xpbmtJbmZvOiBhbnkpIHtcblx0XHRpZiAob1NlbWFudGljT2JqZWN0UGF5bG9hZCAmJiBvU2VtYW50aWNPYmplY3RQYXlsb2FkLnBhdGggJiYgb1NlbWFudGljT2JqZWN0UGF5bG9hZC5wYXRoID09PSBfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0RnVsbFBhdGgpIHtcblx0XHRcdC8vIEdvdCB0aGUgcmVzb2x2ZWQgU2VtYW50aWMgT2JqZWN0IVxuXHRcdFx0Y29uc3QgYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciA9XG5cdFx0XHRcdG9TZW1hbnRpY09iamVjdFBheWxvYWRbIV9vTGlua0luZm8uU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMgPyBcIkhhc1RhcmdldHNOb3RGaWx0ZXJlZFwiIDogXCJIYXNUYXJnZXRzXCJdO1xuXHRcdFx0X29MaW5rSW5mby5mblNldEFjdGl2ZSghIWJSZXN1bHRpbmdOZXdDb25kaXRpb25Gb3JDb25kaXRpb25hbFdyYXBwZXIpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sXG5cdF9mblF1aWNrVmlld1NldE5ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlcjogZnVuY3Rpb24gKF9vTGlua0luZm86IGFueSwgX29GaW5hbFNlbWFudGljT2JqZWN0czogYW55KSB7XG5cdFx0aWYgKF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdKSB7XG5cdFx0XHRsZXQgc1RtcFBhdGgsIG9TZW1hbnRpY09iamVjdFBheWxvYWQ7XG5cdFx0XHRjb25zdCBhU2VtYW50aWNPYmplY3RQYXRocyA9IE9iamVjdC5rZXlzKF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdKTtcblx0XHRcdGZvciAoY29uc3QgaVBhdGhzQ291bnQgaW4gYVNlbWFudGljT2JqZWN0UGF0aHMpIHtcblx0XHRcdFx0c1RtcFBhdGggPSBhU2VtYW50aWNPYmplY3RQYXRoc1tpUGF0aHNDb3VudF07XG5cdFx0XHRcdG9TZW1hbnRpY09iamVjdFBheWxvYWQgPVxuXHRcdFx0XHRcdF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdICYmXG5cdFx0XHRcdFx0X29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV1bc1RtcFBhdGhdO1xuXHRcdFx0XHRpZiAoRmllbGRSdW50aW1lLl9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbihvU2VtYW50aWNPYmplY3RQYXlsb2FkLCBfb0xpbmtJbmZvKSkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRfZm5VcGRhdGVTZW1hbnRpY09iamVjdHNUYXJnZXRNb2RlbDogZnVuY3Rpb24gKG9FdmVudDogYW55LCBzVmFsdWU6IGFueSwgb0NvbnRyb2w6IGFueSwgX3NQcm9wZXJ0eVBhdGg6IGFueSkge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQgJiYgb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGxldCBmblNldEFjdGl2ZTtcblx0XHRpZiAob0NvbnRyb2wuaXNBKFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHRmblNldEFjdGl2ZSA9IChiQWN0aXZlOiBib29sZWFuKSA9PiBvQ29udHJvbC5zZXRBY3RpdmUoYkFjdGl2ZSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbC5pc0EoXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpKSB7XG5cdFx0XHRmblNldEFjdGl2ZSA9IChiQWN0aXZlOiBib29sZWFuKSA9PiBvQ29udHJvbC5zZXRUaXRsZUFjdGl2ZShiQWN0aXZlKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0NvbmRpdGlvbmFsV3JhcHBlciA9IG9Db250cm9sICYmIG9Db250cm9sLmdldFBhcmVudCgpO1xuXHRcdGlmIChvQ29uZGl0aW9uYWxXcmFwcGVyICYmIG9Db25kaXRpb25hbFdyYXBwZXIuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db25kaXRpb25hbFdyYXBwZXIuc2V0Q29uZGl0aW9uKGJBY3RpdmUpO1xuXHRcdH1cblx0XHRpZiAoZm5TZXRBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3Qgb0xpbmtJbmZvID0gRmllbGRSdW50aW1lLl9mbkdldExpbmtJbmZvcm1hdGlvbihvU291cmNlLCBvQ29udHJvbCwgX3NQcm9wZXJ0eVBhdGgsIHNWYWx1ZSwgZm5TZXRBY3RpdmUpO1xuXHRcdFx0b0xpbmtJbmZvLmZuU2V0QWN0aXZlID0gZm5TZXRBY3RpdmU7XG5cdFx0XHRjb25zdCBzQ3VycmVudEhhc2ggPSBGaWVsZFJ1bnRpbWUuX2ZuRml4SGFzaFF1ZXJ5U3RyaW5nKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvQ29udHJvbCkuZ2V0U2hlbGxTZXJ2aWNlcygpLmdldEhhc2goKSk7XG5cdFx0XHRDb21tb25VdGlscy51cGRhdGVTZW1hbnRpY1RhcmdldHMoXG5cdFx0XHRcdFtvTGlua0luZm8uR2V0TGlua3NQcm9taXNlXSxcblx0XHRcdFx0W3sgc2VtYW50aWNPYmplY3Q6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWUsIHBhdGg6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdEZ1bGxQYXRoIH1dLFxuXHRcdFx0XHRvTGlua0luZm8uSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdHNDdXJyZW50SGFzaFxuXHRcdFx0KVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAob0ZpbmFsU2VtYW50aWNPYmplY3RzOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob0ZpbmFsU2VtYW50aWNPYmplY3RzKSB7XG5cdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyKG9MaW5rSW5mbywgb0ZpbmFsU2VtYW50aWNPYmplY3RzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHVwZGF0ZSBTZW1hbnRpYyBUYXJnZXRzIG1vZGVsXCIsIG9FcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblx0X2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQoX2NvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRpZiAoIV9jb250cm9sLmdldE1vZGVsKCkgfHwgIV9jb250cm9sLmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9LFxuXHRfY2hlY2tDdXN0b21EYXRhVmFsdWVCZWZvcmVVcGRhdGluZ1NlbWFudGljT2JqZWN0TW9kZWwoX2NvbnRyb2w6IENvbnRyb2wsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBhQ3VzdG9tRGF0YTogQ3VzdG9tRGF0YVtdKTogdm9pZCB7XG5cdFx0bGV0IHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZTogYW55O1xuXHRcdGxldCBvVmFsdWVCaW5kaW5nO1xuXHRcdGNvbnN0IF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nID0gZnVuY3Rpb24gKHNlbWFudGljT2JqZWN0UGF0aFZhbHVlOiBhbnkpIHtcblx0XHRcdHJldHVybiAhKHNlbWFudGljT2JqZWN0UGF0aFZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBzZW1hbnRpY09iamVjdFBhdGhWYWx1ZSA9PT0gXCJvYmplY3RcIik7XG5cdFx0fTtcblx0XHQvLyByZW1vdmUgdGVjaG5pY2FsIGN1c3RvbSBkYXRhcyBzZXQgYnkgVUk1XG5cdFx0YUN1c3RvbURhdGEgPSBhQ3VzdG9tRGF0YS5maWx0ZXIoKGN1c3RvbURhdGEpID0+IGN1c3RvbURhdGEuZ2V0S2V5KCkgIT09IFwic2FwLXVpLWN1c3RvbS1zZXR0aW5nc1wiKTtcblx0XHRmb3IgKGNvbnN0IGluZGV4IGluIGFDdXN0b21EYXRhKSB7XG5cdFx0XHRzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUgPSBhQ3VzdG9tRGF0YVtpbmRleF0uZ2V0VmFsdWUoKTtcblx0XHRcdGlmICghc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlICYmIF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nKHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSkpIHtcblx0XHRcdFx0b1ZhbHVlQmluZGluZyA9IGFDdXN0b21EYXRhW2luZGV4XS5nZXRCaW5kaW5nKFwidmFsdWVcIik7XG5cdFx0XHRcdGlmIChvVmFsdWVCaW5kaW5nKSB7XG5cdFx0XHRcdFx0b1ZhbHVlQmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJjaGFuZ2VcIiwgZnVuY3Rpb24gKF9vQ2hhbmdlRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0RmllbGRSdW50aW1lLl9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsKF9vQ2hhbmdlRXZlbnQsIG51bGwsIF9jb250cm9sLCBwcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nKHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSkpIHtcblx0XHRcdFx0RmllbGRSdW50aW1lLl9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsKG51bGwsIHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSwgX2NvbnRyb2wsIHByb3BlcnR5UGF0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRMaW5rTW9kZWxDb250ZXh0Q2hhbmdlOiBmdW5jdGlvbiAob0V2ZW50OiBhbnksIHNQcm9wZXJ0eTogYW55LCBzUGF0aFRvUHJvcGVydHk6IGFueSk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0aWYgKEZpZWxkUnVudGltZS5fY2hlY2tDb250cm9sSGFzTW9kZWxBbmRCaW5kaW5nQ29udGV4dChjb250cm9sKSkge1xuXHRcdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IGAke3NQYXRoVG9Qcm9wZXJ0eX0vJHtzUHJvcGVydHl9YDtcblx0XHRcdGNvbnN0IG1kY0xpbmsgPSBjb250cm9sLmdldERlcGVuZGVudHMoKS5sZW5ndGggPyBjb250cm9sLmdldERlcGVuZGVudHMoKVswXSA6IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IGFDdXN0b21EYXRhID0gbWRjTGluaz8uZ2V0Q3VzdG9tRGF0YSgpO1xuXHRcdFx0aWYgKGFDdXN0b21EYXRhICYmIGFDdXN0b21EYXRhLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0RmllbGRSdW50aW1lLl9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbChjb250cm9sLCBzUHJvcGVydHlQYXRoLCBhQ3VzdG9tRGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRvcGVuRXh0ZXJuYWxMaW5rOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgYW55O1xuXHRcdGlmIChzb3VyY2UuZGF0YShcInVybFwiKSAmJiBzb3VyY2UuZ2V0UHJvcGVydHkoXCJ0ZXh0XCIpICE9PSBcIlwiKSB7XG5cdFx0XHQvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGluIHRoZSBzYW1lIHRhYiBhcyB0aGUgbGluay4gSXQgd2FzIGRvbmUgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgdHlwZSBvZiBsaW5rcy5cblx0XHRcdG9wZW5XaW5kb3coc291cmNlLmRhdGEoXCJ1cmxcIiksIFwiX3NlbGZcIik7XG5cdFx0fVxuXHR9LFxuXHRjcmVhdGVQb3BvdmVyV2l0aE5vVGFyZ2V0czogZnVuY3Rpb24gKG1kY0xpbms6IE1kY0xpbmspIHtcblx0XHRjb25zdCBtZGNMaW5rSWQgPSBtZGNMaW5rLmdldElkKCk7XG5cdFx0Y29uc3QgaWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3M6ICRJbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyA9IHtcblx0XHRcdHRpdGxlOiBnZXRSZXNvdXJjZU1vZGVsKG1kY0xpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKS5nZXRUZXh0KFwiTV9JTExVU1RSQVRFRE1FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRkZXNjcmlwdGlvbjogZ2V0UmVzb3VyY2VNb2RlbChtZGNMaW5rIGFzIHVua25vd24gYXMgQ29udHJvbCkuZ2V0VGV4dChcIk1fSUxMVVNUUkFURURNRVNTQUdFX0RFU0NSSVBUSU9OXCIpLFxuXHRcdFx0ZW5hYmxlRm9ybWF0dGVkVGV4dDogdHJ1ZSxcblx0XHRcdGlsbHVzdHJhdGlvblNpemU6IFwiRG90XCIsIC8vIElsbHVzdHJhdGVkTWVzc2FnZVNpemUuRG90IG5vdCBhdmFpbGFibGUgaW4gXCJAdHlwZXMvb3BlbnVpNVwiOiBcIjEuMTA3LjBcIlxuXHRcdFx0aWxsdXN0cmF0aW9uVHlwZTogSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5UZW50XG5cdFx0fTtcblx0XHRjb25zdCBpbGx1c3RyYXRlZE1lc3NhZ2UgPSBuZXcgSWxsdXN0cmF0ZWRNZXNzYWdlKGAke21kY0xpbmtJZH0taWxsdXN0cmF0ZWRtZXNzYWdlYCwgaWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3MpO1xuXHRcdGNvbnN0IHBvcG92ZXJTZXR0aW5nczogJFJlc3BvbnNpdmVQb3BvdmVyU2V0dGluZ3MgPSB7XG5cdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nOiBmYWxzZSxcblx0XHRcdHNob3dIZWFkZXI6IERldmljZS5zeXN0ZW0ucGhvbmUsXG5cdFx0XHRwbGFjZW1lbnQ6IG1vYmlsZWxpYnJhcnkuUGxhY2VtZW50VHlwZS5BdXRvLFxuXHRcdFx0Y29udGVudDogW2lsbHVzdHJhdGVkTWVzc2FnZV0sXG5cdFx0XHRhZnRlckNsb3NlOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0XHRcdFx0aWYgKGV2ZW50LmdldFNvdXJjZSgpKSB7XG5cdFx0XHRcdFx0ZXZlbnQuZ2V0U291cmNlKCkuZGVzdHJveSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRyZXR1cm4gbmV3IFJlc3BvbnNpdmVQb3BvdmVyKGAke21kY0xpbmtJZH0tcG9wb3ZlcmAsIHBvcG92ZXJTZXR0aW5ncyk7XG5cdH0sXG5cdG9wZW5MaW5rOiBhc3luYyBmdW5jdGlvbiAobWRjTGluazogTWRjTGluaywgc2FwbUxpbms6IExpbmspIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgaFJlZiA9IGF3YWl0IG1kY0xpbmsuZ2V0VHJpZ2dlckhyZWYoKTtcblx0XHRcdGlmICghaFJlZikge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IGxpbmtJdGVtcyA9IGF3YWl0IG1kY0xpbmsucmV0cmlldmVMaW5rSXRlbXMoKTtcblx0XHRcdFx0XHRpZiAobGlua0l0ZW1zPy5sZW5ndGggPT09IDAgJiYgKG1kY0xpbmsgYXMgYW55KS5nZXRQYXlsb2FkKCkuaGFzUXVpY2tWaWV3RmFjZXRzID09PSBcImZhbHNlXCIpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBvcG92ZXI6IFJlc3BvbnNpdmVQb3BvdmVyID0gRmllbGRSdW50aW1lLmNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzKG1kY0xpbmspO1xuXHRcdFx0XHRcdFx0bWRjTGluay5hZGREZXBlbmRlbnQocG9wb3Zlcik7XG5cdFx0XHRcdFx0XHRwb3BvdmVyLm9wZW5CeShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhd2FpdCBtZGNMaW5rLm9wZW4oc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDYW5ub3QgcmV0cmlldmUgdGhlIFF1aWNrVmlldyBQb3BvdmVyIGRpYWxvZzogJHtlcnJvcn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoc2FwbUxpbmspO1xuXHRcdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsSGFzaCA9IHNoZWxsU2VydmljZS5wYXJzZVNoZWxsSGFzaChoUmVmKTtcblx0XHRcdFx0Y29uc3QgbmF2QXJncyA9IHtcblx0XHRcdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBzaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRhY3Rpb246IHNoZWxsSGFzaC5hY3Rpb25cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcmFtczogc2hlbGxIYXNoLnBhcmFtc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdEtlZXBBbGl2ZUhlbHBlci5zdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoKHZpZXcsIHNoZWxsSGFzaCk7XG5cblx0XHRcdFx0aWYgKENvbW1vblV0aWxzLmlzU3RpY2t5RWRpdE1vZGUoc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRcdC8vVVJMIHBhcmFtcyBhbmQgeGFwcFN0YXRlIGhhcyBiZWVuIGdlbmVyYXRlZCBlYXJsaWVyIGhlbmNlIHVzaW5nIHRvRXh0ZXJuYWxcblx0XHRcdFx0XHRzaGVsbFNlcnZpY2UudG9FeHRlcm5hbChuYXZBcmdzIGFzIGFueSwgYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV3SHJlZiA9IGF3YWl0IHNoZWxsU2VydmljZS5ocmVmRm9yRXh0ZXJuYWxBc3luYyhuYXZBcmdzLCBhcHBDb21wb25lbnQpO1xuXHRcdFx0XHRcdFx0b3BlbldpbmRvdyhuZXdIcmVmKTtcblx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKGBFcnJvciB3aGlsZSByZXRpcmV2aW5nIGhyZWZGb3JFeHRlcm5hbCA6ICR7ZXJyb3J9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihgRXJyb3IgdHJpZ2dlcmluZyBsaW5rIEhyZWY6ICR7ZXJyb3J9YCk7XG5cdFx0fVxuXHR9LFxuXHRwcmVzc0xpbms6IGFzeW5jIGZ1bmN0aW9uIChvRXZlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgc2FwbUxpbmsgPSBvU291cmNlLmlzQShcInNhcC5tLk9iamVjdElkZW50aWZpZXJcIilcblx0XHRcdD8gb1NvdXJjZS5maW5kRWxlbWVudHMoZmFsc2UsIChlbGVtOiBFbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0uaXNBKFwic2FwLm0uTGlua1wiKTtcblx0XHRcdCAgfSlbMF1cblx0XHRcdDogb1NvdXJjZTtcblxuXHRcdGlmIChvU291cmNlLmdldERlcGVuZGVudHMoKSAmJiBvU291cmNlLmdldERlcGVuZGVudHMoKS5sZW5ndGggPiAwICYmIHNhcG1MaW5rLmdldFByb3BlcnR5KFwidGV4dFwiKSAhPT0gXCJcIikge1xuXHRcdFx0Y29uc3Qgb0ZpZWxkSW5mbyA9IG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpWzBdO1xuXHRcdFx0aWYgKG9GaWVsZEluZm8gJiYgb0ZpZWxkSW5mby5pc0EoXCJzYXAudWkubWRjLkxpbmtcIikpIHtcblx0XHRcdFx0YXdhaXQgRmllbGRSdW50aW1lLm9wZW5MaW5rKG9GaWVsZEluZm8sIHNhcG1MaW5rKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNhcG1MaW5rO1xuXHR9LFxuXHR1cGxvYWRTdHJlYW06IGZ1bmN0aW9uIChjb250cm9sbGVyOiBDb250cm9sbGVyLCBldmVudDogRmlsZVVwbG9hZGVyJENoYW5nZUV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyLFxuXHRcdFx0RkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKGNvbnRyb2xsZXIpLFxuXHRcdFx0ZmlsZVdyYXBwZXIgPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcixcblx0XHRcdHVwbG9hZFVybCA9IGZpbGVXcmFwcGVyLmdldFVwbG9hZFVybCgpO1xuXG5cdFx0aWYgKHVwbG9hZFVybCAhPT0gXCJcIikge1xuXHRcdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KHRydWUpO1xuXG5cdFx0XHQvLyB1c2UgdXBsb2FkVXJsIGZyb20gRmlsZVdyYXBwZXIgd2hpY2ggcmV0dXJucyBhIGNhbm9uaWNhbCBVUkxcblx0XHRcdGZpbGVVcGxvYWRlci5zZXRVcGxvYWRVcmwodXBsb2FkVXJsKTtcblxuXHRcdFx0ZmlsZVVwbG9hZGVyLnJlbW92ZUFsbEhlYWRlclBhcmFtZXRlcnMoKTtcblx0XHRcdGNvbnN0IHRva2VuID0gKGZpbGVVcGxvYWRlci5nZXRNb2RlbCgpIGFzIGFueSk/LmdldEh0dHBIZWFkZXJzKClbXCJYLUNTUkYtVG9rZW5cIl07XG5cdFx0XHRpZiAodG9rZW4pIHtcblx0XHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuID0gbmV3IEZpbGVVcGxvYWRlclBhcmFtZXRlcigpO1xuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4uc2V0TmFtZShcIngtY3NyZi10b2tlblwiKTtcblx0XHRcdFx0aGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuLnNldFZhbHVlKHRva2VuKTtcblx0XHRcdFx0ZmlsZVVwbG9hZGVyLmFkZEhlYWRlclBhcmFtZXRlcihoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZVRhZyA9IChmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbCk/LmdldFByb3BlcnR5KFwiQG9kYXRhLmV0YWdcIik7XG5cdFx0XHRpZiAoZVRhZykge1xuXHRcdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJFVGFnID0gbmV3IEZpbGVVcGxvYWRlclBhcmFtZXRlcigpO1xuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJFVGFnLnNldE5hbWUoXCJJZi1NYXRjaFwiKTtcblx0XHRcdFx0Ly8gSWdub3JlIEVUYWcgaW4gY29sbGFib3JhdGlvbiBkcmFmdFxuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJFVGFnLnNldFZhbHVlKENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmlsZVVwbG9hZGVyKSA/IFwiKlwiIDogZVRhZyk7XG5cdFx0XHRcdGZpbGVVcGxvYWRlci5hZGRIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyUGFyYW1ldGVyRVRhZyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJBY2NlcHQgPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJBY2NlcHQuc2V0TmFtZShcIkFjY2VwdFwiKTtcblx0XHRcdGhlYWRlclBhcmFtZXRlckFjY2VwdC5zZXRWYWx1ZShcImFwcGxpY2F0aW9uL2pzb25cIik7XG5cdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckFjY2VwdCk7XG5cblx0XHRcdGNvbnN0IGZpbGVzID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFwiZmlsZXNcIik7XG5cdFx0XHQvLyB0aGVyZSBpcyBvbmx5IG9uZSBmaWxlIGFzIHdlIGFsbG93IHNlbGVjdGluZyBvbmx5IG9uZVxuXHRcdFx0Y29uc3QgZmlsZVR5cGUgPSAoZmlsZXMgJiYgKGZpbGVzWzBdIGFzIEZpbGUpLnR5cGUpIGFzIHN0cmluZztcblxuXHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyQ29udGVudFR5cGUgPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJDb250ZW50VHlwZS5zZXROYW1lKFwiQ29udGVudC1UeXBlXCIpO1xuXHRcdFx0aGVhZGVyUGFyYW1ldGVyQ29udGVudFR5cGUuc2V0VmFsdWUoZmlsZVR5cGUgfHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIik7XG5cdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckNvbnRlbnRUeXBlKTtcblxuXHRcdFx0Ly8gc3luY2hyb25pemUgdXBsb2FkIHdpdGggb3RoZXIgcmVxdWVzdHNcblx0XHRcdGNvbnN0IHVwbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzID0gdGhpcy51cGxvYWRQcm9taXNlcyB8fCB7fTtcblx0XHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0gPSB7XG5cdFx0XHRcdFx0cmVzb2x2ZTogcmVzb2x2ZSxcblx0XHRcdFx0XHRyZWplY3Q6IHJlamVjdFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRmaWxlVXBsb2FkZXIudXBsb2FkKCk7XG5cdFx0XHR9KTtcblx0XHRcdEZFQ29udHJvbGxlci5lZGl0Rmxvdy5zeW5jVGFzayh1cGxvYWRQcm9taXNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC5lcnJvcihnZXRSZXNvdXJjZU1vZGVsKGNvbnRyb2xsZXIpLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIikpO1xuXHRcdH1cblx0fSxcblxuXHRoYW5kbGVVcGxvYWRDb21wbGV0ZTogZnVuY3Rpb24gKFxuXHRcdGV2ZW50OiBGaWxlVXBsb2FkZXIkVXBsb2FkQ29tcGxldGVFdmVudCxcblx0XHRwcm9wZXJ0eUZpbGVOYW1lOiB7IHBhdGg6IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdGNvbnRyb2xsZXI6IENvbnRyb2xsZXJcblx0KSB7XG5cdFx0Y29uc3Qgc3RhdHVzID0gTnVtYmVyKGV2ZW50LmdldFBhcmFtZXRlcihcInN0YXR1c1wiKSksXG5cdFx0XHRmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXIsXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyO1xuXG5cdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KGZhbHNlKTtcblxuXHRcdGNvbnN0IGNvbnRleHQgPSBmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0XHRpZiAoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA+PSA0MDApIHtcblx0XHRcdHRoaXMuX2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkKGV2ZW50KTtcblx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXNbZmlsZVVwbG9hZGVyLmdldElkKCldLnJlamVjdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBuZXdFVGFnID0gKGV2ZW50LmdldFBhcmFtZXRlcihcImhlYWRlcnNcIikgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5ldGFnO1xuXG5cdFx0XHRpZiAobmV3RVRhZykge1xuXHRcdFx0XHQvLyBzZXQgbmV3IGV0YWcgZm9yIGZpbGVuYW1lIHVwZGF0ZSwgYnV0IHdpdGhvdXQgc2VuZGluZyBwYXRjaCByZXF1ZXN0XG5cdFx0XHRcdGNvbnRleHQ/LnNldFByb3BlcnR5KFwiQG9kYXRhLmV0YWdcIiwgbmV3RVRhZywgbnVsbCBhcyBhbnkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgZmlsZW5hbWUgZm9yIGxpbmsgdGV4dFxuXHRcdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkocHJvcGVydHlGaWxlTmFtZS5wYXRoLCBmaWxlVXBsb2FkZXIuZ2V0VmFsdWUoKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGRlbGV0ZSB0aGUgYXZhdGFyIGNhY2hlIHRoYXQgbm90IGdldHMgdXBkYXRlZCBvdGhlcndpc2Vcblx0XHRcdGZpbGVXcmFwcGVyLmF2YXRhcj8ucmVmcmVzaEF2YXRhckNhY2hlQnVzdGluZygpO1xuXG5cdFx0XHR0aGlzLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oZXZlbnQsIGZpbGVXcmFwcGVyLCBjb250cm9sbGVyKTtcblxuXHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGRlbGV0ZSB0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXTtcblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGlzQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKGZpbGVVcGxvYWRlcik7XG5cdFx0aWYgKCFpc0NvbGxhYm9yYXRpb25FbmFibGVkIHx8ICFjb250ZXh0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uRGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdG5vdGlmaWNhdGlvbkRhdGEucHVzaChgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eUZpbGVOYW1lLnBhdGh9YCk7XG5cdFx0fVxuXG5cdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWxlVXBsb2FkZXIpO1xuXHRcdFx0YmluZGluZyA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpLmdldEJpbmRpbmcoKTtcblx0XHR9XG5cdFx0aWYgKGJpbmRpbmcuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCAoKSA9PiB7XG5cdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGZpbGVXcmFwcGVyLCB7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LlVubG9jaywgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHR9XG5cdH0sXG5cblx0X2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkOiBmdW5jdGlvbiAob0V2ZW50OiBGaWxlVXBsb2FkZXIkVXBsb2FkQ29tcGxldGVFdmVudCk6IHZvaWQge1xuXHRcdC8vIGhhbmRsaW5nIG9mIGJhY2tlbmQgZXJyb3JzXG5cdFx0Y29uc3Qgc0Vycm9yID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlUmF3XCIpIHx8IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJyZXNwb25zZVwiKTtcblx0XHRsZXQgc01lc3NhZ2VUZXh0LCBvRXJyb3I7XG5cdFx0dHJ5IHtcblx0XHRcdG9FcnJvciA9IHNFcnJvciAmJiBKU09OLnBhcnNlKHNFcnJvcik7XG5cdFx0XHRzTWVzc2FnZVRleHQgPSBvRXJyb3IuZXJyb3IgJiYgb0Vycm9yLmVycm9yLm1lc3NhZ2U7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c01lc3NhZ2VUZXh0ID0gc0Vycm9yIHx8IGdldFJlc291cmNlTW9kZWwob0V2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2wpLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIik7XG5cdFx0fVxuXHRcdE1lc3NhZ2VCb3guZXJyb3Ioc01lc3NhZ2VUZXh0KTtcblx0fSxcblxuXHRyZW1vdmVTdHJlYW06IGZ1bmN0aW9uIChldmVudDogRXZlbnQsIHByb3BlcnR5RmlsZU5hbWU6IHsgcGF0aDogc3RyaW5nIH0gfCB1bmRlZmluZWQsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBjb250cm9sbGVyOiBDb250cm9sbGVyKSB7XG5cdFx0Y29uc3QgZGVsZXRlQnV0dG9uID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgQnV0dG9uO1xuXHRcdGNvbnN0IGZpbGVXcmFwcGVyID0gZGVsZXRlQnV0dG9uLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgRmlsZVdyYXBwZXI7XG5cdFx0Y29uc3QgY29udGV4dCA9IGZpbGVXcmFwcGVyLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblxuXHRcdC8vIHN0cmVhbXMgYXJlIHJlbW92ZWQgYnkgYXNzaWduaW5nIHRoZSBudWxsIHZhbHVlXG5cdFx0Y29udGV4dC5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIG51bGwpO1xuXHRcdC8vIFdoZW4gc2V0dGluZyB0aGUgcHJvcGVydHkgdG8gbnVsbCwgdGhlIHVwbG9hZFVybCAoQEBNT0RFTC5mb3JtYXQpIGlzIHNldCB0byBcIlwiIGJ5IHRoZSBtb2RlbFxuXHRcdC8vXHR3aXRoIHRoYXQgYW5vdGhlciB1cGxvYWQgaXMgbm90IHBvc3NpYmxlIGJlZm9yZSByZWZyZXNoaW5nIHRoZSBwYWdlXG5cdFx0Ly8gKHJlZnJlc2hpbmcgdGhlIHBhZ2Ugd291bGQgcmVjcmVhdGUgdGhlIFVSTClcblx0XHQvL1x0VGhpcyBpcyB0aGUgd29ya2Fyb3VuZDpcblx0XHQvL1x0V2Ugc2V0IHRoZSBwcm9wZXJ0eSB0byB1bmRlZmluZWQgb25seSBvbiB0aGUgZnJvbnRlbmQgd2hpY2ggd2lsbCByZWNyZWF0ZSB0aGUgdXBsb2FkVXJsXG5cdFx0Y29udGV4dC5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIHVuZGVmaW5lZCwgbnVsbCBhcyBhbnkpO1xuXG5cdFx0dGhpcy5fY2FsbFNpZGVFZmZlY3RzRm9yU3RyZWFtKGV2ZW50LCBmaWxlV3JhcHBlciwgY29udHJvbGxlcik7XG5cblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKGRlbGV0ZUJ1dHRvbik7XG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRcdGlmICghYmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0XHRjb25zdCBvVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZGVsZXRlQnV0dG9uKTtcblx0XHRcdFx0YmluZGluZyA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpLmdldEJpbmRpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0XHRkYXRhLnB1c2goYCR7Y29udGV4dC5nZXRQYXRoKCl9LyR7cHJvcGVydHlGaWxlTmFtZS5wYXRofWApO1xuXHRcdFx0fVxuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGRlbGV0ZUJ1dHRvbiwgeyBhY3Rpb246IEFjdGl2aXR5LkxvY2ssIGNvbnRlbnQ6IGRhdGEgfSk7XG5cblx0XHRcdGJpbmRpbmcuYXR0YWNoRXZlbnRPbmNlKFwicGF0Y2hDb21wbGV0ZWRcIiwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZGVsZXRlQnV0dG9uLCB7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZGVsZXRlQnV0dG9uLCB7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW06IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgb0NvbnRyb2w6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdGNvbnN0IG9GRUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIob0NvbnRyb2xsZXIpO1xuXHRcdGlmIChvQ29udHJvbCAmJiBvQ29udHJvbC5nZXRCaW5kaW5nQ29udGV4dCgpLmlzVHJhbnNpZW50KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sKSB7XG5cdFx0XHRvRXZlbnQub1NvdXJjZSA9IG9Db250cm9sO1xuXHRcdH1cblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZENoYW5nZShvRXZlbnQsIHRoaXMuZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlKG9FdmVudCkuc3RhdGVbXCJ2YWxpZGl0eVwiXSk7XG5cdH0sXG5cblx0Z2V0SWNvbkZvck1pbWVUeXBlOiBmdW5jdGlvbiAoc01pbWVUeXBlOiBhbnkpIHtcblx0XHRyZXR1cm4gSWNvblBvb2wuZ2V0SWNvbkZvck1pbWVUeXBlKHNNaW1lVHlwZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byByZXRyaWV2ZSB0ZXh0IGZyb20gdmFsdWUgbGlzdCBmb3IgRGF0YUZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdFxuXHQgKiBAcGFyYW0gc1Byb3BlcnR5VmFsdWUgVGhlIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBkYXRhZmllbGRcblx0ICogQHBhcmFtIHNQcm9wZXJ0eUZ1bGxQYXRoIFRoZSBwcm9wZXJ0eSBmdWxsIHBhdGgnc1xuXHQgKiBAcGFyYW0gc0Rpc3BsYXlGb3JtYXQgVGhlIGRpc3BsYXkgZm9ybWF0IGZvciB0aGUgZGF0YWZpZWxkXG5cdCAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdmFsdWUgaW4gY29ycmVzcG9uZGluZyBkaXNwbGF5IGZvcm1hdC5cblx0ICovXG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGZ1bmN0aW9uIChzUHJvcGVydHlWYWx1ZTogc3RyaW5nLCBzUHJvcGVydHlGdWxsUGF0aDogc3RyaW5nLCBzRGlzcGxheUZvcm1hdDogc3RyaW5nKSB7XG5cdFx0bGV0IHNUZXh0UHJvcGVydHk6IHN0cmluZztcblx0XHRsZXQgb01ldGFNb2RlbDtcblx0XHRsZXQgc1Byb3BlcnR5TmFtZTogc3RyaW5nO1xuXHRcdGlmIChzUHJvcGVydHlWYWx1ZSkge1xuXHRcdFx0b01ldGFNb2RlbCA9IENvbW1vbkhlbHBlci5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdHNQcm9wZXJ0eU5hbWUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUHJvcGVydHlGdWxsUGF0aH1Ac2FwdWkubmFtZWApO1xuXHRcdFx0cmV0dXJuIG9NZXRhTW9kZWxcblx0XHRcdFx0LnJlcXVlc3RWYWx1ZUxpc3RJbmZvKHNQcm9wZXJ0eUZ1bGxQYXRoLCB0cnVlKVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAobVZhbHVlTGlzdEluZm86IGFueSkge1xuXHRcdFx0XHRcdC8vIHRha2UgdGhlIFwiXCIgb25lIGlmIGV4aXN0cywgb3RoZXJ3aXNlIHRha2UgdGhlIGZpcnN0IG9uZSBpbiB0aGUgb2JqZWN0IFRPRE86IHRvIGJlIGRpc2N1c3NlZFxuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUxpc3RJbmZvID0gbVZhbHVlTGlzdEluZm9bbVZhbHVlTGlzdEluZm9bXCJcIl0gPyBcIlwiIDogT2JqZWN0LmtleXMobVZhbHVlTGlzdEluZm8pWzBdXTtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVMaXN0TW9kZWwgPSBvVmFsdWVMaXN0SW5mby4kbW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbFZhbHVlTGlzdCA9IG9WYWx1ZUxpc3RNb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0XHRjb25zdCBvUGFyYW1XaXRoS2V5ID0gb1ZhbHVlTGlzdEluZm8uUGFyYW1ldGVycy5maW5kKGZ1bmN0aW9uIChvUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvUGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5ICYmIG9QYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkuJFByb3BlcnR5UGF0aCA9PT0gc1Byb3BlcnR5TmFtZTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAob1BhcmFtV2l0aEtleSAmJiAhb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbmNvbnNpc3RlbnQgdmFsdWUgaGVscCBhbm5vdGF0aW9uIGZvciAke3NQcm9wZXJ0eU5hbWV9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9NZXRhTW9kZWxWYWx1ZUxpc3QuZ2V0T2JqZWN0KFxuXHRcdFx0XHRcdFx0YC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofS8ke29QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0YFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAob1RleHRBbm5vdGF0aW9uICYmIG9UZXh0QW5ub3RhdGlvbi4kUGF0aCkge1xuXHRcdFx0XHRcdFx0c1RleHRQcm9wZXJ0eSA9IG9UZXh0QW5ub3RhdGlvbi4kUGF0aDtcblx0XHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXIgPSBuZXcgRmlsdGVyKHtcblx0XHRcdFx0XHRcdFx0cGF0aDogb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IFwiRVFcIixcblx0XHRcdFx0XHRcdFx0dmFsdWUxOiBzUHJvcGVydHlWYWx1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvVmFsdWVMaXN0TW9kZWwuYmluZExpc3QoYC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvRmlsdGVyLCB7XG5cdFx0XHRcdFx0XHRcdCRzZWxlY3Q6IHNUZXh0UHJvcGVydHlcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMik7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNEaXNwbGF5Rm9ybWF0ID0gXCJWYWx1ZVwiO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFDb250ZXh0czogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc0Rlc2NyaXB0aW9uID0gc1RleHRQcm9wZXJ0eSA/IGFDb250ZXh0c1swXT8uZ2V0T2JqZWN0KClbc1RleHRQcm9wZXJ0eV0gOiBcIlwiO1xuXHRcdFx0XHRcdHN3aXRjaCAoc0Rpc3BsYXlGb3JtYXQpIHtcblx0XHRcdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc0Rlc2NyaXB0aW9uO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvcmUuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikuZ2V0VGV4dChcIkNfRk9STUFUX0ZPUl9URVhUX0FSUkFOR0VNRU5UXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRzRGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRcdFx0c1Byb3BlcnR5VmFsdWVcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiQ19GT1JNQVRfRk9SX1RFWFRfQVJSQU5HRU1FTlRcIiwgW1xuXHRcdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eVZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdHNEZXNjcmlwdGlvblxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBzTXNnID1cblx0XHRcdFx0XHRcdG9FcnJvci5zdGF0dXMgJiYgb0Vycm9yLnN0YXR1cyA9PT0gNDA0XG5cdFx0XHRcdFx0XHRcdD8gYE1ldGFkYXRhIG5vdCBmb3VuZCAoJHtvRXJyb3Iuc3RhdHVzfSkgZm9yIHZhbHVlIGhlbHAgb2YgcHJvcGVydHkgJHtzUHJvcGVydHlGdWxsUGF0aH1gXG5cdFx0XHRcdFx0XHRcdDogb0Vycm9yLm1lc3NhZ2U7XG5cdFx0XHRcdFx0TG9nLmVycm9yKHNNc2cpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHR9LFxuXG5cdGhhbmRsZVR5cGVNaXNzbWF0Y2g6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKG9FdmVudC5nZXRTb3VyY2UoKSk7XG5cdFx0TWVzc2FnZUJveC5lcnJvcihyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRVwiKSwge1xuXHRcdFx0ZGV0YWlsczpcblx0XHRcdFx0YDxwPjxzdHJvbmc+JHtyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRV9ERVRBSUxTX1NFTEVDVEVEXCIpfTwvc3Ryb25nPjwvcD4ke1xuXHRcdFx0XHRcdG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkubWltZVR5cGVcblx0XHRcdFx0fTxicj48YnI+YCArXG5cdFx0XHRcdGA8cD48c3Ryb25nPiR7cmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfV1JPTkdfTUlNRVRZUEVfREVUQUlMU19BTExPV0VEXCIpfTwvc3Ryb25nPjwvcD4ke29FdmVudFxuXHRcdFx0XHRcdC5nZXRTb3VyY2UoKVxuXHRcdFx0XHRcdC5nZXRNaW1lVHlwZSgpXG5cdFx0XHRcdFx0LnRvU3RyaW5nKClcblx0XHRcdFx0XHQucmVwbGFjZUFsbChcIixcIiwgXCIsIFwiKX1gLFxuXHRcdFx0Y29udGVudFdpZHRoOiBcIjE1MHB4XCJcblx0XHR9IGFzIGFueSk7XG5cdH0sXG5cblx0aGFuZGxlRmlsZVNpemVFeGNlZWQ6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSAvKmlGaWxlU2l6ZTogYW55Ki8pIHtcblx0XHRNZXNzYWdlQm94LmVycm9yKFxuXHRcdFx0Z2V0UmVzb3VyY2VNb2RlbChvRXZlbnQuZ2V0U291cmNlKCkpLmdldFRleHQoXG5cdFx0XHRcdFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfRklMRV9UT09fQklHXCIsXG5cdFx0XHRcdG9FdmVudC5nZXRTb3VyY2UoKS5nZXRNYXhpbXVtRmlsZVNpemUoKS50b0ZpeGVkKDMpXG5cdFx0XHQpLFxuXHRcdFx0e1xuXHRcdFx0XHRjb250ZW50V2lkdGg6IFwiMTUwcHhcIlxuXHRcdFx0fSBhcyBhbnlcblx0XHQpO1xuXHR9LFxuXG5cdF9nZXRFeHRlbnNpb25Db250cm9sbGVyOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdHJldHVybiBvQ29udHJvbGxlci5pc0EoXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikgPyBvQ29udHJvbGxlci5fY29udHJvbGxlciA6IG9Db250cm9sbGVyO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB3aG8gaXMgZWRpdGluZyB0aGUgZmllbGQgcG9wb3Zlci5cblx0ICpcblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgYXZhdGFyIHdoaWNoIGlzIG5leHQgdG8gdGhlIGZpZWxkIGxvY2tlZFxuXHQgKiBAcGFyYW0gdmlldyBDdXJyZW50IHZpZXdcblx0ICovXG5cdHNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXI6IGZ1bmN0aW9uIChzb3VyY2U6IEF2YXRhciwgdmlldzogVmlldykge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBSZXNvdXJjZU1vZGVsSGVscGVyLmdldFJlc291cmNlTW9kZWwodmlldyk7XG5cdFx0bGV0IHBvcG92ZXIgPSBDb3JlLmJ5SWQoYG1hbmFnZUNvbGxhYm9yYXRpb25EcmFmdC0tZWRpdFVzZXJgKSBhcyBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRcdGlmICghcG9wb3Zlcikge1xuXHRcdFx0cG9wb3ZlciA9IG5ldyBSZXNwb25zaXZlUG9wb3ZlcihcIm1hbmFnZUNvbGxhYm9yYXRpb25EcmFmdC0tZWRpdFVzZXJcIiwge1xuXHRcdFx0XHRzaG93SGVhZGVyOiBmYWxzZSxcblx0XHRcdFx0cGxhY2VtZW50OiBcIkJvdHRvbVwiXG5cdFx0XHR9KTtcblx0XHRcdHBvcG92ZXIuYWRkU3R5bGVDbGFzcyhcInNhcFVpQ29udGVudFBhZGRpbmdcIik7XG5cdFx0XHR2aWV3LmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHR9XG5cblx0XHRjb25zdCBiaW5kaW5nUGF0aCA9IChzb3VyY2UuZ2V0QmluZGluZyhcImluaXRpYWxzXCIpIGFzIENvbXBvc2l0ZUJpbmRpbmcpXG5cdFx0XHQ/LmdldEJpbmRpbmdzKClcblx0XHRcdC5maW5kKChiaW5kaW5nKSA9PiBiaW5kaW5nPy5nZXRQYXRoKCk/LnN0YXJ0c1dpdGgoXCIvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzXCIpKVxuXHRcdFx0LmdldFBhdGgoKTtcblx0XHRjb25zdCBhY3Rpdml0aWVzID0gc291cmNlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik/LmdldE9iamVjdChiaW5kaW5nUGF0aCk7XG5cblx0XHRsZXQgZWRpdGluZ0FjdGl2aXR5OiBVc2VyQWN0aXZpdHkgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGFjdGl2aXRpZXMgJiYgYWN0aXZpdGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlZGl0aW5nQWN0aXZpdHkgPSBhY3Rpdml0aWVzLmZpbmQoKGFjdGl2aXR5OiBVc2VyQWN0aXZpdHkpID0+IHtcblx0XHRcdFx0cmV0dXJuIGFjdGl2aXR5LmtleSA9PT0gZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aChzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSEuZ2V0UGF0aCgpKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRwb3BvdmVyLmRlc3Ryb3lDb250ZW50KCk7XG5cdFx0cG9wb3Zlci5hZGRDb250ZW50KFxuXHRcdFx0bmV3IExhYmVsKHtcblx0XHRcdFx0dGV4dDogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT0xMQUJPUkFUSU9OQVZBVEFSX1VTRVJfRURJVF9GSUVMRFwiLCBbYCR7ZWRpdGluZ0FjdGl2aXR5Py5uYW1lfWBdKVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdHBvcG92ZXIub3BlbkJ5KHNvdXJjZSk7XG5cdH1cbn07XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBGaWVsZFJ1bnRpbWU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7RUFrREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0EsdUJBQXVCLENBQUNDLEtBQWMsRUFBMEM7SUFDeEYsSUFBSUMsT0FBTyxHQUFJRCxLQUFLLENBQUNFLGlCQUFpQixFQUFFLENBQWFDLFVBQVUsRUFBRTtJQUVqRSxJQUFJLENBQUNGLE9BQU8sQ0FBQ0csR0FBRyxDQUFDLHdDQUF3QyxDQUFDLEVBQUU7TUFDM0QsTUFBTUMsS0FBSyxHQUFHQyxXQUFXLENBQUNDLGFBQWEsQ0FBQ1AsS0FBSyxDQUFDO01BQzlDQyxPQUFPLEdBQUlJLEtBQUssQ0FBQ0gsaUJBQWlCLEVBQUUsQ0FBYUMsVUFBVSxFQUFFO0lBQzlEO0lBRUEsT0FBT0YsT0FBTztFQUNmO0VBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTU8sWUFBWSxHQUFHO0lBQ3BCQyxjQUFjLEVBQUVDLFNBQWdCO0lBQ2hDQyxtQkFBbUIsRUFBRSxLQUFLO0lBRTFCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NDLDZCQUE2QixFQUFFLFVBQVVDLE9BQWdCLEVBQUVDLFdBQTJCLEVBQUVDLFFBQWdCLEVBQUU7TUFDekcsSUFBSUQsV0FBVyxDQUFDRSxRQUFRLEVBQUU7UUFDekIsSUFBSUMsZUFBZSxHQUFHSixPQUFPLENBQUNYLGlCQUFpQixFQUFhO1FBQzVELE1BQU1HLEtBQUssR0FBR0MsV0FBVyxDQUFDQyxhQUFhLENBQUNNLE9BQU8sQ0FBQztVQUMvQ0ssVUFBVSxHQUFHRCxlQUFlLENBQUNFLFFBQVEsRUFBRSxDQUFDQyxZQUFZLEVBQUU7VUFDdERDLFVBQVUsR0FBRyxVQUFVQyxRQUFjLEVBQUU7WUFDdEMsSUFBSUEsUUFBUSxFQUFFO2NBQ2JMLGVBQWUsR0FBR0ssUUFBUTtZQUMzQjtZQUNBUixXQUFXLENBQUNFLFFBQVEsQ0FBQ08sZ0JBQWdCLENBQUNOLGVBQWUsRUFBRUYsUUFBUSxFQUFFLElBQUksQ0FBQztVQUN2RSxDQUFDO1FBQ0Y7UUFDQSxJQUFLVixLQUFLLENBQUNtQixXQUFXLEVBQUUsQ0FBU0MsYUFBYSxLQUFLLFlBQVksSUFBSSxDQUFDQyxXQUFXLENBQUNDLHdCQUF3QixDQUFDVCxVQUFVLENBQUMsRUFBRTtVQUNySFUsS0FBSyxDQUFDQyx5Q0FBeUMsQ0FDOUNSLFVBQVUsRUFDVlMsUUFBUSxDQUFDQyxTQUFTLEVBQ2xCZCxlQUFlLEVBQ2ZaLEtBQUssQ0FBQzJCLGFBQWEsRUFBRSxFQUNyQixJQUFJLEVBQ0pKLEtBQUssQ0FBQ0ssY0FBYyxDQUFDQyxpQkFBaUIsQ0FDdEM7UUFDRixDQUFDLE1BQU07VUFDTmIsVUFBVSxFQUFFO1FBQ2I7TUFDRCxDQUFDLE1BQU07UUFDTmMsR0FBRyxDQUFDQyxLQUFLLENBQ1IsNEZBQTRGLEVBQzVGLGtDQUFrQyxFQUNsQywrQkFBK0IsQ0FDL0I7TUFDRjtJQUNELENBQUM7SUFFREMsdUJBQXVCLEVBQUUsVUFDeEJDLGFBQWtCLEVBQ2xCQyw2QkFBa0MsRUFDbENDLGNBQW1CLEVBQ25CQyxjQUFtQixFQUNuQkMsYUFBa0IsRUFDakI7TUFDRCxJQUFJRCxjQUFjLEtBQUsvQixTQUFTLElBQUk4QixjQUFjLEtBQUs5QixTQUFTLEtBQUssQ0FBQytCLGNBQWMsSUFBSUQsY0FBYyxDQUFDLElBQUksQ0FBQ0UsYUFBYSxFQUFFO1FBQzFILE9BQU9KLGFBQWEsS0FBS0MsNkJBQTZCO01BQ3ZELENBQUMsTUFBTTtRQUNOLE9BQU8sS0FBSztNQUNiO0lBQ0QsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0ksb0JBQW9CLEVBQUUsVUFBVTdCLFdBQW1CLEVBQUU4QixNQUFjLEVBQUU7TUFDcEUsTUFBTUMsYUFBYSxHQUFHckMsWUFBWSxDQUFDc0MsdUJBQXVCLENBQUNoQyxXQUFXLENBQUM7TUFDdkUrQixhQUFhLENBQUNFLFlBQVksQ0FBQ0Msc0JBQXNCLENBQUNKLE1BQU0sQ0FBQztJQUMxRCxDQUFDO0lBRURLLHFCQUFxQixFQUFFLFVBQVVqRCxLQUFZLEVBQUVrRCxVQUFzQixFQUFRO01BQzVFLE1BQU1DLElBQUksR0FBRzdDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDUCxLQUFLLENBQUM7TUFDN0MsTUFBTW9ELG1CQUFtQixHQUFHcEQsS0FBSyxDQUFDRSxpQkFBaUIsRUFBRTtNQUNyRCxJQUFJbUQsc0JBQXNCOztNQUUxQjtNQUNBLE1BQU1DLFlBQVksR0FBSUYsbUJBQW1CLGFBQW5CQSxtQkFBbUIsdUJBQW5CQSxtQkFBbUIsQ0FBY2pELFVBQVUsRUFBRTtNQUVuRSxJQUFJbUQsWUFBWSxDQUFDbEQsR0FBRyxDQUFDLHdDQUF3QyxDQUFDLEVBQUU7UUFDL0Q7UUFDQWlELHNCQUFzQixHQUFHRCxtQkFBbUI7TUFDN0MsQ0FBQyxNQUFNO1FBQ047UUFDQTtRQUNBQyxzQkFBc0IsR0FBR0YsSUFBSSxDQUFDakQsaUJBQWlCLEVBQUU7TUFDbEQ7TUFDQSxNQUFNcUQsWUFBWSxHQUFHL0MsWUFBWSxDQUFDc0MsdUJBQXVCLENBQUNJLFVBQVUsQ0FBQztNQUNyRSxNQUFNTSxXQUFXLEdBQUd4RCxLQUFLLENBQUN5RCxZQUFZLEVBQUU7TUFDeEMsSUFBSUQsV0FBVyxJQUFJQSxXQUFXLENBQUNFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1FBQUE7UUFDOUQsTUFBTUMsT0FBTyxHQUFHSCxXQUFXLENBQUNJLFNBQVMsQ0FBQyxDQUFDLEVBQUVKLFdBQVcsQ0FBQ0ssT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkYsTUFBTUMsS0FBSyxHQUFHWCxJQUFJLENBQUNZLElBQUksQ0FBQ0osT0FBTyxDQUFDO1FBQ2hDLE1BQU1LLGlCQUFpQixHQUFJRixLQUFLLGFBQUxBLEtBQUssMkNBQUxBLEtBQUssQ0FBRUcsU0FBUyxFQUFFLHFEQUFuQixpQkFBa0NDLG1CQUFtQixFQUFFO1FBQ2pGWCxZQUFZLENBQUNZLGVBQWUsQ0FBQ0MseUNBQXlDLENBQUNwRSxLQUFLLEVBQUUsQ0FDN0U7VUFBRXFFLE9BQU8sRUFBRWhCLHNCQUFzQjtVQUFFVztRQUFrQixDQUFDLENBQ3RELENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTlQsWUFBWSxDQUFDWSxlQUFlLENBQUNDLHlDQUF5QyxDQUFDcEUsS0FBSyxFQUFFLENBQUM7VUFBRXFFLE9BQU8sRUFBRWhCO1FBQXVCLENBQUMsQ0FBQyxDQUFDO01BQ3JIO0lBQ0QsQ0FBQztJQUNEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NpQixZQUFZLEVBQUUsVUFBVXhELFdBQTJCLEVBQUU4QixNQUF1RCxFQUFRO01BQ25ILE1BQU0yQixZQUFZLEdBQUczQixNQUFNLENBQUM0QixTQUFTLEVBQWE7UUFDakRDLFlBQVksR0FBR0YsWUFBWSxJQUFLQSxZQUFZLENBQUNyRSxpQkFBaUIsRUFBRSxDQUFTd0UsV0FBVyxFQUFFO1FBQ3RGQyxjQUFjLEdBQUcvQixNQUFNLENBQUNnQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUlDLE9BQU8sQ0FBQ0MsT0FBTyxFQUFFO1FBQ3BFakUsT0FBTyxHQUFHK0IsTUFBTSxDQUFDNEIsU0FBUyxFQUFFO1FBQzVCTyxNQUFNLEdBQUduQyxNQUFNLENBQUNnQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3JDSSxhQUFhLEdBQUcsSUFBSSxDQUFDQyxxQkFBcUIsQ0FBQ3JDLE1BQU0sQ0FBQyxDQUFDc0MsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNwRWxGLEtBQUssR0FBRzRDLE1BQU0sQ0FBQzRCLFNBQVMsRUFBYTs7TUFFdEM7TUFDQSxNQUFNM0IsYUFBYSxHQUFHckMsWUFBWSxDQUFDc0MsdUJBQXVCLENBQUNoQyxXQUFXLENBQUM7O01BRXZFO01BQ0E7TUFDQTZELGNBQWMsQ0FDWlEsSUFBSSxDQUFDLFlBQVk7UUFDakI7UUFDQ3ZDLE1BQU0sQ0FBUy9CLE9BQU8sR0FBR0EsT0FBTztRQUNoQytCLE1BQU0sQ0FBU3dDLFdBQVcsR0FBRztVQUM3QkMsS0FBSyxFQUFFTjtRQUNSLENBQUM7UUFDQU8sUUFBUSxDQUFTaEIsWUFBWSxDQUFDMUIsTUFBTSxFQUFFOUIsV0FBVyxDQUFDO1FBQ25ELElBQUksQ0FBQzJELFlBQVksRUFBRTtVQUNsQjtVQUNBO1VBQ0E1QixhQUFhLENBQUNFLFlBQVksQ0FBQ3dDLGlCQUFpQixDQUFDM0MsTUFBTSxFQUFFb0MsYUFBYSxFQUFFTCxjQUFjLEVBQUUsSUFBSSxDQUFDO1FBQzFGO1FBQ0E7UUFDQW5FLFlBQVksQ0FBQ3lDLHFCQUFxQixDQUFDakQsS0FBSyxFQUFXYyxXQUFXLENBQUM7UUFDL0Q7TUFDRCxDQUFDLENBQUMsQ0FDRDBFLEtBQUssQ0FBQyxTQUFVO01BQUEsR0FBaUI7UUFDakM7UUFDQzVDLE1BQU0sQ0FBUy9CLE9BQU8sR0FBR0EsT0FBTztRQUNoQytCLE1BQU0sQ0FBU3dDLFdBQVcsR0FBRztVQUM3QkMsS0FBSyxFQUFFO1FBQ1IsQ0FBQztRQUNEbEQsR0FBRyxDQUFDc0QsS0FBSyxDQUFDLG1GQUFtRixDQUFDO1FBQzlGO1FBQ0E7UUFDQ0gsUUFBUSxDQUFTaEIsWUFBWSxDQUFDMUIsTUFBTSxFQUFFOUIsV0FBVyxDQUFDO01BQ3BELENBQUMsQ0FBQzs7TUFFSDtNQUNBO01BQ0EsTUFBTTRFLHlCQUF5QixHQUFHZixjQUFjLENBQzlDUSxJQUFJLENBQUMsWUFBWTtRQUNqQixPQUFPLElBQUlOLE9BQU8sQ0FBUUMsT0FBTyxJQUFLO1VBQ3JDYSxVQUFVLENBQUNiLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDLENBQ0RVLEtBQUssQ0FBQyxZQUFZO1FBQ2xCLE9BQU8sSUFBSVgsT0FBTyxDQUFRQyxPQUFPLElBQUs7VUFDckNhLFVBQVUsQ0FBQ2IsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUM7TUFDSCxDQUFDLENBQUM7TUFDSGpDLGFBQWEsYUFBYkEsYUFBYSx1QkFBYkEsYUFBYSxDQUFFK0MsUUFBUSxDQUFDQyxRQUFRLENBQUNILHlCQUF5QixDQUFDOztNQUUzRDtNQUNBO01BQ0EsSUFBSWpCLFlBQVksRUFBRTtRQUNqQjtNQUNEO01BRUE1QixhQUFhLENBQUNFLFlBQVksQ0FBQytDLGtDQUFrQyxDQUFDbEQsTUFBTSxFQUFFb0MsYUFBYSxFQUFFTCxjQUFjLENBQUM7TUFDcEc7TUFDQSxNQUFNb0IscUJBQXFCLEdBQUdDLHlCQUF5QixDQUFDQyxXQUFXLENBQUNqRyxLQUFLLENBQUM7TUFFMUUsSUFBSStGLHFCQUFxQixJQUFJZixhQUFhLEVBQUU7UUFBQTtRQUMzQyxNQUFNL0UsT0FBTyxHQUFHRix1QkFBdUIsQ0FBQ0MsS0FBSyxDQUFDO1FBRTlDLE1BQU1rRyxJQUFJLEdBQUcsQ0FDWixJQUFJLFNBQUNsRyxLQUFLLENBQUNtRyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUluRyxLQUFLLENBQUNtRyxjQUFjLENBQUMsVUFBVSxDQUFDLHlDQUFsRSxLQUFxRUMsS0FBSyxLQUFJLEVBQUUsQ0FBQyxFQUNyRixJQUFJLDBCQUFBcEcsS0FBSyxDQUFDbUcsY0FBYyxDQUFDLGlCQUFpQixDQUFDLDBEQUF2QyxzQkFBeUNDLEtBQUssS0FBSSxFQUFFLENBQUMsQ0FDekQsQ0FDQ0MsTUFBTSxDQUFFQyxJQUFJLElBQUs7VUFDakIsT0FBTyxDQUFBQSxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRUMsSUFBSSxNQUFLN0YsU0FBUyxJQUFJNEYsSUFBSSxDQUFDQyxJQUFJLENBQUMxQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQ0QyQyxHQUFHLENBQUMsVUFBVUYsSUFBc0IsRUFBRTtVQUFBO1VBQ3RDLE9BQVEsNEJBQUV0RyxLQUFLLENBQUNFLGlCQUFpQixFQUFFLDBEQUF6QixzQkFBMkJ1RyxPQUFPLEVBQUcsSUFBR0gsSUFBSSxDQUFDQyxJQUFLLEVBQUM7UUFDOUQsQ0FBQyxDQUFDOztRQUVIO1FBQ0E7UUFDQVAseUJBQXlCLENBQUNVLG1CQUFtQixDQUFDMUcsS0FBSyxFQUFFa0csSUFBSSxDQUFDO1FBRTFELE1BQU1TLG1CQUFtQixHQUFHLE1BQU07VUFDakMsSUFBSTFHLE9BQU8sQ0FBQzJHLGlCQUFpQixFQUFFLEVBQUU7WUFDaEM7WUFDQTNHLE9BQU8sQ0FBQzRHLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZO2NBQ3JEYix5QkFBeUIsQ0FBQ2MsSUFBSSxDQUFDOUcsS0FBSyxFQUFFO2dCQUFFK0csTUFBTSxFQUFFQyxRQUFRLENBQUNDLE1BQU07Z0JBQUVDLE9BQU8sRUFBRWhCO2NBQUssQ0FBQyxDQUFDO2NBQ2pGRix5QkFBeUIsQ0FBQ21CLG9CQUFvQixDQUFDbkgsS0FBSyxFQUFFa0csSUFBSSxDQUFDO1lBQzVELENBQUMsQ0FBQztVQUNILENBQUMsTUFBTTtZQUNORix5QkFBeUIsQ0FBQ21CLG9CQUFvQixDQUFDbkgsS0FBSyxFQUFFa0csSUFBSSxDQUFDO1VBQzVEO1FBQ0QsQ0FBQztRQUNELElBQUkzQixZQUFZLENBQUNuRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsRUFBRTtVQUN6Q3VFLGNBQWMsQ0FDWlEsSUFBSSxDQUFDLE1BQU07WUFDWHdCLG1CQUFtQixFQUFFO1lBQ3JCO1VBQ0QsQ0FBQyxDQUFDLENBQ0RuQixLQUFLLENBQUMsTUFBTTtZQUNabUIsbUJBQW1CLEVBQUU7VUFDdEIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxNQUFNO1VBQ05BLG1CQUFtQixFQUFFO1FBQ3RCO01BQ0Q7SUFDRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ1MsZ0JBQWdCLEVBQUUsVUFBVUMsS0FBWSxFQUFRO01BQzlDL0IsUUFBUSxDQUFrQjhCLGdCQUFnQixDQUFDQyxLQUFLLENBQUM7SUFDbkQsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyx3Q0FBd0MsQ0FBQ0MsWUFBMEIsRUFBRVIsTUFBZ0IsRUFBUTtNQUM1RixJQUFJZix5QkFBeUIsQ0FBQ0MsV0FBVyxDQUFDc0IsWUFBWSxDQUFDLEVBQUU7UUFBQTtRQUN4RCxNQUFNQyxXQUFXLDRCQUFHRCxZQUFZLENBQUN0RCxTQUFTLEVBQUUsMERBQXhCLHNCQUEwQndELFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDekUsTUFBTUMsUUFBUSxHQUFJLDRCQUFFSCxZQUFZLENBQUNySCxpQkFBaUIsRUFBRSwwREFBaEMsc0JBQWtDdUcsT0FBTyxFQUFHLElBQUdlLFdBQVksRUFBQztRQUNoRnhCLHlCQUF5QixDQUFDYyxJQUFJLENBQUNTLFlBQVksRUFBRTtVQUFFUixNQUFNO1VBQUVHLE9BQU8sRUFBRVE7UUFBUyxDQUFDLENBQUM7TUFDNUU7SUFDRCxDQUFDO0lBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxrQkFBa0IsRUFBRSxVQUFVTixLQUFZLEVBQVE7TUFDakQsTUFBTUUsWUFBWSxHQUFHRixLQUFLLENBQUM3QyxTQUFTLEVBQWtCO01BQ3REaEUsWUFBWSxDQUFDOEcsd0NBQXdDLENBQUNDLFlBQVksRUFBRVAsUUFBUSxDQUFDWSxJQUFJLENBQUM7SUFDbkYsQ0FBQztJQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsbUJBQW1CLEVBQUUsVUFBVVIsS0FBWSxFQUFRO01BQ2xELE1BQU1FLFlBQVksR0FBR0YsS0FBSyxDQUFDN0MsU0FBUyxFQUFrQjtNQUN0RGhFLFlBQVksQ0FBQzhHLHdDQUF3QyxDQUFDQyxZQUFZLEVBQUVQLFFBQVEsQ0FBQ2MsTUFBTSxDQUFDO0lBQ3JGLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0M3QyxxQkFBcUIsRUFBRSxVQUFVckMsTUFBdUQsRUFNdEY7TUFDRCxJQUFJMkIsWUFBWSxHQUFHM0IsTUFBTSxDQUFDNEIsU0FBUyxFQUFTO1FBQzNDdUQsV0FHQyxHQUFHLENBQUMsQ0FBQztNQUNQLE1BQU1DLHVCQUF1QixHQUFHLFVBQVVDLFFBQWEsRUFBRTtRQUN4RCxPQUFPQSxRQUFRLElBQUlBLFFBQVEsQ0FBQ0MsWUFBWSxFQUFFLEdBQUdELFFBQVEsQ0FBQ0MsWUFBWSxFQUFFLENBQUNDLGVBQWUsRUFBRSxLQUFLekgsU0FBUyxHQUFHLElBQUk7TUFDNUcsQ0FBQztNQUNELElBQUk2RCxZQUFZLENBQUNuRSxHQUFHLENBQUMsOEJBQThCLENBQUMsRUFBRTtRQUNyRG1FLFlBQVksR0FBSUEsWUFBWSxDQUE4QjZELFVBQVUsRUFBRTtNQUN2RTtNQUVBLElBQUk3RCxZQUFZLENBQUNuRSxHQUFHLENBQUNpSSxZQUFZLENBQUNDLFdBQVcsRUFBRSxDQUFDQyxPQUFPLEVBQUUsQ0FBQyxJQUFJaEUsWUFBWSxDQUFDaUUsV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFO1FBQ3hHakUsWUFBWSxHQUFHQSxZQUFZLENBQUNrRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFDaEQ7TUFFQSxJQUFJbEUsWUFBWSxDQUFDbkUsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUU7UUFDekMsSUFBSXNJLFFBQVEsR0FBRzlGLE1BQU0sQ0FBQ2dDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSWhDLE1BQU0sQ0FBQ2dDLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDN0UsSUFBSThELFFBQVEsS0FBS2hJLFNBQVMsRUFBRTtVQUMzQixJQUFJNkQsWUFBWSxDQUFDb0UsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDMUMsTUFBTUMsaUJBQWlCLEdBQUdyRSxZQUFZLENBQUM0QixjQUFjLENBQUMsT0FBTyxDQUFDO1lBQzlEdUMsUUFBUSxHQUFHVix1QkFBdUIsQ0FBQ1ksaUJBQWlCLElBQUlBLGlCQUFpQixDQUFDM0ksT0FBTyxDQUFDO1VBQ25GO1VBQ0EsSUFBSXNFLFlBQVksQ0FBQ3NFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDdEUsWUFBWSxDQUFDa0QsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVFaUIsUUFBUSxHQUFHLElBQUk7VUFDaEI7UUFDRDtRQUNBWCxXQUFXLEdBQUc7VUFDYmUsVUFBVSxFQUFFdkUsWUFBWSxDQUFDc0UsUUFBUSxFQUFFO1VBQ25DRSxRQUFRLEVBQUUsQ0FBQyxDQUFDTDtRQUNiLENBQUM7TUFDRixDQUFDLE1BQU07UUFDTjtRQUNBLE1BQU1ULFFBQVEsR0FDYjFELFlBQVksQ0FBQ3BFLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSW9FLFlBQVksQ0FBQ3BFLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSW9FLFlBQVksQ0FBQ3BFLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDaEg0SCxXQUFXLEdBQUc7VUFDYmUsVUFBVSxFQUFFYixRQUFRLElBQUlBLFFBQVEsQ0FBQ1ksUUFBUSxFQUFFO1VBQzNDRSxRQUFRLEVBQUVmLHVCQUF1QixDQUFDQyxRQUFRO1FBQzNDLENBQUM7TUFDRjtNQUNBLE9BQU87UUFDTmpJLEtBQUssRUFBRXVFLFlBQVk7UUFDbkJXLEtBQUssRUFBRTZDO01BQ1IsQ0FBQztJQUNGLENBQUM7SUFDRGlCLHFCQUFxQixFQUFFLFVBQVVDLFlBQWlCLEVBQUU7TUFDbkQsSUFBSUEsWUFBWSxJQUFJQSxZQUFZLENBQUNwRixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDckQ7UUFDQW9GLFlBQVksR0FBR0EsWUFBWSxDQUFDQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQzFDO01BQ0EsT0FBT0QsWUFBWTtJQUNwQixDQUFDO0lBQ0RFLHFCQUFxQixFQUFFLFVBQVVDLFFBQWEsRUFBRUMsTUFBVyxFQUFFQyxjQUFtQixFQUFFQyxPQUFZLEVBQUVDLFdBQWdCLEVBQUU7TUFDakgsTUFBTUMsTUFBTSxHQUFHSixNQUFNLElBQUlBLE1BQU0sQ0FBQ2xJLFFBQVEsRUFBRTtNQUMxQyxNQUFNRCxVQUFVLEdBQUd1SSxNQUFNLElBQUlBLE1BQU0sQ0FBQ3JJLFlBQVksRUFBRTtNQUNsRCxNQUFNc0ksbUJBQW1CLEdBQUdILE9BQU8sSUFBS0gsUUFBUSxJQUFJQSxRQUFRLENBQUNQLFFBQVEsRUFBRztNQUN4RSxNQUFNeEksS0FBSyxHQUFHZ0osTUFBTSxJQUFJL0ksV0FBVyxDQUFDQyxhQUFhLENBQUM4SSxNQUFNLENBQUM7TUFDekQsTUFBTU0scUJBQXFCLEdBQUd0SixLQUFLLElBQUlBLEtBQUssQ0FBQ0gsaUJBQWlCLENBQUMsVUFBVSxDQUFDO01BQzFFLE1BQU0wSixhQUFhLEdBQUd2SixLQUFLLElBQUlDLFdBQVcsQ0FBQ3VKLGVBQWUsQ0FBQ3hKLEtBQUssQ0FBQztNQUNqRSxNQUFNeUosbUJBQW1CLEdBQUdGLGFBQWEsSUFBSUEsYUFBYSxDQUFDRyxnQkFBZ0IsRUFBRTtNQUM3RSxNQUFNQyxnQkFBZ0IsR0FBR0YsbUJBQW1CLElBQUlBLG1CQUFtQixDQUFDRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFBRUMsY0FBYyxFQUFFUjtNQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ2xJLE1BQU1TLGlDQUFpQyxHQUN0Q2pKLFVBQVUsSUFBSUEsVUFBVSxDQUFDa0osU0FBUyxDQUFFLEdBQUVkLGNBQWUsa0VBQWlFLENBQUM7TUFDeEgsT0FBTztRQUNOZSxrQkFBa0IsRUFBRVgsbUJBQW1CO1FBQ3ZDWSxzQkFBc0IsRUFBRWhCLGNBQWM7UUFBRTtRQUN4Q2lCLFNBQVMsRUFBRXJKLFVBQVU7UUFDckJzSixvQkFBb0IsRUFBRWIscUJBQXFCO1FBQzNDYyxrQkFBa0IsRUFBRVgsbUJBQW1CO1FBQ3ZDWSxlQUFlLEVBQUVWLGdCQUFnQjtRQUNqQ1csZ0NBQWdDLEVBQUVSLGlDQUFpQztRQUNuRVgsV0FBVyxFQUFFQTtNQUNkLENBQUM7SUFDRixDQUFDO0lBQ0RvQiwyQkFBMkIsRUFBRSxVQUFVQyxzQkFBMkIsRUFBRUMsVUFBZSxFQUFFO01BQ3BGLElBQUlELHNCQUFzQixJQUFJQSxzQkFBc0IsQ0FBQ3RFLElBQUksSUFBSXNFLHNCQUFzQixDQUFDdEUsSUFBSSxLQUFLdUUsVUFBVSxDQUFDUixzQkFBc0IsRUFBRTtRQUMvSDtRQUNBLE1BQU1TLDJDQUEyQyxHQUNoREYsc0JBQXNCLENBQUMsQ0FBQ0MsVUFBVSxDQUFDSCxnQ0FBZ0MsR0FBRyx1QkFBdUIsR0FBRyxZQUFZLENBQUM7UUFDOUdHLFVBQVUsQ0FBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUN1QiwyQ0FBMkMsQ0FBQztRQUNyRSxPQUFPLElBQUk7TUFDWixDQUFDLE1BQU07UUFDTixPQUFPLEtBQUs7TUFDYjtJQUNELENBQUM7SUFDREMsZ0RBQWdELEVBQUUsVUFBVUYsVUFBZSxFQUFFRyxzQkFBMkIsRUFBRTtNQUN6RyxJQUFJQSxzQkFBc0IsQ0FBQ0gsVUFBVSxDQUFDVCxrQkFBa0IsQ0FBQyxFQUFFO1FBQzFELElBQUlhLFFBQVEsRUFBRUwsc0JBQXNCO1FBQ3BDLE1BQU1NLG9CQUFvQixHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ0osc0JBQXNCLENBQUNILFVBQVUsQ0FBQ1Qsa0JBQWtCLENBQUMsQ0FBQztRQUMvRixLQUFLLE1BQU1pQixXQUFXLElBQUlILG9CQUFvQixFQUFFO1VBQy9DRCxRQUFRLEdBQUdDLG9CQUFvQixDQUFDRyxXQUFXLENBQUM7VUFDNUNULHNCQUFzQixHQUNyQkksc0JBQXNCLENBQUNILFVBQVUsQ0FBQ1Qsa0JBQWtCLENBQUMsSUFDckRZLHNCQUFzQixDQUFDSCxVQUFVLENBQUNULGtCQUFrQixDQUFDLENBQUNhLFFBQVEsQ0FBQztVQUNoRSxJQUFJMUssWUFBWSxDQUFDb0ssMkJBQTJCLENBQUNDLHNCQUFzQixFQUFFQyxVQUFVLENBQUMsRUFBRTtZQUNqRjtVQUNEO1FBQ0Q7TUFDRDtJQUNELENBQUM7SUFDRFMsbUNBQW1DLEVBQUUsVUFBVTNJLE1BQVcsRUFBRTRJLE1BQVcsRUFBRUMsUUFBYSxFQUFFbkMsY0FBbUIsRUFBRTtNQUM1RyxNQUFNekksT0FBTyxHQUFHK0IsTUFBTSxJQUFJQSxNQUFNLENBQUM0QixTQUFTLEVBQUU7TUFDNUMsSUFBSWdGLFdBQVc7TUFDZixJQUFJaUMsUUFBUSxDQUFDckwsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7UUFDdkNvSixXQUFXLEdBQUlrQyxPQUFnQixJQUFLRCxRQUFRLENBQUNFLFNBQVMsQ0FBQ0QsT0FBTyxDQUFDO01BQ2hFO01BQ0EsSUFBSUQsUUFBUSxDQUFDckwsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7UUFDM0NvSixXQUFXLEdBQUlrQyxPQUFnQixJQUFLRCxRQUFRLENBQUNHLGNBQWMsQ0FBQ0YsT0FBTyxDQUFDO01BQ3JFO01BQ0EsTUFBTUcsbUJBQW1CLEdBQUdKLFFBQVEsSUFBSUEsUUFBUSxDQUFDeEgsU0FBUyxFQUFFO01BQzVELElBQUk0SCxtQkFBbUIsSUFBSUEsbUJBQW1CLENBQUN6TCxHQUFHLENBQUMsMkNBQTJDLENBQUMsRUFBRTtRQUNoR29KLFdBQVcsR0FBSWtDLE9BQWdCLElBQUtHLG1CQUFtQixDQUFDQyxZQUFZLENBQUNKLE9BQU8sQ0FBQztNQUM5RTtNQUNBLElBQUlsQyxXQUFXLEtBQUs5SSxTQUFTLEVBQUU7UUFDOUIsTUFBTXFMLFNBQVMsR0FBR3ZMLFlBQVksQ0FBQzJJLHFCQUFxQixDQUFDdEksT0FBTyxFQUFFNEssUUFBUSxFQUFFbkMsY0FBYyxFQUFFa0MsTUFBTSxFQUFFaEMsV0FBVyxDQUFDO1FBQzVHdUMsU0FBUyxDQUFDdkMsV0FBVyxHQUFHQSxXQUFXO1FBQ25DLE1BQU1QLFlBQVksR0FBR3pJLFlBQVksQ0FBQ3dJLHFCQUFxQixDQUFDMUksV0FBVyxDQUFDdUosZUFBZSxDQUFDNEIsUUFBUSxDQUFDLENBQUMxQixnQkFBZ0IsRUFBRSxDQUFDaUMsT0FBTyxFQUFFLENBQUM7UUFDM0gxTCxXQUFXLENBQUMyTCxxQkFBcUIsQ0FDaEMsQ0FBQ0YsU0FBUyxDQUFDckIsZUFBZSxDQUFDLEVBQzNCLENBQUM7VUFBRVIsY0FBYyxFQUFFNkIsU0FBUyxDQUFDMUIsa0JBQWtCO1VBQUU5RCxJQUFJLEVBQUV3RixTQUFTLENBQUN6QjtRQUF1QixDQUFDLENBQUMsRUFDMUZ5QixTQUFTLENBQUN2QixvQkFBb0IsRUFDOUJ2QixZQUFZLENBQ1osQ0FDQzlELElBQUksQ0FBQyxVQUFVK0cscUJBQTBCLEVBQUU7VUFDM0MsSUFBSUEscUJBQXFCLEVBQUU7WUFDMUIxTCxZQUFZLENBQUN3SyxnREFBZ0QsQ0FBQ2UsU0FBUyxFQUFFRyxxQkFBcUIsQ0FBQztVQUNoRztVQUNBO1FBQ0QsQ0FBQyxDQUFDLENBQ0QxRyxLQUFLLENBQUMsVUFBVTJHLE1BQVcsRUFBRTtVQUM3QmhLLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLHNDQUFzQyxFQUFFK0osTUFBTSxDQUFDO1FBQzFELENBQUMsQ0FBQztNQUNKO0lBQ0QsQ0FBQztJQUNEQyxzQ0FBc0MsQ0FBQ0MsUUFBaUIsRUFBRTtNQUN6RCxJQUFJLENBQUNBLFFBQVEsQ0FBQ2xMLFFBQVEsRUFBRSxJQUFJLENBQUNrTCxRQUFRLENBQUNuTSxpQkFBaUIsRUFBRSxFQUFFO1FBQzFELE9BQU8sS0FBSztNQUNiLENBQUMsTUFBTTtRQUNOLE9BQU8sSUFBSTtNQUNaO0lBQ0QsQ0FBQztJQUNEb00sc0RBQXNELENBQUNELFFBQWlCLEVBQUVFLFlBQW9CLEVBQUVDLFdBQXlCLEVBQVE7TUFDaEksSUFBSUMsd0JBQTZCO01BQ2pDLElBQUlDLGFBQWE7TUFDakIsTUFBTUMsMEJBQTBCLEdBQUcsVUFBVUMsdUJBQTRCLEVBQUU7UUFDMUUsT0FBTyxFQUFFQSx1QkFBdUIsS0FBSyxJQUFJLElBQUksT0FBT0EsdUJBQXVCLEtBQUssUUFBUSxDQUFDO01BQzFGLENBQUM7TUFDRDtNQUNBSixXQUFXLEdBQUdBLFdBQVcsQ0FBQ25HLE1BQU0sQ0FBRXdHLFVBQVUsSUFBS0EsVUFBVSxDQUFDQyxNQUFNLEVBQUUsS0FBSyx3QkFBd0IsQ0FBQztNQUNsRyxLQUFLLE1BQU1DLEtBQUssSUFBSVAsV0FBVyxFQUFFO1FBQ2hDQyx3QkFBd0IsR0FBR0QsV0FBVyxDQUFDTyxLQUFLLENBQUMsQ0FBQ2xFLFFBQVEsRUFBRTtRQUN4RCxJQUFJLENBQUM0RCx3QkFBd0IsSUFBSUUsMEJBQTBCLENBQUNGLHdCQUF3QixDQUFDLEVBQUU7VUFDdEZDLGFBQWEsR0FBR0YsV0FBVyxDQUFDTyxLQUFLLENBQUMsQ0FBQzVNLFVBQVUsQ0FBQyxPQUFPLENBQUM7VUFDdEQsSUFBSXVNLGFBQWEsRUFBRTtZQUNsQkEsYUFBYSxDQUFDN0YsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVbUcsYUFBa0IsRUFBRTtjQUNyRXhNLFlBQVksQ0FBQytLLG1DQUFtQyxDQUFDeUIsYUFBYSxFQUFFLElBQUksRUFBRVgsUUFBUSxFQUFFRSxZQUFZLENBQUM7WUFDOUYsQ0FBQyxDQUFDO1VBQ0g7UUFDRCxDQUFDLE1BQU0sSUFBSUksMEJBQTBCLENBQUNGLHdCQUF3QixDQUFDLEVBQUU7VUFDaEVqTSxZQUFZLENBQUMrSyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUVrQix3QkFBd0IsRUFBRUosUUFBUSxFQUFFRSxZQUFZLENBQUM7UUFDekc7TUFDRDtJQUNELENBQUM7SUFDRFUsc0JBQXNCLEVBQUUsVUFBVXJLLE1BQVcsRUFBRXNLLFNBQWMsRUFBRUMsZUFBb0IsRUFBUTtNQUMxRixNQUFNQyxPQUFPLEdBQUd4SyxNQUFNLENBQUM0QixTQUFTLEVBQUU7TUFDbEMsSUFBSWhFLFlBQVksQ0FBQzRMLHNDQUFzQyxDQUFDZ0IsT0FBTyxDQUFDLEVBQUU7UUFDakUsTUFBTTlLLGFBQWEsR0FBSSxHQUFFNkssZUFBZ0IsSUFBR0QsU0FBVSxFQUFDO1FBQ3ZELE1BQU1HLE9BQU8sR0FBR0QsT0FBTyxDQUFDRSxhQUFhLEVBQUUsQ0FBQ0MsTUFBTSxHQUFHSCxPQUFPLENBQUNFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHNU0sU0FBUztRQUN2RixNQUFNOEwsV0FBVyxHQUFHYSxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRUcsYUFBYSxFQUFFO1FBQzVDLElBQUloQixXQUFXLElBQUlBLFdBQVcsQ0FBQ2UsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUMxQy9NLFlBQVksQ0FBQzhMLHNEQUFzRCxDQUFDYyxPQUFPLEVBQUU5SyxhQUFhLEVBQUVrSyxXQUFXLENBQUM7UUFDekc7TUFDRDtJQUNELENBQUM7SUFDRGlCLGdCQUFnQixFQUFFLFVBQVVwRyxLQUFZLEVBQUU7TUFDekMsTUFBTXFHLE1BQU0sR0FBR3JHLEtBQUssQ0FBQzdDLFNBQVMsRUFBUztNQUN2QyxJQUFJa0osTUFBTSxDQUFDeEgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJd0gsTUFBTSxDQUFDakcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUM1RDtRQUNBa0csVUFBVSxDQUFDRCxNQUFNLENBQUN4SCxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDO01BQ3hDO0lBQ0QsQ0FBQztJQUNEMEgsMEJBQTBCLEVBQUUsVUFBVVAsT0FBZ0IsRUFBRTtNQUN2RCxNQUFNUSxTQUFTLEdBQUdSLE9BQU8sQ0FBQ1MsS0FBSyxFQUFFO01BQ2pDLE1BQU1DLDBCQUF1RCxHQUFHO1FBQy9EQyxLQUFLLEVBQUVDLGdCQUFnQixDQUFDWixPQUFPLENBQXVCLENBQUNhLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQztRQUM1RkMsV0FBVyxFQUFFRixnQkFBZ0IsQ0FBQ1osT0FBTyxDQUF1QixDQUFDYSxPQUFPLENBQUMsa0NBQWtDLENBQUM7UUFDeEdFLG1CQUFtQixFQUFFLElBQUk7UUFDekJDLGdCQUFnQixFQUFFLEtBQUs7UUFBRTtRQUN6QkMsZ0JBQWdCLEVBQUVDLHNCQUFzQixDQUFDQztNQUMxQyxDQUFDO01BQ0QsTUFBTUMsa0JBQWtCLEdBQUcsSUFBSUMsa0JBQWtCLENBQUUsR0FBRWIsU0FBVSxxQkFBb0IsRUFBRUUsMEJBQTBCLENBQUM7TUFDaEgsTUFBTVksZUFBMkMsR0FBRztRQUNuREMsbUJBQW1CLEVBQUUsS0FBSztRQUMxQkMsVUFBVSxFQUFFQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSztRQUMvQkMsU0FBUyxFQUFFQyxhQUFhLENBQUNDLGFBQWEsQ0FBQ0MsSUFBSTtRQUMzQ2xJLE9BQU8sRUFBRSxDQUFDdUgsa0JBQWtCLENBQUM7UUFDN0JZLFVBQVUsRUFBRSxVQUFVaEksS0FBSyxFQUFFO1VBQzVCLElBQUlBLEtBQUssQ0FBQzdDLFNBQVMsRUFBRSxFQUFFO1lBQ3RCNkMsS0FBSyxDQUFDN0MsU0FBUyxFQUFFLENBQUM4SyxPQUFPLEVBQUU7VUFDNUI7UUFDRDtNQUNELENBQUM7TUFDRCxPQUFPLElBQUlDLGlCQUFpQixDQUFFLEdBQUUxQixTQUFVLFVBQVMsRUFBRWMsZUFBZSxDQUFDO0lBQ3RFLENBQUM7SUFDRGEsUUFBUSxFQUFFLGdCQUFnQm5DLE9BQWdCLEVBQUVvQyxRQUFjLEVBQUU7TUFDM0QsSUFBSTtRQUNILE1BQU1DLElBQUksR0FBRyxNQUFNckMsT0FBTyxDQUFDc0MsY0FBYyxFQUFFO1FBQzNDLElBQUksQ0FBQ0QsSUFBSSxFQUFFO1VBQ1YsSUFBSTtZQUNILE1BQU1FLFNBQVMsR0FBRyxNQUFNdkMsT0FBTyxDQUFDd0MsaUJBQWlCLEVBQUU7WUFDbkQsSUFBSSxDQUFBRCxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRXJDLE1BQU0sTUFBSyxDQUFDLElBQUtGLE9BQU8sQ0FBU3lDLFVBQVUsRUFBRSxDQUFDQyxrQkFBa0IsS0FBSyxPQUFPLEVBQUU7Y0FDNUYsTUFBTUMsT0FBMEIsR0FBR3hQLFlBQVksQ0FBQ29OLDBCQUEwQixDQUFDUCxPQUFPLENBQUM7Y0FDbkZBLE9BQU8sQ0FBQzRDLFlBQVksQ0FBQ0QsT0FBTyxDQUFDO2NBQzdCQSxPQUFPLENBQUNFLE1BQU0sQ0FBQ1QsUUFBUSxDQUF1QjtZQUMvQyxDQUFDLE1BQU07Y0FDTixNQUFNcEMsT0FBTyxDQUFDOEMsSUFBSSxDQUFDVixRQUFRLENBQXVCO1lBQ25EO1VBQ0QsQ0FBQyxDQUFDLE9BQU9yTixLQUFLLEVBQUU7WUFDZkQsR0FBRyxDQUFDQyxLQUFLLENBQUUsaURBQWdEQSxLQUFNLEVBQUMsQ0FBQztVQUNwRTtRQUNELENBQUMsTUFBTTtVQUNOLE1BQU1lLElBQUksR0FBRzdDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDa1AsUUFBUSxDQUFDO1VBQ2hELE1BQU1XLFlBQVksR0FBRzlQLFdBQVcsQ0FBQ3VKLGVBQWUsQ0FBQzFHLElBQUksQ0FBQztVQUN0RCxNQUFNa04sWUFBWSxHQUFHRCxZQUFZLENBQUNyRyxnQkFBZ0IsRUFBRTtVQUNwRCxNQUFNdUcsU0FBUyxHQUFHRCxZQUFZLENBQUNFLGNBQWMsQ0FBQ2IsSUFBSSxDQUFDO1VBQ25ELE1BQU1jLE9BQU8sR0FBRztZQUNmQyxNQUFNLEVBQUU7Y0FDUHZHLGNBQWMsRUFBRW9HLFNBQVMsQ0FBQ3BHLGNBQWM7Y0FDeENuRCxNQUFNLEVBQUV1SixTQUFTLENBQUN2SjtZQUNuQixDQUFDO1lBQ0QySixNQUFNLEVBQUVKLFNBQVMsQ0FBQ0k7VUFDbkIsQ0FBQztVQUVEQyxlQUFlLENBQUNDLGtDQUFrQyxDQUFDek4sSUFBSSxFQUFFbU4sU0FBUyxDQUFDO1VBRW5FLElBQUloUSxXQUFXLENBQUN1USxnQkFBZ0IsQ0FBQ3BCLFFBQVEsQ0FBdUIsS0FBSyxJQUFJLEVBQUU7WUFDMUU7WUFDQVksWUFBWSxDQUFDUyxVQUFVLENBQUNOLE9BQU8sRUFBU0osWUFBWSxDQUFDO1VBQ3RELENBQUMsTUFBTTtZQUNOLElBQUk7Y0FDSCxNQUFNVyxPQUFPLEdBQUcsTUFBTVYsWUFBWSxDQUFDVyxvQkFBb0IsQ0FBQ1IsT0FBTyxFQUFFSixZQUFZLENBQUM7Y0FDOUV6QyxVQUFVLENBQUNvRCxPQUFPLENBQUM7WUFDcEIsQ0FBQyxDQUFDLE9BQU8zTyxLQUFLLEVBQUU7Y0FDZkQsR0FBRyxDQUFDQyxLQUFLLENBQUUsNENBQTJDQSxLQUFNLEVBQUMsQ0FBQztZQUMvRDtVQUNEO1FBQ0Q7TUFDRCxDQUFDLENBQUMsT0FBT0EsS0FBSyxFQUFFO1FBQ2ZELEdBQUcsQ0FBQ0MsS0FBSyxDQUFFLCtCQUE4QkEsS0FBTSxFQUFDLENBQUM7TUFDbEQ7SUFDRCxDQUFDO0lBQ0Q2TyxTQUFTLEVBQUUsZ0JBQWdCck8sTUFBVyxFQUFpQjtNQUN0RCxNQUFNL0IsT0FBTyxHQUFHK0IsTUFBTSxDQUFDNEIsU0FBUyxFQUFFO01BQ2xDLE1BQU1pTCxRQUFRLEdBQUc1TyxPQUFPLENBQUNULEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxHQUNuRFMsT0FBTyxDQUFDcVEsWUFBWSxDQUFDLEtBQUssRUFBR0MsSUFBYSxJQUFLO1FBQy9DLE9BQU9BLElBQUksQ0FBQy9RLEdBQUcsQ0FBQyxZQUFZLENBQUM7TUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQ0xTLE9BQU87TUFFVixJQUFJQSxPQUFPLENBQUN5TSxhQUFhLEVBQUUsSUFBSXpNLE9BQU8sQ0FBQ3lNLGFBQWEsRUFBRSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxJQUFJa0MsUUFBUSxDQUFDaEksV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN6RyxNQUFNMkosVUFBVSxHQUFHdlEsT0FBTyxDQUFDeU0sYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUk4RCxVQUFVLElBQUlBLFVBQVUsQ0FBQ2hSLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1VBQ3BELE1BQU1JLFlBQVksQ0FBQ2dQLFFBQVEsQ0FBQzRCLFVBQVUsRUFBRTNCLFFBQVEsQ0FBQztRQUNsRDtNQUNEO01BQ0EsT0FBT0EsUUFBUTtJQUNoQixDQUFDO0lBQ0Q0QixZQUFZLEVBQUUsVUFBVW5PLFVBQXNCLEVBQUVtRSxLQUErQixFQUFRO01BQ3RGLE1BQU1FLFlBQVksR0FBR0YsS0FBSyxDQUFDN0MsU0FBUyxFQUFrQjtRQUNyRDhNLFlBQVksR0FBRzlRLFlBQVksQ0FBQ3NDLHVCQUF1QixDQUFDSSxVQUFVLENBQUM7UUFDL0RxTyxXQUFXLEdBQUdoSyxZQUFZLENBQUN0RCxTQUFTLEVBQTRCO1FBQ2hFdU4sU0FBUyxHQUFHRCxXQUFXLENBQUNFLFlBQVksRUFBRTtNQUV2QyxJQUFJRCxTQUFTLEtBQUssRUFBRSxFQUFFO1FBQUE7UUFDckJELFdBQVcsQ0FBQ0csU0FBUyxDQUFDLElBQUksQ0FBQzs7UUFFM0I7UUFDQW5LLFlBQVksQ0FBQ29LLFlBQVksQ0FBQ0gsU0FBUyxDQUFDO1FBRXBDakssWUFBWSxDQUFDcUsseUJBQXlCLEVBQUU7UUFDeEMsTUFBTUMsS0FBSyw0QkFBSXRLLFlBQVksQ0FBQ3BHLFFBQVEsRUFBRSwwREFBeEIsc0JBQWtDMlEsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDO1FBQ2hGLElBQUlELEtBQUssRUFBRTtVQUNWLE1BQU1FLHdCQUF3QixHQUFHLElBQUlDLHFCQUFxQixFQUFFO1VBQzVERCx3QkFBd0IsQ0FBQ0UsT0FBTyxDQUFDLGNBQWMsQ0FBQztVQUNoREYsd0JBQXdCLENBQUNHLFFBQVEsQ0FBQ0wsS0FBSyxDQUFDO1VBQ3hDdEssWUFBWSxDQUFDNEssa0JBQWtCLENBQUNKLHdCQUF3QixDQUFDO1FBQzFEO1FBQ0EsTUFBTUssSUFBSSw2QkFBSTdLLFlBQVksQ0FBQ3JILGlCQUFpQixFQUFFLDJEQUFqQyx1QkFBa0V1SCxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQ3pHLElBQUkySyxJQUFJLEVBQUU7VUFDVCxNQUFNQyxtQkFBbUIsR0FBRyxJQUFJTCxxQkFBcUIsRUFBRTtVQUN2REssbUJBQW1CLENBQUNKLE9BQU8sQ0FBQyxVQUFVLENBQUM7VUFDdkM7VUFDQUksbUJBQW1CLENBQUNILFFBQVEsQ0FBQ2xNLHlCQUF5QixDQUFDQyxXQUFXLENBQUNzQixZQUFZLENBQUMsR0FBRyxHQUFHLEdBQUc2SyxJQUFJLENBQUM7VUFDOUY3SyxZQUFZLENBQUM0SyxrQkFBa0IsQ0FBQ0UsbUJBQW1CLENBQUM7UUFDckQ7UUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxJQUFJTixxQkFBcUIsRUFBRTtRQUN6RE0scUJBQXFCLENBQUNMLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDdkNLLHFCQUFxQixDQUFDSixRQUFRLENBQUMsa0JBQWtCLENBQUM7UUFDbEQzSyxZQUFZLENBQUM0SyxrQkFBa0IsQ0FBQ0cscUJBQXFCLENBQUM7UUFFdEQsTUFBTUMsS0FBSyxHQUFHbEwsS0FBSyxDQUFDekMsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUN6QztRQUNBLE1BQU00TixRQUFRLEdBQUlELEtBQUssSUFBS0EsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFVRSxJQUFlO1FBRTdELE1BQU1DLDBCQUEwQixHQUFHLElBQUlWLHFCQUFxQixFQUFFO1FBQzlEVSwwQkFBMEIsQ0FBQ1QsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUNsRFMsMEJBQTBCLENBQUNSLFFBQVEsQ0FBQ00sUUFBUSxJQUFJLDBCQUEwQixDQUFDO1FBQzNFakwsWUFBWSxDQUFDNEssa0JBQWtCLENBQUNPLDBCQUEwQixDQUFDOztRQUUzRDtRQUNBLE1BQU1DLGFBQWEsR0FBRyxJQUFJOU4sT0FBTyxDQUFDLENBQUNDLE9BQVksRUFBRThOLE1BQVcsS0FBSztVQUNoRSxJQUFJLENBQUNuUyxjQUFjLEdBQUcsSUFBSSxDQUFDQSxjQUFjLElBQUksQ0FBQyxDQUFDO1VBQy9DLElBQUksQ0FBQ0EsY0FBYyxDQUFDOEcsWUFBWSxDQUFDdUcsS0FBSyxFQUFFLENBQUMsR0FBRztZQUMzQ2hKLE9BQU8sRUFBRUEsT0FBTztZQUNoQjhOLE1BQU0sRUFBRUE7VUFDVCxDQUFDO1VBQ0RyTCxZQUFZLENBQUNzTCxNQUFNLEVBQUU7UUFDdEIsQ0FBQyxDQUFDO1FBQ0Z2QixZQUFZLENBQUMxTCxRQUFRLENBQUNDLFFBQVEsQ0FBQzhNLGFBQWEsQ0FBQztNQUM5QyxDQUFDLE1BQU07UUFDTkcsVUFBVSxDQUFDMVEsS0FBSyxDQUFDNkwsZ0JBQWdCLENBQUMvSyxVQUFVLENBQUMsQ0FBQ2dMLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO01BQzVGO0lBQ0QsQ0FBQztJQUVENkUsb0JBQW9CLEVBQUUsVUFDckIxTCxLQUF1QyxFQUN2QzJMLGdCQUE4QyxFQUM5Q3pHLFlBQW9CLEVBQ3BCckosVUFBc0IsRUFDckI7TUFDRCxNQUFNK1AsTUFBTSxHQUFHQyxNQUFNLENBQUM3TCxLQUFLLENBQUN6QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQyQyxZQUFZLEdBQUdGLEtBQUssQ0FBQzdDLFNBQVMsRUFBa0I7UUFDaEQrTSxXQUFXLEdBQUdoSyxZQUFZLENBQUN0RCxTQUFTLEVBQTRCO01BRWpFc04sV0FBVyxDQUFDRyxTQUFTLENBQUMsS0FBSyxDQUFDO01BRTVCLE1BQU1yTixPQUFPLEdBQUdrRCxZQUFZLENBQUNySCxpQkFBaUIsRUFBZ0M7TUFDOUUsSUFBSStTLE1BQU0sS0FBSyxDQUFDLElBQUlBLE1BQU0sSUFBSSxHQUFHLEVBQUU7UUFDbEMsSUFBSSxDQUFDRSw4QkFBOEIsQ0FBQzlMLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUM1RyxjQUFjLENBQUM4RyxZQUFZLENBQUN1RyxLQUFLLEVBQUUsQ0FBQyxDQUFDOEUsTUFBTSxFQUFFO01BQ25ELENBQUMsTUFBTTtRQUFBO1FBQ04sTUFBTVEsT0FBTywwQkFBSS9MLEtBQUssQ0FBQ3pDLFlBQVksQ0FBQyxTQUFTLENBQUMsd0RBQTlCLG9CQUE0RHlPLElBQUk7UUFFaEYsSUFBSUQsT0FBTyxFQUFFO1VBQ1o7VUFDQS9PLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFaVAsV0FBVyxDQUFDLGFBQWEsRUFBRUYsT0FBTyxFQUFFLElBQUksQ0FBUTtRQUMxRDs7UUFFQTtRQUNBLElBQUlKLGdCQUFnQixhQUFoQkEsZ0JBQWdCLGVBQWhCQSxnQkFBZ0IsQ0FBRXpNLElBQUksRUFBRTtVQUMzQmxDLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFaVAsV0FBVyxDQUFDTixnQkFBZ0IsQ0FBQ3pNLElBQUksRUFBRWdCLFlBQVksQ0FBQ3NCLFFBQVEsRUFBRSxDQUFDO1FBQ3JFOztRQUVBO1FBQ0EsdUJBQUEwSSxXQUFXLENBQUNnQyxNQUFNLHdEQUFsQixvQkFBb0JDLHlCQUF5QixFQUFFO1FBRS9DLElBQUksQ0FBQ0MseUJBQXlCLENBQUNwTSxLQUFLLEVBQUVrSyxXQUFXLEVBQUVyTyxVQUFVLENBQUM7UUFFOUQsSUFBSSxDQUFDekMsY0FBYyxDQUFDOEcsWUFBWSxDQUFDdUcsS0FBSyxFQUFFLENBQUMsQ0FBQ2hKLE9BQU8sRUFBRTtNQUNwRDtNQUVBLE9BQU8sSUFBSSxDQUFDckUsY0FBYyxDQUFDOEcsWUFBWSxDQUFDdUcsS0FBSyxFQUFFLENBQUM7O01BRWhEO01BQ0EsTUFBTTRGLHNCQUFzQixHQUFHMU4seUJBQXlCLENBQUNDLFdBQVcsQ0FBQ3NCLFlBQVksQ0FBQztNQUNsRixJQUFJLENBQUNtTSxzQkFBc0IsSUFBSSxDQUFDclAsT0FBTyxFQUFFO1FBQ3hDO01BQ0Q7TUFFQSxNQUFNc1AsZ0JBQWdCLEdBQUcsQ0FBRSxHQUFFdFAsT0FBTyxDQUFDb0MsT0FBTyxFQUFHLElBQUc4RixZQUFhLEVBQUMsQ0FBQztNQUNqRSxJQUFJeUcsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZUFBaEJBLGdCQUFnQixDQUFFek0sSUFBSSxFQUFFO1FBQzNCb04sZ0JBQWdCLENBQUNDLElBQUksQ0FBRSxHQUFFdlAsT0FBTyxDQUFDb0MsT0FBTyxFQUFHLElBQUd1TSxnQkFBZ0IsQ0FBQ3pNLElBQUssRUFBQyxDQUFDO01BQ3ZFO01BRUEsSUFBSXRHLE9BQU8sR0FBR29FLE9BQU8sQ0FBQ2xFLFVBQVUsRUFBRTtNQUNsQyxJQUFJLENBQUNGLE9BQU8sQ0FBQ0csR0FBRyxDQUFDLHdDQUF3QyxDQUFDLEVBQUU7UUFDM0QsTUFBTUMsS0FBSyxHQUFHQyxXQUFXLENBQUNDLGFBQWEsQ0FBQ2dILFlBQVksQ0FBQztRQUNyRHRILE9BQU8sR0FBSUksS0FBSyxDQUFDSCxpQkFBaUIsRUFBRSxDQUFhQyxVQUFVLEVBQUU7TUFDOUQ7TUFDQSxJQUFJRixPQUFPLENBQUMyRyxpQkFBaUIsRUFBRSxFQUFFO1FBQ2hDM0csT0FBTyxDQUFDNEcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLE1BQU07VUFDL0NiLHlCQUF5QixDQUFDYyxJQUFJLENBQUN5SyxXQUFXLEVBQUU7WUFBRXhLLE1BQU0sRUFBRUMsUUFBUSxDQUFDQyxNQUFNO1lBQUVDLE9BQU8sRUFBRXlNO1VBQWlCLENBQUMsQ0FBQztVQUNuRzNOLHlCQUF5QixDQUFDYyxJQUFJLENBQUN5SyxXQUFXLEVBQUU7WUFBRXhLLE1BQU0sRUFBRUMsUUFBUSxDQUFDYyxNQUFNO1lBQUVaLE9BQU8sRUFBRXlNO1VBQWlCLENBQUMsQ0FBQztRQUNwRyxDQUFDLENBQUM7TUFDSCxDQUFDLE1BQU07UUFDTjNOLHlCQUF5QixDQUFDYyxJQUFJLENBQUN5SyxXQUFXLEVBQUU7VUFBRXhLLE1BQU0sRUFBRUMsUUFBUSxDQUFDQyxNQUFNO1VBQUVDLE9BQU8sRUFBRXlNO1FBQWlCLENBQUMsQ0FBQztRQUNuRzNOLHlCQUF5QixDQUFDYyxJQUFJLENBQUN5SyxXQUFXLEVBQUU7VUFBRXhLLE1BQU0sRUFBRUMsUUFBUSxDQUFDYyxNQUFNO1VBQUVaLE9BQU8sRUFBRXlNO1FBQWlCLENBQUMsQ0FBQztNQUNwRztJQUNELENBQUM7SUFFRFIsOEJBQThCLEVBQUUsVUFBVXZRLE1BQXdDLEVBQVE7TUFDekY7TUFDQSxNQUFNaVIsTUFBTSxHQUFHalIsTUFBTSxDQUFDZ0MsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJaEMsTUFBTSxDQUFDZ0MsWUFBWSxDQUFDLFVBQVUsQ0FBQztNQUNwRixJQUFJa1AsWUFBWSxFQUFFM0gsTUFBTTtNQUN4QixJQUFJO1FBQ0hBLE1BQU0sR0FBRzBILE1BQU0sSUFBSUUsSUFBSSxDQUFDQyxLQUFLLENBQUNILE1BQU0sQ0FBQztRQUNyQ0MsWUFBWSxHQUFHM0gsTUFBTSxDQUFDL0osS0FBSyxJQUFJK0osTUFBTSxDQUFDL0osS0FBSyxDQUFDNlIsT0FBTztNQUNwRCxDQUFDLENBQUMsT0FBT0MsQ0FBQyxFQUFFO1FBQ1hKLFlBQVksR0FBR0QsTUFBTSxJQUFJNUYsZ0JBQWdCLENBQUNyTCxNQUFNLENBQUM0QixTQUFTLEVBQUUsQ0FBWSxDQUFDMEosT0FBTyxDQUFDLG1DQUFtQyxDQUFDO01BQ3RIO01BQ0E0RSxVQUFVLENBQUMxUSxLQUFLLENBQUMwUixZQUFZLENBQUM7SUFDL0IsQ0FBQztJQUVESyxZQUFZLEVBQUUsVUFBVTlNLEtBQVksRUFBRTJMLGdCQUE4QyxFQUFFekcsWUFBb0IsRUFBRXJKLFVBQXNCLEVBQUU7TUFDbkksTUFBTWtSLFlBQVksR0FBRy9NLEtBQUssQ0FBQzdDLFNBQVMsRUFBWTtNQUNoRCxNQUFNK00sV0FBVyxHQUFHNkMsWUFBWSxDQUFDblEsU0FBUyxFQUE0QjtNQUN0RSxNQUFNSSxPQUFPLEdBQUdrTixXQUFXLENBQUNyUixpQkFBaUIsRUFBYTs7TUFFMUQ7TUFDQW1FLE9BQU8sQ0FBQ2lQLFdBQVcsQ0FBQy9HLFlBQVksRUFBRSxJQUFJLENBQUM7TUFDdkM7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBbEksT0FBTyxDQUFDaVAsV0FBVyxDQUFDL0csWUFBWSxFQUFFN0wsU0FBUyxFQUFFLElBQUksQ0FBUTtNQUV6RCxJQUFJLENBQUMrUyx5QkFBeUIsQ0FBQ3BNLEtBQUssRUFBRWtLLFdBQVcsRUFBRXJPLFVBQVUsQ0FBQzs7TUFFOUQ7TUFDQSxNQUFNNkMscUJBQXFCLEdBQUdDLHlCQUF5QixDQUFDQyxXQUFXLENBQUNtTyxZQUFZLENBQUM7TUFDakYsSUFBSXJPLHFCQUFxQixFQUFFO1FBQzFCLElBQUk5RixPQUFPLEdBQUdvRSxPQUFPLENBQUNsRSxVQUFVLEVBQUU7UUFDbEMsSUFBSSxDQUFDRixPQUFPLENBQUNHLEdBQUcsQ0FBQyx3Q0FBd0MsQ0FBQyxFQUFFO1VBQzNELE1BQU1DLEtBQUssR0FBR0MsV0FBVyxDQUFDQyxhQUFhLENBQUM2VCxZQUFZLENBQUM7VUFDckRuVSxPQUFPLEdBQUlJLEtBQUssQ0FBQ0gsaUJBQWlCLEVBQUUsQ0FBYUMsVUFBVSxFQUFFO1FBQzlEO1FBRUEsTUFBTStGLElBQUksR0FBRyxDQUFFLEdBQUU3QixPQUFPLENBQUNvQyxPQUFPLEVBQUcsSUFBRzhGLFlBQWEsRUFBQyxDQUFDO1FBQ3JELElBQUl5RyxnQkFBZ0IsYUFBaEJBLGdCQUFnQixlQUFoQkEsZ0JBQWdCLENBQUV6TSxJQUFJLEVBQUU7VUFDM0JMLElBQUksQ0FBQzBOLElBQUksQ0FBRSxHQUFFdlAsT0FBTyxDQUFDb0MsT0FBTyxFQUFHLElBQUd1TSxnQkFBZ0IsQ0FBQ3pNLElBQUssRUFBQyxDQUFDO1FBQzNEO1FBQ0FQLHlCQUF5QixDQUFDYyxJQUFJLENBQUNzTixZQUFZLEVBQUU7VUFBRXJOLE1BQU0sRUFBRUMsUUFBUSxDQUFDWSxJQUFJO1VBQUVWLE9BQU8sRUFBRWhCO1FBQUssQ0FBQyxDQUFDO1FBRXRGakcsT0FBTyxDQUFDNEcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLFlBQVk7VUFDckRiLHlCQUF5QixDQUFDYyxJQUFJLENBQUNzTixZQUFZLEVBQUU7WUFBRXJOLE1BQU0sRUFBRUMsUUFBUSxDQUFDQyxNQUFNO1lBQUVDLE9BQU8sRUFBRWhCO1VBQUssQ0FBQyxDQUFDO1VBQ3hGRix5QkFBeUIsQ0FBQ2MsSUFBSSxDQUFDc04sWUFBWSxFQUFFO1lBQUVyTixNQUFNLEVBQUVDLFFBQVEsQ0FBQ2MsTUFBTTtZQUFFWixPQUFPLEVBQUVoQjtVQUFLLENBQUMsQ0FBQztRQUN6RixDQUFDLENBQUM7TUFDSDtJQUNELENBQUM7SUFFRHVOLHlCQUF5QixFQUFFLFVBQVU3USxNQUFXLEVBQUU2SSxRQUFhLEVBQUUzSyxXQUFnQixFQUFFO01BQ2xGLE1BQU0rQixhQUFhLEdBQUdyQyxZQUFZLENBQUNzQyx1QkFBdUIsQ0FBQ2hDLFdBQVcsQ0FBQztNQUN2RSxJQUFJMkssUUFBUSxJQUFJQSxRQUFRLENBQUN2TCxpQkFBaUIsRUFBRSxDQUFDd0UsV0FBVyxFQUFFLEVBQUU7UUFDM0Q7TUFDRDtNQUNBLElBQUkrRyxRQUFRLEVBQUU7UUFDYjdJLE1BQU0sQ0FBQy9CLE9BQU8sR0FBRzRLLFFBQVE7TUFDMUI7TUFDQTVJLGFBQWEsQ0FBQ0UsWUFBWSxDQUFDd0MsaUJBQWlCLENBQUMzQyxNQUFNLEVBQUUsSUFBSSxDQUFDcUMscUJBQXFCLENBQUNyQyxNQUFNLENBQUMsQ0FBQ3NDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRURtUCxrQkFBa0IsRUFBRSxVQUFVQyxTQUFjLEVBQUU7TUFDN0MsT0FBT0MsUUFBUSxDQUFDRixrQkFBa0IsQ0FBQ0MsU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDRSx5QkFBeUIsRUFBRSxVQUFVQyxjQUFzQixFQUFFQyxpQkFBeUIsRUFBRUMsY0FBc0IsRUFBRTtNQUMvRyxJQUFJQyxhQUFxQjtNQUN6QixJQUFJMVQsVUFBVTtNQUNkLElBQUkyVCxhQUFxQjtNQUN6QixJQUFJSixjQUFjLEVBQUU7UUFDbkJ2VCxVQUFVLEdBQUc0VCxZQUFZLENBQUMxVCxZQUFZLEVBQUU7UUFDeEN5VCxhQUFhLEdBQUczVCxVQUFVLENBQUNrSixTQUFTLENBQUUsR0FBRXNLLGlCQUFrQixhQUFZLENBQUM7UUFDdkUsT0FBT3hULFVBQVUsQ0FDZjZULG9CQUFvQixDQUFDTCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FDN0N2UCxJQUFJLENBQUMsVUFBVTZQLGNBQW1CLEVBQUU7VUFDcEM7VUFDQSxNQUFNQyxjQUFjLEdBQUdELGNBQWMsQ0FBQ0EsY0FBYyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRzVKLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDMkosY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDL0YsTUFBTUUsZUFBZSxHQUFHRCxjQUFjLENBQUNFLE1BQU07VUFDN0MsTUFBTUMsbUJBQW1CLEdBQUdGLGVBQWUsQ0FBQzlULFlBQVksRUFBRTtVQUMxRCxNQUFNaVUsYUFBYSxHQUFHSixjQUFjLENBQUNLLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDLFVBQVVDLFVBQWUsRUFBRTtZQUMvRSxPQUFPQSxVQUFVLENBQUNDLGlCQUFpQixJQUFJRCxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxhQUFhLEtBQUtiLGFBQWE7VUFDcEcsQ0FBQyxDQUFDO1VBQ0YsSUFBSVEsYUFBYSxJQUFJLENBQUNBLGFBQWEsQ0FBQ00saUJBQWlCLEVBQUU7WUFDdEQsTUFBTSxJQUFJQyxLQUFLLENBQUUsMENBQXlDZixhQUFjLEVBQUMsQ0FBQztVQUMzRTtVQUNBLE1BQU1nQixlQUFlLEdBQUdULG1CQUFtQixDQUFDaEwsU0FBUyxDQUNuRCxJQUFHNkssY0FBYyxDQUFDYSxjQUFlLElBQUdULGFBQWEsQ0FBQ00saUJBQWtCLHNDQUFxQyxDQUMxRztVQUVELElBQUlFLGVBQWUsSUFBSUEsZUFBZSxDQUFDRSxLQUFLLEVBQUU7WUFDN0NuQixhQUFhLEdBQUdpQixlQUFlLENBQUNFLEtBQUs7WUFDckMsTUFBTUMsT0FBTyxHQUFHLElBQUlDLE1BQU0sQ0FBQztjQUMxQjFQLElBQUksRUFBRThPLGFBQWEsQ0FBQ00saUJBQWlCO2NBQ3JDTyxRQUFRLEVBQUUsSUFBSTtjQUNkQyxNQUFNLEVBQUUxQjtZQUNULENBQUMsQ0FBQztZQUNGLE1BQU0yQixZQUFZLEdBQUdsQixlQUFlLENBQUNtQixRQUFRLENBQUUsSUFBR3BCLGNBQWMsQ0FBQ2EsY0FBZSxFQUFDLEVBQUVwVixTQUFTLEVBQUVBLFNBQVMsRUFBRXNWLE9BQU8sRUFBRTtjQUNqSE0sT0FBTyxFQUFFMUI7WUFDVixDQUFDLENBQUM7WUFDRixPQUFPd0IsWUFBWSxDQUFDRyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztVQUMxQyxDQUFDLE1BQU07WUFDTjVCLGNBQWMsR0FBRyxPQUFPO1lBQ3hCLE9BQU9GLGNBQWM7VUFDdEI7UUFDRCxDQUFDLENBQUMsQ0FDRHRQLElBQUksQ0FBQyxVQUFVcVIsU0FBYyxFQUFFO1VBQUE7VUFDL0IsTUFBTUMsWUFBWSxHQUFHN0IsYUFBYSxrQkFBRzRCLFNBQVMsQ0FBQyxDQUFDLENBQUMsZ0RBQVosWUFBY3BNLFNBQVMsRUFBRSxDQUFDd0ssYUFBYSxDQUFDLEdBQUcsRUFBRTtVQUNsRixRQUFRRCxjQUFjO1lBQ3JCLEtBQUssYUFBYTtjQUNqQixPQUFPOEIsWUFBWTtZQUNwQixLQUFLLGtCQUFrQjtjQUN0QixPQUFPQyxJQUFJLENBQUNDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDekksT0FBTyxDQUFDLCtCQUErQixFQUFFLENBQzVGdUksWUFBWSxFQUNaaEMsY0FBYyxDQUNkLENBQUM7WUFDSCxLQUFLLGtCQUFrQjtjQUN0QixPQUFPaUMsSUFBSSxDQUFDQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQ3pJLE9BQU8sQ0FBQywrQkFBK0IsRUFBRSxDQUM1RnVHLGNBQWMsRUFDZGdDLFlBQVksQ0FDWixDQUFDO1lBQ0g7Y0FDQyxPQUFPaEMsY0FBYztVQUFDO1FBRXpCLENBQUMsQ0FBQyxDQUNEalAsS0FBSyxDQUFDLFVBQVUyRyxNQUFXLEVBQUU7VUFDN0IsTUFBTXlLLElBQUksR0FDVHpLLE1BQU0sQ0FBQzhHLE1BQU0sSUFBSTlHLE1BQU0sQ0FBQzhHLE1BQU0sS0FBSyxHQUFHLEdBQ2xDLHVCQUFzQjlHLE1BQU0sQ0FBQzhHLE1BQU8sZ0NBQStCeUIsaUJBQWtCLEVBQUMsR0FDdkZ2SSxNQUFNLENBQUM4SCxPQUFPO1VBQ2xCOVIsR0FBRyxDQUFDQyxLQUFLLENBQUN3VSxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDO01BQ0o7TUFDQSxPQUFPbkMsY0FBYztJQUN0QixDQUFDO0lBRURvQyxtQkFBbUIsRUFBRSxVQUFValUsTUFBVyxFQUFFO01BQzNDLE1BQU1rVSxhQUFhLEdBQUc3SSxnQkFBZ0IsQ0FBQ3JMLE1BQU0sQ0FBQzRCLFNBQVMsRUFBRSxDQUFDO01BQzFEc08sVUFBVSxDQUFDMVEsS0FBSyxDQUFDMFUsYUFBYSxDQUFDNUksT0FBTyxDQUFDLHFDQUFxQyxDQUFDLEVBQUU7UUFDOUU2SSxPQUFPLEVBQ0wsY0FBYUQsYUFBYSxDQUFDNUksT0FBTyxDQUFDLHNEQUFzRCxDQUFFLGdCQUMzRnRMLE1BQU0sQ0FBQ29VLGFBQWEsRUFBRSxDQUFDQyxRQUN2QixVQUFTLEdBQ1QsY0FBYUgsYUFBYSxDQUFDNUksT0FBTyxDQUFDLHFEQUFxRCxDQUFFLGdCQUFldEwsTUFBTSxDQUM5RzRCLFNBQVMsRUFBRSxDQUNYMFMsV0FBVyxFQUFFLENBQ2JDLFFBQVEsRUFBRSxDQUNWQyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBRSxFQUFDO1FBQzFCQyxZQUFZLEVBQUU7TUFDZixDQUFDLENBQVE7SUFDVixDQUFDO0lBRURDLG9CQUFvQixFQUFFLFVBQVUxVSxNQUFXLEVBQXFCO01BQy9Ea1EsVUFBVSxDQUFDMVEsS0FBSyxDQUNmNkwsZ0JBQWdCLENBQUNyTCxNQUFNLENBQUM0QixTQUFTLEVBQUUsQ0FBQyxDQUFDMEosT0FBTyxDQUMzQyxtQ0FBbUMsRUFDbkN0TCxNQUFNLENBQUM0QixTQUFTLEVBQUUsQ0FBQytTLGtCQUFrQixFQUFFLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDbEQsRUFDRDtRQUNDSCxZQUFZLEVBQUU7TUFDZixDQUFDLENBQ0Q7SUFDRixDQUFDO0lBRUR2VSx1QkFBdUIsRUFBRSxVQUFVaEMsV0FBZ0IsRUFBRTtNQUNwRCxPQUFPQSxXQUFXLENBQUNWLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHVSxXQUFXLENBQUMyVyxXQUFXLEdBQUczVyxXQUFXO0lBQzNGLENBQUM7SUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQzRXLHlCQUF5QixFQUFFLFVBQVVoSyxNQUFjLEVBQUV2SyxJQUFVLEVBQUU7TUFBQTtNQUNoRSxNQUFNMlQsYUFBYSxHQUFHYSxtQkFBbUIsQ0FBQzFKLGdCQUFnQixDQUFDOUssSUFBSSxDQUFDO01BQ2hFLElBQUk2TSxPQUFPLEdBQUcwRyxJQUFJLENBQUMzUyxJQUFJLENBQUUsb0NBQW1DLENBQXNCO01BRWxGLElBQUksQ0FBQ2lNLE9BQU8sRUFBRTtRQUNiQSxPQUFPLEdBQUcsSUFBSVQsaUJBQWlCLENBQUMsb0NBQW9DLEVBQUU7VUFDckVWLFVBQVUsRUFBRSxLQUFLO1VBQ2pCSSxTQUFTLEVBQUU7UUFDWixDQUFDLENBQUM7UUFDRmUsT0FBTyxDQUFDNEgsYUFBYSxDQUFDLHFCQUFxQixDQUFDO1FBQzVDelUsSUFBSSxDQUFDOE0sWUFBWSxDQUFDRCxPQUFPLENBQUM7TUFDM0I7TUFFQSxNQUFNeEksV0FBVyx5QkFBSWtHLE1BQU0sQ0FBQ3ZOLFVBQVUsQ0FBQyxVQUFVLENBQUMsdURBQTlCLG1CQUNqQjBYLFdBQVcsRUFBRSxDQUNkdEMsSUFBSSxDQUFFdFYsT0FBTztRQUFBO1FBQUEsT0FBS0EsT0FBTyxhQUFQQSxPQUFPLDJDQUFQQSxPQUFPLENBQUV3RyxPQUFPLEVBQUUscURBQWxCLGlCQUFvQnFSLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQztNQUFBLEVBQUMsQ0FDOUVyUixPQUFPLEVBQUU7TUFDWCxNQUFNc1IsVUFBVSw0QkFBR3JLLE1BQU0sQ0FBQ3hOLGlCQUFpQixDQUFDLFVBQVUsQ0FBQywwREFBcEMsc0JBQXNDa0ssU0FBUyxDQUFDNUMsV0FBVyxDQUFDO01BRS9FLElBQUl3USxlQUF5QztNQUM3QyxJQUFJRCxVQUFVLElBQUlBLFVBQVUsQ0FBQ3hLLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDeEN5SyxlQUFlLEdBQUdELFVBQVUsQ0FBQ3hDLElBQUksQ0FBRTBDLFFBQXNCLElBQUs7VUFDN0QsT0FBT0EsUUFBUSxDQUFDQyxHQUFHLEtBQUtDLHNCQUFzQixDQUFDekssTUFBTSxDQUFDeE4saUJBQWlCLEVBQUUsQ0FBRXVHLE9BQU8sRUFBRSxDQUFDO1FBQ3RGLENBQUMsQ0FBQztNQUNIO01BQ0F1SixPQUFPLENBQUNvSSxjQUFjLEVBQUU7TUFDeEJwSSxPQUFPLENBQUNxSSxVQUFVLENBQ2pCLElBQUlDLEtBQUssQ0FBQztRQUNUQyxJQUFJLEVBQUV6QixhQUFhLENBQUM1SSxPQUFPLENBQUMsdUNBQXVDLEVBQUUsQ0FBRSx1QkFBRThKLGVBQWUscURBQWYsaUJBQWlCUSxJQUFLLEVBQUMsQ0FBQztNQUNsRyxDQUFDLENBQUMsQ0FDRjtNQUNEeEksT0FBTyxDQUFDRSxNQUFNLENBQUN4QyxNQUFNLENBQUM7SUFDdkI7RUFDRCxDQUFDOztFQUVEO0FBQ0E7QUFDQTtFQUZBLE9BR2VsTixZQUFZO0FBQUEifQ==
|
|
@@ -231,7 +231,11 @@ const FieldRuntime = {
|
|
|
231
231
|
setTimeout(resolve, 0);
|
|
232
232
|
});
|
|
233
233
|
})
|
|
234
|
-
.catch(() => {
|
|
234
|
+
.catch(async () => {
|
|
235
|
+
return new Promise<void>((resolve) => {
|
|
236
|
+
setTimeout(resolve, 0);
|
|
237
|
+
});
|
|
238
|
+
});
|
|
235
239
|
oFEController?.editFlow.syncTask(valueResolvedAndPatchSent);
|
|
236
240
|
|
|
237
241
|
// if the context is transient, it means the request would fail anyway as the record does not exist in reality
|