raise-common-lib 0.0.209 → 0.0.210

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.
Files changed (75) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +18 -18
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/common-grid/index.component.js +2 -2
  7. package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  8. package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
  9. package/esm2015/lib/dashboard/dialog-group/download/index.component.js +3 -3
  10. package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  11. package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  12. package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  13. package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  14. package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  15. package/esm2015/lib/dashboard/pane-group-new.component.js +1 -1
  16. package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  17. package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
  18. package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +2 -2
  19. package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +3 -3
  20. package/esm5/lib/common-grid/index.component.js +2 -2
  21. package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  22. package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +2 -2
  23. package/esm5/lib/dashboard/dialog-group/download/index.component.js +3 -3
  24. package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  25. package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  26. package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  27. package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  28. package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  29. package/esm5/lib/dashboard/pane-group-new.component.js +1 -1
  30. package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  31. package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +2 -2
  32. package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +2 -2
  33. package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +3 -3
  34. package/fesm2015/raise-common-lib.js +18 -18
  35. package/fesm2015/raise-common-lib.js.map +1 -1
  36. package/fesm5/raise-common-lib.js +18 -18
  37. package/fesm5/raise-common-lib.js.map +1 -1
  38. package/package.json +1 -1
  39. package/raise-common-lib.metadata.json +1 -1
  40. package/src/assets/img/arrow_right.svg +4 -4
  41. package/src/assets/img/calendar-disabled.svg +6 -6
  42. package/src/assets/img/calendar.svg +6 -6
  43. package/src/assets/img/calendar_arrow_down.svg +3 -3
  44. package/src/assets/img/calendar_arrow_left.svg +3 -3
  45. package/src/assets/img/calendar_arrow_right.svg +3 -3
  46. package/src/assets/img/calendar_arrow_up.svg +3 -3
  47. package/src/assets/img/checked-vector.svg +3 -3
  48. package/src/assets/img/dialog-close.svg +4 -4
  49. package/src/assets/img/dialog-grow.svg +6 -6
  50. package/src/assets/img/dialog-shrink.svg +6 -6
  51. package/src/assets/img/plus.svg +4 -4
  52. package/src/assets/img/search.svg +4 -4
  53. package/src/assets/img/shrink-icon.svg +6 -6
  54. package/src/assets/img/time-disabled.svg +4 -4
  55. package/src/assets/img/time.svg +4 -4
  56. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  57. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  58. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  59. package/src/assets/img/toolbar-action-combine.svg +4 -4
  60. package/src/assets/img/toolbar-action-edit.svg +4 -4
  61. package/src/assets/img/toolbar-action-expand.svg +7 -7
  62. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  63. package/src/assets/img/toolbar-action-lock.svg +6 -6
  64. package/src/assets/img/toolbar-action-preview.svg +7 -7
  65. package/src/assets/img/toolbar-action-publish.svg +5 -5
  66. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  67. package/src/assets/img/toolbar-action-rename.svg +7 -7
  68. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  69. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  70. package/src/assets/img/toolbar-action-settle.svg +7 -7
  71. package/src/assets/img/toolbar-action-share.svg +5 -5
  72. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  73. package/src/assets/img/toolbar-action-sync.svg +4 -4
  74. package/src/assets/img/toolbar-action-template.svg +6 -6
  75. package/src/assets/img/toolbar-action-workflow.svg +9 -9
@@ -4540,7 +4540,7 @@ var GadgetPivotChartComponent = /** @class */ (function () {
4540
4540
  };
4541
4541
  GadgetPivotChartComponent.decorators = [
4542
4542
  { type: Component, args: [{
4543
- selector: "rs-gadget-pivot-chart",
4543
+ selector: "kt-gadget-pivot-chart",
4544
4544
  template: "<div class=\"control-section\" style=\"overflow: hidden; height: 100%\">\r\n\t<ejs-pivotview\r\n\t\twidth=\"100%\"\r\n\t\theight=\"100%\"\r\n\t\tstyle=\"display: block\"\r\n\t\t[dataSourceSettings]=\"dataSourceSettings\"\r\n\t\t#pivotview\r\n\t\t(dataBound)=\"dataBound($event)\"\r\n\t\tenableValueSorting=\"true\"\r\n\t\tallowConditionalFormatting=\"true\"\r\n\t\tallowExcelExport=\"true\"\r\n\t\tallowGrouping=\"true\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\tenableVirtualization=\"true\"\r\n\t\t(aggregateCellInfo)=\"aggregateCellInfo($event)\"\r\n\t\t(cellClick)=\"cellClick($event)\"\r\n\t\tallowDrillThrough=\"true\"\r\n\t\t(actionFailure)=\"actionFailure($event)\"\r\n\t\t(fieldListRefreshed)=\"fieldListRefreshed($event)\"\r\n\t\t(drillThrough)=\"drillThrough($event)\"\r\n\t\t[chartSettings]=\"chartSettings\"\r\n\t\t(chartSeriesCreated)=\"chartSeriesCreated($event)\"\r\n\t\t[displayOption]=\"displayOption\"\r\n\t\t[showTooltip]=\"false\"\r\n\t\t(enginePopulated)=\"afterEnginePopulate($event)\"\r\n\t\t(beforeExport)=\"beforeExport($event)\"\r\n\t>\r\n\t</ejs-pivotview>\r\n\r\n\t<div class=\"pivotfieldlist-control\">\r\n\t\t<ejs-pivotfieldlist\r\n\t\t\t[id]=\"portlet.newId\"\r\n\t\t\t#pivotfieldlist\r\n\t\t\thidden=\"true\"\r\n\t\t\tenableValueSorting=\"true\"\r\n\t\t\tshowFieldList=\"true\"\r\n\t\t\tallowCalculatedField=\"true\"\r\n\t\t\tallowDeferLayoutUpdate=\"true\"\r\n\t\t\trenderMode=\"Popup\"\r\n\t\t\t(enginePopulated)=\"afterPopulate($event)\"\r\n\t\t\t(memberEditorOpen)=\"onMemberEditorOpen($event)\"\r\n\t\t\t(enginePopulating)=\"enginePopulating($event)\"\r\n\t\t\t(aggregateCellInfo)=\"aggregateCellInfo($event)\"\r\n\t\t\t(fieldDrop)=\"onFieldDrop($event)\"\r\n\t\t\t(actionComplete)=\"actionComplete($event)\"\r\n\t\t\t(actionBegin)=\"actionBegin($event)\"\r\n\t\t\t(calculatedFieldCreate)=\"calculatedFieldCreate($event)\"\r\n\t\t\t(load)=\"onLoad()\"\r\n\t\t\t(created)=\"created($event)\"\r\n\t\t>\r\n\t\t</ejs-pivotfieldlist>\r\n\t</div>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n",
4545
4545
  providers: [
4546
4546
  ToolbarService,
@@ -4748,4 +4748,4 @@ if (false) {
4748
4748
  */
4749
4749
  GadgetPivotChartComponent.prototype.pbf;
4750
4750
  }
4751
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3JhaXNlLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvZGFzaGJvYXJkL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QtY2hhcnQvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUNULHVCQUF1QixFQUN2QixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixrQkFBa0IsRUFHbEIsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLGtCQUFrQixFQUdsQixvQkFBb0IsRUFJcEIsbUJBQW1CLEdBRW5CLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVELE9BQU8sRUFDTixNQUFNLEVBQ04sY0FBYyxFQUNkLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sSUFBSSxPQUFPLEVBQ2pCLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEdBQ0osTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUNOLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9B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QUUsQ0FBQyxNQUFNLENBQUMsTUFBTTs0QkFDaEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhOzRCQUMxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDOzRCQUUzRCxLQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUM3QyxJQUNDLEVBQUUsQ0FBQyxNQUFNOzRCQUNULEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTTs0QkFDaEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhOzRCQUMxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDOzRCQUUzRCxLQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNoRCxJQUNDLEVBQUUsQ0FBQyxNQUFNOzRCQUNULEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTTs0QkFDaEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhOzRCQUMxQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUM1QyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FDM0I7NEJBRUQsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9B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Qjs7Ozs7SUFDL0IsMkNBQWU7O0lBQ2YsdURBQXdDOzs7OztJQUN4QyxrREFBMkI7Ozs7O0lBQzNCLG1EQUE0Qjs7Ozs7SUFDNUIsbURBQXVCOztJQUN2QixnREFBbUI7Ozs7O0lBQ25CLDZDQUNxQzs7SUFDckMsaURBQzZDOzs7OztJQUM3QyxnREFBeUI7Ozs7O0lBQ3pCLDhDQUF1Qjs7Ozs7SUFDdkIsaURBQTRCOzs7OztJQUM1QixrREFBMkM7Ozs7O0lBQzNDLGlEQUFxQjs7Ozs7SUFFckIsMkNBQStCOzs7OztJQUMvQixtREFBc0M7O0lBQ3RDLGtEQUdFOztJQUNGLGtEQUFxQjs7SUFDckIsb0RBRUU7Ozs7O0lBQ0YsZ0RBQXlCOzs7OztJQUN6QixpREFBMEI7Ozs7O0lBQzFCLGtEQVNFOztJQUNGLGlEQUVFOztJQUNGLHdEQU1FOzs7OztJQUNGLGdEQUF5Qjs7Ozs7SUFDekIsMkRBQTJDOzs7OztJQUMzQyw0REFBNEM7Ozs7O0lBQzVDLG1EQUdFOzs7OztJQUNGLGtEQUEyQjs7Ozs7SUFDM0Isa0RBQTJCOztJQUMzQixtREFBc0I7O0lBQ3RCLCtDQUFtQzs7SUFDbkMsZ0RBQXdCOzs7OztJQUN4QixxREFBOEI7O0lBQzlCLGdEQUFtQjs7SUFDbkIsK0NBQThCOztJQUM5Qiw2Q0FBeUI7O0lBODlDekIsbURBQW9COzs7OztJQTM5Q25CLDREQUF3RDs7Ozs7SUFDeEQscURBQTBDOzs7OztJQUMxQyx3Q0FBOEI7Ozs7O0lBQzlCLHdDQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdElucHV0LFxyXG5cdE9uSW5pdCxcclxuXHRWaWV3Q2hpbGQsXHJcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdE91dHB1dCxcclxuXHRPcHRpb25hbCxcclxuXHRJbmplY3QsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7XHJcblx0SURhdGFPcHRpb25zLFxyXG5cdFBpdm90RmllbGRMaXN0Q29tcG9uZW50LFxyXG5cdFBpdm90Vmlld0NvbXBvbmVudCxcclxuXHRFbmdpbmVQb3B1bGF0ZWRFdmVudEFyZ3MsXHJcblx0SURhdGFTZXQsXHJcblx0VG9vbGJhclNlcnZpY2UsXHJcblx0RmllbGRMaXN0U2VydmljZSxcclxuXHROdW1iZXJGb3JtYXR0aW5nU2VydmljZSxcclxuXHRDYWxjdWxhdGVkRmllbGRTZXJ2aWNlLFxyXG5cdENhbGN1bGF0ZWRGaWVsZENyZWF0ZUV2ZW50QXJncyxcclxuXHRHcm91cGluZ0JhclNlcnZpY2UsXHJcblx0RmllbGREcm9wRXZlbnRBcmdzLFxyXG5cdElTb3J0LFxyXG5cdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdElQaXZvdFZhbHVlcyxcclxuXHRJUGFnZVNldHRpbmdzLFxyXG5cdERyaWxsVGhyb3VnaEV2ZW50QXJncyxcclxuXHREcmlsbFRocm91Z2hTZXJ2aWNlLFxyXG5cdFBpdm90QWN0aW9uRmFpbHVyZUV2ZW50QXJncyxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcGl2b3R2aWV3XCI7XHJcblxyXG5pbXBvcnQgeyBMMTBuLCBjcmVhdGVFbGVtZW50LCBlbmFibGVSaXBwbGUgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgUEJGX1RPS0VOIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvSW5qZWN0aW9uVG9rZW5cIjtcclxuXHJcbmltcG9ydCB7XHJcblx0c29ydEJ5LFxyXG5cdGRpZmZlcmVuY2VXaXRoLFxyXG5cdHN0YXJ0c1dpdGgsXHJcblx0Y2xvbmVEZWVwLFxyXG5cdHVuaXFCeSxcclxuXHRmaWx0ZXIgYXMgX2ZpbHRlcixcclxuXHRtYXhCeSxcclxuXHRtaW5CeSxcclxuXHRzdW1CeSxcclxuXHRtZWFuQnksXHJcblx0bWVhbixcclxufSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuXHRBR0dSRUdBVEVfVFlQRVNfVEVYVCxcclxuXHRBTExfQUdHUkVHQVRFX1RZUEVTLFxyXG5cdERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG59IGZyb20gXCIuLi8uLi9kYXNoYm9hcmRQb3JsZXRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJvd3NlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNYXNrZWRUZXh0Qm94IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1pbnB1dHMvc3JjL21hc2tlZHRleHRib3gvbWFza2VkdGV4dGJveFwiO1xyXG5pbXBvcnQgeyBEYXRhTWFuYWdlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YS9zcmMvbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBQcmVkaWNhdGUsIFF1ZXJ5IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1kYXRhL3NyYy9xdWVyeVwiO1xyXG5pbXBvcnQgeyBEYXRhVXRpbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YVwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuZW5hYmxlUmlwcGxlKGZhbHNlKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLWdhZGdldC1waXZvdC1jaGFydFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2dhZGdldC1waXZvdC5jb21wb25lbnQuc2Nzc1wiXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdFRvb2xiYXJTZXJ2aWNlLFxyXG5cdFx0RmllbGRMaXN0U2VydmljZSxcclxuXHRcdE51bWJlckZvcm1hdHRpbmdTZXJ2aWNlLFxyXG5cdFx0Q2FsY3VsYXRlZEZpZWxkU2VydmljZSxcclxuXHRcdEdyb3VwaW5nQmFyU2VydmljZSxcclxuXHRcdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdFx0RHJpbGxUaHJvdWdoU2VydmljZSxcclxuXHRdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FkZ2V0UGl2b3RDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KCkgcG9ydGxldDtcclxuXHRASW5wdXQoKSBkYXNoYm9hcmQ7XHJcblx0QElucHV0KCkgcG9ydGxldHM7XHJcblx0QE91dHB1dCgpIHVwZGF0ZVBvcmxldENvbmZpZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRwcml2YXRlIFBpdm90X0RhdGE6IElEYXRhU2V0W107XHJcblx0cHJpdmF0ZSBjb25maWc7XHJcblx0cHVibGljIGRhdGFTb3VyY2VTZXR0aW5nczogSURhdGFPcHRpb25zO1xyXG5cdHByaXZhdGUgZXhjbHVkZUZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgZmlsdGVyU2V0dGluZ3MgPSBbXTtcclxuXHRwcml2YXRlIGRhdGVQaXBlRm9ybWF0O1xyXG5cdHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHRAVmlld0NoaWxkKFwicGl2b3R2aWV3XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHByaXZhdGUgcGl2b3RPYmo6IFBpdm90Vmlld0NvbXBvbmVudDtcclxuXHRAVmlld0NoaWxkKFwicGl2b3RmaWVsZGxpc3RcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpZWxkbGlzdE9iajogUGl2b3RGaWVsZExpc3RDb21wb25lbnQ7XHJcblx0cHJpdmF0ZSBncmFuZFRvdGFscyA9IHt9O1xyXG5cdHByaXZhdGUgc3ViVG90YWxzID0ge307XHJcblx0cHJpdmF0ZSBwcmV2aW91c1NvcnQ6IElTb3J0O1xyXG5cdHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHRwcml2YXRlIGFsbERhdGFWYWx1ZTtcclxuXHQvLyBwcml2YXRlIGNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzO1xyXG5cdHByaXZhdGUgaXNJbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHRwcml2YXRlIHBpdm90U2VhcmNoQm94OiBNYXNrZWRUZXh0Qm94O1xyXG5cdHB1YmxpYyBkaXNwbGF5T3B0aW9uID0ge1xyXG5cdFx0dmlldzogXCJCb3RoXCIsXHJcblx0XHRwcmltYXJ5OiBcIkNoYXJ0XCIsXHJcblx0fTtcclxuXHRwdWJsaWMgY2hhcnRTZXR0aW5ncztcclxuXHRwdWJsaWMgdG9vbHRpcFNldHRpbmdzID0ge1xyXG5cdFx0ZW5hYmxlOiBmYWxzZSxcclxuXHR9O1xyXG5cdHByaXZhdGUgY29sdW1uVGV4dHMgPSBbXTtcclxuXHRwcml2YXRlIGNvbmZpZ0ZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgcXVhcnRlckZvcm1hdCA9IFtcclxuXHRcdHsgdmFsdWU6IFwiMDMvMjAyMVwiLCBmb3JtYXQ6IFwiTU0veXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjAzLzIxXCIsIGZvcm1hdDogXCJNTS9kZFwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjMvMjAyMVwiLCBmb3JtYXQ6IFwiTS95eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiMy8yMVwiLCBmb3JtYXQ6IFwiTS95eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hcmNoIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0geXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hciwgMjAyMVwiLCBmb3JtYXQ6IFwiTU1NLCB5eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiTWFyY2gsIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0sIHl5eXlcIiB9LFxyXG5cdFx0eyB2YWx1ZTogXCIyMDIxXCIsIGZvcm1hdDogXCJ5eXl5XCIgfSxcclxuXHRdO1xyXG5cdHpvb21TZXR0aW5ncyA9IHtcclxuXHRcdGVuYWJsZTogZmFsc2UsXHJcblx0fTtcclxuXHRpdGVtRGF0YVR5cGVTb3J0QXJyID0gW1xyXG5cdFx0XCJBc3NldHNcIixcclxuXHRcdFwiTGlhYmlsaXRpZXNcIixcclxuXHRcdFwiRXF1aXR5XCIsXHJcblx0XHRcIlAmTFwiLFxyXG5cdFx0XCJDYXNoZmxvd1wiLFxyXG5cdF07XHJcblx0cHJpdmF0ZSBmb3JtYXREYXRlcyA9IFtdO1xyXG5cdHByaXZhdGUgY3VzdG9tQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g6Ieq5a6a5LmJ6K6h566X5YiXXHJcblx0cHJpdmF0ZSBhbGxvd2VkQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g5YWB6K646Ieq5a6a5LmJ566X5rOV55qE5a2X5q61XHJcblx0cHJpdmF0ZSB6ZXJvRm9ybWF0RGF0YSA9IHtcclxuXHRcdGVtcHR5TGlzdDogW10sXHJcblx0XHRoZ0xpc3Q6IFtdLFxyXG5cdH07XHJcblx0cHJpdmF0ZSBtaWxsaW9uRmllbGRzID0gW107XHJcblx0cHJpdmF0ZSB0ZW1wU3VidG90YWxzID0gW107XHJcblx0cHVibGljIG9yZGVyQnlDb2x1bW5zOyAvLyBFZzogXCJEdWVEYXRlLCBTZXF1ZW5jZVwiXHJcblx0cHVibGljIGlzQXBwbHlJUlI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgY2FsY0lSUkRhdGE6IGFueTtcclxuXHRwcml2YXRlIHBlcmNlbnROdW1GaWVsZHMgPSBbXTtcclxuXHRwdWJsaWMgcGFnZUxvYWRpbmc7XHJcblx0b2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGlzbG9hZGVkOiBib29sZWFuOyAvLyDmmK/lkKblt7Lnu4/liJ3lp4vljJbov4dcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGRhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuXHRcdHByaXZhdGUgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwcml2YXRlIHBiZjogYW55LFxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcblx0XHRcdGxlZ2VuZFNldHRpbmdzOiB7XHJcblx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdGVuYWJsZU11bHRpcGxlQXhpczogZmFsc2UsXHJcblx0XHRcdHNob3dNdWx0aUxldmVsTGFiZWxzOiBmYWxzZSxcclxuXHRcdFx0Y2hhcnRTZXJpZXM6IHtcclxuXHRcdFx0XHR0eXBlOiBcIkNvbHVtblwiLFxyXG5cdFx0XHRcdGNvbHVtblNwYWNpbmc6IDAuMSxcclxuXHRcdFx0XHRjb2x1bW5XaWR0aDogMC45LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtdWx0aXBsZUF4aXNNb2RlOiBcIlN0YWNrZWRcIixcclxuXHRcdFx0cHJpbWFyeVhBeGlzOiB7XHJcblx0XHRcdFx0dGl0bGU6IFwiIFwiLFxyXG5cdFx0XHRcdGxhYmVsRm9ybWF0OiBcIk4yXCIsXHJcblx0XHRcdFx0bWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuXHRcdFx0XHRtaW5vckdyaWRMaW5lczoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0XHRjb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxyXG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRtaW5vclRpY2tMaW5lczogeyB2aXNpYmxlOiBmYWxzZSB9LFxyXG5cdFx0XHRcdGxpbmVTdHlsZToge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2hhcnRBcmVhOiB7XHJcblx0XHRcdFx0b3BhY2l0eTogMCxcclxuXHRcdFx0XHRib3JkZXI6IHtcclxuXHRcdFx0XHRcdHdpZHRoOiAwLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH0sXHJcblx0XHRcdHBhbGV0dGVzOiBbXHJcblx0XHRcdFx0XCIjNTk0YmI5XCIsXHJcblx0XHRcdFx0XCIjZjFhZjMyXCIsXHJcblx0XHRcdFx0XCIjNDY4OGVkXCIsXHJcblx0XHRcdFx0XCIjZTA1NjNlXCIsXHJcblx0XHRcdFx0XCIjODAzYTYzXCIsXHJcblx0XHRcdFx0XCIjNmRkOGI1XCIsXHJcblx0XHRcdFx0XCIjZTg3MjI1XCIsXHJcblx0XHRcdFx0XCIjYzVkZjQyXCIsXHJcblx0XHRcdFx0XCIjYzY0MzdkXCIsXHJcblx0XHRcdF0sXHJcblx0XHRcdHByaW1hcnlZQXhpczoge1xyXG5cdFx0XHRcdC8vIFnovbTmoIfpopjorr7nva7kuLrnqbpcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0em9vbVNldHRpbmdzOiB7XHJcblx0XHRcdFx0ZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpvKDmoIfmu5rova7nvKnmlL5cclxuXHRcdFx0XHRlbmFibGVQaW5jaFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjop6bmkbjnvKnmlL5cclxuXHRcdFx0XHRlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSwgLy8g56aB55So6YCJ5oup5Yy65Z+f57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlRGVmZXJyZWRab29taW5nOiBmYWxzZSwgLy8g56aB55So5bu26L+f57yp5pS+XHJcblx0XHRcdFx0dG9vbGJhckl0ZW1zOiBbXSxcclxuXHRcdFx0XHRlbmFibGVTY3JvbGxiYXI6IGZhbHNlLFxyXG5cdFx0XHRcdGVuYWJsZVpvb21pbmc6IGZhbHNlLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5nZXRJbmZvKCk7XHJcblx0XHR0aGlzLmdldERhdGEoKTtcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3RhcnRSZWZyZXNoKCkuc3Vic2NyaWJlKChkYXNoYm9hcmRJZCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmRhc2hib2FyZC5pZCA9PT0gZGFzaGJvYXJkSWQpIHtcclxuXHRcdFx0XHRcdHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFJlZnJlc2hHYWRnZXQoKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuXHRcdFx0XHRpZiAoIWUpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgaWQgPSBlW1wibmV3SWRcIl07XHJcblx0XHRcdFx0Y29uc3QgY29uZmlnID0gZVtcImNvbmZpZ1wiXTtcclxuXHRcdFx0XHRpZiAoaWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBpZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoY29uZmlnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0Y2hhbmdlUGl2b3QoKS5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRpZiAodXBkYXRlZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VXBkYXRlZCgpLnN1YnNjcmliZSgobmV3SWQpID0+IHtcclxuXHRcdFx0XHRpZiAobmV3SWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBuZXdJZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFRhYmxlRm9ybWF0KCkuc3Vic2NyaWJlKCh1cGRhdGVkKSA9PiB7XHJcblx0XHRcdFx0aWYgKHVwZGF0ZWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5jbGVhckZpZWxkTGlzdE9ic2VydmFibGUoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRcdGlmICh1cGRhdGVkID09PSB0aGlzLnBvcnRsZXQubmV3SWQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuZGF0YVNvdXJjZSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuXHRcdFx0XHQuZ2V0UHZ0YWJsZURpc3BsYXlPcHRpb25DaGFydENoYW5nZSgpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHRcdHRoaXMucG9ydGxldC5uZXdJZCAhPT0gZGF0YS5uZXdJZFxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXS5jb21wbGV0ZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5pbml0Q2hhcnRTZXR0aW5nKGRhdGEuY2hhcnRUeXBlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5nZXRFbmFibGVNdWx0aXBsZUF4aXNDaGFuZ2UoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWRhdGEgfHxcclxuXHRcdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0pIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0uY29tcGxldGUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMgPVxyXG5cdFx0XHRcdFx0XHRkYXRhLmVuYWJsZU11bHRpcGxlQXhpcztcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubXVsdGlwbGVBeGlzTW9kZSA9IGRhdGEubXVsdGlwbGVBeGlzTW9kZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubGVnZW5kU2V0dGluZ3MgPSB7XHJcblx0XHRcdFx0XHRcdHZpc2libGU6IGRhdGEudmlzaWJsZSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopXHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldENoYXJ0VHlwZUNoYW5nZSgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdCFkYXRhIHx8XHJcblx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPVxyXG5cdFx0XHRcdFx0ZGF0YS5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPT09IFwiU3RhY2tlZCBDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ/IFwiU3RhY2tpbmdDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ6IGRhdGEuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlO1xyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY2hhcnRTZXR0aW5ncyk7XHJcblx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopIHRoaXMucGl2b3RPYmoucmVmcmVzaERhdGEoKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VGhlbWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0dGhpcy5wb3J0bGV0Lm5ld0lkICE9PSBkYXRhLm5ld0lkXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFsuLi5kYXRhLnRoZW1lXTtcclxuXHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLmxheW91dFJlZnJlc2goKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cclxuXHQvLyDmib7liLDmlbDnu4TkuK3lh7rnjrDmnIDlpJrpopHmrKHnmoTlhYPntKBcclxuXHRmaW5kTW9zdEZyZXF1ZW50KGFycikge1xyXG5cdFx0bGV0IG1heENvdW50ID0gMDtcclxuXHRcdGxldCBtb3N0RnJlcXVlbnROdW0gPSBudWxsO1xyXG5cclxuXHRcdC8vIOS9v+eUqOS4gOS4quWvueixoeadpeiuoeaVsFxyXG5cdFx0Y29uc3QgY291bnRNYXAgPSB7fTtcclxuXHJcblx0XHRhcnIuZm9yRWFjaCgobnVtKSA9PiB7XHJcblx0XHRcdGNvdW50TWFwW251bV0gPSAoY291bnRNYXBbbnVtXSB8fCAwKSArIDE7XHJcblxyXG5cdFx0XHQvLyDmo4Dmn6XmmK/lkKbmmK/mnIDlpJrnmoRcclxuXHRcdFx0aWYgKGNvdW50TWFwW251bV0gPiBtYXhDb3VudCkge1xyXG5cdFx0XHRcdG1heENvdW50ID0gY291bnRNYXBbbnVtXTtcclxuXHRcdFx0XHRtb3N0RnJlcXVlbnROdW0gPSBudW07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBtb3N0RnJlcXVlbnROdW07XHJcblx0fVxyXG5cclxuXHRsb2FkZWQoYXJncykge1xyXG5cdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvlxyXG5cdFx0Y29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxyXG5cdFx0XHRgW2lkXj1cIiR7dGhpcy5waXZvdE9iai5lbGVtZW50LmlkfV9jaGFydDJfQXhpc0xhYmVsXCJdLFxyXG5cdFx0XHRbaWRePVwiJHt0aGlzLnBpdm90T2JqLmVsZW1lbnQuaWR9X2NoYXJ0M19BeGlzTGFiZWxcIl1gXHJcblx0XHQpO1xyXG5cdFx0bGV0IGlzRXJyb3JBY2N1cmFjeSA9IGZhbHNlO1xyXG5cdFx0bGV0IHhQb3NpdGlvbiA9IFtdO1xyXG5cdFx0ZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG5cdFx0XHQvLyDmmK/lkKbmnInnsr7luqbpl67pophcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdEJvb2xlYW4oTnVtYmVyKGVsZW1lbnQuaW5uZXJIVE1MKSkgJiZcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTC5sZW5ndGggPiAxNVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpc0Vycm9yQWNjdXJhY3kgPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOiusOW9leS4gOS4i3novbTmoIfnrb7nmoR45Z2Q5qCHXHJcblx0XHRcdGNvbnN0IGN1cnJlbnRYID0gcGFyc2VGbG9hdChlbGVtZW50LmdldEF0dHJpYnV0ZShcInhcIikpO1xyXG5cdFx0XHR4UG9zaXRpb24ucHVzaChjdXJyZW50WCk7XHJcblxyXG5cdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwuZW5kc1dpdGgoXCIuLi5cIikpIHtcclxuXHRcdFx0XHRsZXQgaW5uZXJIVE1MID0gZWxlbWVudC5pbm5lckhUTUwucmVwbGFjZShcIi4uLlwiLCBcIlwiKTtcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihpbm5lckhUTUwpLnRvRml4ZWQoMik7XHJcblx0XHRcdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcblx0XHRcdFx0XHRcInhcIixcclxuXHRcdFx0XHRcdGN1cnJlbnRYICsgaW5uZXJIVE1MLmxlbmd0aCAqIDMgLSAzICsgXCJcIlxyXG5cdFx0XHRcdCk7IC8vIOefq+ato+mVv+W6plxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGlmIChpc0Vycm9yQWNjdXJhY3kpIHtcclxuXHRcdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvuS4reeahOW5s+Wdh3jlnZDmoIdcclxuXHRcdFx0bGV0IHggPSBtZWFuKHhQb3NpdGlvbik7XHJcblx0XHRcdGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHQvLyDmiYvliqjnsr7luqbkv67mraNcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihlbGVtZW50LmlubmVySFRNTCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwgPT09IFwiLTAuMDBcIikge1xyXG5cdFx0XHRcdFx0ZWxlbWVudC5pbm5lckhUTUwgPSBOdW1iZXIoMCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g5omL5Yqo6K6+572uIHjlnZDmoIdcclxuXHRcdFx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShcInhcIiwgeC50b1N0cmluZygpKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldENvbmZpZ1RvUG9ybGV0KCkge1xyXG5cdFx0Y29uc3QgY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuXHRcdGlmICghY29uZmlnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG5cdFx0XHRkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcblx0XHRcdGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuXHRcdH07XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSA9IG51bGw7XHJcblx0XHR0aGlzLmNvbmZpZyA9IHsgLi4uY29uZmlnIH07XHJcblx0XHR0aGlzLnVwZGF0ZVBvcmxldENvbmZpZy5lbWl0KHtcclxuXHRcdFx0bmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuXHRcdFx0Y29uZmlnLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRjaGFydFNlcmllc0NyZWF0ZWQoZSkge31cclxuXHJcblx0cHJpdmF0ZSBpbml0Q2hhcnRTZXR0aW5nKHR5cGU/OiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IHNldHRpbmcgPSB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nO1xyXG5cdFx0aWYgKCFzZXR0aW5nKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzZXR0aW5nLmNoYXJ0U2V0dGluZ3MuY2hhcnRTZXJpZXMuZGF0YUxhYmVsID0ge1xyXG5cdFx0XHR2aXNpYmxlOiB0cnVlLCAvLyBNYWtlIHRoZSBkYXRhIGxhYmVsIHZpc2libGVcclxuXHRcdFx0cG9zaXRpb246IFwiT3V0c2lkZVwiLCAvLyBQb3NpdGlvbiB0aGUgZGF0YSBsYWJlbCBvdXRzaWRlIHRoZSBjaGFydFxyXG5cdFx0XHQvLyBEZWZpbmUgdGhlIHRlbXBsYXRlIGZvciBkYXRhIGxhYmVsIGNvbnRlbnRcclxuXHRcdFx0dGVtcGxhdGU6XHJcblx0XHRcdFx0JzxkaXYgc3R5bGU9XCJjb2xvcjogQmxhY2tcIj4gJHsocG9pbnQueSkudG9Mb2NhbGVTdHJpbmcoKX08L2Rpdj4nLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IHtcclxuXHRcdFx0Li4uc2V0dGluZy5jaGFydFNldHRpbmdzLFxyXG5cdFx0XHRwcmltYXJ5WEF4aXM6IHtcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0XHRtYWpvckdyaWRMaW5lczogeyB3aWR0aDogMCB9LFxyXG5cdFx0XHRcdG1pbm9yR3JpZExpbmVzOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHRcdGNvbG9yOiBcInRyYW5zcGFyZW50XCIsXHJcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdG1pbm9yVGlja0xpbmVzOiB7IHZpc2libGU6IGZhbHNlIH0sXHJcblx0XHRcdFx0bGluZVN0eWxlOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwb2ludFJlbmRlcjogdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZSgoYXJnczogYW55KSA9PiB7XHJcblx0XHRcdFx0aWYgKGFyZ3MgJiYgYXJncy5wb2ludCAmJiBhcmdzLnBvaW50LnkpIHtcclxuXHRcdFx0XHRcdGFyZ3MucG9pbnQueSA9IHBhcnNlRmxvYXQoYXJncy5wb2ludC55LnRvRml4ZWQoMikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkgYXMgYW55LFxyXG5cdFx0XHRjaGFydEFyZWE6IHtcclxuXHRcdFx0XHRvcGFjaXR5OiAwLFxyXG5cdFx0XHRcdGJvcmRlcjoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0cHJpbWFyeVlBeGlzOiB7XHJcblx0XHRcdFx0Ly8gWei9tOagh+mimOiuvue9ruS4uuepulxyXG5cdFx0XHRcdHRpdGxlOiBcIiBcIixcclxuXHRcdFx0XHRsYWJlbEZvcm1hdDogXCJOMlwiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRsb2FkZWQ6IHRoaXMuaXNsb2FkZWRcclxuXHRcdFx0XHQ/IG51bGxcclxuXHRcdFx0XHQ6ICh0aGlzLm9ic2VydmFibGUuc3Vic2NyaWJlKHRoaXMubG9hZGVkLmJpbmQodGhpcykpIGFzIGFueSksXHJcblx0XHRcdHpvb21TZXR0aW5nczoge1xyXG5cdFx0XHRcdGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiBmYWxzZSwgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlUGluY2hab29taW5nOiBmYWxzZSwgLy8g56aB55So6Kem5pG457yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOmAieaLqeWMuuWfn+e8qeaUvlxyXG5cdFx0XHRcdGVuYWJsZURlZmVycmVkWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOW7tui/n+e8qeaUvlxyXG5cdFx0XHRcdHRvb2xiYXJJdGVtczogW10sXHJcblx0XHRcdFx0ZW5hYmxlU2Nyb2xsYmFyOiBmYWxzZSxcclxuXHRcdFx0XHRlbmFibGVab29taW5nOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdH07XHJcblx0XHR0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcclxuXHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdGlmICghdGhpcy5jaGFydFNldHRpbmdzLnBhbGV0dGVzKSB7XHJcblx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFtcclxuXHRcdFx0XHRcIiM1OTRiYjlcIixcclxuXHRcdFx0XHRcIiNmMWFmMzJcIixcclxuXHRcdFx0XHRcIiM0Njg4ZWRcIixcclxuXHRcdFx0XHRcIiNlMDU2M2VcIixcclxuXHRcdFx0XHRcIiM4MDNhNjNcIixcclxuXHRcdFx0XHRcIiM2ZGQ4YjVcIixcclxuXHRcdFx0XHRcIiNlODcyMjVcIixcclxuXHRcdFx0XHRcIiNjNWRmNDJcIixcclxuXHRcdFx0XHRcIiNjNjQzN2RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy5jb2x1bW5TcGFjaW5nID0gMC4xO1xyXG5cdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLmNvbHVtbldpZHRoID0gMC45O1xyXG5cdFx0aWYgKHR5cGUpIHtcclxuXHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzID0ge1xyXG5cdFx0XHRcdHR5cGUsXHJcblx0XHRcdFx0Y29sdW1uU3BhY2luZzogMC4xLFxyXG5cdFx0XHRcdGNvbHVtbldpZHRoOiAwLjksXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbk1lbWJlckVkaXRvck9wZW4oYXJnczogYW55KTogdm9pZCB7XHJcblx0XHQvLyDkvaDlj6/ku6XlnKjov5nph4zmoLnmja7pnIDopoHkv67mlLlhcmdz5p2l6Ieq5a6a5LmJ6L+H5ruk56qX5Y+j55qE6KGM5Li6XHJcblx0XHQvLyAxMTI0NyDkuJPpl6jkuLppdGVtIGRhdGEgdHlwZeiAjOiuvue9rlxyXG5cdFx0aWYgKGFyZ3MuZmllbGROYW1lID09PSBcIkFjY291bnRUeXBlQ29kZVwiKSB7XHJcblx0XHRcdGxldCByZXMgPSBuZXcgQXJyYXkoNSkuZmlsbChudWxsKTtcclxuXHRcdFx0Y29uc3QgZmllbGRNZW1iZXJzID0gWy4uLmFyZ3MuZmllbGRNZW1iZXJzXTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSBmaWVsZE1lbWJlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSAtMTtcclxuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyLmZpbmQoKG5hbWUsIGluZCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lKSB7XHJcblx0XHRcdFx0XHRcdGluZGV4ID0gaW5kO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmICghaXRlbSkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IGZpbGxJdGVtID0gZmllbGRNZW1iZXJzLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRyZXNbaW5kZXhdID0gZmlsbEl0ZW1bMF07XHJcblx0XHRcdH1cclxuXHRcdFx0cmVzID0gcmVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSkgfHwgW107XHJcblx0XHRcdGFyZ3MuZmllbGRNZW1iZXJzID0gWy4uLnJlcywgLi4uZmllbGRNZW1iZXJzXTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lLW1lbWJlci1lZGl0b3ItZGlhbG9nXCIpO1xyXG5cdFx0XHRcdGlmIChlbGUpIHtcclxuXHRcdFx0XHRcdGVsZS5xdWVyeVNlbGVjdG9yKFwiLmUtZmlsdGVyLXNvcnRcIikuc2V0QXR0cmlidXRlKFxyXG5cdFx0XHRcdFx0XHRcInN0eWxlXCIsXHJcblx0XHRcdFx0XHRcdFwiZGlzcGxheTogbm9uZVwiXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRiZWZvcmVFeHBvcnQoZXhwb3J0RGF0YSkge1xyXG5cdFx0aWYgKGV4cG9ydERhdGEpIHtcclxuXHRcdFx0Y29uc3Qga2V5TWFwID0ge307XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzLmZvckVhY2goKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRkYXRhLmZvcm1hdCA9PT0gXCIjLCMjIywsLjA7KCMsIyMjLCwuMClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLDsoIywjIyMsLClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0a2V5TWFwW2RhdGEubmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9ucyAmJlxyXG5cdFx0XHRcdGV4cG9ydERhdGEuZGF0YUNvbGxlY3Rpb25zLmxlbmd0aFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9uc1swXS5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdHJvdy5mb3JFYWNoKChjZWxsKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChrZXlNYXBbY2VsbC5hY3R1YWxUZXh0XSkge1xyXG5cdFx0XHRcdFx0XHRcdGNlbGwudmFsdWUgPSBjZWxsLmFjdHVhbFZhbHVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBnZXREYXRhKGNvbmZpZz86IGFueSkge1xyXG5cdFx0dGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0bGV0IGNvbHVtbnMgPSBbXTtcclxuXHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdGxldCBmb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0bGV0IHJvd3MgPSBbXTtcclxuXHRcdGxldCBmaWVsZE1hcHBpbmcgPSBbXTtcclxuXHRcdC8vIOa4heepumdyYW5kVG90YWxz5ZKMc3ViVG90YWxzXHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0dGhpcy5jb25maWcgPSBjb25maWdcclxuXHRcdFx0PyBKU09OLnBhcnNlKGNvbmZpZylcclxuXHRcdFx0OiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG5cclxuXHRcdGxldCB0eXBlID1cclxuXHRcdFx0dGhpcy5jb25maWcgJiZcclxuXHRcdFx0dGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3NcclxuXHRcdFx0XHQ/IHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlXHJcblx0XHRcdFx0OiBudWxsO1xyXG5cdFx0aWYgKHR5cGUgJiYgdHlwZSA9PT0gXCJTdGFja2VkIENvbHVtblwiKSB7XHJcblx0XHRcdHR5cGUgPSBcIlN0YWNraW5nQ29sdW1uXCI7XHJcblx0XHR9XHJcblx0XHR0aGlzLmluaXRDaGFydFNldHRpbmcodHlwZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmZpZWxkcykge1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuZmllbGRzKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRSZXN1bHRCeURhdGFUYWJsZShcclxuXHRcdFx0dGhpcy5wb3J0bGV0LFxyXG5cdFx0XHRmYWxzZSxcclxuXHRcdFx0ZmFsc2UsXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkLmlkXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMub3JkZXJCeUNvbHVtbnMgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldE9yZGVyQnlDb2x1bW5zTmV3KFxyXG5cdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSxcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gRGF0YVV0aWwucGFyc2UucGFyc2VKc29uKHRoaXMuUGl2b3RfRGF0YSk7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZ2V0ZXhjbHVkZUZpZWxkcyh0aGlzLmNvbmZpZ0ZpZWxkcywgdGhpcy5QaXZvdF9EYXRhWzBdKTtcclxuXHRcdFx0aWYgKCF0aGlzLmFsbG93ZWRDYWxjdWxhdGVkRmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdHRoaXMuYWxsb3dlZENhbGN1bGF0ZWRGaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLlBpdm90X0RhdGFbMF0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWdGaWVsZHMpIHtcclxuXHRcdFx0XHRmaWVsZE1hcHBpbmcucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiBpdGVtLmFkZHRpb25OYW1lXHJcblx0XHRcdFx0XHRcdD8gYCR7aXRlbS5sYW5nVmFsdWV9ICR7aXRlbS5hZGR0aW9uTmFtZX1gXHJcblx0XHRcdFx0XHRcdDogaXRlbS5sYW5nVmFsdWUsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTogaXRlbS5kYXRhVHlwZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuY29uZmlnRmllbGRzKSB7XHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmZvcm1hdERhdGVzID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0ID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0ID0gW107XHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcblx0XHRcdFx0Ly8gU01QMi0yNDg2ICYgcGVyY2VudE51beeahGZvcm1hdOmXrumimFxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIikge1xyXG5cdFx0XHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFsyLCA1LCA4LCAxMSwgMTQsIDE3XS5pbmNsdWRlcyhlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXQpXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5oZ0xpc3QucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkICYmXHJcblx0XHRcdFx0XHRbMywgNiwgOSwgMTIsIDE1LCAxOF0uaW5jbHVkZXMoZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0KVxyXG5cdFx0XHRcdClcclxuXHRcdFx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0LnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCAmJlxyXG5cdFx0XHRcdFx0WzEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpXHJcblx0XHRcdFx0XHR0aGlzLm1pbGxpb25GaWVsZHMucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJudW1iZXJcIiAmJlxyXG5cdFx0XHRcdFx0KCFlbC5mb3JtYXQgfHxcclxuXHRcdFx0XHRcdFx0KGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQhZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQpKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0Ly9TTVAyLTMwMjYgYW5kIFNNUDItMzA1OVxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdFx0ZWwuY29sTmFtZSAhPT0gXCJQb3J0SW52U3RrXCIgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5jb2xOYW1lICE9PSBcIlBvcnRGZEludlN0a1wiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogXCIjIzAuIyMjIyMjIzBcIixcclxuXHRcdFx0XHRcdFx0dXNlR3JvdXBpbmc6IHRydWUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KGVsLmRhdGFUeXBlID09PSBcInBlcmNlbnRcIiB8fFxyXG5cdFx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJwZXJjZW50TnVtXCIpICYmXHJcblx0XHRcdFx0XHQoIWVsLmZvcm1hdCB8fFxyXG5cdFx0XHRcdFx0XHQoZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCFlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRjb25zdCBmb3JtYXREYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmRhdGFUeXBlID09PSBcIm11bHRpcGxlXCIgJiZcclxuXHRcdFx0XHRcdCghZWwuZm9ybWF0IHx8XHJcblx0XHRcdFx0XHRcdChlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0IWVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkKSlcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdG5hbWU6IGVsLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PT0gXCJkYXRldGltZVwiIHx8IGVsLmRhdGFUeXBlID09PSBcImRhdGVcIikge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm1hdCA9IFwiXCI7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIlF1YXJ0ZXJcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmb3JtYXRfID0gZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0SW5mbyA9IHRoaXMucXVhcnRlckZvcm1hdC5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQocXVyKSA9PiBxdXIudmFsdWUgPT0gZm9ybWF0X1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGZvcm1hdEluZm8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBmb3JtYXRJbmZvWzBdLmZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBmb3JtYXRfLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmZvcm1hdERhdGVzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIkRhdGVcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmcm9tSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIihcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIilcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZvcm1hdF8gPVxyXG5cdFx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbUlkeCArIDEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRvSWR4XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoZm9ybWF0Xykge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC9NTS95eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQvTU0veXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NL2RkL3l5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS9kZC95eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWVlZLU1NLUREXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWS1NTS1ERFwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcInl5LU1NLWRkXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTS15eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQtTU0teXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NLWRkLXl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS1kZC15eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJNTU0gREQsIFlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTU0gZGQsIHl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiREQtTU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTU0teXl5eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKCFmb3JtYXQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXRlUGlwZUZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6IGZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0Ly9jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyBmb3JtYXQgcHVzaCB0byBmb3JtYXRTZXR0aW5nc1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncy5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MubWFwKChlbCkgPT4ge1xyXG5cdFx0XHRcdGlmIChlbC5mb3JtYXRTdHJpbmcgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IGVsLmZvcm1hdFN0cmluZyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRsZXQgc2VyaWVzID0gdGhpcy5jb25maWcueWF4aXMuc2VyaWVzO1xyXG5cdFx0aWYgKHNlcmllcykge1xyXG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHNlcmllcykge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogaXRlbS5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0Y2FwdGlvbjogaXRlbS50aXRsZSxcclxuXHRcdFx0XHRcdHR5cGU6IGl0ZW0uY2FsTWV0aG9kLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgZ3JvdXBzID0gdGhpcy5jb25maWcueGF4aXMuZ3JvdXBzO1xyXG5cdFx0aWYgKGdyb3Vwcykge1xyXG5cdFx0XHRmb3IgKGxldCBnaXRlbSBvZiBncm91cHMpIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZ2l0ZW0ubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdGdpdGVtLnNob3dTdWJUb3RhbHMgPSBmaWVsZFswXS5zaG93U3ViVG90YWxzO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyb3dzLnB1c2goZ2l0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5jb25maWcuY29sdW1uR3JvdXAgJiYgdGhpcy5jb25maWcuY29sdW1uR3JvdXAubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWcuY29sdW1uR3JvdXApIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gaXRlbS5uYW1lXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoZmllbGQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aXRlbS5zaG93U3ViVG90YWxzID0gZmllbGRbMF0uc2hvd1N1YlRvdGFscztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29sdW1ucy5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0dGhpcy5jb25maWdGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHRcdFx0aWYgKGZpZWxkLmZvcm1hdCAmJiBmaWVsZC5mb3JtYXQubGVuZ3RoKSB7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmZvcm1hdFswXS5mb250U2V0dGluZ0NoZWNrZWQpIHtcclxuXHRcdFx0XHRcdGxldCBjb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0bGV0IG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Ly8gZm9udCBzZXR0aW5nIHN0YXJ0XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmNvbXBhcmVTZWxlY3RcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldENvbXBhcmVDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgY29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgbmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MucHVzaChuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmopO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy51bnNoaWZ0KGNvbmRpdGlvbmFsRm9ybWF0T2JqKTtcclxuXHRcdFx0XHRcdC8vIGZvbnQgc2V0dGluZyBlbmRcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGV0IGZvcm1hdFNldHRpbmdzT2JqID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogXCJcIixcclxuXHRcdFx0XHRcdGZvcm1hdDogXCJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkge1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmoubmFtZSA9IGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0c3dpdGNoIChmaWVsZC5mb3JtYXRbMF0uZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdFx0Y2FzZSBcIm51bWJlclwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0Y2FzZSBcImludGVnZXJcIjpcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXQgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0SW50ZWdlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudE51bVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudFwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgXCJtdWx0aXBsZVwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0ID0gXCJcIjtcclxuXHRcdFx0XHRcdFx0XHRpZiAoZmllbGQuZm9ybWF0ICYmIGZpZWxkLmZvcm1hdC5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJRdWFydGVyXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5O1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJEYXRlXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGZyb21JZHggPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiKFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5LmluZGV4T2YoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIilcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb21JZHggKyAxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9JZHhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybWF0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iaiA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZmllbGQuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGZpZWxkLmRhdGFUeXBlID0gXCJzdHJpbmdcIjtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID0gdGhpcy5kYXRlUGlwZUZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqW1widHlwZVwiXSA9IFwiZGF0ZVwiO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmRhdGFUeXBlICE9PSBcInN0cmluZ1wiICYmXHJcblx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0U2V0dGluZ3NPYmopO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMgPSB0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzXHJcblx0XHRcdD8gdGhpcy5jb25maWcuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkc1xyXG5cdFx0XHQ6IFtdO1xyXG5cclxuXHRcdC8vIFNNUDItNDU4MiBBR0lDIC0gRGFzaGJvYXJkIGl0ZW0gc2VxdWVuY2VcclxuXHRcdGxldCBpc0V4aXN0U2VxID0gZmFsc2U7XHJcblx0XHRsZXQgc29ydFNldHRpbmdzID0gdGhpcy5jb25maWcuc29ydFNldHRpbmdzIHx8IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLlBpdm90X0RhdGEgJiZcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhWzBdICYmXHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YVswXS5TZXEgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHQvLyDlj5bmtohOYW1l55qE6buY6K6k5o6S5bqP77yM5qC55o2uU2Vx5p2l5o6S5bqPXHJcblx0XHRcdHNvcnRTZXR0aW5ncy5wdXNoKHsgbmFtZTogXCJOYW1lXCIsIG9yZGVyOiBcIk5vbmVcIiB9KTtcclxuXHRcdFx0aXNFeGlzdFNlcSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRsZXQgZmlsdGVyU2V0dGluZ3MgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmNoZWNrRmlsdGVyU2V0dGluZ3MoXHJcblx0XHRcdHRoaXMuY29uZmlnLFxyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyxcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhXHJcblx0XHQpO1xyXG5cdFx0bGV0IG5hbWVGaWx0ZXIgPSBmaWx0ZXJTZXR0aW5ncy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IFwiTmFtZVwiKTtcclxuXHRcdC8vIOWtmOWcqCBOYW1l55qEZmlsdGVy5pe277yM5Lya5oyJ54Wn6buY6K6k5o6S5bqP77yM6ZyA6KaB5a+5TmFtZei/m+ihjFNlceaOkuW6j+WkhOeQhlxyXG5cdFx0aWYgKGlzRXhpc3RTZXEgJiYgbmFtZUZpbHRlciAmJiByb3dzLnNvbWUoKHgpID0+IHgubmFtZSA9PT0gXCJOYW1lXCIpKSB7XHJcblx0XHRcdGxldCBpdGVtcyA9IG5hbWVGaWx0ZXIuaXRlbXM7IC8vIOaLv+WIsOW9k+WJjeaOkuW6j++8jOm7mOiupEEtWlxyXG5cdFx0XHRsZXQgc2VxQXJyID0gW107XHJcblx0XHRcdGl0ZW1zLmZvckVhY2goKG5hbWUpID0+IHtcclxuXHRcdFx0XHRsZXQgb2JqID0gdGhpcy5QaXZvdF9EYXRhLmZpbmQoKHgpID0+IHguTmFtZSA9PT0gbmFtZSk7XHJcblx0XHRcdFx0bGV0IGl0ZW06IGFueSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IG5hbWUsXHJcblx0XHRcdFx0XHRzZXE6IG9iai5TZXEsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZXFBcnIucHVzaChpdGVtKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHNlcUFyci5zb3J0KChhLCBiKSA9PiBhLnNlcSAtIGIuc2VxKTtcclxuXHRcdFx0bmFtZUZpbHRlci5pdGVtcyA9IHNlcUFyci5tYXAoKHgpID0+IHgubmFtZSk7XHJcblx0XHR9XHJcblx0XHRsZXQgaGFzSXRlbURhdGFUeXBlID0gZmFsc2U7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhKSB7XHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YS5tYXAoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YVtcIkFjY291bnRUeXBlQ29kZVwiXSkge1xyXG5cdFx0XHRcdFx0aGFzSXRlbURhdGFUeXBlID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdGlmIChkYXRhW3Jvdy5uYW1lXSA9PT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3Jvdy5uYW1lXSA9IFwibnVsbFwiO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGlmIChoYXNJdGVtRGF0YVR5cGUpIHtcclxuXHRcdFx0c29ydFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdG5hbWU6IFwiQWNjb3VudFR5cGVDb2RlXCIsXHJcblx0XHRcdFx0b3JkZXI6IFwiQXNjZW5kaW5nXCIsXHJcblx0XHRcdFx0bWVtYmVyc09yZGVyOiBbLi4udGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyXSxcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmRhdGFTb3VyY2VTZXR0aW5ncyA9IHtcclxuXHRcdFx0ZGF0YVNvdXJjZTogdGhpcy5QaXZvdF9EYXRhLFxyXG5cdFx0XHRyb3dzOiByb3dzLFxyXG5cdFx0XHRjb2x1bW5zOiBjb2x1bW5zLFxyXG5cdFx0XHR2YWx1ZXM6IHZhbHVlcyxcclxuXHRcdFx0ZmlsdGVyczogdGhpcy5jb25maWcuZmlsdGVycyxcclxuXHRcdFx0ZmlsdGVyU2V0dGluZ3M6IGZpbHRlclNldHRpbmdzLFxyXG5cdFx0XHRleGNsdWRlRmllbGRzOiB0aGlzLmV4Y2x1ZGVGaWVsZHMsXHJcblx0XHRcdGZvcm1hdFNldHRpbmdzOiBmb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nczogY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0ZXhwYW5kQWxsOiB0cnVlLFxyXG5cdFx0XHRlbmFibGVTb3J0aW5nOiB0cnVlLFxyXG5cdFx0XHRmaWVsZE1hcHBpbmc6IGZpZWxkTWFwcGluZyxcclxuXHRcdFx0Y2FsY3VsYXRlZEZpZWxkU2V0dGluZ3M6IHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLFxyXG5cdFx0XHRzb3J0U2V0dGluZ3M6IHNvcnRTZXR0aW5ncyxcclxuXHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHRoaXMuY29uZmlnLnZhbHVlU29ydFNldHRpbmdzLFxyXG5cdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0c2hvd1Jvd0dyYW5kVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93R3JhbmRUb3RhbHMsXHJcblx0XHRcdHNob3dDb2x1bW5HcmFuZFRvdGFsczogdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzLFxyXG5cdFx0XHRzaG93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Um93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Q29sdW1uU3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzLFxyXG5cdFx0fTtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhZnRlclBvcHVsYXRlKGFyZ3M6IEVuZ2luZVBvcHVsYXRlZEV2ZW50QXJncyk6IHZvaWQge1xyXG5cdFx0dGhpcy50ZW1wU3VidG90YWxzID0gW107XHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0bGV0IHRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRpdGVtLmhhc093blByb3BlcnR5KFwic2hvd1N1YlRvdGFsc1wiKSAmJlxyXG5cdFx0XHRcdGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGVtcHNob3dBcnJheS5wdXNoKHtcclxuXHRcdFx0XHRcdG5hbWU6IGl0ZW0uY29sTmFtZSxcclxuXHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRzaG93U3ViVG90YWxzOiBpdGVtLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IGl0ZW0uc2hvd0dyYW5kVG90YWxzLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KFwic2hvd0dyYW5kVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dHcmFuZFRvdGFsczogaXRlbS5zaG93R3JhbmRUb3RhbHMsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IGl0ZW0uc2hvd1N1YlRvdGFscyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmIHRoaXMucGl2b3RPYmopIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY29sdW1uR3JvdXAgPSBbXTtcclxuXHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmZpbHRlclNldHRpbmdzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzID0gW107XHJcblx0XHRcdGxldCBncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZ3JvdXBTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBjb2x1bW5zID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiY29sdW1uc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCByb3dzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwicm93c1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZmlsdGVyc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJTZXR0aW5ncyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImZpbHRlclNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcInZhbHVlc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBzb3J0U2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJzb3J0U2V0dGluZ3NcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJjYWxjdWxhdGVkRmllbGRTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChncm91cFNldHRpbmdzLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0bmFtZTogY29sdW1uLm5hbWUsXHJcblx0XHRcdFx0XHRcdGNhcHRpb246IGNvbHVtbi5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vSWYgdGhlcmUgaXMgYSBncm91cCwgZmlyc3QgZmlsdGVyIHRoZSBjb2x1bW5zIG9mIHRoZSBncm91cCBmaWVsZCwgYW5kIHRoZW4gb25seSBzYXZlIHRoZSBsYXN0IG9uZVxyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRpZiAoIXN0YXJ0c1dpdGgoY29sdW1uLm5hbWUsIGdyb3VwU2V0dGluZ3NbMF0ubmFtZSArIFwiX1wiKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBjb2x1bW4ubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRjYXB0aW9uOlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLm5hbWUgPT09IGdyb3VwU2V0dGluZ3NbMF0ubmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IFwiXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb2x1bW4uY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IHJvdyBvZiByb3dzKSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzLnB1c2goe1xyXG5cdFx0XHRcdFx0bmFtZTogcm93Lm5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiByb3cuY2FwdGlvbixcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG5cdFx0XHRcdHRoaXMuY29uZmlnLmZpbHRlcnMucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBmaWx0ZXIubmFtZSxcclxuXHRcdFx0XHRcdGNhcHRpb246IGZpbHRlci5jYXB0aW9uLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclNldHRpbmdzICYmIHRoaXMuZmlsdGVyU2V0dGluZ3MubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzID0gdGhpcy5maWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJTZXR0aW5ncyA9IHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuZmlsdGVyU2V0dGluZ3MgPSBmaWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcclxuXHRcdFx0XHRsZXQgc2VyaWVzRGF0YTtcclxuXHRcdFx0XHRsZXQgdGVtcFNob3dPYmo7XHJcblx0XHRcdFx0bGV0IGZpbHRlclRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdFx0XHRpZiAodGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGZpbHRlclRlbXBzaG93QXJyYXkgPSB0ZW1wc2hvd0FycmF5LmZpbHRlcihcclxuXHRcdFx0XHRcdFx0KGl0ZW0pID0+XHJcblx0XHRcdFx0XHRcdFx0aXRlbS5uYW1lID09PSB2YWx1ZS5uYW1lICYmXHJcblx0XHRcdFx0XHRcdFx0aXRlbS5jYWxNZXRob2QgPT09IHZhbHVlLnR5cGVcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRpZiAoZmlsdGVyVGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGVtcFNob3dPYmogPSBmaWx0ZXJUZW1wc2hvd0FycmF5WzBdO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpICYmXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dHcmFuZFRvdGFsc1wiKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sTmFtZTogdmFsdWUubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsTWV0aG9kOiB2YWx1ZS50eXBlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0dyYW5kVG90YWxzOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dTdWJUb3RhbHNcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNhbE1ldGhvZDogdmFsdWUudHlwZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHZhbHVlLmNhcHRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoIXNlcmllc0RhdGEpIHtcclxuXHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdHRpdGxlOiB2YWx1ZS5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMucHVzaChzZXJpZXNEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBjYWxjdWxhdGUgb2YgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MpIHtcclxuXHRcdFx0XHRjb25zdCBjYWxjdWxhdGVEYXRhID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogY2FsY3VsYXRlLm5hbWUsXHJcblx0XHRcdFx0XHRmb3JtdWxhOiBjYWxjdWxhdGUuZm9ybXVsYSxcclxuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzpcclxuXHRcdFx0XHRcdFx0Y2FsY3VsYXRlLmZvcm1hdFN0cmluZyA9PT0gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdD8gXCJOMlwiXHJcblx0XHRcdFx0XHRcdFx0OiBjYWxjdWxhdGUuZm9ybWF0U3RyaW5nLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MucHVzaChjYWxjdWxhdGVEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5zb3J0U2V0dGluZ3MgPSBzb3J0U2V0dGluZ3M7XHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MgPSBncm91cFNldHRpbmdzO1xyXG5cdFx0XHR0aGlzLmZpZWxkbGlzdE9iai51cGRhdGVWaWV3KHRoaXMucGl2b3RPYmopO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdC8vcmVtb3ZlIHRoZSBzb3J0XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc29ydFNldHRpbmdzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgPSB0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm87XHJcblx0XHRcdCh0aGlzLmZpZWxkbGlzdE9iaiBhcyBhbnkpLmxhc3RTb3J0SW5mbyA9IFtdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGFmdGVyRW5naW5lUG9wdWxhdGUoYXJnczogYW55KSB7XHJcblx0XHRpZiAoIUJyb3dzZXIuaXNEZXZpY2UgJiYgdGhpcy5maWVsZGxpc3RPYmogJiYgdGhpcy5waXZvdE9iaikge1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmosXHJcblx0XHRcdFx0XCJncm91cFNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0Ly8gdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB0aGlzLmZpZWxkbGlzdE9iai51cGRhdGUodGhpcy5waXZvdE9iaik7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGgpIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5lbmdpbmVQb3B1bGF0ZWQoYXJncyk7XHJcblx0XHRcdH0sIDE1MDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKG9iaiwga2V5KSB7XHJcblx0XHRsZXQgcHJvcCA9IG51bGw7XHJcblx0XHRpZiAob2JqICYmIG9iai5kYXRhU291cmNlU2V0dGluZ3MpIHtcclxuXHRcdFx0cHJvcCA9IG9iai5kYXRhU291cmNlU2V0dGluZ3Nba2V5XTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9wKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiICYmXHJcblx0XHRcdFx0cHJvcC5sZW5ndGggPiAwXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHByb3AgPSBwcm9wLm1hcCgoaXRlbSkgPT4gaXRlbS5wcm9wZXJ0aWVzIHx8IGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcHJvcDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBlbmdpbmVQb3B1bGF0aW5nKGFyZ3MpIHtcclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IFtdO1xyXG5cdFx0aWYgKGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGgpIHtcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgaSA9IDA7XHJcblx0XHRcdFx0aSA8IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGg7XHJcblx0XHRcdFx0aSsrXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5nc1tpXS5uYW1lICYmXHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm8ub3JkZXIgPT09IFwiQXNjZW5kaW5nXCIgJiZcclxuXHRcdFx0XHRcdCEoXHJcblx0XHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mby5uYW1lID09PVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQub3JkZXIgPT09IFwiTm9uZVwiXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIk5vbmVcIjtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgJiZcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm9yZGVyID09PSBcIkFzY2VuZGluZ1wiXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIkFzY2VuZGluZ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGNlbGxDbGljayhhcmdzKSB7XHJcblx0XHQvLyDmuIXpmaTmjpLluo9cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnZhbHVlU29ydFNldHRpbmdzLmhlYWRlclRleHQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyID09PVxyXG5cdFx0XHRcdFwiRGVzY2VuZGluZ1wiICYmXHJcblx0XHRcdGFyZ3MuZGF0YS52YWx1ZVNvcnQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3MuaGVhZGVyVGV4dCA9PT1cclxuXHRcdFx0XHRhcmdzLmRhdGEudmFsdWVTb3J0LmxldmVsTmFtZVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouc2V0UHJvcGVydGllcyhcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRkYXRhU291cmNlU2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0XHRzb3J0T3JkZXI6IFwiRGVzY2VuZGluZ1wiLFxyXG5cdFx0XHRcdFx0XHRcdGhlYWRlclRleHQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy52YWx1ZVNvcnRTZXR0aW5ncyA9IHt9O1xyXG5cdFx0XHR0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGRhdGFCb3VuZChlKSB7XHJcblx0XHRpZiAodGhpcy5pc0luaXQpIHtcclxuXHRcdFx0dGhpcy5pc0luaXQgPSBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5ncmlkKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZ3JpZC5yZXNpemVTdG9wID0gdGhpcy5yZXNpemVTdG9wLmJpbmQodGhpcyk7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb25cclxuXHRcdCkge1xyXG5cdFx0XHQoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvbiBhcyBhbnlcclxuXHRcdFx0KS5zdHJpbmdBZ2dyZWdhdGVUeXBlcyA9IFtcclxuXHRcdFx0XHRcIkNvdW50XCIsXHJcblx0XHRcdFx0XCJEaXN0aW5jdENvdW50XCIsXHJcblx0XHRcdFx0XCJGaXJzdFwiLFxyXG5cdFx0XHRcdFwiTGFzdFwiLFxyXG5cdFx0XHRdO1xyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvblxyXG5cdFx0KSB7XHJcblx0XHRcdChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb24gYXMgYW55XHJcblx0XHRcdCkuc3RyaW5nQWdncmVnYXRlVHlwZXMgPSBbXHJcblx0XHRcdFx0XCJDb3VudFwiLFxyXG5cdFx0XHRcdFwiRGlzdGluY3RDb3VudFwiLFxyXG5cdFx0XHRcdFwiRmlyc3RcIixcclxuXHRcdFx0XHRcIkxhc3RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdGxldCBhbGxTdW1tYXJ5VHlwZSA9IEFMTF9BR0dSRUdBVEVfVFlQRVMgYXMgYW55O1xyXG5cdFx0dGhpcy5waXZvdE9iai5nZXRBbGxTdW1tYXJ5VHlwZSA9ICgpID0+IGFsbFN1bW1hcnlUeXBlO1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmFnZ3JlZ2F0ZVR5cGVzID0gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmdldEFsbFN1bW1hcnlUeXBlID0gKCkgPT4gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRDZWxsU2V0cyhhcmdzLCBjdXJGaWVsZHMpIHtcclxuXHRcdGxldCBtYXRjaEZpZWxkcyA9IGN1ckZpZWxkc1tcIm1hdGNoRmllbGRzXCJdO1xyXG5cdFx0bGV0IGZvcm11bGEgPSBjdXJGaWVsZHNbXCJmb3JtdWxhXCJdO1xyXG5cdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdGxldCBpbnZhbGlkVHlwZXMgPSBbXCJzdHJpbmdcIiwgXCJudmFyY2hhclwiLCBcImRhdGVcIiwgXCJkYXRldGltZVwiXTtcclxuXHRcdGxldCBpc0ludmFsaWQgPSBtYXRjaEZpZWxkcy5zb21lKChmKSA9PlxyXG5cdFx0XHRpbnZhbGlkVHlwZXMuaW5jbHVkZXMoXHJcblx0XHRcdFx0dGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZi5tYXRjaFdvcmQpWzBdW1xyXG5cdFx0XHRcdFx0XCJkYXRhVHlwZVwiXHJcblx0XHRcdFx0XVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdFx0bGV0IGN1cnJlbnRyb3dDZWxsVHlwZSA9IGFyZ3Mucm93Q2VsbFR5cGU7XHJcblx0XHRpZiAoaXNJbnZhbGlkKSByZXR1cm4gXCItXCI7XHJcblx0XHRpZiAoXHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fFxyXG5cdFx0XHRhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBjaGlsZEhlYWRlcnMgPSBbXTtcclxuXHRcdFx0bGV0IHN1bSA9IDA7XHJcblx0XHRcdGxldCBjbG9uZUNlbGxTZXRzID0gY2xvbmVEZWVwKGFyZ3MuY2VsbFNldHMpO1xyXG5cdFx0XHRsZXQgZ3JvdXBOYW1lQXJyYXlzID0gW107XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7IGluZGV4IDwgcm93cy5sZW5ndGg7IGluZGV4KyspIHtcclxuXHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNsb25lQ2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChjbG9uZUNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGNsb25lQ2VsbFNldHNbaV1bbmFtZV07XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdGlmICghKGNoaWxkSGVhZGVycyBhcyBhbnkpLmluY2x1ZGVzKGhlYWRlcikpIHtcclxuXHRcdFx0XHRcdGNoaWxkSGVhZGVycy5wdXNoKGhlYWRlcik7XHJcblx0XHRcdFx0XHRsZXQgZmlsdGVyT2JqOiBhbnkgPSB7fTtcclxuXHRcdFx0XHRcdGdyb3VwTmFtZUFycmF5cy5tYXAoXHJcblx0XHRcdFx0XHRcdChuYW1lLCBpKSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW2ldKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MuY2VsbFNldHMgPSBfZmlsdGVyKGNsb25lQ2VsbFNldHMsIGZpbHRlck9iaik7XHJcblx0XHRcdFx0XHRhcmdzLnJvd0NlbGxUeXBlID0gXCJ2YWx1ZVwiO1xyXG5cdFx0XHRcdFx0c3VtICs9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPSBjdXJyZW50cm93Q2VsbFR5cGU7XHJcblxyXG5cdFx0XHQvLyDmmoLlrZjlvZPliY1TdWJUb3RhbO+8jCDnlKjkuo7mlLbnvKnml7bor7vlj5ZcclxuXHRcdFx0bGV0IHByZWZpeEhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0dGhpcy51cGRhdGVUZW1wU3VidG90YWxzKHByZWZpeEhlYWRlciwgc3VtKTtcclxuXHRcdFx0cmV0dXJuIHN1bTtcclxuXHRcdH0gZWxzZSBpZiAoYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiKSB7XHJcblx0XHRcdGlmIChhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRcdC8vIGNvbGxhcHNlIOivu+WPllN1YlRvdGFsXHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdFx0KGl0ZW0pID0+IGl0ZW0ucm93TmFtZSA9PT0gaGVhZGVyXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoaW5kZXggPiAtMSkge1xyXG5cdFx0XHRcdFx0dmFsdWUgPSB0aGlzLnRlbXBTdWJ0b3RhbHNbaW5kZXhdLnJvd1ZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBleHBhbmRcclxuXHRcdFx0XHR2YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGFjdGlvbkZhaWx1cmUoYXJnczogUGl2b3RBY3Rpb25GYWlsdXJlRXZlbnRBcmdzKTogdm9pZCB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRHJpbGwgZG93blwiIHx8IGFyZ3MuYWN0aW9uTmFtZSA9PSBcIkRyaWxsIHVwXCIpIHtcclxuXHRcdFx0Ly8gVHJpZ2dlcnMgd2hlbiB0aGUgY3VycmVudCBVSSBhY3Rpb24gZmFpbHMgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCByZXN1bHQuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENhbGNIZWFkZXIoYXJncywgZm9ybXVsYT8pIHtcclxuXHRcdGxldCBoZWFkZXIgPSBcIlwiO1xyXG5cdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3Mucm93LmxldmVsOyBpbmRleCsrKSB7XHJcblx0XHRcdGdyb3VwTmFtZUFycmF5cy5wdXNoKHJvd3NbaW5kZXhdLm5hbWUpO1xyXG5cdFx0fVxyXG5cdFx0aGVhZGVyID0gZ3JvdXBOYW1lQXJyYXlzLmxlbmd0aFxyXG5cdFx0XHQ/IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gYXJncy5jZWxsU2V0c1swXVtuYW1lXTtcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQuam9pbihcIi1cIikgK1xyXG5cdFx0XHQgIFwiLVwiICtcclxuXHRcdFx0ICBhcmdzLnJvdy5hY3R1YWxUZXh0XHJcblx0XHRcdDogYXJncy5yb3cuYWN0dWFsVGV4dDtcclxuXHRcdGlmIChmb3JtdWxhKSBoZWFkZXIgKz0gXCJfX19cIiArIGZvcm11bGE7XHJcblx0XHRyZXR1cm4gaGVhZGVyO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUZW1wU3VidG90YWxzKHJvd05hbWUsIHJvd1ZhbHVlKSB7XHJcblx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHQoaXRlbSkgPT4gaXRlbS5yb3dOYW1lID09PSByb3dOYW1lXHJcblx0XHQpO1xyXG5cdFx0bGV0IHRlbXA6IGFueSA9IHt9O1xyXG5cdFx0dGVtcC5yb3dOYW1lID0gcm93TmFtZTtcclxuXHRcdHRlbXAucm93VmFsdWUgPSByb3dWYWx1ZTtcclxuXHRcdGlmIChpbmRleCA+IC0xKSB7XHJcblx0XHRcdHRoaXMudGVtcFN1YnRvdGFscy5zcGxpY2UoaW5kZXgsIDEsIHRlbXApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy50ZW1wU3VidG90YWxzLnB1c2godGVtcCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRWYWx1ZXMoYXJncywgbWF0Y2hGaWVsZHMsIGZvcm11bGEpIHtcclxuXHRcdGlmIChtYXRjaEZpZWxkcy5sZW5ndGgpIHtcclxuXHRcdFx0bGV0IGNhbGN1bGVkTWF0Y2hGaWVsZHMgPSBtYXRjaEZpZWxkcy5tYXAoKGYpID0+IHtcclxuXHRcdFx0XHRzd2l0Y2ggKGYubWF0Y2hNZXRob2QpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJGaXJzdFwiOlxyXG5cdFx0XHRcdFx0Y2FzZSBcIkxhc3RcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRGaXN0TGFzdChcclxuXHRcdFx0XHRcdFx0XHRhcmdzLFxyXG5cdFx0XHRcdFx0XHRcdGYubWF0Y2hNZXRob2QsXHJcblx0XHRcdFx0XHRcdFx0Zi5tYXRjaFdvcmRcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWF4XCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWF4QnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWluXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWluQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiU3VtXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gc3VtQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHQvLyBTTVAyLTQwOTQgVW5pY29ybiAtIEwzIEFkanVzdGVkIE5BViB2YWx1ZSBpc3N1ZXNcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlICYmIGYucmVwbGFjZVZhbHVlLnRvRml4ZWQoMTApO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgXCJBdmdcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSBtZWFuQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZjtcclxuXHRcdFx0fSk7XHJcblx0XHRcdGxldCByZXN1bHRGb3JtdWxhID0gZm9ybXVsYTtcclxuXHRcdFx0aWYgKGNhbGN1bGVkTWF0Y2hGaWVsZHMubGVuZ3RoKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjYWxjdWxlZE1hdGNoRmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRyZXN1bHRGb3JtdWxhID0gcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKFxyXG5cdFx0XHRcdFx0XHRjYWxjdWxlZE1hdGNoRmllbGRzW2ldLm1hdGNoU3RyLFxyXG5cdFx0XHRcdFx0XHRcIihcIiArIGNhbGN1bGVkTWF0Y2hGaWVsZHNbaV0ucmVwbGFjZVZhbHVlICsgXCIpXCJcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IG5ldyBGdW5jdGlvbihcclxuXHRcdFx0XHRcdFwicmV0dXJuIFwiICsgcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKC9bXi08Pj86KClcXGQvKisuXS9nLCBcIlwiKVxyXG5cdFx0XHRcdCkoKTtcclxuXHRcdFx0XHRpZiAoaXNOYU4ocmVzdWx0KSB8fCAhaXNGaW5pdGUocmVzdWx0KSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdHJldHVybiBOYU47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiAwO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJcnJIZWFkZXIobGV2ZWwsIGVsZSwgdHlwZSkge1xyXG5cdFx0aWYgKHR5cGUgPT09IFwicm93XCIpIHtcclxuXHRcdFx0bGV0IGN1clJvd3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJyb3dzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHJvd3NBcnIgPSBjdXJSb3dzLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcclxuXHJcblx0XHRcdGxldCBoZWFkZXJBcnIgPSBbXTtcclxuXHRcdFx0bGV0IHJvd0xldmVsID0gbGV2ZWw7XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPD0gcm93TGV2ZWw7IGluZGV4KyspIHtcclxuXHRcdFx0XHRoZWFkZXJBcnIucHVzaChlbGUuUm93W3Jvd3NBcnJbaW5kZXhdXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGhlYWRlckFyci5qb2luKFwiLlwiKTtcclxuXHRcdH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjb2xcIikge1xyXG5cdFx0XHRsZXQgY3VyQ2xvdW1ucyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImNvbHVtbnNcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY29sc0FyciA9IGN1ckNsb3VtbnMubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpO1xyXG5cclxuXHRcdFx0bGV0IGhlYWRlckFyciA9IFtdO1xyXG5cdFx0XHRsZXQgY29sTGV2ZWwgPSBsZXZlbDtcclxuXHRcdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8PSBjb2xMZXZlbDsgaW5kZXgrKykge1xyXG5cdFx0XHRcdGhlYWRlckFyci5wdXNoKGVsZS5Db2xbY29sc0FycltpbmRleF1dKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gaGVhZGVyQXJyLmpvaW4oXCIuXCIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG90YWxGb3JtYXR0ZWQgPSB7fTtcclxuXHRwdWJsaWMgYWdncmVnYXRlQ2VsbEluZm8oYXJncykge1xyXG5cdFx0bGV0IGFzT2ZEYXRlID0gdGhpcy5wYmYudGltZSh0aGlzLmRhc2hib2FyZC5hc09mRGF0ZSk7XHJcblx0XHQvLyBpZiBjYWxjdWxhdGVkIGZpZWxkXHJcblx0XHRpZiAoYXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoYXJncy5maWVsZE5hbWUgPT0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLm5hbWUpIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRDZWxsU2V0cyhcclxuXHRcdFx0XHRcdFx0YXJncyxcclxuXHRcdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0W1xyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJJUlJEYXRlXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZUlSUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSWVREXCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkO1xyXG5cdFx0XHRsZXQgc3RhcnREYXRlO1xyXG5cdFx0XHRsZXQgZW5kRGF0ZTtcclxuXHRcdFx0c3dpdGNoIChhcmdzLmFnZ3JlZ2F0ZVR5cGUpIHtcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRcdFx0ZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSTVREXCI6XHJcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoYXNPZkRhdGUpXHJcblx0XHRcdFx0XHRcdC5zdGFydE9mKFwibW9udGhcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUlFURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInF1YXJ0ZXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUllURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInllYXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUklSUkRhdGVcIjpcclxuXHRcdFx0XHRcdHZhbHVlRmllbGQgPSBcIklSUkFkalZhbHVlXCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIkNhbGN1bGF0ZUlSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZUJlZm9yZUNhcnJ5XCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIklSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgTkFWQWRqID0gMDtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IFtdO1xyXG5cdFx0XHRsZXQgYmVmb3JlU3RhcnROQVZBZGogPSAwOyAvLyDlrZjlgqjkuIrkuIDkuKrpmLbmrrXnmoROQVZBZGrmgLvlkoxcclxuXHRcdFx0bGV0IGJlZm9yZVN0YXJ0VmFsdWVzID0gW107IC8vIOWtmOWCqOS4iuS4gOS4qumYtuauteeahOe0r+iuoembhuWQiCAo5Y+q5piv5Li65LqG5omT5Y2w77yM5rKh5pyJ5a6e6ZmF55So6YCUKVxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQvLyBTTVAyLTE2OTIwXHJcblx0XHRcdFx0Ly8gSWYgSVJSIERhdGUgPiBEYXNoYm9hcmQgcmVwb3J0IGRhdGUgPSBUYWtlcyBhcyBvZiBkYXNoYm9hcmQgcmVwb3J0IGRhdGVcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlSVJSSVJSRGF0ZVwiICYmXHJcblx0XHRcdFx0XHRhc09mRGF0ZSA8IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtkYXRlRmllbGRdKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0ZGF0YS5kYXRlID0gYXNPZkRhdGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW3ZhbHVlRmllbGRdO1xyXG5cdFx0XHRcdC8vIFNNUDItMTcyMTkgTVREIFFURCBZVEQgSVJSXHJcblx0XHRcdFx0aWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XHJcblx0XHRcdFx0XHRpZiAobW9tZW50KGRhdGEuZGF0ZSkuaXNCZWZvcmUoc3RhcnREYXRlKSkge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3ZhbHVlRmllbGRdID0gYXJncy5jZWxsU2V0c1tpXVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnRWYWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnROQVZBZGogKz0gZGF0YVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IW1vbWVudChkYXRhLmRhdGUpLmlzQmV0d2VlbihcclxuXHRcdFx0XHRcdFx0XHRzdGFydERhdGUsXHJcblx0XHRcdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFwiW11cIlxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhLmFtb3VudCAhPSAwKSB7XHJcblx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdC8vIOWmguaenOaYr01URCxRVEQsWVREIOWImemcgOimgeaKiuW9k+WJjemYtuauteS7peWJjeeahOaJgOacieaVsOaNrui/m+ihjOaxh+aAu++8jOWKoOWFpeiuoeeul1xyXG5cdFx0XHRpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcclxuXHRcdFx0XHR2YWx1ZXMudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRhbW91bnQ6IC1iZWZvcmVTdGFydE5BVkFkaiwgLy8g5byA5aeL55qE5pWw5o2u6ZyA6KaB5Y+W5Y+NXHJcblx0XHRcdFx0XHRkYXRlOiB0aGlzLnBiZi50aW1lKHN0YXJ0RGF0ZSksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJiZWZvcmVTdGFydFZhbHVlczpcIiwgYmVmb3JlU3RhcnRWYWx1ZXMpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcInZhbHVlczpcIiwgdmFsdWVzKTtcclxuXHRcdFx0aWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0bGV0IGd1ZXNzID0gMC4xO1xyXG5cdFx0XHRcdGNvbnN0IHN1bUFtb3VudCA9IHZhbHVlc1xyXG5cdFx0XHRcdFx0Lm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpXHJcblx0XHRcdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMCk7XHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA8IDApIHtcclxuXHRcdFx0XHRcdGd1ZXNzID0gLTAuMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly9TTVAyLTIyNDkgZml4ZWQgdGhlIGJpZyBpcnIgaXNzdWVcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50ID09PSAwKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVJdGVtcyA9IHZhbHVlcy5zbGljZSgwLCB2YWx1ZXMubGVuZ3RoIC0gMSk7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpO1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5kYXRlKTtcclxuXHRcdFx0XHRcdGNvbnN0IGxhc3RJdGVtID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXTtcclxuXHRcdFx0XHRcdGNvbnN0IG5hdkFkanVzdCA9IGxhc3RJdGVtLmFtb3VudDtcclxuXHRcdFx0XHRcdGNvbnN0IGxhdGVzdERhdGUgPSBsYXN0SXRlbS5kYXRlO1xyXG5cdFx0XHRcdFx0bGV0IGlyciA9XHJcblx0XHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuRXhjZWxGb3JtdWxhcy5fQ2FsY3VsYXRlWGlycihcclxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0ZGF0ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0bmF2QWRqdXN0LFxyXG5cdFx0XHRcdFx0XHRcdGxhdGVzdERhdGVcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyBcIlwiIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vICBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tCAmJiBTTVAyLTE2NjgzIFZBUlxyXG5cdFx0aWYgKFxyXG5cdFx0XHRbXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVUV1JNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVFdSWVREXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTVcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85NVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk1XCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiPT09PT09PT09PT09PT09PT09PT09PT09PT1cIik7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiYXJnczpcIiwgYXJncyk7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdGxldCB0aW1lUmFuZ2U7XHJcblx0XHRcdHN3aXRjaCAoYXJncy5hZ2dyZWdhdGVUeXBlKSB7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUk1URFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJNVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSTVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcIm1vbnRoXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVFdSUVREXCI6XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVZBUlFURF85OVwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJRVERfOTVcIjpcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSA9IFwicXVhcnRlclwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUllURFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJZVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSWVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcInllYXJcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107IC8vIOi/meS4qumYtuauteeahOe0r+iuoembhuWQiFxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRbdmFsdWVGaWVsZF06IGFyZ3MuY2VsbFNldHNbaV1bdmFsdWVGaWVsZF0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g5aaC5p6cYXNPZkRhdGXkuI3mmK8g5pys5pyIL+Wto+W6pi/lubQg55qE5pyA5ZCO5LiA5aSp77yM6YO95piv5oiq6IezIOS4iuS4quaciC/lraPluqYv5bm0IOeahOacgOWQjuS4gOWkqeeahOaVsOaNruWOu+iuoeeul1xyXG5cdFx0XHRsZXQgX2FzT2ZEYXRlID0gbW9tZW50KGFzT2ZEYXRlKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJfYXNPZkRhdGU6XCIsIF9hc09mRGF0ZSk7XHJcblx0XHRcdGxldCBpc0VuZE9mUGVyaW9kID0gKHVuaXQpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFx0X2FzT2ZEYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgPT09XHJcblx0XHRcdFx0XHRfYXNPZkRhdGUuZW5kT2YodW5pdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH07XHJcblx0XHRcdGxldCBlbmREYXRlID0gaXNFbmRPZlBlcmlvZCh0aW1lUmFuZ2UpXHJcblx0XHRcdFx0PyBtb21lbnQoYXNPZkRhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIilcclxuXHRcdFx0XHQ6IG1vbWVudChhc09mRGF0ZSlcclxuXHRcdFx0XHRcdFx0LnN1YnRyYWN0KDEsIHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmVuZE9mKHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImVuZERhdGU6XCIsIGVuZERhdGUpO1xyXG5cdFx0XHR2YWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKChpdGVtKSA9PlxyXG5cdFx0XHRcdG1vbWVudChpdGVtLmRhdGUpLmlzU2FtZU9yQmVmb3JlKGVuZERhdGUpXHJcblx0XHRcdCk7XHJcblx0XHRcdHZhbHVlcyA9IHNvcnRCeSh2YWx1ZXMsIFwiZGF0ZVwiKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJ2YWx1ZXM6XCIsIHZhbHVlcyk7XHJcblxyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0gdGhpcy5nZXRUaW1lUmFuZ2VzKFxyXG5cdFx0XHRcdFx0dmFsdWVzLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSxcclxuXHRcdFx0XHRcdFwiZGF0ZVwiXHJcblx0XHRcdFx0KTsgLy8g5ZCE5Liq6Zi25q6155qE5pWw5o2uXHJcblx0XHRcdFx0bGV0IHJlc3VsdFRvdGFsID0ge307IC8vIOWQhOS4qumYtuauteaAu+WSjFxyXG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcCBpbiByZXN1bHQpIHtcclxuXHRcdFx0XHRcdHJlc3VsdFRvdGFsW3Byb3BdID0gcmVzdWx0W3Byb3BdLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGFjYyArIChjdXJbdmFsdWVGaWVsZF0gfHwgMCk7XHJcblx0XHRcdFx0XHR9LCAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHQ6XCIsIHJlc3VsdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHRUb3RhbDpcIiwgcmVzdWx0VG90YWwpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBjdW11bGF0aXZlU3VtID0ge307IC8vIOWQhOS4qumYtuautee0r+iuoeWSjFxyXG5cdFx0XHRcdGxldCBzdW0gPSAwO1xyXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdFRvdGFsKSkge1xyXG5cdFx0XHRcdFx0c3VtICs9IHJlc3VsdFRvdGFsW2tleV07XHJcblx0XHRcdFx0XHRjdW11bGF0aXZlU3VtW2Ake2tleX1gXSA9IHN1bTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJjdW11bGF0aXZlU3VtOlwiLCBjdW11bGF0aXZlU3VtKTtcclxuXHJcblx0XHRcdFx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1bXVsYXRpdmVTdW0pO1xyXG5cdFx0XHRcdGxldCB0d3JMaXN0ID0gW107XHJcblx0XHRcdFx0Ly8g6YGN5Y6G5q+P5Lik5Liq6Zi25q61IOiuoeeul1RXUlxyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGtleTEgPSBrZXlzW2ldO1xyXG5cdFx0XHRcdFx0Y29uc3Qga2V5MiA9IGtleXNbaSArIDFdO1xyXG5cclxuXHRcdFx0XHRcdC8vIOiuoeeul+S4pOS4qumYtuauteS5i+mXtOeahOmAkuWinumHjywg5Ye65pWw5LiN6IO95Li6MFxyXG5cdFx0XHRcdFx0aWYgKGN1bXVsYXRpdmVTdW1ba2V5MV0gIT0gMCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmNyZW1lbnQgPVxyXG5cdFx0XHRcdFx0XHRcdGN1bXVsYXRpdmVTdW1ba2V5Ml0gLSBjdW11bGF0aXZlU3VtW2tleTFdO1xyXG5cdFx0XHRcdFx0XHRsZXQgdHdyID0gaW5jcmVtZW50IC8gY3VtdWxhdGl2ZVN1bVtrZXkxXTtcclxuXHRcdFx0XHRcdFx0dHdyTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRkYXRlOiBrZXkyLFxyXG5cdFx0XHRcdFx0XHRcdHR3cjogdHdyLFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g6K6h566XQXZlcmFnZSBUV1JcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcInR3ckxpc3Q6XCIsIHR3ckxpc3QpO1xyXG5cdFx0XHRcdGxldCBhdmVyYWdlVFdSID0gdGhpcy5jYWxjdWxhdGVHcm93dGhSYXRlKFxyXG5cdFx0XHRcdFx0dHdyTGlzdC5tYXAoKHgpID0+IHgudHdyKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCLorqHnrpdBdmVyYWdlIFRXUjpcIiwgYXZlcmFnZVRXUik7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0W1xyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUk1URFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUllURFwiLFxyXG5cdFx0XHRcdFx0XS5pbmNsdWRlcyhhcmdzLmFnZ3JlZ2F0ZVR5cGUpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tFxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdGlzTmFOKGF2ZXJhZ2VUV1IpIHx8IGF2ZXJhZ2VUV1IgPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdDogYXZlcmFnZVRXUi50b0ZpeGVkKDQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoaXNOYU4oYXZlcmFnZVRXUikgfHwgYXZlcmFnZVRXUiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gU01QMi0xNjY4MyBWQVIg5Yy65YiGOTkl5ZKMOTUlXHJcblx0XHRcdFx0XHRcdGxldCBaU2NvcmUgPSBbXHJcblx0XHRcdFx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0XHRcdFx0XHRcdD8gMi4zM1xyXG5cdFx0XHRcdFx0XHRcdDogMS42NTtcclxuXHRcdFx0XHRcdFx0aWYgKHR3ckxpc3QubGVuZ3RoIDwgMikge1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBTRCA9IHRoaXMuY2FsY3VsYXRlU3RhbmRhcmREZXZpYXRpb24oXHJcblx0XHRcdFx0XHRcdFx0XHR0d3JMaXN0Lm1hcCgoeCkgPT4geC50d3IpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcImNhbGN1bGF0ZVN0YW5kYXJkRGV2aWF0aW9uOlwiLCBTRCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IFZBUiA9IGF2ZXJhZ2VUV1IgLSBTRCAqIFpTY29yZTtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gVkFSLnRvRml4ZWQoNCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJhcmdzLnZhbHVlOlwiLCBhcmdzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlICYmXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRkZWxldGUgdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXTtcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdGZpZWxkLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0WzBdLmZvcm1hdENoZWNrZWRcclxuXHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZHBcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdDogXCJQMlwiLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvL1NNUDItMjcwMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJBY3R1YWxBdWRpdGVkXCIpIHtcclxuXHRcdFx0bGV0IE5BVkFkaiA9IDA7XHJcblx0XHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdFx0bGV0IGZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdGVsLmNvbE5hbWUgPT09XHJcblx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldEFnZ3JlZ2F0ZVR5cGUoXHJcblx0XHRcdFx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpO1xyXG5cdFx0XHQvL1NNUDItMjcxMyBvbmx5IGp1ZGdlIGZvciB0aGlzIGRhdGFNYXJ0KEdyb3NzTmV0KVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGUgPT09IFwiR3Jvc3NOZXRcIiB8fFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PVxyXG5cdFx0XHRcdFx0XCJDb21iaW5lZEludmVzdG1lbnRGdW5kTkNvbXBhbnlDYXNoZmxvd1wiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzLmNlbGxTZXRzW2ldW1wiSVJSQW1vdW50XCJdLFxyXG5cdFx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pID09PVxyXG5cdFx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdD8gYXNPZkRhdGVcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3MuY2VsbFNldHNbaV1bXCJBY3R1YWxBdWRpdGVkTkFWXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdC8vZmlsdGVyIHRoZSBkYXRhIGJ5IHRoZSBEYXRhVHlwZShBY3R1YWwgUmVwb3J0ZWQgQXVkaXRlZClcclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0bGV0IGFyZ3NkYXRhID0gYXJncy5jZWxsU2V0cy5maWx0ZXIoXHJcblx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdGVsLkRhdGFUeXBlID09PSBcIkFDVFVBTF9BVURJVEVEXCIgfHxcclxuXHRcdFx0XHRcdFx0ZWwuRGF0YVR5cGUgPT09IFwiUkVQT1JURURcIlxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzZGF0YS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzZGF0YVtpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3NkYXRhW2ldW1wiSVJSQWRqVmFsdWVcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGxldCBndWVzcyA9IDAuMTtcclxuXHRcdFx0XHRjb25zdCBzdW1BbW91bnQgPSB2YWx1ZXNcclxuXHRcdFx0XHRcdC5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KVxyXG5cdFx0XHRcdFx0LnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIsIDApO1xyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPCAwKSB7XHJcblx0XHRcdFx0XHRndWVzcyA9IC0wLjE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vU01QMi0yMjQ5IGZpeGVkIHRoZSBiaWcgaXJyIGlzc3VlXHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA9PT0gMCkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlSXRlbXMgPSB2YWx1ZXMuc2xpY2UoMCwgdmFsdWVzLmxlbmd0aCAtIDEpO1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KTtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0ZSk7XHJcblx0XHRcdFx0XHRjb25zdCBsYXN0SXRlbSA9IHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRjb25zdCBuYXZBZGp1c3QgPSBsYXN0SXRlbS5hbW91bnQ7XHJcblx0XHRcdFx0XHRjb25zdCBsYXRlc3REYXRlID0gbGFzdEl0ZW0uZGF0ZTtcclxuXHRcdFx0XHRcdGxldCBpcnIgPVxyXG5cdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkV4Y2VsRm9ybXVsYXMuX0NhbGN1bGF0ZVhpcnIoXHJcblx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdG5hdkFkanVzdCxcclxuXHRcdFx0XHRcdFx0XHRsYXRlc3REYXRlXHJcblx0XHRcdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlyciA9PT0gbnVsbCA/IDAgOiBpcnI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZSAmJlxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV07XHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IGFyZ3MuZmllbGROYW1lLFxyXG5cdFx0XHRcdFx0Zm9ybWF0OlxyXG5cdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0PyBmaWVsZFswXS5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UucGl2b3RUYWJsZWZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHQ6IFwiUDJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMzQxMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJSZXBvcnRlZFwiKSB7XHJcblx0XHRcdGxldCBOQVZBZGogPSAwO1xyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRlbC5jb2xOYW1lID09PVxyXG5cdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRBZ2dyZWdhdGVUeXBlKFxyXG5cdFx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGVcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PSBcIkdyb3NzTmV0XCIgfHxcclxuXHRcdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSA9PT1cclxuXHRcdFx0XHRcdFwiQ29tYmluZWRJbnZlc3RtZW50RnVuZE5Db21wYW55Q2FzaGZsb3dcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuY2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGFtb3VudDogYXJncy5jZWxsU2V0c1tpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSA9PT1cclxuXHRcdFx0XHRcdFx0XHRcIkludmFsaWQgZGF0ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW1wiUmVwb3J0ZWROQVZcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRcdGRhdGU6XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHROQVZBZGogKz0gYXJncy5jZWxsU2V0c1tpXVtcIklSUkFkalZhbHVlXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChOQVZBZGogPiAwLjAwMDEgfHwgTkFWQWRqIDwgLTAuMDAwMSkge1xyXG5cdFx0XHRcdHZhbHVlcy5wdXNoKHtcclxuXHRcdFx0XHRcdGFtb3VudDogTkFWQWRqLFxyXG5cdFx0XHRcdFx0ZGF0ZTogYXNPZkRhdGUsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVzID0gc29ydEJ5KHZhbHVlcywgXCJkYXRlXCIpO1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgZ3Vlc3MgPSAwLjE7XHJcblx0XHRcdFx0Y29uc3Qgc3VtQW1vdW50ID0gdmFsdWVzXHJcblx0XHRcdFx0XHQubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudClcclxuXHRcdFx0XHRcdC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLCAwKTtcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50IDwgMCkge1xyXG5cdFx0XHRcdFx0Z3Vlc3MgPSAtMC4xO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvL1NNUDItMjI0OSBmaXhlZCB0aGUgYmlnIGlyciBpc3N1ZVxyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPT09IDApIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUl0ZW1zID0gdmFsdWVzLnNsaWNlKDAsIHZhbHVlcy5sZW5ndGggLSAxKTtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudCk7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmRhdGUpO1xyXG5cdFx0XHRcdFx0Y29uc3QgbGFzdEl0ZW0gPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0Y29uc3QgbmF2QWRqdXN0ID0gbGFzdEl0ZW0uYW1vdW50O1xyXG5cdFx0XHRcdFx0Y29uc3QgbGF0ZXN0RGF0ZSA9IGxhc3RJdGVtLmRhdGU7XHJcblx0XHRcdFx0XHRsZXQgaXJyID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5FeGNlbEZvcm11bGFzLl9DYWxjdWxhdGVYaXJyKFxyXG5cdFx0XHRcdFx0XHRcdHZhbHVlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRkYXRlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRuYXZBZGp1c3QsXHJcblx0XHRcdFx0XHRcdFx0bGF0ZXN0RGF0ZVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyAwIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlUElDXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZURQSVwiIHx8XHJcblx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVUVlBJXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZVJWUElcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTUFjdHVhbEF1ZGl0ZWRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTVJlcG9ydGVkXCJcclxuXHRcdCkge1xyXG5cdFx0XHRsZXQgdG90YWxOdW1lcmF0b3IgPSAwO1xyXG5cdFx0XHRsZXQgdG90YWxEZW5vbWluYXRvciA9IDA7XHJcblx0XHRcdGxldCBudW1lcmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZGVub21pbmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChmaWVsZC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0Y29uc3QgZm9ybXVsYUFycmF5ID0gZmllbGRbMF0uZm9ybXVsYS5zcGxpdChcIi9cIik7XHJcblx0XHRcdFx0bnVtZXJhdG9yTmFtZSA9IGZvcm11bGFBcnJheVswXTtcclxuXHRcdFx0XHRkZW5vbWluYXRvck5hbWUgPSBmb3JtdWxhQXJyYXlbMV07XHJcblx0XHRcdH1cclxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0dG90YWxOdW1lcmF0b3IgKz0gYXJncy5jZWxsU2V0c1tqXVtudW1lcmF0b3JOYW1lXTtcclxuXHRcdFx0XHR0b3RhbERlbm9taW5hdG9yICs9IGFyZ3MuY2VsbFNldHNbal1bZGVub21pbmF0b3JOYW1lXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodG90YWxEZW5vbWluYXRvciAhPT0gMCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSB0b3RhbE51bWVyYXRvciAvIHRvdGFsRGVub21pbmF0b3I7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbXHJcblx0XHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TXVsdGlwbGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBcIiMjIzAuMDAneCdcIixcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiIHx8IGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZEZpc3RMYXN0KFxyXG5cdFx0XHRcdGFyZ3MsXHJcblx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlLFxyXG5cdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ291bnRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiRGlzdGluY3RDb3VudFwiXHJcblx0XHQpIHtcclxuXHRcdFx0aWYgKGFyZ3MudmFsdWUpIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZS50b0ZpeGVkKDIpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHQhYXJncy52YWx1ZSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IGZhbHNlICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiZmFsc2VcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdH1cclxuXHRcdC8vIOaWsOW7unBpdm90IHRhYmxlLCDov5jmsqHmnInorr7nva5yb3csIOmAieS6hmNvbHVtbuS5i+WQjmdyYW5kdG90YWzkvJrmnInlgLxcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIgJiZcclxuXHRcdFx0IXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMjg4OVxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93U3ViVG90YWxzID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93R3JhbmRUb3RhbHMgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8gU01QMi0zNDE2IHN0YXJ0XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0LmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlID09PSAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiLVwiO1xyXG5cdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5lbXB0eUxpc3QuaW5jbHVkZXMoYXJncy5maWVsZE5hbWUpICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgPT09IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0YXJncy5za2lwRm9ybWF0dGluZyA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcy5pbmNsdWRlcyhhcmdzLmZpZWxkTmFtZSkgJiZcclxuXHRcdFx0IWlzTmFOKE51bWJlcihhcmdzLnZhbHVlKSkgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gMCAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSBcIlwiICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT0gXCJncmFuZFRvdGFsXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSkge1xyXG5cdFx0XHRcdFx0dGhpcy50b3RhbEZvcm1hdHRlZFthcmdzLmZpZWxkTmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDAwMDAwO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDAwMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBTTVAyLTI0ODYgJiBwZXJjZW50TnVt55qEZm9ybWF06Zeu6aKYXHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcy5sZW5ndGggJiZcclxuXHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHQhaXNOYU4oTnVtYmVyKGFyZ3MudmFsdWUpKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiXCIgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gbnVsbFxyXG5cdFx0KSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09IFwiZ3JhbmRUb3RhbFwiICYmXHJcblx0XHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMudG90YWxGb3JtYXR0ZWRbYXJncy5maWVsZE5hbWVdKSB7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSA9IHRydWU7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIgJiZcclxuXHRcdFx0IU51bWJlci5pc05hTihhcmdzLnZhbHVlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3MudmFsdWUgPSBOdW1iZXIoYXJncy52YWx1ZSkudG9GaXhlZCgyKTtcclxuXHRcdH1cclxuXHRcdC8vIFNNUDItMzQxNiBlbmRcclxuXHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjYWxjdWxhdGVkRmlzdExhc3QoYXJncywgYWdncmVnYXRlVHlwZSwgZmllbGROYW1lKSB7XHJcblx0XHRpZiAoIWFyZ3Mucm93LmFjdHVhbFRleHQpIGFyZ3Mucm93LmFjdHVhbFRleHQgPSBhcmdzLnJvdy5mb3JtYXR0ZWRUZXh0O1xyXG5cdFx0aWYgKCFhcmdzLmNvbHVtbi5hY3R1YWxUZXh0KVxyXG5cdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ID0gYXJncy5jb2x1bW4uZm9ybWF0dGVkVGV4dDtcclxuXHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0KGVsKSA9PiBlbC5jb2xOYW1lID09PSBmaWVsZE5hbWVcclxuXHRcdClbMF07XHJcblxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwidmFsdWVcIiAmJiAhYXJncy5yb3cuaGFzQ2hpbGQpIHtcclxuXHRcdFx0aWYgKGFyZ3MuY2VsbFNldHNbMF0pIHtcclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiKSB7XHJcblx0XHRcdFx0XHRmb3IgKFxyXG5cdFx0XHRcdFx0XHRsZXQgZmlyc3RJbmRleCA9IDA7XHJcblx0XHRcdFx0XHRcdGZpcnN0SW5kZXggPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDtcclxuXHRcdFx0XHRcdFx0Zmlyc3RJbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbZmlyc3RJbmRleF1bZmllbGROYW1lXTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChhZ2dyZWdhdGVUeXBlID09PSBcIkxhc3RcIikge1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGxhc3RJbmRleCA9IGFyZ3MuY2VsbFNldHMubGVuZ3RoIC0gMTtcclxuXHRcdFx0XHRcdFx0bGFzdEluZGV4ID49IDA7XHJcblx0XHRcdFx0XHRcdGxhc3RJbmRleC0tXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbbGFzdEluZGV4XVtmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm51bWJlclwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm11bHRpcGxlXCIgfHxcclxuXHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHQhTnVtYmVyKHRoaXMuZ3JhbmRUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKE51bWJlcih0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSAhPT0gXCJDYWxjdWxhdGVkRmllbGRcIikge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdICs9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdCFOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArIGFyZ3Mucm93LmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XSArPSBOdW1iZXIoYXJncy52YWx1ZSk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8vIFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lIOihqOekuihjZWxsOiBhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJiBhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcInZhbHVlXCIpXHJcblx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0IU51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdF1cclxuXHRcdFx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdF0gKz0gTnVtYmVyKGFyZ3MudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fCBhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT09IFwic3RyaW5nXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PT0gXCJudmFyY2hhclwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdFx0XHRsZXQgY2hpbGRIZWFkZXJzID0gW107XHJcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0ZVR5cGUgPT09IFwiRmlyc3RcIikge1xyXG5cdFx0XHRcdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0XHRcdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7XHJcblx0XHRcdFx0XHRcdGluZGV4IDwgcm93cy5sZW5ndGg7XHJcblx0XHRcdFx0XHRcdGluZGV4KytcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9IE51bWJlcihfQ2VsbFNldHNbMF1bZmllbGROYW1lXSkgfHwgMDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0XHRcdGxldCBncm91cE5hbWVBcnJheXMgPSBbXTtcclxuXHRcdFx0XHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdFx0XHRcdGZvciAoXHJcblx0XHRcdFx0XHRcdGxldCBpbmRleCA9IGFyZ3Mucm93LmxldmVsO1xyXG5cdFx0XHRcdFx0XHRpbmRleCA8IHJvd3MubGVuZ3RoO1xyXG5cdFx0XHRcdFx0XHRpbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLnB1c2gocm93c1tpbmRleF0ubmFtZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gYXJncy5jZWxsU2V0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9XHJcblx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdF9DZWxsU2V0c1tfQ2VsbFNldHMubGVuZ3RoIC0gMV1bZmllbGROYW1lXVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fCAwO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoYXJncy5jb2x1bW4uYWN0dWFsVGV4dCAhPT0gXCJHcmFuZCBUb3RhbFwiKVxyXG5cdFx0XHRcdFx0dGhpcy5jb2x1bW5UZXh0cy5wdXNoKGFyZ3MuY29sdW1uLmFjdHVhbFRleHQpO1xyXG5cclxuXHRcdFx0XHRpZiAoIXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFOdW1iZXIodGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oTnVtYmVyKHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0gPSAwO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSArPSBOdW1iZXIodmFsdWUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHR0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5jb2x1bW5zLmxlbmd0aCA9PSAxXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW4uYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdF0gKz0gTnVtYmVyKHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gLS0tPiBhbGxEYXRhVmFsdWXkuK3ov5nkuKrljZXlhYPmoLznmoTlgLzkuI3mraPnoa5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgKyBcIkdyYW5kIFRvdGFsXCIgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8g5oqK5YmN6L656L+Z5LiqZmllbGTnmoTlh6DliJdzdWJ0b3RhbOWKoOi1t+adpVxyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbHVtblRleHRzID0gdW5pcUJ5KHRoaXMuY29sdW1uVGV4dHMsIChlbCkgPT4gZWwpO1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsID0gMDtcclxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtblRleHRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMuY29sdW1uVGV4dHNbaV07XHJcblx0XHRcdFx0XHRcdFx0dmFsICs9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGVsZW1lbnQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdF07XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJzdHJpbmdcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwibnZhcmNoYXJcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRldGltZVwiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmFsbERhdGFWYWx1ZSAmJiB0aGlzLmFsbERhdGFWYWx1ZS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRpZiAocm93T2Jqcykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzQXJyID0gSlNPTi5wYXJzZShcclxuXHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgb2JqQXJyID0gcm93T2Jqc0Fyci5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVsLmFjdHVhbFRleHQgPT0gZmllbGROYW1lICYmIGVsLmlzR3JhbmRTdW1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoYXJncy5jb2x1bW5DZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIpIHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgcm93T2Jqc0FyciA9IEpTT04ucGFyc2UoXHJcblx0XHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IG9iakFyciA9IHJvd09ianNBcnIuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbC5pc0dyYW5kU3VtXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9iakFyciAmJiBvYmpBcnIubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRPYmplY3Qua2V5cyh0aGlzLmdyYW5kVG90YWxzKS5pbmNsdWRlcyhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQvLyBpZiAoXHJcblx0XHRcdFx0XHRcdC8vIFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQvLyApIHtcclxuXHRcdFx0XHRcdFx0Ly8gXHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0Ly8gXHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdC8vIFx0XTtcclxuXHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5hbGxEYXRhVmFsdWUgJiYgdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hbGxEYXRhVmFsdWVbdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGxldCBvYmpBcnIgPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bSAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRlbC5jb2x1bW5IZWFkZXJzID09IGFyZ3MuY29sdW1uLmFjdHVhbFRleHRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0aGlzLmZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpO1xyXG5cdFx0cmV0dXJuIGFyZ3MudmFsdWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpIHtcclxuXHRcdHRoaXMuY29uZmlnRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdGlmIChmaWVsZC5jb2xOYW1lID09IGZpZWxkTmFtZSkge1xyXG5cdFx0XHRcdHN3aXRjaCAoZmllbGQuZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJkYXRlXCI6XHJcblx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUpIGFyZ3MudmFsdWUgPSBuZXcgRGF0ZShhcmdzLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRleGNsdWRlRmllbGRzKGZpZWxkcywgZGF0YSkge1xyXG5cdFx0bGV0IG5hbWVhcnJheSA9IFtdO1xyXG5cdFx0bGV0IGFycmF5ID0gW107XHJcblx0XHRmb3IgKGxldCBwcm9wIGluIGRhdGEpIHtcclxuXHRcdFx0YXJyYXkucHVzaChwcm9wKTtcclxuXHRcdH1cclxuXHRcdGZvciAobGV0IGl0ZW0gb2YgZmllbGRzKSB7XHJcblx0XHRcdG5hbWVhcnJheS5wdXNoKGl0ZW0uY29sTmFtZSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMgPSBkaWZmZXJlbmNlV2l0aChhcnJheSwgbmFtZWFycmF5KTtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5leGNsdWRlRmllbGRzLmxlbmd0aCAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzICYmXHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmV4Y2x1ZGVGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCBlbCA9IHRoaXMuZXhjbHVkZUZpZWxkc1tpXTtcclxuXHRcdFx0XHRpZiAoc3RhcnRzV2l0aChlbCwgdGhpcy5jb25maWcuZ3JvdXBTZXR0aW5nc1swXS5uYW1lICsgXCJfXCIpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMuc3BsaWNlKGksIDEpO1xyXG5cdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJbmZvKCkge1xyXG5cdFx0dGhpcy5kYXRlUGlwZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGF0ZVBpcGVcIik7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuXHRcdEwxMG4ubG9hZCh7XHJcblx0XHRcdFwiZW4tVVNcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR6aDoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcInpoLUhhbnQtSEtcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRqYToge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRrbzoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRmcjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgb25GaWVsZERyb3AoYXJnczogRmllbGREcm9wRXZlbnRBcmdzKSB7XHJcblx0XHQvL2NoYW5nZSB0aGUgY2FsY3VhbHRlRmllbGQgbWV0aG9kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBjYWxjdWxhdGVcclxuXHRcdGNvbnN0IGNhbGN1YWx0ZUZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZmllbGROYW1lICYmIGVsLmlzQ2FsY3VsYXRlZEZpZWxkXHJcblx0XHQpO1xyXG5cdFx0aWYgKGNhbGN1YWx0ZUZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJncy5kcm9wRmllbGQudHlwZSA9XHJcblx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRDYWxjdWxhdGVNZXRob2QoXHJcblx0XHRcdFx0XHRjYWxjdWFsdGVGaWVsZFswXS5jb2xOYW1lXHJcblx0XHRcdFx0KSBhcyBhbnk7XHJcblx0XHRcdGFyZ3MuZHJvcEZpZWxkLmNhcHRpb24gPSBhcmdzLmRyb3BGaWVsZC5jYXB0aW9uXHJcblx0XHRcdFx0LnJlcGxhY2UoXCJDYWxjdWxhdGVcIiwgXCJcIilcclxuXHRcdFx0XHQudHJpbSgpO1xyXG5cdFx0fVxyXG5cdFx0Zm9yIChcclxuXHRcdFx0bGV0IGkgPSAwO1xyXG5cdFx0XHRpIDwgYXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3MubGVuZ3RoO1xyXG5cdFx0XHRpKytcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3NbaV0ubmFtZSA9PT1cclxuXHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lICYmXHJcblx0XHRcdFx0YXJncy5kcm9wQXhpcyA9PT0gXCJcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5maWx0ZXJTZXR0aW5ncy5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJTZXR0aW5ncyA9IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNyZWF0ZUJ1dHRvblRleHQoZmllbGQsIGksIGF4aXMsIHZhbHVlUG9zKSB7XHJcblx0XHRsZXQgYnV0dG9uVGV4dDogSFRNTEVsZW1lbnQ7XHJcblx0XHRsZXQgYWdncmVnYXRpb246IHN0cmluZztcclxuXHRcdGxldCBmaWx0ZXJNZW06IHN0cmluZztcclxuXHRcdGlmIChheGlzID09PSBcImZpbHRlcnNcIikge1xyXG5cdFx0XHRmaWx0ZXJNZW0gPSAoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUgYXMgYW55XHJcblx0XHRcdCkudXBkYXRlQnV0dG9udGV4dChmaWVsZFtpXS5uYW1lKTtcclxuXHRcdH1cclxuXHRcdGxldCBlbmdpbmVNb2R1bGUgPSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZTtcclxuXHRcdGlmIChlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0YWdncmVnYXRpb24gPSBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLmFnZ3JlZ2F0ZVR5cGU7XHJcblx0XHRcdGFnZ3JlZ2F0aW9uID1cclxuXHRcdFx0XHRhZ2dyZWdhdGlvbiA9PT0gXCJTdW1cIlxyXG5cdFx0XHRcdFx0PyBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLnR5cGUgIT09IFwibnVtYmVyXCJcclxuXHRcdFx0XHRcdFx0PyBcIkNvdW50XCJcclxuXHRcdFx0XHRcdFx0OiBcIlN1bVwiXHJcblx0XHRcdFx0XHQ6IGFnZ3JlZ2F0aW9uO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHRleHQ6IHN0cmluZyA9IGZpZWxkW2ldLmNhcHRpb24gPyBmaWVsZFtpXS5jYXB0aW9uIDogZmllbGRbaV0ubmFtZTtcclxuXHRcdGJ1dHRvblRleHQgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XHJcblx0XHRcdGF0dHJzOiB7XHJcblx0XHRcdFx0dGl0bGU6XHJcblx0XHRcdFx0XHRheGlzID09PSBcImZpbHRlcnNcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHQgKyBcIiAoXCIgKyBmaWx0ZXJNZW0gKyBcIilcIlxyXG5cdFx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdFx0LnNob3dBZ2dyZWdhdGlvbk9uVmFsdWVGaWVsZCB8fFxyXG5cdFx0XHRcdFx0XHQgIGF4aXMgIT09IFwidmFsdWVzXCIgfHxcclxuXHRcdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHRcclxuXHRcdFx0XHRcdFx0OiB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChhZ2dyZWdhdGlvbikgK1xyXG5cdFx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdFx0ICB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChcIm9mXCIpICtcclxuXHRcdFx0XHRcdFx0ICBcIiBcIiArXHJcblx0XHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdFx0XHR0YWJpbmRleDogXCItMVwiLFxyXG5cdFx0XHRcdFwiYXJpYS1kaXNhYmxlZFwiOiBcImZhbHNlXCIsXHJcblx0XHRcdFx0b25jb250ZXh0bWVudTogXCJyZXR1cm4gZmFsc2U7XCIsXHJcblx0XHRcdFx0XCJkYXRhLXR5cGVcIjogdmFsdWVQb3MgPT09IGkgPyBcIlwiIDogYWdncmVnYXRpb24sXHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzTmFtZTpcclxuXHRcdFx0XHRcImUtY29udGVudFwiICtcclxuXHRcdFx0XHRcIiBcIiArXHJcblx0XHRcdFx0KHRoaXMucGl2b3RPYmouZ2V0TW9kdWxlTmFtZSgpID09PSBcInBpdm90dmlld1wiXHJcblx0XHRcdFx0XHQ/IHRoaXMucGl2b3RPYmouZ3JvdXBpbmdCYXJTZXR0aW5ncy5hbGxvd0RyYWdBbmREcm9wICYmXHJcblx0XHRcdFx0XHQgIGZpZWxkW2ldLmFsbG93RHJhZ0FuZERyb3BcclxuXHRcdFx0XHRcdFx0PyBcIlwiXHJcblx0XHRcdFx0XHRcdDogXCJlLWRpc2FibGUtZHJhZ1wiXHJcblx0XHRcdFx0XHQ6IFwiXCIpLFxyXG5cdFx0XHRpbm5lckhUTUw6XHJcblx0XHRcdFx0YXhpcyA9PT0gXCJmaWx0ZXJzXCJcclxuXHRcdFx0XHRcdD8gdGV4dCArIFwiIChcIiArIGZpbHRlck1lbSArIFwiKVwiXHJcblx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdC5zaG93QWdncmVnYXRpb25PblZhbHVlRmllbGQgfHxcclxuXHRcdFx0XHRcdCAgYXhpcyAhPT0gXCJ2YWx1ZXNcIiB8fFxyXG5cdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0PyB0ZXh0XHJcblx0XHRcdFx0XHQ6IHRoaXMucGl2b3RPYmoubG9jYWxlT2JqLmdldENvbnN0YW50KGFnZ3JlZ2F0aW9uKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGhpcy5waXZvdE9iai5sb2NhbGVPYmouZ2V0Q29uc3RhbnQoXCJvZlwiKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIGJ1dHRvblRleHQ7XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5Yib5bu6XHJcblx0cHVibGljIGNhbGN1bGF0ZWRGaWVsZENyZWF0ZShhcmdzOiBDYWxjdWxhdGVkRmllbGRDcmVhdGVFdmVudEFyZ3MpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQubmFtZSAhPT0gXCJcIiAmJlxyXG5cdFx0XHRhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLnRyaW0oKSAhPT0gXCJcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBpbmRleCA9XHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLmZpbmRJbmRleChcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwubmFtZSA9PT0gYXJncy5jYWxjdWxhdGVkRmllbGQubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcclxuXHRcdFx0XHRpZiAoYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybWF0U3RyaW5nID09PSBcIlwiKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3NbXHJcblx0XHRcdFx0XHRcdGluZGV4XHJcblx0XHRcdFx0XHRdLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzW1xyXG5cdFx0XHRcdFx0XHRpbmRleFxyXG5cdFx0XHRcdFx0XS5mb3JtYXRTdHJpbmcgPSBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmcgPT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGFyZ3MuY2FsY3VsYXRlZEZpZWxkLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8g56e76Zmk6YeN5aSNXHJcblx0XHRcdGxldCBmSW5kZXggPSB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdChmKSA9PiBmLm5hbWUgPT09IGFyZ3MuY2FsY3VsYXRlZEZpZWxkLm5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGZJbmRleCA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnNwbGljZShmSW5kZXgsIDEpO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOWMuemFjei/kOeul+espiBGaXJzdCB8fCBMYXN0XHJcblx0XHRcdGxldCBmb3JtdWxhU3RyID0gYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYTtcclxuXHRcdFx0bGV0IHJlZzEgPSAvXCJGaXJzdFxcKCguKz8pXFwpXCIvZztcclxuXHRcdFx0bGV0IHJlZzIgPSAvXCJMYXN0XFwoKC4rPylcXClcIi9nO1xyXG5cdFx0XHRpZiAocmVnMS50ZXN0KGZvcm11bGFTdHIpIHx8IHJlZzIudGVzdChmb3JtdWxhU3RyKSkge1xyXG5cdFx0XHRcdC8vIOWIpOaWreaYr+WQpuWtmOWcqEZpcnN0IHx8IExhc3Qg6KGo6L6+5byPXHJcblx0XHRcdFx0bGV0IG1hdGNoRmlyc3RGaWVsZHMgPSBBcnJheS5mcm9tKFxyXG5cdFx0XHRcdFx0Zm9ybXVsYVN0cltcIm1hdGNoQWxsXCJdKC9cIkZpcnN0XFwoKC4rPylcXClcIi9nKSxcclxuXHRcdFx0XHRcdChtKSA9PiB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hTdHI6IG1bMF0sXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hXb3JkOiBtWzFdLFxyXG5cdFx0XHRcdFx0XHRcdHJlcGxhY2VWYWx1ZTogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRtYXRjaE1ldGhvZDogXCJGaXJzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTGFzdEZpZWxkcyA9IEFycmF5LmZyb20oXHJcblx0XHRcdFx0XHRmb3JtdWxhU3RyW1wibWF0Y2hBbGxcIl0oL1wiTGFzdFxcKCguKz8pXFwpXCIvZyksXHJcblx0XHRcdFx0XHQobSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0XHRcdG1hdGNoU3RyOiBtWzBdLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoV29yZDogbVsxXSxcclxuXHRcdFx0XHRcdFx0XHRyZXBsYWNlVmFsdWU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hNZXRob2Q6IFwiTGFzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWF4RmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNYXhcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1heFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWluRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNaW5cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1pblwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoU3VtRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJTdW1cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIlN1bVwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoQXZnRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJBdmdcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIkF2Z1wiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0bWF0Y2hGaXJzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdCkgJiZcclxuXHRcdFx0XHRcdG1hdGNoTGFzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdC8vIOWIpOaWrUZpcnN05ZKMTGFzdOihqOi+vuW8j+WGheeahOWtl+auteaYr+WQpuWQiOazlVxyXG5cdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtdWxhLFxyXG5cdFx0XHRcdFx0XHRtYXRjaEZpZWxkczogW1xyXG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEZpcnN0RmllbGRzLFxyXG5cdFx0XHRcdFx0XHRcdC4uLm1hdGNoTGFzdEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1heEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1pbkZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaFN1bUZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEF2Z0ZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XSxcclxuXHRcdFx0XHRcdFx0Z3JhbmRUb3RhbDogMCxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0bGV0IGZpZWxkTmFtZSA9IChcclxuXHRcdFx0XHRcdFx0Zm9ybXVsYVN0ci5zcGxpdChcIkZpcnN0KFwiKVsxXSB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhU3RyLnNwbGl0KFwiTGFzdChcIilbMV1cclxuXHRcdFx0XHRcdCkuc3BsaXQoXCIpXCIpWzBdO1xyXG5cdFx0XHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYSA9XHJcblx0XHRcdFx0XHRcdFwiJ1xcXCJcIiArIFwiU3VtKFwiICsgZmllbGROYW1lICsgJylcIj0nICsgZm9ybXVsYVN0ciArIFwiJ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gQ2FsY3VsYXRlZCBmaWVsZOS6i+S7tu+8muWujOaIkFxyXG5cdHB1YmxpYyBhY3Rpb25Db21wbGV0ZShhcmdzKSB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRmllbGQgcmVtb3ZlZFwiKSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmZpZWxkSW5mbyAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbSAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbS50eXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0bGV0IGZpZWxkID0gYXJncy5maWVsZEluZm8uZmllbGROYW1lO1xyXG5cdFx0XHRcdC8vIFJlbW92ZSB0aGUgZGVsZXRlZCBjYWxjdWxhdGVkIGZpZWxkIGZyb20gYW4gc3RvcmVkIGFycmF5LlxyXG5cdFx0XHRcdHRoaXMuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkcyA9XHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChvYmopIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIG9iai5uYW1lICE9PSBmaWVsZDtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5byA5aeLXHJcblx0cHVibGljIGFjdGlvbkJlZ2luKGFyZ3MpIHtcclxuXHRcdGlmIChhcmdzLmFjdGlvbk5hbWUgPT09IFwiRWRpdCBjYWxjdWxhdGVkIGZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZSAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XS5mb3JtdWxhID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLmZvcm11bGE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlc2l6ZVN0b3AoYXJncykge1xyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCkge1xyXG5cdFx0XHRjb25zdCBoZWFkZXJfZmllbGQgPSB0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGguZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuaGVhZGVyVGV4dCA9PT0gYXJncy5jb2x1bW4uaGVhZGVyVGV4dFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAoaGVhZGVyX2ZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRoZWFkZXJfZmllbGRbMF0ud2lkdGggPSBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY29sdW1uc1dpZHRoLnB1c2goe1xyXG5cdFx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHRcdHdpZHRoOiBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGgucHVzaCh7XHJcblx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHR3aWR0aDogcGFyc2VJbnQoYXJncy5jb2x1bW4ud2lkdGgpLFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHBvcnRsZXQgPSB0aGlzLnBvcnRsZXQ7XHJcblx0XHRwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdGNvbnN0IGluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoKHgpID0+IHgubmV3SWQgPT09IHBvcnRsZXQubmV3SWQpO1xyXG5cdFx0aWYgKGluZGV4ID4gLTEpIHRoaXMucG9ydGxldHNbaW5kZXhdID0gcG9ydGxldDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBvbkxvYWQoKTogdm9pZCB7fVxyXG5cclxuXHRwcml2YXRlIGVuZ2luZVBvcHVsYXRlZChhcmdzKSB7XHJcblx0XHRsZXQgY2xvbmVkVmFsdWVzOiBJUGl2b3RWYWx1ZXM7XHJcblx0XHRsZXQgY3VycmVudFBpdm90VmFsdWVzOiBhbnkgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlc1xyXG5cdFx0KTtcclxuXHRcdGxldCBwYWdlU2V0dGluZ3M6IElQYWdlU2V0dGluZ3MgPVxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5wYWdlU2V0dGluZ3M7XHJcblxyXG5cdFx0Ly8gdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUucGFnZVNldHRpbmdzID0gbnVsbDtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5nZW5lcmF0ZUdyaWREYXRhKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmdlbmVyYXRlR3JpZERhdGEoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MsXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRjbG9uZWRWYWx1ZXMgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBpdm90VmFsdWVzXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlcyA9IGN1cnJlbnRQaXZvdFZhbHVlcztcclxuXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBhZ2VTZXR0aW5ncyA9IHBhZ2VTZXR0aW5ncztcclxuXHJcblx0XHRcdC8vIEhlcmUgXCJjbG9uZWRWYWx1ZXNcIiBjb250YWlucyB0aGUgd2hvbGUgcGl2b3QgdmFsdWVzLlxyXG5cdFx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IGNsb25lZFZhbHVlcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0Q2xvbmVkUGl2b3RWYWx1ZXMocGl2b3RWYWx1ZXM6IElQaXZvdFZhbHVlcyk6IElQaXZvdFZhbHVlcyB7XHJcblx0XHRsZXQgY2xvbmVkU2V0czogSVBpdm90VmFsdWVzID0gW107XHJcblx0XHRpZiAocGl2b3RWYWx1ZXMgJiYgcGl2b3RWYWx1ZXMubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBwaXZvdFZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXSkge1xyXG5cdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXSA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHBpdm90VmFsdWVzW2ldLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXVtqXSkge1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlICovXHJcblx0XHRcdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXVtqXSA9IHRoaXMuZ2V0Q2xvbmVkUGl2b3RWYWx1ZU9iaihcclxuXHRcdFx0XHRcdFx0XHRcdHBpdm90VmFsdWVzW2ldW2pdIGFzIHsgW2tleTogc3RyaW5nXTogT2JqZWN0IH1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgKi9cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNsb25lZFNldHM7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENsb25lZFBpdm90VmFsdWVPYmooZGF0YTogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSk6IHtcclxuXHRcdFtrZXk6IHN0cmluZ106IE9iamVjdDtcclxuXHR9IHtcclxuXHRcdGxldCBrZXlQb3M6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgZnJhbWVkU2V0OiBhbnkgPSB7fTtcclxuXHRcdGlmICghKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSkge1xyXG5cdFx0XHRsZXQgZmllbGRzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGRhdGEpO1xyXG5cdFx0XHR3aGlsZSAoa2V5UG9zIDwgZmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdGZyYW1lZFNldFtmaWVsZHNba2V5UG9zXV0gPSBkYXRhW2ZpZWxkc1trZXlQb3NdXTtcclxuXHRcdFx0XHRrZXlQb3MrKztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZnJhbWVkU2V0ID0gZGF0YTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBmcmFtZWRTZXQ7XHJcblx0fVxyXG5cclxuXHQvLyNyZWdpb24gRmlsdGVyaW5nIHRoZSBUcmVlTm9kZXNcclxuXHRwcml2YXRlIHNlYXJjaE5vZGVzKGFyZ3MpIHtcclxuXHRcdGxldCBfdGV4dCA9IGFyZ3MubWFza2VkVmFsdWU7XHJcblx0XHRsZXQgcHJlZGljYXRzID0gW10sXHJcblx0XHRcdF9hcnJheSA9IFtdLFxyXG5cdFx0XHRfZmlsdGVyID0gW107XHJcblx0XHRpZiAoX3RleHQgPT0gXCJcIikge1xyXG5cdFx0XHR0aGlzLmNoYW5nZURhdGFTb3VyY2UoXHJcblx0XHRcdFx0KCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueSkuZ2V0VHJlZURhdGEoKVxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bGV0IHByZWRpY2F0ZSA9IG5ldyBQcmVkaWNhdGUoXCJjYXB0aW9uXCIsIFwiY29udGFpbnNcIiwgX3RleHQsIHRydWUpO1xyXG5cdFx0XHRsZXQgZmlsdGVyZWRMaXN0ID0gbmV3IERhdGFNYW5hZ2VyKFxyXG5cdFx0XHRcdCgodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZSBhcyBhbnkpLmdldFRyZWVEYXRhKClcclxuXHRcdFx0KS5leGVjdXRlTG9jYWwobmV3IFF1ZXJ5KCkud2hlcmUocHJlZGljYXRlKSk7XHJcblx0XHRcdGZvciAobGV0IGogPSAwOyBqIDwgZmlsdGVyZWRMaXN0Lmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0X2ZpbHRlci5wdXNoKGZpbHRlcmVkTGlzdFtqXVtcImlkXCJdKTtcclxuXHRcdFx0XHRsZXQgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoXHJcblx0XHRcdFx0XHRmaWx0ZXJlZExpc3Rbal0sXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0X2FycmF5LmluZGV4T2YoZmlsdGVyc1tpXSkgPT0gLTEgJiZcclxuXHRcdFx0XHRcdFx0ZmlsdGVyc1tpXSAhPSBudWxsXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0X2FycmF5LnB1c2goZmlsdGVyc1tpXSk7XHJcblx0XHRcdFx0XHRcdHByZWRpY2F0cy5wdXNoKFxyXG5cdFx0XHRcdFx0XHRcdG5ldyBQcmVkaWNhdGUoXCJpZFwiLCBcImVxdWFsXCIsIGZpbHRlcnNbaV0sIGZhbHNlKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAocHJlZGljYXRzLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VEYXRhU291cmNlKFtdKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRsZXQgcXVlcnkgPSBuZXcgUXVlcnkoKS53aGVyZShQcmVkaWNhdGUub3IocHJlZGljYXRzKSk7XHJcblx0XHRcdFx0bGV0IG5ld0xpc3QgPSBuZXcgRGF0YU1hbmFnZXIoXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KS5leGVjdXRlTG9jYWwocXVlcnkpO1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShuZXdMaXN0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9GaW5kIHRoZSBQYXJlbnQgTm9kZXMgZm9yIGNvcnJlc3BvbmRpbmcgY2hpbGRzXHJcblx0cHVibGljIGdldEZpbHRlckl0ZW1zKGZMaXN0LCBsaXN0KSB7XHJcblx0XHRsZXQgbm9kZXMgPSBbXTtcclxuXHRcdG5vZGVzLnB1c2goZkxpc3RbXCJpZFwiXSk7XHJcblx0XHRsZXQgcXVlcnkyID0gbmV3IFF1ZXJ5KCkud2hlcmUoXCJpZFwiLCBcImVxdWFsXCIsIGZMaXN0W1wicGlkXCJdLCBmYWxzZSk7XHJcblx0XHRsZXQgZkxpc3QxID0gbmV3IERhdGFNYW5hZ2VyKGxpc3QpLmV4ZWN1dGVMb2NhbChxdWVyeTIpO1xyXG5cdFx0aWYgKGZMaXN0MS5sZW5ndGggIT0gMCkge1xyXG5cdFx0XHRsZXQgcE5vZGUgPSB0aGlzLmdldEZpbHRlckl0ZW1zKGZMaXN0MVswXSwgbGlzdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcE5vZGUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAobm9kZXMuaW5kZXhPZihwTm9kZVtpXSkgPT0gLTEgJiYgcE5vZGVbaV0gIT0gbnVsbClcclxuXHRcdFx0XHRcdG5vZGVzLnB1c2gocE5vZGVbaV0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBub2RlcztcclxuXHRcdH1cclxuXHRcdHJldHVybiBub2RlcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBjcmVhdGVkKGFyZ3M6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmICF0aGlzLmZpZWxkbGlzdE9iai5lbmdpbmVNb2R1bGUuZmllbGRzKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVuZ2luZU1vZHVsZS5maWVsZHMgPSBbXTtcclxuXHRcdH1cclxuXHRcdGxldCBzZWFyY2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XHJcblx0XHRzZWFyY2guaWQgPSBcInBpdm90U2VhcmNoQm94XCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkO1xyXG5cdFx0bGV0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XCIjXCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkICsgXCJfQ29udGFpbmVyIC5lLWZpZWxkLXRhYmxlXCJcclxuXHRcdCk7XHJcblx0XHRpZiAoZWwpIGVsLnByZXBlbmQoc2VhcmNoKTtcclxuXHRcdHRoaXMucGl2b3RTZWFyY2hCb3ggPSBuZXcgTWFza2VkVGV4dEJveCh7XHJcblx0XHRcdHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0aW9uLlNFQVJDSCB8fCBcIi5TRUFSQ0hcIixcclxuXHRcdFx0Y3NzQ2xhc3M6IFwicGl2b3Qtc2VhcmNoXCIsXHJcblx0XHRcdGNoYW5nZTogdGhpcy5zZWFyY2hOb2Rlcy5iaW5kKHRoaXMpLFxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnBpdm90U2VhcmNoQm94LmFwcGVuZFRvKFxyXG5cdFx0XHRcIiNwaXZvdFNlYXJjaEJveFwiICsgdGhpcy5maWVsZGxpc3RPYmouZWxlbWVudC5pZFxyXG5cdFx0KTtcclxuXHJcblx0XHQvLyBORVcgRGFzaGJvYXJkIOeCueWHu1wiYXBwbHlcIuaXtu+8jOivt+axguaWsOaVsOaNrlxyXG5cdFx0bGV0IGFwcGx5QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVsZW1lbnQuaWQgKyBcIl9EZWZlclVwZGF0ZUJ1dHRvbjFcIlxyXG5cdFx0KTtcclxuXHRcdGFwcGx5QnRuICYmXHJcblx0XHRcdGFwcGx5QnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0RGF0YUJ5UG9ydGxldHNOZXcoXHJcblx0XHRcdFx0XHRbdGhpcy5wb3J0bGV0XSxcclxuXHRcdFx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkLFxyXG5cdFx0XHRcdFx0ZmFsc2VcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBmaWVsZExpc3RSZWZyZXNoZWQoYXJncykge1xyXG5cdFx0aWYgKHRoaXMucGl2b3RTZWFyY2hCb3gpIHtcclxuXHRcdFx0dGhpcy5waXZvdFNlYXJjaEJveC52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShcclxuXHRcdFx0XHQodGhpcy5maWVsZGxpc3RPYmoudHJlZVZpZXdNb2R1bGUgYXMgYW55KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNoYW5nZURhdGFTb3VyY2UoZGF0YSkge1xyXG5cdFx0bGV0IGZpZWxkVGFibGUgPSAodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZS5maWVsZFRhYmxlO1xyXG5cdFx0aWYgKGZpZWxkVGFibGUpIHtcclxuXHRcdFx0ZmllbGRUYWJsZS5maWVsZHMgPSB7XHJcblx0XHRcdFx0ZGF0YVNvdXJjZTogZGF0YSxcclxuXHRcdFx0XHRpZDogXCJpZFwiLFxyXG5cdFx0XHRcdHRleHQ6IFwiY2FwdGlvblwiLFxyXG5cdFx0XHRcdGlzQ2hlY2tlZDogXCJpc1NlbGVjdGVkXCIsXHJcblx0XHRcdFx0cGFyZW50SUQ6IFwicGlkXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJzcHJpdGVDc3NDbGFzc1wiLFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9TTVAyLTI5NTcgZml4IHRoZSBkYXRlIGlzc3VlIG9uIHRoZSByYXcgZGF0YVxyXG5cdHB1YmxpYyBkcmlsbFRocm91Z2goYXJnczogRHJpbGxUaHJvdWdoRXZlbnRBcmdzKSB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuZ3JpZENvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZ3JpZENvbHVtbnNbaV0uZmllbGRcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZGF0YVswXS5kYXRhVHlwZSA9PT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdGRhdGFbMF0uZGF0YVR5cGUgPT09IFwiZGF0ZXRpbWVcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0YXJncy5ncmlkQ29sdW1uc1tpXS50eXBlID0gXCJkYXRlXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC8vI2VuZHJlZ2lvblxyXG5cclxuXHRwcml2YXRlIHNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwob2JqLCBkYXRhLCBjb2RlKSB7XHJcblx0XHRpZiAoY29kZSA9PT0gLTEpIHtcclxuXHRcdFx0b2JqLnN0eWxlLmNvbG9yID0gZGF0YS5uZWdhRm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEubmVnYUZvbnRGYW1pbHlWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmZvbnRTaXplID0gZGF0YS5uZWdhRm9udFNpemVWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGRhdGEubmVnYUJhY2tncm91bmRDb2xvcjtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG9iai5zdHlsZS5jb2xvciA9IGRhdGEuZm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseVZhbHVlO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplVmFsdWU7XHJcblx0XHRcdG9iai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0Q29tcGFyZUNvbmRpdGlvbmFsKFxyXG5cdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRkYXRhXHJcblx0KSB7XHJcblx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMSkgPT0gMCkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuXCI6IC8vIOWkp+S6jlxyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhbk9yRXF1YWxUb1wiOiAvLyDlpKfkuo7nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikgPT09IDEpIHtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUxKSA9PT0gMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKGRhdGEuY29tcGFyZVZhbHVlMSk7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTGVzc1RoYW5cIjtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhblwiOiAvLyDlpKfkuo5cclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5PckVxdWFsVG9cIjogLy8g5aSn5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkVxdWFsc1wiOiAvLyDnrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiRXF1YWxzXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIk5vdEVxdWFsc1wiOiAvLyDkuI3nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiR3JlYXRlclRoYW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhbk9yRXF1YWxUb1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJCZXR3ZWVuXCI6IC8vIHZhbHVlMTw9IHZhbCA8PXZhbHVlMlxyXG5cdFx0XHRcdFx0aWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTIpID09PSAxKSB7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRkYXRhLmNvbXBhcmVWYWx1ZTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0Ly8gcHVzaOi/m+aVsOe7hFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTEpID09PSAtMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBkYXRhLmNvbXBhcmVTZWxlY3Q7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5cIjogLy8g5aSn5LqOXHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI6IC8vIOWkp+S6juetieS6jlxyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiQmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJFcXVhbHNcIjogLy8g562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIk5vdEVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTI7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMiA9IGRhdGEuY29tcGFyZVZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiTm90QmV0d2VlblwiOiAvLyB2YWwgPj0gdmFsdWUyLCB2YWwgPD0gdmFsdWUxXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkxlc3NUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTm90QmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRpbWVBcnJheSDmlbDnu4Tlr7nosaEgW3tcImRhdGVcIjpcIjIwMjEtMDEtMDFcIn0se1wiZGF0ZVwiOlwiMjAyMS0wMi0wMVwifV1cclxuXHQgKiBAcGFyYW0gZW5kRGF0ZSDmiKroh7Pml7bpl7RcclxuXHQgKiBAcGFyYW0gaW50ZXJ2YWwg5pe26Ze06Ze06ZqUIHllYXIgLyBxdWFydGVyIC8gbW9udGhcclxuXHQgKiBAcGFyYW0gdGltZUtleSDml7bpl7TlrZfmrrXlkI0gZGF0ZVxyXG5cdCAqIEByZXR1cm5zIOWIkuWIhuWQjueahOaXtumXtOWIhue7hOWvueixoVxyXG5cdCAqL1xyXG5cdGdldFRpbWVSYW5nZXModGltZUFycmF5LCBlbmREYXRlLCBpbnRlcnZhbCwgdGltZUtleSkge1xyXG5cdFx0Ly8g5bCG5pe26Ze05a2X56ym5Liy6L2s5o2i5Li6IG1vbWVudCDlr7nosaFcclxuXHRcdGNvbnN0IGRhdGVzID0gdGltZUFycmF5Lm1hcCgoaXRlbSkgPT4gbW9tZW50KGl0ZW1bdGltZUtleSB8fCBcImRhdGVcIl0pKTtcclxuXHJcblx0XHQvLyDliIbpmpTnrKZcclxuXHRcdGNvbnN0IGRlbGltaXRlciA9IFwiLVwiO1xyXG5cclxuXHRcdC8vIOaJvuWIsOacgOWwj+aXtumXtOWSjOacgOWkp+aXtumXtFxyXG5cdFx0Y29uc3QgbWluRGF0ZSA9IG1vbWVudC5taW4oZGF0ZXMpO1xyXG5cdFx0Y29uc3QgbWF4RGF0ZSA9IG1vbWVudChlbmREYXRlKTtcclxuXHJcblx0XHQvLyDliJ3lp4vljJbnu5Pmnpzlr7nosaFcclxuXHRcdGNvbnN0IHJlc3VsdCA9IHt9O1xyXG5cclxuXHRcdC8vIOagueaNruWFpeWPgui/m+ihjOWIkuWIhlxyXG5cdFx0aWYgKGludGVydmFsID09PSBcInllYXJcIikge1xyXG5cdFx0XHRjb25zdCBzdGFydFllYXIgPSBtaW5EYXRlLnllYXIoKTtcclxuXHRcdFx0Y29uc3QgZW5kWWVhciA9IG1heERhdGUueWVhcigpO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgeWVhciA9IHN0YXJ0WWVhcjsgeWVhciA8PSBlbmRZZWFyOyB5ZWFyKyspIHtcclxuXHRcdFx0XHRyZXN1bHRbeWVhcl0gPSBbXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0cmVzdWx0W3llYXJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIGlmIChpbnRlcnZhbCA9PT0gXCJxdWFydGVyXCIpIHtcclxuXHRcdFx0Ly8g5a2Y5YKo5a2j5bqm5a2X56ym5LiyXHJcblx0XHRcdGNvbnN0IHF1YXJ0ZXJzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrlraPluqZcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDMsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGNvbnN0IHllYXIgPSBjdXJyZW50RGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IE1hdGguY2VpbCgoY3VycmVudERhdGUubW9udGgoKSArIDEpIC8gMyk7IC8vIOiuoeeul+Wto+W6plxyXG5cdFx0XHRcdHF1YXJ0ZXJzLnB1c2goYCR7eWVhcn0ke2RlbGltaXRlcn1RJHtxdWFydGVyfWApOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5a2j5bqmXHJcblx0XHRcdHF1YXJ0ZXJzLmZvckVhY2goKHF1YXJ0ZXIsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0cmVzdWx0W3F1YXJ0ZXJdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IGRhdGUucXVhcnRlcigpOyAvLyDojrflj5blraPluqZcclxuXHRcdFx0XHRpZiAocXVhcnRlciA9PT0gMSlcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRMVwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHRcdGVsc2UgaWYgKHF1YXJ0ZXIgPT09IDIpXHJcblx0XHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIFwiUTJcIl0ucHVzaCh0aW1lQXJyYXlbaW5kZXhdKTtcclxuXHRcdFx0XHRlbHNlIGlmIChxdWFydGVyID09PSAzKVxyXG5cdFx0XHRcdFx0cmVzdWx0W3llYXIgKyBkZWxpbWl0ZXIgKyBcIlEzXCJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdFx0ZWxzZSBpZiAocXVhcnRlciA9PT0gNClcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRNFwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwibW9udGhcIikge1xyXG5cdFx0XHQvLyDlrZjlgqjmnIjku73lrZfnrKbkuLJcclxuXHRcdFx0Y29uc3QgbW9udGhzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrmnIhcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDEsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdG1vbnRocy5wdXNoKGN1cnJlbnREYXRlLmZvcm1hdChgWVlZWSR7ZGVsaW1pdGVyfU1NYCkpOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5pyI5Lu9XHJcblx0XHRcdG1vbnRocy5mb3JFYWNoKChtb250aCwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRyZXN1bHRbbW9udGhdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgbW9udGggPSAoZGF0ZS5tb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7IC8vIDAtMTFcclxuXHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIG1vbnRoXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog6K6h566X5Yeg5L2V566X5pWw5bmz5pa55pu0XHJcblx0ICogQHBhcmFtIHZhbHVlcyDmlbDnu4QgWzAsIDAsIDAuMjU3NV1cclxuXHQgKiBAcmV0dXJuc1xyXG5cdCAqL1xyXG5cdGNhbGN1bGF0ZUdyb3d0aFJhdGUodmFsdWVzKSB7XHJcblx0XHRjb25zdCBwcm9kdWN0ID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyAqICgxICsgdmFsKSwgMSk7XHJcblx0XHRpZiAocHJvZHVjdCA+PSAwKSB7XHJcblx0XHRcdHJldHVybiBNYXRoLnBvdyhwcm9kdWN0LCAxIC8gdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0fSBlbHNlIGlmIChwcm9kdWN0IDwgMCkge1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCAlIDIgPT0gMCkge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLm50aHJvb3QocHJvZHVjdCwgdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdG50aHJvb3QoeCwgbikge1xyXG5cdFx0bGV0IG5nID0gbiAlIDI7XHJcblx0XHRpZiAobmcgPT0gMSB8fCB4IDwgMCkgeCA9IC14O1xyXG5cdFx0dmFyIHIgPSBNYXRoLnBvdyh4LCAxIC8gbik7XHJcblx0XHRuID0gTWF0aC5wb3cociwgbik7XHJcblxyXG5cdFx0aWYgKE1hdGguYWJzKHggLSBuKSA8IDEgJiYgeCA+IDAgPT09IG4gPiAwKSByZXR1cm4gbmcgPyAtciA6IHI7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmoIflh4blgY/lt65cclxuXHQgKiBAcGFyYW0gdmFsdWVzIOaVsOe7hCBbMCwgMCwgLTAuNDc3NV1cclxuXHQgKiBAcmV0dXJucyAwLjI3NTY4NDc1MzUzODA0NjNcclxuXHQgKi9cclxuXHRjYWxjdWxhdGVTdGFuZGFyZERldmlhdGlvbih2YWx1ZXMpIHtcclxuXHRcdGNvbnN0IG4gPSB2YWx1ZXMubGVuZ3RoO1xyXG5cclxuXHRcdC8vIOajgOafpeaVsOaNrueCueaVsOmHj1xyXG5cdFx0aWYgKG4gPCAyKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIuiHs+WwkemcgOimgeS4pOS4quaVsOaNrueCueadpeiuoeeul+agt+acrOagh+WHhuWBj+W3rlwiKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDorqHnrpflnYflgLxcclxuXHRcdGNvbnN0IG1lYW4gPSB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjICsgdmFsLCAwKSAvIG47XHJcblxyXG5cdFx0Ly8g6K6h566X5pa55beuXHJcblx0XHRjb25zdCB2YXJpYW5jZSA9XHJcblx0XHRcdHZhbHVlcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgKyBNYXRoLnBvdyh2YWwgLSBtZWFuLCAyKSwgMCkgL1xyXG5cdFx0XHQobiAtIDEpO1xyXG5cclxuXHRcdC8vIOi/lOWbnuagh+WHhuWBj+W3rlxyXG5cdFx0cmV0dXJuIE1hdGguc3FydCh2YXJpYW5jZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
4751
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3JhaXNlLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvZGFzaGJvYXJkL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QtY2hhcnQvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUNULHVCQUF1QixFQUN2QixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVOLHVCQUF1QixFQUN2QixrQkFBa0IsRUFHbEIsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLGtCQUFrQixFQUdsQixvQkFBb0IsRUFJcEIsbUJBQW1CLEdBRW5CLE1BQU0sbUNBQW1DLENBQUM7QUFFM0MsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVELE9BQU8sRUFDTixNQUFNLEVBQ04sY0FBYyxFQUNkLFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sSUFBSSxPQUFPLEVBQ2pCLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEdBQ0osTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUNOLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsdUJBQXVCLEdBQ3ZCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9B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QUUsQ0FBQyxNQUFNLENBQUMsTUFBTTs0QkFDaEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhOzRCQUMxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDOzRCQUUzRCxLQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUM3QyxJQUNDLEVBQUUsQ0FBQyxNQUFNOzRCQUNULEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTTs0QkFDaEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhOzRCQUMxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDOzRCQUUzRCxLQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNoRCxJQUNDLEVBQUUsQ0FBQyxNQUFNOzRCQUNULEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTTs0QkFDaEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhOzRCQUMxQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUM1QyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FDM0I7NEJBRUQsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9B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Qjs7Ozs7SUFDL0IsMkNBQWU7O0lBQ2YsdURBQXdDOzs7OztJQUN4QyxrREFBMkI7Ozs7O0lBQzNCLG1EQUE0Qjs7Ozs7SUFDNUIsbURBQXVCOztJQUN2QixnREFBbUI7Ozs7O0lBQ25CLDZDQUNxQzs7SUFDckMsaURBQzZDOzs7OztJQUM3QyxnREFBeUI7Ozs7O0lBQ3pCLDhDQUF1Qjs7Ozs7SUFDdkIsaURBQTRCOzs7OztJQUM1QixrREFBMkM7Ozs7O0lBQzNDLGlEQUFxQjs7Ozs7SUFFckIsMkNBQStCOzs7OztJQUMvQixtREFBc0M7O0lBQ3RDLGtEQUdFOztJQUNGLGtEQUFxQjs7SUFDckIsb0RBRUU7Ozs7O0lBQ0YsZ0RBQXlCOzs7OztJQUN6QixpREFBMEI7Ozs7O0lBQzFCLGtEQVNFOztJQUNGLGlEQUVFOztJQUNGLHdEQU1FOzs7OztJQUNGLGdEQUF5Qjs7Ozs7SUFDekIsMkRBQTJDOzs7OztJQUMzQyw0REFBNEM7Ozs7O0lBQzVDLG1EQUdFOzs7OztJQUNGLGtEQUEyQjs7Ozs7SUFDM0Isa0RBQTJCOztJQUMzQixtREFBc0I7O0lBQ3RCLCtDQUFtQzs7SUFDbkMsZ0RBQXdCOzs7OztJQUN4QixxREFBOEI7O0lBQzlCLGdEQUFtQjs7SUFDbkIsK0NBQThCOztJQUM5Qiw2Q0FBeUI7O0lBODlDekIsbURBQW9COzs7OztJQTM5Q25CLDREQUF3RDs7Ozs7SUFDeEQscURBQTBDOzs7OztJQUMxQyx3Q0FBOEI7Ozs7O0lBQzlCLHdDQUErQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdElucHV0LFxyXG5cdE9uSW5pdCxcclxuXHRWaWV3Q2hpbGQsXHJcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdE91dHB1dCxcclxuXHRPcHRpb25hbCxcclxuXHRJbmplY3QsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7XHJcblx0SURhdGFPcHRpb25zLFxyXG5cdFBpdm90RmllbGRMaXN0Q29tcG9uZW50LFxyXG5cdFBpdm90Vmlld0NvbXBvbmVudCxcclxuXHRFbmdpbmVQb3B1bGF0ZWRFdmVudEFyZ3MsXHJcblx0SURhdGFTZXQsXHJcblx0VG9vbGJhclNlcnZpY2UsXHJcblx0RmllbGRMaXN0U2VydmljZSxcclxuXHROdW1iZXJGb3JtYXR0aW5nU2VydmljZSxcclxuXHRDYWxjdWxhdGVkRmllbGRTZXJ2aWNlLFxyXG5cdENhbGN1bGF0ZWRGaWVsZENyZWF0ZUV2ZW50QXJncyxcclxuXHRHcm91cGluZ0JhclNlcnZpY2UsXHJcblx0RmllbGREcm9wRXZlbnRBcmdzLFxyXG5cdElTb3J0LFxyXG5cdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdElQaXZvdFZhbHVlcyxcclxuXHRJUGFnZVNldHRpbmdzLFxyXG5cdERyaWxsVGhyb3VnaEV2ZW50QXJncyxcclxuXHREcmlsbFRocm91Z2hTZXJ2aWNlLFxyXG5cdFBpdm90QWN0aW9uRmFpbHVyZUV2ZW50QXJncyxcclxufSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcGl2b3R2aWV3XCI7XHJcblxyXG5pbXBvcnQgeyBMMTBuLCBjcmVhdGVFbGVtZW50LCBlbmFibGVSaXBwbGUgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWJhc2VcIjtcclxuaW1wb3J0IHsgUEJGX1RPS0VOIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvSW5qZWN0aW9uVG9rZW5cIjtcclxuXHJcbmltcG9ydCB7XHJcblx0c29ydEJ5LFxyXG5cdGRpZmZlcmVuY2VXaXRoLFxyXG5cdHN0YXJ0c1dpdGgsXHJcblx0Y2xvbmVEZWVwLFxyXG5cdHVuaXFCeSxcclxuXHRmaWx0ZXIgYXMgX2ZpbHRlcixcclxuXHRtYXhCeSxcclxuXHRtaW5CeSxcclxuXHRzdW1CeSxcclxuXHRtZWFuQnksXHJcblx0bWVhbixcclxufSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuXHRBR0dSRUdBVEVfVFlQRVNfVEVYVCxcclxuXHRBTExfQUdHUkVHQVRFX1RZUEVTLFxyXG5cdERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG59IGZyb20gXCIuLi8uLi9kYXNoYm9hcmRQb3JsZXRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJvd3NlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNYXNrZWRUZXh0Qm94IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1pbnB1dHMvc3JjL21hc2tlZHRleHRib3gvbWFza2VkdGV4dGJveFwiO1xyXG5pbXBvcnQgeyBEYXRhTWFuYWdlciB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YS9zcmMvbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBQcmVkaWNhdGUsIFF1ZXJ5IH0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1kYXRhL3NyYy9xdWVyeVwiO1xyXG5pbXBvcnQgeyBEYXRhVXRpbCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItZGF0YVwiO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuZW5hYmxlUmlwcGxlKGZhbHNlKTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcImt0LWdhZGdldC1waXZvdC1jaGFydFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vZ2FkZ2V0LXBpdm90LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2dhZGdldC1waXZvdC5jb21wb25lbnQuc2Nzc1wiXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdFRvb2xiYXJTZXJ2aWNlLFxyXG5cdFx0RmllbGRMaXN0U2VydmljZSxcclxuXHRcdE51bWJlckZvcm1hdHRpbmdTZXJ2aWNlLFxyXG5cdFx0Q2FsY3VsYXRlZEZpZWxkU2VydmljZSxcclxuXHRcdEdyb3VwaW5nQmFyU2VydmljZSxcclxuXHRcdFZpcnR1YWxTY3JvbGxTZXJ2aWNlLFxyXG5cdFx0RHJpbGxUaHJvdWdoU2VydmljZSxcclxuXHRdLFxyXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FkZ2V0UGl2b3RDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KCkgcG9ydGxldDtcclxuXHRASW5wdXQoKSBkYXNoYm9hcmQ7XHJcblx0QElucHV0KCkgcG9ydGxldHM7XHJcblx0QE91dHB1dCgpIHVwZGF0ZVBvcmxldENvbmZpZyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRwcml2YXRlIFBpdm90X0RhdGE6IElEYXRhU2V0W107XHJcblx0cHJpdmF0ZSBjb25maWc7XHJcblx0cHVibGljIGRhdGFTb3VyY2VTZXR0aW5nczogSURhdGFPcHRpb25zO1xyXG5cdHByaXZhdGUgZXhjbHVkZUZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgZmlsdGVyU2V0dGluZ3MgPSBbXTtcclxuXHRwcml2YXRlIGRhdGVQaXBlRm9ybWF0O1xyXG5cdHB1YmxpYyB0cmFuc2xhdGlvbjtcclxuXHRAVmlld0NoaWxkKFwicGl2b3R2aWV3XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHByaXZhdGUgcGl2b3RPYmo6IFBpdm90Vmlld0NvbXBvbmVudDtcclxuXHRAVmlld0NoaWxkKFwicGl2b3RmaWVsZGxpc3RcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpZWxkbGlzdE9iajogUGl2b3RGaWVsZExpc3RDb21wb25lbnQ7XHJcblx0cHJpdmF0ZSBncmFuZFRvdGFscyA9IHt9O1xyXG5cdHByaXZhdGUgc3ViVG90YWxzID0ge307XHJcblx0cHJpdmF0ZSBwcmV2aW91c1NvcnQ6IElTb3J0O1xyXG5cdHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHRwcml2YXRlIGFsbERhdGFWYWx1ZTtcclxuXHQvLyBwcml2YXRlIGNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzO1xyXG5cdHByaXZhdGUgaXNJbml0OiBib29sZWFuID0gdHJ1ZTtcclxuXHRwcml2YXRlIHBpdm90U2VhcmNoQm94OiBNYXNrZWRUZXh0Qm94O1xyXG5cdHB1YmxpYyBkaXNwbGF5T3B0aW9uID0ge1xyXG5cdFx0dmlldzogXCJCb3RoXCIsXHJcblx0XHRwcmltYXJ5OiBcIkNoYXJ0XCIsXHJcblx0fTtcclxuXHRwdWJsaWMgY2hhcnRTZXR0aW5ncztcclxuXHRwdWJsaWMgdG9vbHRpcFNldHRpbmdzID0ge1xyXG5cdFx0ZW5hYmxlOiBmYWxzZSxcclxuXHR9O1xyXG5cdHByaXZhdGUgY29sdW1uVGV4dHMgPSBbXTtcclxuXHRwcml2YXRlIGNvbmZpZ0ZpZWxkcyA9IFtdO1xyXG5cdHByaXZhdGUgcXVhcnRlckZvcm1hdCA9IFtcclxuXHRcdHsgdmFsdWU6IFwiMDMvMjAyMVwiLCBmb3JtYXQ6IFwiTU0veXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjAzLzIxXCIsIGZvcm1hdDogXCJNTS9kZFwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIjMvMjAyMVwiLCBmb3JtYXQ6IFwiTS95eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiMy8yMVwiLCBmb3JtYXQ6IFwiTS95eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hcmNoIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0geXl5eVwiIH0sXHJcblx0XHR7IHZhbHVlOiBcIk1hciwgMjAyMVwiLCBmb3JtYXQ6IFwiTU1NLCB5eXl5XCIgfSxcclxuXHRcdHsgdmFsdWU6IFwiTWFyY2gsIDIwMjFcIiwgZm9ybWF0OiBcIk1NTU0sIHl5eXlcIiB9LFxyXG5cdFx0eyB2YWx1ZTogXCIyMDIxXCIsIGZvcm1hdDogXCJ5eXl5XCIgfSxcclxuXHRdO1xyXG5cdHpvb21TZXR0aW5ncyA9IHtcclxuXHRcdGVuYWJsZTogZmFsc2UsXHJcblx0fTtcclxuXHRpdGVtRGF0YVR5cGVTb3J0QXJyID0gW1xyXG5cdFx0XCJBc3NldHNcIixcclxuXHRcdFwiTGlhYmlsaXRpZXNcIixcclxuXHRcdFwiRXF1aXR5XCIsXHJcblx0XHRcIlAmTFwiLFxyXG5cdFx0XCJDYXNoZmxvd1wiLFxyXG5cdF07XHJcblx0cHJpdmF0ZSBmb3JtYXREYXRlcyA9IFtdO1xyXG5cdHByaXZhdGUgY3VzdG9tQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g6Ieq5a6a5LmJ6K6h566X5YiXXHJcblx0cHJpdmF0ZSBhbGxvd2VkQ2FsY3VsYXRlZEZpZWxkczogYW55W10gPSBbXTsgLy8g5YWB6K646Ieq5a6a5LmJ566X5rOV55qE5a2X5q61XHJcblx0cHJpdmF0ZSB6ZXJvRm9ybWF0RGF0YSA9IHtcclxuXHRcdGVtcHR5TGlzdDogW10sXHJcblx0XHRoZ0xpc3Q6IFtdLFxyXG5cdH07XHJcblx0cHJpdmF0ZSBtaWxsaW9uRmllbGRzID0gW107XHJcblx0cHJpdmF0ZSB0ZW1wU3VidG90YWxzID0gW107XHJcblx0cHVibGljIG9yZGVyQnlDb2x1bW5zOyAvLyBFZzogXCJEdWVEYXRlLCBTZXF1ZW5jZVwiXHJcblx0cHVibGljIGlzQXBwbHlJUlI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRwdWJsaWMgY2FsY0lSUkRhdGE6IGFueTtcclxuXHRwcml2YXRlIHBlcmNlbnROdW1GaWVsZHMgPSBbXTtcclxuXHRwdWJsaWMgcGFnZUxvYWRpbmc7XHJcblx0b2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGlzbG9hZGVkOiBib29sZWFuOyAvLyDmmK/lkKblt7Lnu4/liJ3lp4vljJbov4dcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIGRhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuXHRcdHByaXZhdGUgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuXHRcdHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwcml2YXRlIHBiZjogYW55LFxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcblx0XHRcdGxlZ2VuZFNldHRpbmdzOiB7XHJcblx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdGVuYWJsZU11bHRpcGxlQXhpczogZmFsc2UsXHJcblx0XHRcdHNob3dNdWx0aUxldmVsTGFiZWxzOiBmYWxzZSxcclxuXHRcdFx0Y2hhcnRTZXJpZXM6IHtcclxuXHRcdFx0XHR0eXBlOiBcIkNvbHVtblwiLFxyXG5cdFx0XHRcdGNvbHVtblNwYWNpbmc6IDAuMSxcclxuXHRcdFx0XHRjb2x1bW5XaWR0aDogMC45LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtdWx0aXBsZUF4aXNNb2RlOiBcIlN0YWNrZWRcIixcclxuXHRcdFx0cHJpbWFyeVhBeGlzOiB7XHJcblx0XHRcdFx0dGl0bGU6IFwiIFwiLFxyXG5cdFx0XHRcdGxhYmVsRm9ybWF0OiBcIk4yXCIsXHJcblx0XHRcdFx0bWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuXHRcdFx0XHRtaW5vckdyaWRMaW5lczoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0XHRjb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxyXG5cdFx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRtaW5vclRpY2tMaW5lczogeyB2aXNpYmxlOiBmYWxzZSB9LFxyXG5cdFx0XHRcdGxpbmVTdHlsZToge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2hhcnRBcmVhOiB7XHJcblx0XHRcdFx0b3BhY2l0eTogMCxcclxuXHRcdFx0XHRib3JkZXI6IHtcclxuXHRcdFx0XHRcdHdpZHRoOiAwLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdH0sXHJcblx0XHRcdHBhbGV0dGVzOiBbXHJcblx0XHRcdFx0XCIjNTk0YmI5XCIsXHJcblx0XHRcdFx0XCIjZjFhZjMyXCIsXHJcblx0XHRcdFx0XCIjNDY4OGVkXCIsXHJcblx0XHRcdFx0XCIjZTA1NjNlXCIsXHJcblx0XHRcdFx0XCIjODAzYTYzXCIsXHJcblx0XHRcdFx0XCIjNmRkOGI1XCIsXHJcblx0XHRcdFx0XCIjZTg3MjI1XCIsXHJcblx0XHRcdFx0XCIjYzVkZjQyXCIsXHJcblx0XHRcdFx0XCIjYzY0MzdkXCIsXHJcblx0XHRcdF0sXHJcblx0XHRcdHByaW1hcnlZQXhpczoge1xyXG5cdFx0XHRcdC8vIFnovbTmoIfpopjorr7nva7kuLrnqbpcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0fSxcclxuXHRcdFx0em9vbVNldHRpbmdzOiB7XHJcblx0XHRcdFx0ZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpvKDmoIfmu5rova7nvKnmlL5cclxuXHRcdFx0XHRlbmFibGVQaW5jaFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjop6bmkbjnvKnmlL5cclxuXHRcdFx0XHRlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSwgLy8g56aB55So6YCJ5oup5Yy65Z+f57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlRGVmZXJyZWRab29taW5nOiBmYWxzZSwgLy8g56aB55So5bu26L+f57yp5pS+XHJcblx0XHRcdFx0dG9vbGJhckl0ZW1zOiBbXSxcclxuXHRcdFx0XHRlbmFibGVTY3JvbGxiYXI6IGZhbHNlLFxyXG5cdFx0XHRcdGVuYWJsZVpvb21pbmc6IGZhbHNlLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5nZXRJbmZvKCk7XHJcblx0XHR0aGlzLmdldERhdGEoKTtcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0U3RhcnRSZWZyZXNoKCkuc3Vic2NyaWJlKChkYXNoYm9hcmRJZCkgPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmRhc2hib2FyZC5pZCA9PT0gZGFzaGJvYXJkSWQpIHtcclxuXHRcdFx0XHRcdHRoaXMucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFJlZnJlc2hHYWRnZXQoKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuXHRcdFx0XHRpZiAoIWUpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgaWQgPSBlW1wibmV3SWRcIl07XHJcblx0XHRcdFx0Y29uc3QgY29uZmlnID0gZVtcImNvbmZpZ1wiXTtcclxuXHRcdFx0XHRpZiAoaWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBpZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoY29uZmlnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0Y2hhbmdlUGl2b3QoKS5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRpZiAodXBkYXRlZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VXBkYXRlZCgpLnN1YnNjcmliZSgobmV3SWQpID0+IHtcclxuXHRcdFx0XHRpZiAobmV3SWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCB8fCBuZXdJZCA9PT0gdGhpcy5wb3J0bGV0LmlkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFRhYmxlRm9ybWF0KCkuc3Vic2NyaWJlKCh1cGRhdGVkKSA9PiB7XHJcblx0XHRcdFx0aWYgKHVwZGF0ZWQgPT09IHRoaXMucG9ydGxldC5uZXdJZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5jbGVhckZpZWxkTGlzdE9ic2VydmFibGUoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKHVwZGF0ZWQpID0+IHtcclxuXHRcdFx0XHRcdGlmICh1cGRhdGVkID09PSB0aGlzLnBvcnRsZXQubmV3SWQpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuZGF0YVNvdXJjZSA9IFtdO1xyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2VcclxuXHRcdFx0XHQuZ2V0UHZ0YWJsZURpc3BsYXlPcHRpb25DaGFydENoYW5nZSgpXHJcblx0XHRcdFx0LnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHRcdHRoaXMucG9ydGxldC5uZXdJZCAhPT0gZGF0YS5uZXdJZFxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXS5jb21wbGV0ZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5pbml0Q2hhcnRTZXR0aW5nKGRhdGEuY2hhcnRUeXBlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHRcdFx0fSlcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkU2VydmljZVxyXG5cdFx0XHRcdC5nZXRFbmFibGVNdWx0aXBsZUF4aXNDaGFuZ2UoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IWRhdGEgfHxcclxuXHRcdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAodGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0pIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzW1wicG9pbnRSZW5kZXJcIl0uY29tcGxldGUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMgPVxyXG5cdFx0XHRcdFx0XHRkYXRhLmVuYWJsZU11bHRpcGxlQXhpcztcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubXVsdGlwbGVBeGlzTW9kZSA9IGRhdGEubXVsdGlwbGVBeGlzTW9kZTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MubGVnZW5kU2V0dGluZ3MgPSB7XHJcblx0XHRcdFx0XHRcdHZpc2libGU6IGRhdGEudmlzaWJsZSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopXHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Q29uZmlnVG9Qb3JsZXQoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldENoYXJ0VHlwZUNoYW5nZSgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdCFkYXRhIHx8XHJcblx0XHRcdFx0XHQhdGhpcy5wb3J0bGV0IHx8XHJcblx0XHRcdFx0XHR0aGlzLnBvcnRsZXQubmV3SWQgIT09IGRhdGEubmV3SWRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPVxyXG5cdFx0XHRcdFx0ZGF0YS5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLnR5cGUgPT09IFwiU3RhY2tlZCBDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ/IFwiU3RhY2tpbmdDb2x1bW5cIlxyXG5cdFx0XHRcdFx0XHQ6IGRhdGEuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlO1xyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY2hhcnRTZXR0aW5ncyk7XHJcblx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmopIHRoaXMucGl2b3RPYmoucmVmcmVzaERhdGEoKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cdFx0XHR0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0VGhlbWUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHQhZGF0YSB8fFxyXG5cdFx0XHRcdFx0IXRoaXMucG9ydGxldCB8fFxyXG5cdFx0XHRcdFx0dGhpcy5wb3J0bGV0Lm5ld0lkICE9PSBkYXRhLm5ld0lkXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFsuLi5kYXRhLnRoZW1lXTtcclxuXHRcdFx0XHR0aGlzLmNoYXJ0U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNoYXJ0U2V0dGluZ3MpO1xyXG5cdFx0XHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLmxheW91dFJlZnJlc2goKTtcclxuXHRcdFx0XHR0aGlzLnNldENvbmZpZ1RvUG9ybGV0KCk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XHJcblx0fVxyXG5cclxuXHQvLyDmib7liLDmlbDnu4TkuK3lh7rnjrDmnIDlpJrpopHmrKHnmoTlhYPntKBcclxuXHRmaW5kTW9zdEZyZXF1ZW50KGFycikge1xyXG5cdFx0bGV0IG1heENvdW50ID0gMDtcclxuXHRcdGxldCBtb3N0RnJlcXVlbnROdW0gPSBudWxsO1xyXG5cclxuXHRcdC8vIOS9v+eUqOS4gOS4quWvueixoeadpeiuoeaVsFxyXG5cdFx0Y29uc3QgY291bnRNYXAgPSB7fTtcclxuXHJcblx0XHRhcnIuZm9yRWFjaCgobnVtKSA9PiB7XHJcblx0XHRcdGNvdW50TWFwW251bV0gPSAoY291bnRNYXBbbnVtXSB8fCAwKSArIDE7XHJcblxyXG5cdFx0XHQvLyDmo4Dmn6XmmK/lkKbmmK/mnIDlpJrnmoRcclxuXHRcdFx0aWYgKGNvdW50TWFwW251bV0gPiBtYXhDb3VudCkge1xyXG5cdFx0XHRcdG1heENvdW50ID0gY291bnRNYXBbbnVtXTtcclxuXHRcdFx0XHRtb3N0RnJlcXVlbnROdW0gPSBudW07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBtb3N0RnJlcXVlbnROdW07XHJcblx0fVxyXG5cclxuXHRsb2FkZWQoYXJncykge1xyXG5cdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvlxyXG5cdFx0Y29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxyXG5cdFx0XHRgW2lkXj1cIiR7dGhpcy5waXZvdE9iai5lbGVtZW50LmlkfV9jaGFydDJfQXhpc0xhYmVsXCJdLFxyXG5cdFx0XHRbaWRePVwiJHt0aGlzLnBpdm90T2JqLmVsZW1lbnQuaWR9X2NoYXJ0M19BeGlzTGFiZWxcIl1gXHJcblx0XHQpO1xyXG5cdFx0bGV0IGlzRXJyb3JBY2N1cmFjeSA9IGZhbHNlO1xyXG5cdFx0bGV0IHhQb3NpdGlvbiA9IFtdO1xyXG5cdFx0ZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG5cdFx0XHQvLyDmmK/lkKbmnInnsr7luqbpl67pophcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdEJvb2xlYW4oTnVtYmVyKGVsZW1lbnQuaW5uZXJIVE1MKSkgJiZcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTC5sZW5ndGggPiAxNVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpc0Vycm9yQWNjdXJhY3kgPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOiusOW9leS4gOS4i3novbTmoIfnrb7nmoR45Z2Q5qCHXHJcblx0XHRcdGNvbnN0IGN1cnJlbnRYID0gcGFyc2VGbG9hdChlbGVtZW50LmdldEF0dHJpYnV0ZShcInhcIikpO1xyXG5cdFx0XHR4UG9zaXRpb24ucHVzaChjdXJyZW50WCk7XHJcblxyXG5cdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwuZW5kc1dpdGgoXCIuLi5cIikpIHtcclxuXHRcdFx0XHRsZXQgaW5uZXJIVE1MID0gZWxlbWVudC5pbm5lckhUTUwucmVwbGFjZShcIi4uLlwiLCBcIlwiKTtcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihpbm5lckhUTUwpLnRvRml4ZWQoMik7XHJcblx0XHRcdFx0ZWxlbWVudC5zZXRBdHRyaWJ1dGUoXHJcblx0XHRcdFx0XHRcInhcIixcclxuXHRcdFx0XHRcdGN1cnJlbnRYICsgaW5uZXJIVE1MLmxlbmd0aCAqIDMgLSAzICsgXCJcIlxyXG5cdFx0XHRcdCk7IC8vIOefq+ato+mVv+W6plxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdGlmIChpc0Vycm9yQWNjdXJhY3kpIHtcclxuXHRcdFx0Ly8g5om+5Yiw5omA5pyJeei9tOagh+etvuS4reeahOW5s+Wdh3jlnZDmoIdcclxuXHRcdFx0bGV0IHggPSBtZWFuKHhQb3NpdGlvbik7XHJcblx0XHRcdGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHQvLyDmiYvliqjnsr7luqbkv67mraNcclxuXHRcdFx0XHRlbGVtZW50LmlubmVySFRNTCA9IE51bWJlcihlbGVtZW50LmlubmVySFRNTCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHRpZiAoZWxlbWVudC5pbm5lckhUTUwgPT09IFwiLTAuMDBcIikge1xyXG5cdFx0XHRcdFx0ZWxlbWVudC5pbm5lckhUTUwgPSBOdW1iZXIoMCkudG9GaXhlZCgyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g5omL5Yqo6K6+572uIHjlnZDmoIdcclxuXHRcdFx0XHRlbGVtZW50LnNldEF0dHJpYnV0ZShcInhcIiwgeC50b1N0cmluZygpKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldENvbmZpZ1RvUG9ybGV0KCkge1xyXG5cdFx0Y29uc3QgY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuXHRcdGlmICghY29uZmlnKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG5cdFx0XHRkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcblx0XHRcdGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuXHRcdH07XHJcblx0XHR0aGlzLmNoYXJ0U2V0dGluZ3NbXCJwb2ludFJlbmRlclwiXSA9IG51bGw7XHJcblx0XHR0aGlzLmNvbmZpZyA9IHsgLi4uY29uZmlnIH07XHJcblx0XHR0aGlzLnVwZGF0ZVBvcmxldENvbmZpZy5lbWl0KHtcclxuXHRcdFx0bmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuXHRcdFx0Y29uZmlnLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRjaGFydFNlcmllc0NyZWF0ZWQoZSkge31cclxuXHJcblx0cHJpdmF0ZSBpbml0Q2hhcnRTZXR0aW5nKHR5cGU/OiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IHNldHRpbmcgPSB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nO1xyXG5cdFx0aWYgKCFzZXR0aW5nKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzZXR0aW5nLmNoYXJ0U2V0dGluZ3MuY2hhcnRTZXJpZXMuZGF0YUxhYmVsID0ge1xyXG5cdFx0XHR2aXNpYmxlOiB0cnVlLCAvLyBNYWtlIHRoZSBkYXRhIGxhYmVsIHZpc2libGVcclxuXHRcdFx0cG9zaXRpb246IFwiT3V0c2lkZVwiLCAvLyBQb3NpdGlvbiB0aGUgZGF0YSBsYWJlbCBvdXRzaWRlIHRoZSBjaGFydFxyXG5cdFx0XHQvLyBEZWZpbmUgdGhlIHRlbXBsYXRlIGZvciBkYXRhIGxhYmVsIGNvbnRlbnRcclxuXHRcdFx0dGVtcGxhdGU6XHJcblx0XHRcdFx0JzxkaXYgc3R5bGU9XCJjb2xvcjogQmxhY2tcIj4gJHsocG9pbnQueSkudG9Mb2NhbGVTdHJpbmcoKX08L2Rpdj4nLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncyA9IHtcclxuXHRcdFx0Li4uc2V0dGluZy5jaGFydFNldHRpbmdzLFxyXG5cdFx0XHRwcmltYXJ5WEF4aXM6IHtcclxuXHRcdFx0XHR0aXRsZTogXCIgXCIsXHJcblx0XHRcdFx0bGFiZWxGb3JtYXQ6IFwiTjJcIixcclxuXHRcdFx0XHRtYWpvckdyaWRMaW5lczogeyB3aWR0aDogMCB9LFxyXG5cdFx0XHRcdG1pbm9yR3JpZExpbmVzOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHRcdGNvbG9yOiBcInRyYW5zcGFyZW50XCIsXHJcblx0XHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdG1pbm9yVGlja0xpbmVzOiB7IHZpc2libGU6IGZhbHNlIH0sXHJcblx0XHRcdFx0bGluZVN0eWxlOiB7XHJcblx0XHRcdFx0XHR3aWR0aDogMCxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwb2ludFJlbmRlcjogdGhpcy5vYnNlcnZhYmxlLnN1YnNjcmliZSgoYXJnczogYW55KSA9PiB7XHJcblx0XHRcdFx0aWYgKGFyZ3MgJiYgYXJncy5wb2ludCAmJiBhcmdzLnBvaW50LnkpIHtcclxuXHRcdFx0XHRcdGFyZ3MucG9pbnQueSA9IHBhcnNlRmxvYXQoYXJncy5wb2ludC55LnRvRml4ZWQoMikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkgYXMgYW55LFxyXG5cdFx0XHRjaGFydEFyZWE6IHtcclxuXHRcdFx0XHRvcGFjaXR5OiAwLFxyXG5cdFx0XHRcdGJvcmRlcjoge1xyXG5cdFx0XHRcdFx0d2lkdGg6IDAsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdFx0cHJpbWFyeVlBeGlzOiB7XHJcblx0XHRcdFx0Ly8gWei9tOagh+mimOiuvue9ruS4uuepulxyXG5cdFx0XHRcdHRpdGxlOiBcIiBcIixcclxuXHRcdFx0XHRsYWJlbEZvcm1hdDogXCJOMlwiLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRsb2FkZWQ6IHRoaXMuaXNsb2FkZWRcclxuXHRcdFx0XHQ/IG51bGxcclxuXHRcdFx0XHQ6ICh0aGlzLm9ic2VydmFibGUuc3Vic2NyaWJlKHRoaXMubG9hZGVkLmJpbmQodGhpcykpIGFzIGFueSksXHJcblx0XHRcdHpvb21TZXR0aW5nczoge1xyXG5cdFx0XHRcdGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiBmYWxzZSwgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlUGluY2hab29taW5nOiBmYWxzZSwgLy8g56aB55So6Kem5pG457yp5pS+XHJcblx0XHRcdFx0ZW5hYmxlU2VsZWN0aW9uWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOmAieaLqeWMuuWfn+e8qeaUvlxyXG5cdFx0XHRcdGVuYWJsZURlZmVycmVkWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOW7tui/n+e8qeaUvlxyXG5cdFx0XHRcdHRvb2xiYXJJdGVtczogW10sXHJcblx0XHRcdFx0ZW5hYmxlU2Nyb2xsYmFyOiBmYWxzZSxcclxuXHRcdFx0XHRlbmFibGVab29taW5nOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdH07XHJcblx0XHR0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcclxuXHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdGlmICghdGhpcy5jaGFydFNldHRpbmdzLnBhbGV0dGVzKSB7XHJcblx0XHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5wYWxldHRlcyA9IFtcclxuXHRcdFx0XHRcIiM1OTRiYjlcIixcclxuXHRcdFx0XHRcIiNmMWFmMzJcIixcclxuXHRcdFx0XHRcIiM0Njg4ZWRcIixcclxuXHRcdFx0XHRcIiNlMDU2M2VcIixcclxuXHRcdFx0XHRcIiM4MDNhNjNcIixcclxuXHRcdFx0XHRcIiM2ZGQ4YjVcIixcclxuXHRcdFx0XHRcIiNlODcyMjVcIixcclxuXHRcdFx0XHRcIiNjNWRmNDJcIixcclxuXHRcdFx0XHRcIiNjNjQzN2RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdHRoaXMuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy5jb2x1bW5TcGFjaW5nID0gMC4xO1xyXG5cdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzLmNvbHVtbldpZHRoID0gMC45O1xyXG5cdFx0aWYgKHR5cGUpIHtcclxuXHRcdFx0dGhpcy5jaGFydFNldHRpbmdzLmNoYXJ0U2VyaWVzID0ge1xyXG5cdFx0XHRcdHR5cGUsXHJcblx0XHRcdFx0Y29sdW1uU3BhY2luZzogMC4xLFxyXG5cdFx0XHRcdGNvbHVtbldpZHRoOiAwLjksXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbk1lbWJlckVkaXRvck9wZW4oYXJnczogYW55KTogdm9pZCB7XHJcblx0XHQvLyDkvaDlj6/ku6XlnKjov5nph4zmoLnmja7pnIDopoHkv67mlLlhcmdz5p2l6Ieq5a6a5LmJ6L+H5ruk56qX5Y+j55qE6KGM5Li6XHJcblx0XHQvLyAxMTI0NyDkuJPpl6jkuLppdGVtIGRhdGEgdHlwZeiAjOiuvue9rlxyXG5cdFx0aWYgKGFyZ3MuZmllbGROYW1lID09PSBcIkFjY291bnRUeXBlQ29kZVwiKSB7XHJcblx0XHRcdGxldCByZXMgPSBuZXcgQXJyYXkoNSkuZmlsbChudWxsKTtcclxuXHRcdFx0Y29uc3QgZmllbGRNZW1iZXJzID0gWy4uLmFyZ3MuZmllbGRNZW1iZXJzXTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSBmaWVsZE1lbWJlcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSAtMTtcclxuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyLmZpbmQoKG5hbWUsIGluZCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lKSB7XHJcblx0XHRcdFx0XHRcdGluZGV4ID0gaW5kO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIGZpZWxkTWVtYmVyc1tpXS5hY3R1YWxUZXh0ID09PSBuYW1lO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmICghaXRlbSkge1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IGZpbGxJdGVtID0gZmllbGRNZW1iZXJzLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHRyZXNbaW5kZXhdID0gZmlsbEl0ZW1bMF07XHJcblx0XHRcdH1cclxuXHRcdFx0cmVzID0gcmVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSkgfHwgW107XHJcblx0XHRcdGFyZ3MuZmllbGRNZW1iZXJzID0gWy4uLnJlcywgLi4uZmllbGRNZW1iZXJzXTtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lLW1lbWJlci1lZGl0b3ItZGlhbG9nXCIpO1xyXG5cdFx0XHRcdGlmIChlbGUpIHtcclxuXHRcdFx0XHRcdGVsZS5xdWVyeVNlbGVjdG9yKFwiLmUtZmlsdGVyLXNvcnRcIikuc2V0QXR0cmlidXRlKFxyXG5cdFx0XHRcdFx0XHRcInN0eWxlXCIsXHJcblx0XHRcdFx0XHRcdFwiZGlzcGxheTogbm9uZVwiXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRiZWZvcmVFeHBvcnQoZXhwb3J0RGF0YSkge1xyXG5cdFx0aWYgKGV4cG9ydERhdGEpIHtcclxuXHRcdFx0Y29uc3Qga2V5TWFwID0ge307XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzLmZvckVhY2goKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRkYXRhLmZvcm1hdCA9PT0gXCIjLCMjIywsLjA7KCMsIyMjLCwuMClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLDsoIywjIyMsLClcIiB8fFxyXG5cdFx0XHRcdFx0ZGF0YS5mb3JtYXQgPT09IFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0a2V5TWFwW2RhdGEubmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9ucyAmJlxyXG5cdFx0XHRcdGV4cG9ydERhdGEuZGF0YUNvbGxlY3Rpb25zLmxlbmd0aFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRleHBvcnREYXRhLmRhdGFDb2xsZWN0aW9uc1swXS5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdHJvdy5mb3JFYWNoKChjZWxsKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChrZXlNYXBbY2VsbC5hY3R1YWxUZXh0XSkge1xyXG5cdFx0XHRcdFx0XHRcdGNlbGwudmFsdWUgPSBjZWxsLmFjdHVhbFZhbHVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBnZXREYXRhKGNvbmZpZz86IGFueSkge1xyXG5cdFx0dGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0bGV0IGNvbHVtbnMgPSBbXTtcclxuXHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdGxldCBmb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0bGV0IHJvd3MgPSBbXTtcclxuXHRcdGxldCBmaWVsZE1hcHBpbmcgPSBbXTtcclxuXHRcdC8vIOa4heepumdyYW5kVG90YWxz5ZKMc3ViVG90YWxzXHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0dGhpcy5jb25maWcgPSBjb25maWdcclxuXHRcdFx0PyBKU09OLnBhcnNlKGNvbmZpZylcclxuXHRcdFx0OiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG5cclxuXHRcdGxldCB0eXBlID1cclxuXHRcdFx0dGhpcy5jb25maWcgJiZcclxuXHRcdFx0dGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3NcclxuXHRcdFx0XHQ/IHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncy5jaGFydFNlcmllcy50eXBlXHJcblx0XHRcdFx0OiBudWxsO1xyXG5cdFx0aWYgKHR5cGUgJiYgdHlwZSA9PT0gXCJTdGFja2VkIENvbHVtblwiKSB7XHJcblx0XHRcdHR5cGUgPSBcIlN0YWNraW5nQ29sdW1uXCI7XHJcblx0XHR9XHJcblx0XHR0aGlzLmluaXRDaGFydFNldHRpbmcodHlwZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmZpZWxkcykge1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuZmllbGRzKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRSZXN1bHRCeURhdGFUYWJsZShcclxuXHRcdFx0dGhpcy5wb3J0bGV0LFxyXG5cdFx0XHRmYWxzZSxcclxuXHRcdFx0ZmFsc2UsXHJcblx0XHRcdHRoaXMuZGFzaGJvYXJkLmlkXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMub3JkZXJCeUNvbHVtbnMgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldE9yZGVyQnlDb2x1bW5zTmV3KFxyXG5cdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSxcclxuXHRcdFx0dGhpcy5kYXNoYm9hcmRcclxuXHRcdCk7XHJcblxyXG5cdFx0dGhpcy5QaXZvdF9EYXRhID0gRGF0YVV0aWwucGFyc2UucGFyc2VKc29uKHRoaXMuUGl2b3RfRGF0YSk7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZ2V0ZXhjbHVkZUZpZWxkcyh0aGlzLmNvbmZpZ0ZpZWxkcywgdGhpcy5QaXZvdF9EYXRhWzBdKTtcclxuXHRcdFx0aWYgKCF0aGlzLmFsbG93ZWRDYWxjdWxhdGVkRmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdHRoaXMuYWxsb3dlZENhbGN1bGF0ZWRGaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLlBpdm90X0RhdGFbMF0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWdGaWVsZHMpIHtcclxuXHRcdFx0XHRmaWVsZE1hcHBpbmcucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiBpdGVtLmFkZHRpb25OYW1lXHJcblx0XHRcdFx0XHRcdD8gYCR7aXRlbS5sYW5nVmFsdWV9ICR7aXRlbS5hZGR0aW9uTmFtZX1gXHJcblx0XHRcdFx0XHRcdDogaXRlbS5sYW5nVmFsdWUsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTogaXRlbS5kYXRhVHlwZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuY29uZmlnRmllbGRzKSB7XHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmZvcm1hdERhdGVzID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0ID0gW107XHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0ID0gW107XHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcblx0XHRcdFx0Ly8gU01QMi0yNDg2ICYgcGVyY2VudE51beeahGZvcm1hdOmXrumimFxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIikge1xyXG5cdFx0XHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFsyLCA1LCA4LCAxMSwgMTQsIDE3XS5pbmNsdWRlcyhlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXQpXHJcblx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5oZ0xpc3QucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkICYmXHJcblx0XHRcdFx0XHRbMywgNiwgOSwgMTIsIDE1LCAxOF0uaW5jbHVkZXMoZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0KVxyXG5cdFx0XHRcdClcclxuXHRcdFx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuZW1wdHlMaXN0LnB1c2goZWwuY29sTmFtZSk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCAmJlxyXG5cdFx0XHRcdFx0WzEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpXHJcblx0XHRcdFx0XHR0aGlzLm1pbGxpb25GaWVsZHMucHVzaChlbC5jb2xOYW1lKTtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJudW1iZXJcIiAmJlxyXG5cdFx0XHRcdFx0KCFlbC5mb3JtYXQgfHxcclxuXHRcdFx0XHRcdFx0KGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdGVsLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQhZWwuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQpKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0Ly9TTVAyLTMwMjYgYW5kIFNNUDItMzA1OVxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdFx0ZWwuY29sTmFtZSAhPT0gXCJQb3J0SW52U3RrXCIgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5jb2xOYW1lICE9PSBcIlBvcnRGZEludlN0a1wiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogXCIjIzAuIyMjIyMjIzBcIixcclxuXHRcdFx0XHRcdFx0dXNlR3JvdXBpbmc6IHRydWUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KGVsLmRhdGFUeXBlID09PSBcInBlcmNlbnRcIiB8fFxyXG5cdFx0XHRcdFx0XHRlbC5kYXRhVHlwZSA9PT0gXCJwZXJjZW50TnVtXCIpICYmXHJcblx0XHRcdFx0XHQoIWVsLmZvcm1hdCB8fFxyXG5cdFx0XHRcdFx0XHQoZWwuZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCFlbC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRjb25zdCBmb3JtYXREYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGVsLmRhdGFUeXBlID09PSBcIm11bHRpcGxlXCIgJiZcclxuXHRcdFx0XHRcdCghZWwuZm9ybWF0IHx8XHJcblx0XHRcdFx0XHRcdChlbC5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0IWVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkKSlcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdG5hbWU6IGVsLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRlbC5kcFxyXG5cdFx0XHRcdFx0XHQpLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChlbC5kYXRhVHlwZSA9PT0gXCJkYXRldGltZVwiIHx8IGVsLmRhdGFUeXBlID09PSBcImRhdGVcIikge1xyXG5cdFx0XHRcdFx0bGV0IGZvcm1hdCA9IFwiXCI7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRlbC5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIlF1YXJ0ZXJcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmb3JtYXRfID0gZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0SW5mbyA9IHRoaXMucXVhcnRlckZvcm1hdC5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQocXVyKSA9PiBxdXIudmFsdWUgPT0gZm9ybWF0X1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGZvcm1hdEluZm8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBmb3JtYXRJbmZvWzBdLmZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBmb3JtYXRfLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmZvcm1hdERhdGVzLnB1c2goZm9ybWF0RGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGVsLmZvcm1hdFswXS5kYXRlVHlwZSA9PSBcIkRhdGVcIikge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBmcm9tSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIihcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdGVsLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcIilcIik7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZvcm1hdF8gPVxyXG5cdFx0XHRcdFx0XHRcdFx0ZWwuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZnJvbUlkeCArIDEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRvSWR4XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoZm9ybWF0Xykge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC9NTS95eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkREL01NL1lZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQvTU0veXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NL2RkL3l5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0vREQvWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS9kZC95eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWVlZLU1NLUREXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwieXl5eS1NTS1kZFwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJZWS1NTS1ERFwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcInl5LU1NLWRkXCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTS15eXl5XCI7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBcIkRELU1NLVlZXCI6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9IFwiZGQtTU0teXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlZWVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3JtYXQgPSBcIk1NLWRkLXl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiTU0tREQtWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTS1kZC15eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJNTU0gREQsIFlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJNTU0gZGQsIHl5eXlcIjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFwiREQtTU1NLVlZWVlcIjpcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID0gXCJkZC1NTU0teXl5eVwiO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKCFmb3JtYXQpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgZm9ybWF0RGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBlbC5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdDogdGhpcy5kYXRlUGlwZUZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGZvcm1hdERhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogZWwuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXQ6IGZvcm1hdCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRhdGVcIixcclxuXHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3MucHVzaChmb3JtYXREYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0Ly9jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyBmb3JtYXQgcHVzaCB0byBmb3JtYXRTZXR0aW5nc1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncyAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jYWxjdWxhdGVkRmllbGRTZXR0aW5ncy5sZW5ndGggPiAwXHJcblx0XHQpIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MubWFwKChlbCkgPT4ge1xyXG5cdFx0XHRcdGlmIChlbC5mb3JtYXRTdHJpbmcgIT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBlbC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtYXQ6IGVsLmZvcm1hdFN0cmluZyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRsZXQgc2VyaWVzID0gdGhpcy5jb25maWcueWF4aXMuc2VyaWVzO1xyXG5cdFx0aWYgKHNlcmllcykge1xyXG5cdFx0XHRmb3IgKGxldCBpdGVtIG9mIHNlcmllcykge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogaXRlbS5jb2xOYW1lLFxyXG5cdFx0XHRcdFx0Y2FwdGlvbjogaXRlbS50aXRsZSxcclxuXHRcdFx0XHRcdHR5cGU6IGl0ZW0uY2FsTWV0aG9kLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dmFsdWVzLnB1c2godmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgZ3JvdXBzID0gdGhpcy5jb25maWcueGF4aXMuZ3JvdXBzO1xyXG5cdFx0aWYgKGdyb3Vwcykge1xyXG5cdFx0XHRmb3IgKGxldCBnaXRlbSBvZiBncm91cHMpIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZ2l0ZW0ubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdGdpdGVtLnNob3dTdWJUb3RhbHMgPSBmaWVsZFswXS5zaG93U3ViVG90YWxzO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyb3dzLnB1c2goZ2l0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5jb25maWcuY29sdW1uR3JvdXAgJiYgdGhpcy5jb25maWcuY29sdW1uR3JvdXAubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGl0ZW0gb2YgdGhpcy5jb25maWcuY29sdW1uR3JvdXApIHtcclxuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gaXRlbS5uYW1lXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoZmllbGQubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0aXRlbS5zaG93U3ViVG90YWxzID0gZmllbGRbMF0uc2hvd1N1YlRvdGFscztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29sdW1ucy5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRsZXQgY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyA9IFtdO1xyXG5cdFx0dGhpcy5jb25maWdGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHRcdFx0aWYgKGZpZWxkLmZvcm1hdCAmJiBmaWVsZC5mb3JtYXQubGVuZ3RoKSB7XHJcblx0XHRcdFx0aWYgKGZpZWxkLmZvcm1hdFswXS5mb250U2V0dGluZ0NoZWNrZWQpIHtcclxuXHRcdFx0XHRcdGxldCBjb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0bGV0IG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaiA9IHtcclxuXHRcdFx0XHRcdFx0YXBwbHlHcmFuZFRvdGFsczogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0bWVhc3VyZTogXCJcIixcclxuXHRcdFx0XHRcdFx0dmFsdWUxOiBudWxsLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTI6IG51bGwsXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbnM6IFwiXCIsXHJcblx0XHRcdFx0XHRcdHN0eWxlOiB7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdGZvbnRGYW1pbHk6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0Zm9udFNpemU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0Ly8gZm9udCBzZXR0aW5nIHN0YXJ0XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoubWVhc3VyZSA9XHJcblx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmZvcm1hdENoZWNrZWQgJiZcclxuXHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmNvbXBhcmVTZWxlY3RcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldENvbXBhcmVDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgY29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRkZWxldGUgbmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0U2V0dGluZ3MucHVzaChuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmopO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncy51bnNoaWZ0KGNvbmRpdGlvbmFsRm9ybWF0T2JqKTtcclxuXHRcdFx0XHRcdC8vIGZvbnQgc2V0dGluZyBlbmRcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGV0IGZvcm1hdFNldHRpbmdzT2JqID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogXCJcIixcclxuXHRcdFx0XHRcdGZvcm1hdDogXCJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZCkge1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmoubmFtZSA9IGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZpZWxkO1xyXG5cdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0c3dpdGNoIChmaWVsZC5mb3JtYXRbMF0uZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdFx0Y2FzZSBcIm51bWJlclwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0Y2FzZSBcImludGVnZXJcIjpcclxuXHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXQgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0SW50ZWdlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudE51bVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwicGVyY2VudFwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdGNhc2UgXCJtdWx0aXBsZVwiOlxyXG5cdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqLmZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZVwiOlxyXG5cdFx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0XHRsZXQgZm9ybWF0ID0gXCJcIjtcclxuXHRcdFx0XHRcdFx0XHRpZiAoZmllbGQuZm9ybWF0ICYmIGZpZWxkLmZvcm1hdC5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJRdWFydGVyXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5O1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChmaWVsZC5mb3JtYXRbMF0uZGF0ZVR5cGUgPT0gXCJEYXRlXCIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGZyb21JZHggPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdERpc3BsYXkuaW5kZXhPZihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiKFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRvSWR4ID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZC5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXREaXNwbGF5LmluZGV4T2YoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIilcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvcm1hdCA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0RGlzcGxheS5zbGljZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZyb21JZHggKyAxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dG9JZHhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAoZm9ybWF0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iaiA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogZmllbGQuY29sTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9ybWF0OiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGZpZWxkLmRhdGFUeXBlID0gXCJzdHJpbmdcIjtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9ybWF0U2V0dGluZ3NPYmouZm9ybWF0ID0gdGhpcy5kYXRlUGlwZUZvcm1hdDtcclxuXHRcdFx0XHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzT2JqW1widHlwZVwiXSA9IFwiZGF0ZVwiO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZmllbGQuZm9ybWF0WzBdLmRhdGFUeXBlICE9PSBcInN0cmluZ1wiICYmXHJcblx0XHRcdFx0XHRmb3JtYXRTZXR0aW5nc09iai5mb3JtYXRcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGZvcm1hdFNldHRpbmdzLnB1c2goZm9ybWF0U2V0dGluZ3NPYmopO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMgPSB0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzXHJcblx0XHRcdD8gdGhpcy5jb25maWcuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkc1xyXG5cdFx0XHQ6IFtdO1xyXG5cclxuXHRcdC8vIFNNUDItNDU4MiBBR0lDIC0gRGFzaGJvYXJkIGl0ZW0gc2VxdWVuY2VcclxuXHRcdGxldCBpc0V4aXN0U2VxID0gZmFsc2U7XHJcblx0XHRsZXQgc29ydFNldHRpbmdzID0gdGhpcy5jb25maWcuc29ydFNldHRpbmdzIHx8IFtdO1xyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLlBpdm90X0RhdGEgJiZcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhWzBdICYmXHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YVswXS5TZXEgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHQvLyDlj5bmtohOYW1l55qE6buY6K6k5o6S5bqP77yM5qC55o2uU2Vx5p2l5o6S5bqPXHJcblx0XHRcdHNvcnRTZXR0aW5ncy5wdXNoKHsgbmFtZTogXCJOYW1lXCIsIG9yZGVyOiBcIk5vbmVcIiB9KTtcclxuXHRcdFx0aXNFeGlzdFNlcSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRsZXQgZmlsdGVyU2V0dGluZ3MgPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmNoZWNrRmlsdGVyU2V0dGluZ3MoXHJcblx0XHRcdHRoaXMuY29uZmlnLFxyXG5cdFx0XHR0aGlzLmNvbmZpZ0ZpZWxkcyxcclxuXHRcdFx0dGhpcy5QaXZvdF9EYXRhXHJcblx0XHQpO1xyXG5cdFx0bGV0IG5hbWVGaWx0ZXIgPSBmaWx0ZXJTZXR0aW5ncy5maW5kKCh4KSA9PiB4Lm5hbWUgPT09IFwiTmFtZVwiKTtcclxuXHRcdC8vIOWtmOWcqCBOYW1l55qEZmlsdGVy5pe277yM5Lya5oyJ54Wn6buY6K6k5o6S5bqP77yM6ZyA6KaB5a+5TmFtZei/m+ihjFNlceaOkuW6j+WkhOeQhlxyXG5cdFx0aWYgKGlzRXhpc3RTZXEgJiYgbmFtZUZpbHRlciAmJiByb3dzLnNvbWUoKHgpID0+IHgubmFtZSA9PT0gXCJOYW1lXCIpKSB7XHJcblx0XHRcdGxldCBpdGVtcyA9IG5hbWVGaWx0ZXIuaXRlbXM7IC8vIOaLv+WIsOW9k+WJjeaOkuW6j++8jOm7mOiupEEtWlxyXG5cdFx0XHRsZXQgc2VxQXJyID0gW107XHJcblx0XHRcdGl0ZW1zLmZvckVhY2goKG5hbWUpID0+IHtcclxuXHRcdFx0XHRsZXQgb2JqID0gdGhpcy5QaXZvdF9EYXRhLmZpbmQoKHgpID0+IHguTmFtZSA9PT0gbmFtZSk7XHJcblx0XHRcdFx0bGV0IGl0ZW06IGFueSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IG5hbWUsXHJcblx0XHRcdFx0XHRzZXE6IG9iai5TZXEsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZXFBcnIucHVzaChpdGVtKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHNlcUFyci5zb3J0KChhLCBiKSA9PiBhLnNlcSAtIGIuc2VxKTtcclxuXHRcdFx0bmFtZUZpbHRlci5pdGVtcyA9IHNlcUFyci5tYXAoKHgpID0+IHgubmFtZSk7XHJcblx0XHR9XHJcblx0XHRsZXQgaGFzSXRlbURhdGFUeXBlID0gZmFsc2U7XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhKSB7XHJcblx0XHRcdHRoaXMuUGl2b3RfRGF0YS5tYXAoKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YVtcIkFjY291bnRUeXBlQ29kZVwiXSkge1xyXG5cdFx0XHRcdFx0aGFzSXRlbURhdGFUeXBlID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cm93cy5mb3JFYWNoKChyb3cpID0+IHtcclxuXHRcdFx0XHRcdGlmIChkYXRhW3Jvdy5uYW1lXSA9PT0gXCJcIikge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3Jvdy5uYW1lXSA9IFwibnVsbFwiO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGlmIChoYXNJdGVtRGF0YVR5cGUpIHtcclxuXHRcdFx0c29ydFNldHRpbmdzLnB1c2goe1xyXG5cdFx0XHRcdG5hbWU6IFwiQWNjb3VudFR5cGVDb2RlXCIsXHJcblx0XHRcdFx0b3JkZXI6IFwiQXNjZW5kaW5nXCIsXHJcblx0XHRcdFx0bWVtYmVyc09yZGVyOiBbLi4udGhpcy5pdGVtRGF0YVR5cGVTb3J0QXJyXSxcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmRhdGFTb3VyY2VTZXR0aW5ncyA9IHtcclxuXHRcdFx0ZGF0YVNvdXJjZTogdGhpcy5QaXZvdF9EYXRhLFxyXG5cdFx0XHRyb3dzOiByb3dzLFxyXG5cdFx0XHRjb2x1bW5zOiBjb2x1bW5zLFxyXG5cdFx0XHR2YWx1ZXM6IHZhbHVlcyxcclxuXHRcdFx0ZmlsdGVyczogdGhpcy5jb25maWcuZmlsdGVycyxcclxuXHRcdFx0ZmlsdGVyU2V0dGluZ3M6IGZpbHRlclNldHRpbmdzLFxyXG5cdFx0XHRleGNsdWRlRmllbGRzOiB0aGlzLmV4Y2x1ZGVGaWVsZHMsXHJcblx0XHRcdGZvcm1hdFNldHRpbmdzOiBmb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRTZXR0aW5nczogY29uZGl0aW9uYWxGb3JtYXRTZXR0aW5ncyxcclxuXHRcdFx0ZXhwYW5kQWxsOiB0cnVlLFxyXG5cdFx0XHRlbmFibGVTb3J0aW5nOiB0cnVlLFxyXG5cdFx0XHRmaWVsZE1hcHBpbmc6IGZpZWxkTWFwcGluZyxcclxuXHRcdFx0Y2FsY3VsYXRlZEZpZWxkU2V0dGluZ3M6IHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLFxyXG5cdFx0XHRzb3J0U2V0dGluZ3M6IHNvcnRTZXR0aW5ncyxcclxuXHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHRoaXMuY29uZmlnLnZhbHVlU29ydFNldHRpbmdzLFxyXG5cdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRoaXMuY29uZmlnLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0c2hvd1Jvd0dyYW5kVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93R3JhbmRUb3RhbHMsXHJcblx0XHRcdHNob3dDb2x1bW5HcmFuZFRvdGFsczogdGhpcy5jb25maWcuc2hvd0NvbHVtbkdyYW5kVG90YWxzLFxyXG5cdFx0XHRzaG93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Um93U3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Um93U3ViVG90YWxzLFxyXG5cdFx0XHRzaG93Q29sdW1uU3ViVG90YWxzOiB0aGlzLmNvbmZpZy5zaG93Q29sdW1uU3ViVG90YWxzLFxyXG5cdFx0fTtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqKSB0aGlzLnBpdm90T2JqLnJlZnJlc2hEYXRhKCk7XHJcblx0XHR0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhZnRlclBvcHVsYXRlKGFyZ3M6IEVuZ2luZVBvcHVsYXRlZEV2ZW50QXJncyk6IHZvaWQge1xyXG5cdFx0dGhpcy50ZW1wU3VidG90YWxzID0gW107XHJcblx0XHR0aGlzLmdyYW5kVG90YWxzID0ge307XHJcblx0XHR0aGlzLnN1YlRvdGFscyA9IHt9O1xyXG5cdFx0bGV0IHRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRpdGVtLmhhc093blByb3BlcnR5KFwic2hvd1N1YlRvdGFsc1wiKSAmJlxyXG5cdFx0XHRcdGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGVtcHNob3dBcnJheS5wdXNoKHtcclxuXHRcdFx0XHRcdG5hbWU6IGl0ZW0uY29sTmFtZSxcclxuXHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRzaG93U3ViVG90YWxzOiBpdGVtLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IGl0ZW0uc2hvd0dyYW5kVG90YWxzLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KFwic2hvd0dyYW5kVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dHcmFuZFRvdGFsczogaXRlbS5zaG93R3JhbmRUb3RhbHMsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpKSB7XHJcblx0XHRcdFx0XHR0ZW1wc2hvd0FycmF5LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtLmNvbE5hbWUsXHJcblx0XHRcdFx0XHRcdGNhbE1ldGhvZDogaXRlbS5jYWxNZXRob2QsXHJcblx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IGl0ZW0uc2hvd1N1YlRvdGFscyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmIHRoaXMucGl2b3RPYmopIHtcclxuXHRcdFx0dGhpcy5jb25maWcuY29sdW1uR3JvdXAgPSBbXTtcclxuXHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLnlheGlzLnNlcmllcyA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmZpbHRlclNldHRpbmdzID0gW107XHJcblx0XHRcdHRoaXMuY29uZmlnLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzID0gW107XHJcblx0XHRcdGxldCBncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZ3JvdXBTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBjb2x1bW5zID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiY29sdW1uc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCByb3dzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwicm93c1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLFxyXG5cdFx0XHRcdFwiZmlsdGVyc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBmaWx0ZXJTZXR0aW5ncyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImZpbHRlclNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcInZhbHVlc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGxldCBzb3J0U2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJzb3J0U2V0dGluZ3NcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJjYWxjdWxhdGVkRmllbGRTZXR0aW5nc1wiXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChncm91cFNldHRpbmdzLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0bmFtZTogY29sdW1uLm5hbWUsXHJcblx0XHRcdFx0XHRcdGNhcHRpb246IGNvbHVtbi5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8vSWYgdGhlcmUgaXMgYSBncm91cCwgZmlyc3QgZmlsdGVyIHRoZSBjb2x1bW5zIG9mIHRoZSBncm91cCBmaWVsZCwgYW5kIHRoZW4gb25seSBzYXZlIHRoZSBsYXN0IG9uZVxyXG5cdFx0XHRcdGZvciAobGV0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcblx0XHRcdFx0XHRpZiAoIXN0YXJ0c1dpdGgoY29sdW1uLm5hbWUsIGdyb3VwU2V0dGluZ3NbMF0ubmFtZSArIFwiX1wiKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5Hcm91cC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBjb2x1bW4ubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRjYXB0aW9uOlxyXG5cdFx0XHRcdFx0XHRcdFx0Y29sdW1uLm5hbWUgPT09IGdyb3VwU2V0dGluZ3NbMF0ubmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IFwiXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb2x1bW4uY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGZvciAobGV0IHJvdyBvZiByb3dzKSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcueGF4aXMuZ3JvdXBzLnB1c2goe1xyXG5cdFx0XHRcdFx0bmFtZTogcm93Lm5hbWUsXHJcblx0XHRcdFx0XHRjYXB0aW9uOiByb3cuY2FwdGlvbixcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBmaWx0ZXIgb2YgZmlsdGVycykge1xyXG5cdFx0XHRcdHRoaXMuY29uZmlnLmZpbHRlcnMucHVzaCh7XHJcblx0XHRcdFx0XHRuYW1lOiBmaWx0ZXIubmFtZSxcclxuXHRcdFx0XHRcdGNhcHRpb246IGZpbHRlci5jYXB0aW9uLFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclNldHRpbmdzICYmIHRoaXMuZmlsdGVyU2V0dGluZ3MubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzID0gdGhpcy5maWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0XHR0aGlzLmNvbmZpZy5maWx0ZXJTZXR0aW5ncyA9IHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMuZmlsdGVyU2V0dGluZ3M7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuZmlsdGVyU2V0dGluZ3MgPSBmaWx0ZXJTZXR0aW5ncztcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcclxuXHRcdFx0XHRsZXQgc2VyaWVzRGF0YTtcclxuXHRcdFx0XHRsZXQgdGVtcFNob3dPYmo7XHJcblx0XHRcdFx0bGV0IGZpbHRlclRlbXBzaG93QXJyYXkgPSBbXTtcclxuXHRcdFx0XHRpZiAodGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGZpbHRlclRlbXBzaG93QXJyYXkgPSB0ZW1wc2hvd0FycmF5LmZpbHRlcihcclxuXHRcdFx0XHRcdFx0KGl0ZW0pID0+XHJcblx0XHRcdFx0XHRcdFx0aXRlbS5uYW1lID09PSB2YWx1ZS5uYW1lICYmXHJcblx0XHRcdFx0XHRcdFx0aXRlbS5jYWxNZXRob2QgPT09IHZhbHVlLnR5cGVcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRpZiAoZmlsdGVyVGVtcHNob3dBcnJheS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGVtcFNob3dPYmogPSBmaWx0ZXJUZW1wc2hvd0FycmF5WzBdO1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93U3ViVG90YWxzXCIpICYmXHJcblx0XHRcdFx0XHRcdFx0dGVtcFNob3dPYmouaGFzT3duUHJvcGVydHkoXCJzaG93R3JhbmRUb3RhbHNcIilcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHRzaG93R3JhbmRUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dHcmFuZFRvdGFsc1wiKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0c2VyaWVzRGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sTmFtZTogdmFsdWUubmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FsTWV0aG9kOiB2YWx1ZS50eXBlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdmFsdWUuY2FwdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2hvd0dyYW5kVG90YWxzOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRlbXBTaG93T2JqLnNob3dHcmFuZFRvdGFscyxcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmICh0ZW1wU2hvd09iai5oYXNPd25Qcm9wZXJ0eShcInNob3dTdWJUb3RhbHNcIikpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNhbE1ldGhvZDogdmFsdWUudHlwZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHZhbHVlLmNhcHRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dTdWJUb3RhbHM6IHRlbXBTaG93T2JqLnNob3dTdWJUb3RhbHMsXHJcblx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoIXNlcmllc0RhdGEpIHtcclxuXHRcdFx0XHRcdHNlcmllc0RhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGNvbE5hbWU6IHZhbHVlLm5hbWUsXHJcblx0XHRcdFx0XHRcdHRpdGxlOiB2YWx1ZS5jYXB0aW9uLFxyXG5cdFx0XHRcdFx0XHRjYWxNZXRob2Q6IHZhbHVlLnR5cGUsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMucHVzaChzZXJpZXNEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBjYWxjdWxhdGUgb2YgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MpIHtcclxuXHRcdFx0XHRjb25zdCBjYWxjdWxhdGVEYXRhID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogY2FsY3VsYXRlLm5hbWUsXHJcblx0XHRcdFx0XHRmb3JtdWxhOiBjYWxjdWxhdGUuZm9ybXVsYSxcclxuXHRcdFx0XHRcdGZvcm1hdFN0cmluZzpcclxuXHRcdFx0XHRcdFx0Y2FsY3VsYXRlLmZvcm1hdFN0cmluZyA9PT0gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdD8gXCJOMlwiXHJcblx0XHRcdFx0XHRcdFx0OiBjYWxjdWxhdGUuZm9ybWF0U3RyaW5nLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3MucHVzaChjYWxjdWxhdGVEYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmNvbmZpZy5jdXN0b21DYWxjdWxhdGVkRmllbGRzID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5zb3J0U2V0dGluZ3MgPSBzb3J0U2V0dGluZ3M7XHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MgPSBncm91cFNldHRpbmdzO1xyXG5cdFx0XHR0aGlzLmZpZWxkbGlzdE9iai51cGRhdGVWaWV3KHRoaXMucGl2b3RPYmopO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdC8vcmVtb3ZlIHRoZSBzb3J0XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Muc29ydFNldHRpbmdzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgPSB0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm87XHJcblx0XHRcdCh0aGlzLmZpZWxkbGlzdE9iaiBhcyBhbnkpLmxhc3RTb3J0SW5mbyA9IFtdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGFmdGVyRW5naW5lUG9wdWxhdGUoYXJnczogYW55KSB7XHJcblx0XHRpZiAoIUJyb3dzZXIuaXNEZXZpY2UgJiYgdGhpcy5maWVsZGxpc3RPYmogJiYgdGhpcy5waXZvdE9iaikge1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzID0gdGhpcy5nZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmosXHJcblx0XHRcdFx0XCJncm91cFNldHRpbmdzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0Ly8gdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB0aGlzLmZpZWxkbGlzdE9iai51cGRhdGUodGhpcy5waXZvdE9iaik7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5QaXZvdF9EYXRhICYmIHRoaXMuUGl2b3RfRGF0YS5sZW5ndGgpIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5lbmdpbmVQb3B1bGF0ZWQoYXJncyk7XHJcblx0XHRcdH0sIDE1MDApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXREYXRhU291cmNlU2V0dGluZ3NQcm9wKG9iaiwga2V5KSB7XHJcblx0XHRsZXQgcHJvcCA9IG51bGw7XHJcblx0XHRpZiAob2JqICYmIG9iai5kYXRhU291cmNlU2V0dGluZ3MpIHtcclxuXHRcdFx0cHJvcCA9IG9iai5kYXRhU291cmNlU2V0dGluZ3Nba2V5XTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9wKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiICYmXHJcblx0XHRcdFx0cHJvcC5sZW5ndGggPiAwXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdHByb3AgPSBwcm9wLm1hcCgoaXRlbSkgPT4gaXRlbS5wcm9wZXJ0aWVzIHx8IGl0ZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcHJvcDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBlbmdpbmVQb3B1bGF0aW5nKGFyZ3MpIHtcclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IFtdO1xyXG5cdFx0aWYgKGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGgpIHtcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgaSA9IDA7XHJcblx0XHRcdFx0aSA8IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5ncy5sZW5ndGg7XHJcblx0XHRcdFx0aSsrXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLnNvcnRTZXR0aW5nc1tpXS5uYW1lICYmXHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5sYXN0U29ydEluZm8ub3JkZXIgPT09IFwiQXNjZW5kaW5nXCIgJiZcclxuXHRcdFx0XHRcdCEoXHJcblx0XHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mby5uYW1lID09PVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQub3JkZXIgPT09IFwiTm9uZVwiXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIk5vbmVcIjtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5wcmV2aW91c1NvcnQgJiZcclxuXHRcdFx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmxhc3RTb3J0SW5mbyAmJlxyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoubGFzdFNvcnRJbmZvLm5hbWUgPT09XHJcblx0XHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm5hbWUgJiZcclxuXHRcdFx0XHRcdHRoaXMucHJldmlvdXNTb3J0Lm9yZGVyID09PSBcIkFzY2VuZGluZ1wiXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5zb3J0U2V0dGluZ3NbaV0ub3JkZXIgPSBcIkFzY2VuZGluZ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGNlbGxDbGljayhhcmdzKSB7XHJcblx0XHQvLyDmuIXpmaTmjpLluo9cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnZhbHVlU29ydFNldHRpbmdzLmhlYWRlclRleHQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3Muc29ydE9yZGVyID09PVxyXG5cdFx0XHRcdFwiRGVzY2VuZGluZ1wiICYmXHJcblx0XHRcdGFyZ3MuZGF0YS52YWx1ZVNvcnQgJiZcclxuXHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MudmFsdWVTb3J0U2V0dGluZ3MuaGVhZGVyVGV4dCA9PT1cclxuXHRcdFx0XHRhcmdzLmRhdGEudmFsdWVTb3J0LmxldmVsTmFtZVxyXG5cdFx0KSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouc2V0UHJvcGVydGllcyhcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRkYXRhU291cmNlU2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0dmFsdWVTb3J0U2V0dGluZ3M6IHtcclxuXHRcdFx0XHRcdFx0XHRzb3J0T3JkZXI6IFwiRGVzY2VuZGluZ1wiLFxyXG5cdFx0XHRcdFx0XHRcdGhlYWRlclRleHQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAodGhpcy5waXZvdE9iaikgdGhpcy5waXZvdE9iai5yZWZyZXNoRGF0YSgpO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy52YWx1ZVNvcnRTZXR0aW5ncyA9IHt9O1xyXG5cdFx0XHR0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGRhdGFCb3VuZChlKSB7XHJcblx0XHRpZiAodGhpcy5pc0luaXQpIHtcclxuXHRcdFx0dGhpcy5pc0luaXQgPSBmYWxzZTtcclxuXHRcdH1cclxuXHRcdHRoaXMuZ3JhbmRUb3RhbHMgPSB7fTtcclxuXHRcdHRoaXMuc3ViVG90YWxzID0ge307XHJcblx0XHRpZiAodGhpcy5waXZvdE9iai5ncmlkKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZ3JpZC5yZXNpemVTdG9wID0gdGhpcy5yZXNpemVTdG9wLmJpbmQodGhpcyk7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb25cclxuXHRcdCkge1xyXG5cdFx0XHQoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvbiBhcyBhbnlcclxuXHRcdFx0KS5zdHJpbmdBZ2dyZWdhdGVUeXBlcyA9IFtcclxuXHRcdFx0XHRcIkNvdW50XCIsXHJcblx0XHRcdFx0XCJEaXN0aW5jdENvdW50XCIsXHJcblx0XHRcdFx0XCJGaXJzdFwiLFxyXG5cdFx0XHRcdFwiTGFzdFwiLFxyXG5cdFx0XHRdO1xyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlICYmXHJcblx0XHRcdHRoaXMucGl2b3RPYmoucGl2b3RCdXR0b25Nb2R1bGUubWVudU9wdGlvblxyXG5cdFx0KSB7XHJcblx0XHRcdChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLnBpdm90QnV0dG9uTW9kdWxlLm1lbnVPcHRpb24gYXMgYW55XHJcblx0XHRcdCkuc3RyaW5nQWdncmVnYXRlVHlwZXMgPSBbXHJcblx0XHRcdFx0XCJDb3VudFwiLFxyXG5cdFx0XHRcdFwiRGlzdGluY3RDb3VudFwiLFxyXG5cdFx0XHRcdFwiRmlyc3RcIixcclxuXHRcdFx0XHRcIkxhc3RcIixcclxuXHRcdFx0XTtcclxuXHRcdH1cclxuXHRcdGxldCBhbGxTdW1tYXJ5VHlwZSA9IEFMTF9BR0dSRUdBVEVfVFlQRVMgYXMgYW55O1xyXG5cdFx0dGhpcy5waXZvdE9iai5nZXRBbGxTdW1tYXJ5VHlwZSA9ICgpID0+IGFsbFN1bW1hcnlUeXBlO1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmFnZ3JlZ2F0ZVR5cGVzID0gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmdldEFsbFN1bW1hcnlUeXBlID0gKCkgPT4gYWxsU3VtbWFyeVR5cGU7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRDZWxsU2V0cyhhcmdzLCBjdXJGaWVsZHMpIHtcclxuXHRcdGxldCBtYXRjaEZpZWxkcyA9IGN1ckZpZWxkc1tcIm1hdGNoRmllbGRzXCJdO1xyXG5cdFx0bGV0IGZvcm11bGEgPSBjdXJGaWVsZHNbXCJmb3JtdWxhXCJdO1xyXG5cdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdGxldCBpbnZhbGlkVHlwZXMgPSBbXCJzdHJpbmdcIiwgXCJudmFyY2hhclwiLCBcImRhdGVcIiwgXCJkYXRldGltZVwiXTtcclxuXHRcdGxldCBpc0ludmFsaWQgPSBtYXRjaEZpZWxkcy5zb21lKChmKSA9PlxyXG5cdFx0XHRpbnZhbGlkVHlwZXMuaW5jbHVkZXMoXHJcblx0XHRcdFx0dGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKChlbCkgPT4gZWwuY29sTmFtZSA9PT0gZi5tYXRjaFdvcmQpWzBdW1xyXG5cdFx0XHRcdFx0XCJkYXRhVHlwZVwiXHJcblx0XHRcdFx0XVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdFx0bGV0IGN1cnJlbnRyb3dDZWxsVHlwZSA9IGFyZ3Mucm93Q2VsbFR5cGU7XHJcblx0XHRpZiAoaXNJbnZhbGlkKSByZXR1cm4gXCItXCI7XHJcblx0XHRpZiAoXHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fFxyXG5cdFx0XHRhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBjaGlsZEhlYWRlcnMgPSBbXTtcclxuXHRcdFx0bGV0IHN1bSA9IDA7XHJcblx0XHRcdGxldCBjbG9uZUNlbGxTZXRzID0gY2xvbmVEZWVwKGFyZ3MuY2VsbFNldHMpO1xyXG5cdFx0XHRsZXQgZ3JvdXBOYW1lQXJyYXlzID0gW107XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7IGluZGV4IDwgcm93cy5sZW5ndGg7IGluZGV4KyspIHtcclxuXHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNsb25lQ2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChjbG9uZUNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGNsb25lQ2VsbFNldHNbaV1bbmFtZV07XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdGlmICghKGNoaWxkSGVhZGVycyBhcyBhbnkpLmluY2x1ZGVzKGhlYWRlcikpIHtcclxuXHRcdFx0XHRcdGNoaWxkSGVhZGVycy5wdXNoKGhlYWRlcik7XHJcblx0XHRcdFx0XHRsZXQgZmlsdGVyT2JqOiBhbnkgPSB7fTtcclxuXHRcdFx0XHRcdGdyb3VwTmFtZUFycmF5cy5tYXAoXHJcblx0XHRcdFx0XHRcdChuYW1lLCBpKSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW2ldKVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MuY2VsbFNldHMgPSBfZmlsdGVyKGNsb25lQ2VsbFNldHMsIGZpbHRlck9iaik7XHJcblx0XHRcdFx0XHRhcmdzLnJvd0NlbGxUeXBlID0gXCJ2YWx1ZVwiO1xyXG5cdFx0XHRcdFx0c3VtICs9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPSBjdXJyZW50cm93Q2VsbFR5cGU7XHJcblxyXG5cdFx0XHQvLyDmmoLlrZjlvZPliY1TdWJUb3RhbO+8jCDnlKjkuo7mlLbnvKnml7bor7vlj5ZcclxuXHRcdFx0bGV0IHByZWZpeEhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0dGhpcy51cGRhdGVUZW1wU3VidG90YWxzKHByZWZpeEhlYWRlciwgc3VtKTtcclxuXHRcdFx0cmV0dXJuIHN1bTtcclxuXHRcdH0gZWxzZSBpZiAoYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiKSB7XHJcblx0XHRcdGlmIChhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRcdC8vIGNvbGxhcHNlIOivu+WPllN1YlRvdGFsXHJcblx0XHRcdFx0bGV0IGhlYWRlciA9IHRoaXMuZ2V0Q2FsY0hlYWRlcihhcmdzLCBmb3JtdWxhKTtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdFx0KGl0ZW0pID0+IGl0ZW0ucm93TmFtZSA9PT0gaGVhZGVyXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRpZiAoaW5kZXggPiAtMSkge1xyXG5cdFx0XHRcdFx0dmFsdWUgPSB0aGlzLnRlbXBTdWJ0b3RhbHNbaW5kZXhdLnJvd1ZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvLyBleHBhbmRcclxuXHRcdFx0XHR2YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZFZhbHVlcyhhcmdzLCBtYXRjaEZpZWxkcywgZm9ybXVsYSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdGFjdGlvbkZhaWx1cmUoYXJnczogUGl2b3RBY3Rpb25GYWlsdXJlRXZlbnRBcmdzKTogdm9pZCB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRHJpbGwgZG93blwiIHx8IGFyZ3MuYWN0aW9uTmFtZSA9PSBcIkRyaWxsIHVwXCIpIHtcclxuXHRcdFx0Ly8gVHJpZ2dlcnMgd2hlbiB0aGUgY3VycmVudCBVSSBhY3Rpb24gZmFpbHMgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCByZXN1bHQuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENhbGNIZWFkZXIoYXJncywgZm9ybXVsYT8pIHtcclxuXHRcdGxldCBoZWFkZXIgPSBcIlwiO1xyXG5cdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3Mucm93LmxldmVsOyBpbmRleCsrKSB7XHJcblx0XHRcdGdyb3VwTmFtZUFycmF5cy5wdXNoKHJvd3NbaW5kZXhdLm5hbWUpO1xyXG5cdFx0fVxyXG5cdFx0aGVhZGVyID0gZ3JvdXBOYW1lQXJyYXlzLmxlbmd0aFxyXG5cdFx0XHQ/IGdyb3VwTmFtZUFycmF5c1xyXG5cdFx0XHRcdFx0Lm1hcCgobmFtZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gYXJncy5jZWxsU2V0c1swXVtuYW1lXTtcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHQuam9pbihcIi1cIikgK1xyXG5cdFx0XHQgIFwiLVwiICtcclxuXHRcdFx0ICBhcmdzLnJvdy5hY3R1YWxUZXh0XHJcblx0XHRcdDogYXJncy5yb3cuYWN0dWFsVGV4dDtcclxuXHRcdGlmIChmb3JtdWxhKSBoZWFkZXIgKz0gXCJfX19cIiArIGZvcm11bGE7XHJcblx0XHRyZXR1cm4gaGVhZGVyO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUZW1wU3VidG90YWxzKHJvd05hbWUsIHJvd1ZhbHVlKSB7XHJcblx0XHRsZXQgaW5kZXggPSB0aGlzLnRlbXBTdWJ0b3RhbHMuZmluZEluZGV4KFxyXG5cdFx0XHQoaXRlbSkgPT4gaXRlbS5yb3dOYW1lID09PSByb3dOYW1lXHJcblx0XHQpO1xyXG5cdFx0bGV0IHRlbXA6IGFueSA9IHt9O1xyXG5cdFx0dGVtcC5yb3dOYW1lID0gcm93TmFtZTtcclxuXHRcdHRlbXAucm93VmFsdWUgPSByb3dWYWx1ZTtcclxuXHRcdGlmIChpbmRleCA+IC0xKSB7XHJcblx0XHRcdHRoaXMudGVtcFN1YnRvdGFscy5zcGxpY2UoaW5kZXgsIDEsIHRlbXApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy50ZW1wU3VidG90YWxzLnB1c2godGVtcCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhbGN1bGF0ZWRWYWx1ZXMoYXJncywgbWF0Y2hGaWVsZHMsIGZvcm11bGEpIHtcclxuXHRcdGlmIChtYXRjaEZpZWxkcy5sZW5ndGgpIHtcclxuXHRcdFx0bGV0IGNhbGN1bGVkTWF0Y2hGaWVsZHMgPSBtYXRjaEZpZWxkcy5tYXAoKGYpID0+IHtcclxuXHRcdFx0XHRzd2l0Y2ggKGYubWF0Y2hNZXRob2QpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJGaXJzdFwiOlxyXG5cdFx0XHRcdFx0Y2FzZSBcIkxhc3RcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRGaXN0TGFzdChcclxuXHRcdFx0XHRcdFx0XHRhcmdzLFxyXG5cdFx0XHRcdFx0XHRcdGYubWF0Y2hNZXRob2QsXHJcblx0XHRcdFx0XHRcdFx0Zi5tYXRjaFdvcmRcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWF4XCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWF4QnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiTWluXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gbWluQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpW2YubWF0Y2hXb3JkXTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIFwiU3VtXCI6XHJcblx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlID0gc3VtQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHQvLyBTTVAyLTQwOTQgVW5pY29ybiAtIEwzIEFkanVzdGVkIE5BViB2YWx1ZSBpc3N1ZXNcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdGYucmVwbGFjZVZhbHVlICYmIGYucmVwbGFjZVZhbHVlLnRvRml4ZWQoMTApO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgXCJBdmdcIjpcclxuXHRcdFx0XHRcdFx0Zi5yZXBsYWNlVmFsdWUgPSBtZWFuQnkoYXJncy5jZWxsU2V0cywgKG8pID0+XHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKG9bZi5tYXRjaFdvcmRdKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZjtcclxuXHRcdFx0fSk7XHJcblx0XHRcdGxldCByZXN1bHRGb3JtdWxhID0gZm9ybXVsYTtcclxuXHRcdFx0aWYgKGNhbGN1bGVkTWF0Y2hGaWVsZHMubGVuZ3RoKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjYWxjdWxlZE1hdGNoRmllbGRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRyZXN1bHRGb3JtdWxhID0gcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKFxyXG5cdFx0XHRcdFx0XHRjYWxjdWxlZE1hdGNoRmllbGRzW2ldLm1hdGNoU3RyLFxyXG5cdFx0XHRcdFx0XHRcIihcIiArIGNhbGN1bGVkTWF0Y2hGaWVsZHNbaV0ucmVwbGFjZVZhbHVlICsgXCIpXCJcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGV0IHJlc3VsdCA9IG5ldyBGdW5jdGlvbihcclxuXHRcdFx0XHRcdFwicmV0dXJuIFwiICsgcmVzdWx0Rm9ybXVsYS5yZXBsYWNlKC9bXi08Pj86KClcXGQvKisuXS9nLCBcIlwiKVxyXG5cdFx0XHRcdCkoKTtcclxuXHRcdFx0XHRpZiAoaXNOYU4ocmVzdWx0KSB8fCAhaXNGaW5pdGUocmVzdWx0KSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdHJldHVybiBOYU47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiAwO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJcnJIZWFkZXIobGV2ZWwsIGVsZSwgdHlwZSkge1xyXG5cdFx0aWYgKHR5cGUgPT09IFwicm93XCIpIHtcclxuXHRcdFx0bGV0IGN1clJvd3MgPSB0aGlzLmdldERhdGFTb3VyY2VTZXR0aW5nc1Byb3AoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmosXHJcblx0XHRcdFx0XCJyb3dzXCJcclxuXHRcdFx0KTtcclxuXHRcdFx0bGV0IHJvd3NBcnIgPSBjdXJSb3dzLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKTtcclxuXHJcblx0XHRcdGxldCBoZWFkZXJBcnIgPSBbXTtcclxuXHRcdFx0bGV0IHJvd0xldmVsID0gbGV2ZWw7XHJcblx0XHRcdGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPD0gcm93TGV2ZWw7IGluZGV4KyspIHtcclxuXHRcdFx0XHRoZWFkZXJBcnIucHVzaChlbGUuUm93W3Jvd3NBcnJbaW5kZXhdXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGhlYWRlckFyci5qb2luKFwiLlwiKTtcclxuXHRcdH0gZWxzZSBpZiAodHlwZSA9PT0gXCJjb2xcIikge1xyXG5cdFx0XHRsZXQgY3VyQ2xvdW1ucyA9IHRoaXMuZ2V0RGF0YVNvdXJjZVNldHRpbmdzUHJvcChcclxuXHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iaixcclxuXHRcdFx0XHRcImNvbHVtbnNcIlxyXG5cdFx0XHQpO1xyXG5cdFx0XHRsZXQgY29sc0FyciA9IGN1ckNsb3VtbnMubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpO1xyXG5cclxuXHRcdFx0bGV0IGhlYWRlckFyciA9IFtdO1xyXG5cdFx0XHRsZXQgY29sTGV2ZWwgPSBsZXZlbDtcclxuXHRcdFx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8PSBjb2xMZXZlbDsgaW5kZXgrKykge1xyXG5cdFx0XHRcdGhlYWRlckFyci5wdXNoKGVsZS5Db2xbY29sc0FycltpbmRleF1dKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gaGVhZGVyQXJyLmpvaW4oXCIuXCIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0dG90YWxGb3JtYXR0ZWQgPSB7fTtcclxuXHRwdWJsaWMgYWdncmVnYXRlQ2VsbEluZm8oYXJncykge1xyXG5cdFx0bGV0IGFzT2ZEYXRlID0gdGhpcy5wYmYudGltZSh0aGlzLmRhc2hib2FyZC5hc09mRGF0ZSk7XHJcblx0XHQvLyBpZiBjYWxjdWxhdGVkIGZpZWxkXHJcblx0XHRpZiAoYXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoYXJncy5maWVsZE5hbWUgPT0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLm5hbWUpIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmNhbGN1bGF0ZWRDZWxsU2V0cyhcclxuXHRcdFx0XHRcdFx0YXJncyxcclxuXHRcdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0W1xyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJJUlJEYXRlXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVJUlJNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZUlSUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlSVJSWVREXCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkO1xyXG5cdFx0XHRsZXQgc3RhcnREYXRlO1xyXG5cdFx0XHRsZXQgZW5kRGF0ZTtcclxuXHRcdFx0c3dpdGNoIChhcmdzLmFnZ3JlZ2F0ZVR5cGUpIHtcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRcdFx0ZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlSVJSTVREXCI6XHJcblx0XHRcdFx0XHRzdGFydERhdGUgPSBtb21lbnQoYXNPZkRhdGUpXHJcblx0XHRcdFx0XHRcdC5zdGFydE9mKFwibW9udGhcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUlFURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInF1YXJ0ZXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUllURFwiOlxyXG5cdFx0XHRcdFx0c3RhcnREYXRlID0gbW9tZW50KGFzT2ZEYXRlKVxyXG5cdFx0XHRcdFx0XHQuc3RhcnRPZihcInllYXJcIilcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblx0XHRcdFx0XHRlbmREYXRlID0gbW9tZW50KGFzT2ZEYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xyXG5cdFx0XHRcdFx0dmFsdWVGaWVsZCA9IFwiSVJSQWRqVmFsdWVcIjtcclxuXHRcdFx0XHRcdGRhdGVGaWVsZCA9IFwiSVJSRGF0ZVwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZUlSUklSUkRhdGVcIjpcclxuXHRcdFx0XHRcdHZhbHVlRmllbGQgPSBcIklSUkFkalZhbHVlXCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIkNhbGN1bGF0ZUlSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVJUlJCZWZvcmVDYXJyaWVkXCI6XHJcblx0XHRcdFx0XHR2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZUJlZm9yZUNhcnJ5XCI7XHJcblx0XHRcdFx0XHRkYXRlRmllbGQgPSBcIklSUkRhdGVcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgTkFWQWRqID0gMDtcclxuXHRcdFx0bGV0IHZhbHVlcyA9IFtdO1xyXG5cdFx0XHRsZXQgYmVmb3JlU3RhcnROQVZBZGogPSAwOyAvLyDlrZjlgqjkuIrkuIDkuKrpmLbmrrXnmoROQVZBZGrmgLvlkoxcclxuXHRcdFx0bGV0IGJlZm9yZVN0YXJ0VmFsdWVzID0gW107IC8vIOWtmOWCqOS4iuS4gOS4qumYtuauteeahOe0r+iuoembhuWQiCAo5Y+q5piv5Li65LqG5omT5Y2w77yM5rKh5pyJ5a6e6ZmF55So6YCUKVxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHQvLyBTTVAyLTE2OTIwXHJcblx0XHRcdFx0Ly8gSWYgSVJSIERhdGUgPiBEYXNoYm9hcmQgcmVwb3J0IGRhdGUgPSBUYWtlcyBhcyBvZiBkYXNoYm9hcmQgcmVwb3J0IGRhdGVcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlSVJSSVJSRGF0ZVwiICYmXHJcblx0XHRcdFx0XHRhc09mRGF0ZSA8IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtkYXRlRmllbGRdKVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0ZGF0YS5kYXRlID0gYXNPZkRhdGU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW3ZhbHVlRmllbGRdO1xyXG5cdFx0XHRcdC8vIFNNUDItMTcyMTkgTVREIFFURCBZVEQgSVJSXHJcblx0XHRcdFx0aWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XHJcblx0XHRcdFx0XHRpZiAobW9tZW50KGRhdGEuZGF0ZSkuaXNCZWZvcmUoc3RhcnREYXRlKSkge1xyXG5cdFx0XHRcdFx0XHRkYXRhW3ZhbHVlRmllbGRdID0gYXJncy5jZWxsU2V0c1tpXVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnRWYWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdFx0YmVmb3JlU3RhcnROQVZBZGogKz0gZGF0YVt2YWx1ZUZpZWxkXTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0IW1vbWVudChkYXRhLmRhdGUpLmlzQmV0d2VlbihcclxuXHRcdFx0XHRcdFx0XHRzdGFydERhdGUsXHJcblx0XHRcdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdFx0XHRudWxsLFxyXG5cdFx0XHRcdFx0XHRcdFwiW11cIlxyXG5cdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Y29udGludWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChkYXRhLmFtb3VudCAhPSAwKSB7XHJcblx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdC8vIOWmguaenOaYr01URCxRVEQsWVREIOWImemcgOimgeaKiuW9k+WJjemYtuauteS7peWJjeeahOaJgOacieaVsOaNrui/m+ihjOaxh+aAu++8jOWKoOWFpeiuoeeul1xyXG5cdFx0XHRpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcclxuXHRcdFx0XHR2YWx1ZXMudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRhbW91bnQ6IC1iZWZvcmVTdGFydE5BVkFkaiwgLy8g5byA5aeL55qE5pWw5o2u6ZyA6KaB5Y+W5Y+NXHJcblx0XHRcdFx0XHRkYXRlOiB0aGlzLnBiZi50aW1lKHN0YXJ0RGF0ZSksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJiZWZvcmVTdGFydFZhbHVlczpcIiwgYmVmb3JlU3RhcnRWYWx1ZXMpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcInZhbHVlczpcIiwgdmFsdWVzKTtcclxuXHRcdFx0aWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0bGV0IGd1ZXNzID0gMC4xO1xyXG5cdFx0XHRcdGNvbnN0IHN1bUFtb3VudCA9IHZhbHVlc1xyXG5cdFx0XHRcdFx0Lm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpXHJcblx0XHRcdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3VyciwgMCk7XHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA8IDApIHtcclxuXHRcdFx0XHRcdGd1ZXNzID0gLTAuMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly9TTVAyLTIyNDkgZml4ZWQgdGhlIGJpZyBpcnIgaXNzdWVcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50ID09PSAwKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVJdGVtcyA9IHZhbHVlcy5zbGljZSgwLCB2YWx1ZXMubGVuZ3RoIC0gMSk7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5hbW91bnQpO1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0ZUxpc3QgPSB2YWx1ZUl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5kYXRlKTtcclxuXHRcdFx0XHRcdGNvbnN0IGxhc3RJdGVtID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXTtcclxuXHRcdFx0XHRcdGNvbnN0IG5hdkFkanVzdCA9IGxhc3RJdGVtLmFtb3VudDtcclxuXHRcdFx0XHRcdGNvbnN0IGxhdGVzdERhdGUgPSBsYXN0SXRlbS5kYXRlO1xyXG5cdFx0XHRcdFx0bGV0IGlyciA9XHJcblx0XHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuRXhjZWxGb3JtdWxhcy5fQ2FsY3VsYXRlWGlycihcclxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0ZGF0ZUxpc3QsXHJcblx0XHRcdFx0XHRcdFx0bmF2QWRqdXN0LFxyXG5cdFx0XHRcdFx0XHRcdGxhdGVzdERhdGVcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyBcIlwiIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vICBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tCAmJiBTTVAyLTE2NjgzIFZBUlxyXG5cdFx0aWYgKFxyXG5cdFx0XHRbXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVUV1JNVERcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVFdSWVREXCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTVcIixcclxuXHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85NVwiLFxyXG5cdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk1XCIsXHJcblx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0KSB7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiPT09PT09PT09PT09PT09PT09PT09PT09PT1cIik7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiYXJnczpcIiwgYXJncyk7XHJcblx0XHRcdGxldCB2YWx1ZUZpZWxkID0gXCJJUlJBZGpWYWx1ZVwiO1xyXG5cdFx0XHRsZXQgZGF0ZUZpZWxkID0gXCJJUlJEYXRlXCI7XHJcblx0XHRcdGxldCB0aW1lUmFuZ2U7XHJcblx0XHRcdHN3aXRjaCAoYXJncy5hZ2dyZWdhdGVUeXBlKSB7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUk1URFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJNVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSTVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcIm1vbnRoXCI7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVFdSUVREXCI6XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVZBUlFURF85OVwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJRVERfOTVcIjpcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSA9IFwicXVhcnRlclwiO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkNhbGN1bGF0ZVRXUllURFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJDYWxjdWxhdGVWQVJZVERfOTlcIjpcclxuXHRcdFx0XHRjYXNlIFwiQ2FsY3VsYXRlVkFSWVREXzk1XCI6XHJcblx0XHRcdFx0XHR0aW1lUmFuZ2UgPSBcInllYXJcIjtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107IC8vIOi/meS4qumYtuauteeahOe0r+iuoembhuWQiFxyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRbdmFsdWVGaWVsZF06IGFyZ3MuY2VsbFNldHNbaV1bdmFsdWVGaWVsZF0sXHJcblx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSkgPT09XHJcblx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bZGF0ZUZpZWxkXSksXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g5aaC5p6cYXNPZkRhdGXkuI3mmK8g5pys5pyIL+Wto+W6pi/lubQg55qE5pyA5ZCO5LiA5aSp77yM6YO95piv5oiq6IezIOS4iuS4quaciC/lraPluqYv5bm0IOeahOacgOWQjuS4gOWkqeeahOaVsOaNruWOu+iuoeeul1xyXG5cdFx0XHRsZXQgX2FzT2ZEYXRlID0gbW9tZW50KGFzT2ZEYXRlKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJfYXNPZkRhdGU6XCIsIF9hc09mRGF0ZSk7XHJcblx0XHRcdGxldCBpc0VuZE9mUGVyaW9kID0gKHVuaXQpID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdFx0X2FzT2ZEYXRlLmZvcm1hdChcIllZWVktTU0tRERcIikgPT09XHJcblx0XHRcdFx0XHRfYXNPZkRhdGUuZW5kT2YodW5pdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdH07XHJcblx0XHRcdGxldCBlbmREYXRlID0gaXNFbmRPZlBlcmlvZCh0aW1lUmFuZ2UpXHJcblx0XHRcdFx0PyBtb21lbnQoYXNPZkRhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIilcclxuXHRcdFx0XHQ6IG1vbWVudChhc09mRGF0ZSlcclxuXHRcdFx0XHRcdFx0LnN1YnRyYWN0KDEsIHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmVuZE9mKHRpbWVSYW5nZSlcclxuXHRcdFx0XHRcdFx0LmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblxyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImVuZERhdGU6XCIsIGVuZERhdGUpO1xyXG5cdFx0XHR2YWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKChpdGVtKSA9PlxyXG5cdFx0XHRcdG1vbWVudChpdGVtLmRhdGUpLmlzU2FtZU9yQmVmb3JlKGVuZERhdGUpXHJcblx0XHRcdCk7XHJcblx0XHRcdHZhbHVlcyA9IHNvcnRCeSh2YWx1ZXMsIFwiZGF0ZVwiKTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJ2YWx1ZXM6XCIsIHZhbHVlcyk7XHJcblxyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgcmVzdWx0ID0gdGhpcy5nZXRUaW1lUmFuZ2VzKFxyXG5cdFx0XHRcdFx0dmFsdWVzLFxyXG5cdFx0XHRcdFx0ZW5kRGF0ZSxcclxuXHRcdFx0XHRcdHRpbWVSYW5nZSxcclxuXHRcdFx0XHRcdFwiZGF0ZVwiXHJcblx0XHRcdFx0KTsgLy8g5ZCE5Liq6Zi25q6155qE5pWw5o2uXHJcblx0XHRcdFx0bGV0IHJlc3VsdFRvdGFsID0ge307IC8vIOWQhOS4qumYtuauteaAu+WSjFxyXG5cdFx0XHRcdGZvciAoY29uc3QgcHJvcCBpbiByZXN1bHQpIHtcclxuXHRcdFx0XHRcdHJlc3VsdFRvdGFsW3Byb3BdID0gcmVzdWx0W3Byb3BdLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGFjYyArIChjdXJbdmFsdWVGaWVsZF0gfHwgMCk7XHJcblx0XHRcdFx0XHR9LCAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHQ6XCIsIHJlc3VsdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZXN1bHRUb3RhbDpcIiwgcmVzdWx0VG90YWwpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBjdW11bGF0aXZlU3VtID0ge307IC8vIOWQhOS4qumYtuautee0r+iuoeWSjFxyXG5cdFx0XHRcdGxldCBzdW0gPSAwO1xyXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdFRvdGFsKSkge1xyXG5cdFx0XHRcdFx0c3VtICs9IHJlc3VsdFRvdGFsW2tleV07XHJcblx0XHRcdFx0XHRjdW11bGF0aXZlU3VtW2Ake2tleX1gXSA9IHN1bTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJjdW11bGF0aXZlU3VtOlwiLCBjdW11bGF0aXZlU3VtKTtcclxuXHJcblx0XHRcdFx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1bXVsYXRpdmVTdW0pO1xyXG5cdFx0XHRcdGxldCB0d3JMaXN0ID0gW107XHJcblx0XHRcdFx0Ly8g6YGN5Y6G5q+P5Lik5Liq6Zi25q61IOiuoeeul1RXUlxyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGtleTEgPSBrZXlzW2ldO1xyXG5cdFx0XHRcdFx0Y29uc3Qga2V5MiA9IGtleXNbaSArIDFdO1xyXG5cclxuXHRcdFx0XHRcdC8vIOiuoeeul+S4pOS4qumYtuauteS5i+mXtOeahOmAkuWinumHjywg5Ye65pWw5LiN6IO95Li6MFxyXG5cdFx0XHRcdFx0aWYgKGN1bXVsYXRpdmVTdW1ba2V5MV0gIT0gMCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBpbmNyZW1lbnQgPVxyXG5cdFx0XHRcdFx0XHRcdGN1bXVsYXRpdmVTdW1ba2V5Ml0gLSBjdW11bGF0aXZlU3VtW2tleTFdO1xyXG5cdFx0XHRcdFx0XHRsZXQgdHdyID0gaW5jcmVtZW50IC8gY3VtdWxhdGl2ZVN1bVtrZXkxXTtcclxuXHRcdFx0XHRcdFx0dHdyTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRkYXRlOiBrZXkyLFxyXG5cdFx0XHRcdFx0XHRcdHR3cjogdHdyLFxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g6K6h566XQXZlcmFnZSBUV1JcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcInR3ckxpc3Q6XCIsIHR3ckxpc3QpO1xyXG5cdFx0XHRcdGxldCBhdmVyYWdlVFdSID0gdGhpcy5jYWxjdWxhdGVHcm93dGhSYXRlKFxyXG5cdFx0XHRcdFx0dHdyTGlzdC5tYXAoKHgpID0+IHgudHdyKVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCLorqHnrpdBdmVyYWdlIFRXUjpcIiwgYXZlcmFnZVRXUik7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0W1xyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUk1URFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUlFURFwiLFxyXG5cdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVRXUllURFwiLFxyXG5cdFx0XHRcdFx0XS5pbmNsdWRlcyhhcmdzLmFnZ3JlZ2F0ZVR5cGUpXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBTTVAyLTE2NTIwIFRXUiDmnIgv5a2jL+W5tFxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdGlzTmFOKGF2ZXJhZ2VUV1IpIHx8IGF2ZXJhZ2VUV1IgPT0gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdD8gXCJcIlxyXG5cdFx0XHRcdFx0XHRcdDogYXZlcmFnZVRXUi50b0ZpeGVkKDQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoaXNOYU4oYXZlcmFnZVRXUikgfHwgYXZlcmFnZVRXUiA9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gU01QMi0xNjY4MyBWQVIg5Yy65YiGOTkl5ZKMOTUlXHJcblx0XHRcdFx0XHRcdGxldCBaU2NvcmUgPSBbXHJcblx0XHRcdFx0XHRcdFx0XCJDYWxjdWxhdGVWQVJNVERfOTlcIixcclxuXHRcdFx0XHRcdFx0XHRcIkNhbGN1bGF0ZVZBUlFURF85OVwiLFxyXG5cdFx0XHRcdFx0XHRcdFwiQ2FsY3VsYXRlVkFSWVREXzk5XCIsXHJcblx0XHRcdFx0XHRcdF0uaW5jbHVkZXMoYXJncy5hZ2dyZWdhdGVUeXBlKVxyXG5cdFx0XHRcdFx0XHRcdD8gMi4zM1xyXG5cdFx0XHRcdFx0XHRcdDogMS42NTtcclxuXHRcdFx0XHRcdFx0aWYgKHR3ckxpc3QubGVuZ3RoIDwgMikge1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdGxldCBTRCA9IHRoaXMuY2FsY3VsYXRlU3RhbmRhcmREZXZpYXRpb24oXHJcblx0XHRcdFx0XHRcdFx0XHR0d3JMaXN0Lm1hcCgoeCkgPT4geC50d3IpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcImNhbGN1bGF0ZVN0YW5kYXJkRGV2aWF0aW9uOlwiLCBTRCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IFZBUiA9IGF2ZXJhZ2VUV1IgLSBTRCAqIFpTY29yZTtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gVkFSLnRvRml4ZWQoNCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJhcmdzLnZhbHVlOlwiLCBhcmdzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlICYmXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRkZWxldGUgdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXTtcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdID0ge1xyXG5cdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRmb3JtYXQ6XHJcblx0XHRcdFx0XHRcdGZpZWxkLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0Lmxlbmd0aCAmJlxyXG5cdFx0XHRcdFx0XHRcdCAgZmllbGRbMF0uZm9ybWF0WzBdLmZvcm1hdENoZWNrZWRcclxuXHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZHBcclxuXHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdDogXCJQMlwiLFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvL1NNUDItMjcwMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJBY3R1YWxBdWRpdGVkXCIpIHtcclxuXHRcdFx0bGV0IE5BVkFkaiA9IDA7XHJcblx0XHRcdGxldCB2YWx1ZXMgPSBbXTtcclxuXHRcdFx0bGV0IGZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdGVsLmNvbE5hbWUgPT09XHJcblx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmdldEFnZ3JlZ2F0ZVR5cGUoXHJcblx0XHRcdFx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZVxyXG5cdFx0XHRcdFx0KVxyXG5cdFx0XHQpO1xyXG5cdFx0XHQvL1NNUDItMjcxMyBvbmx5IGp1ZGdlIGZvciB0aGlzIGRhdGFNYXJ0KEdyb3NzTmV0KVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGUgPT09IFwiR3Jvc3NOZXRcIiB8fFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PVxyXG5cdFx0XHRcdFx0XCJDb21iaW5lZEludmVzdG1lbnRGdW5kTkNvbXBhbnlDYXNoZmxvd1wiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzLmNlbGxTZXRzW2ldW1wiSVJSQW1vdW50XCJdLFxyXG5cdFx0XHRcdFx0XHRkYXRlOlxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pID09PVxyXG5cdFx0XHRcdFx0XHRcdFwiSW52YWxpZCBkYXRlXCJcclxuXHRcdFx0XHRcdFx0XHRcdD8gYXNPZkRhdGVcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3MuY2VsbFNldHNbaV1bXCJBY3R1YWxBdWRpdGVkTkFWXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdC8vZmlsdGVyIHRoZSBkYXRhIGJ5IHRoZSBEYXRhVHlwZShBY3R1YWwgUmVwb3J0ZWQgQXVkaXRlZClcclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0bGV0IGFyZ3NkYXRhID0gYXJncy5jZWxsU2V0cy5maWx0ZXIoXHJcblx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdGVsLkRhdGFUeXBlID09PSBcIkFDVFVBTF9BVURJVEVEXCIgfHxcclxuXHRcdFx0XHRcdFx0ZWwuRGF0YVR5cGUgPT09IFwiUkVQT1JURURcIlxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzZGF0YS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdFx0XHRcdFx0YW1vdW50OiBhcmdzZGF0YVtpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3NkYXRhW2ldW1wiSVJSRGF0ZVwiXSksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0TkFWQWRqICs9IGFyZ3NkYXRhW2ldW1wiSVJSQWRqVmFsdWVcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKE5BVkFkaiA+IDAuMDAwMSB8fCBOQVZBZGogPCAtMC4wMDAxKSB7XHJcblx0XHRcdFx0dmFsdWVzLnB1c2goe1xyXG5cdFx0XHRcdFx0YW1vdW50OiBOQVZBZGosXHJcblx0XHRcdFx0XHRkYXRlOiBhc09mRGF0ZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHR2YWx1ZXMgPSBzb3J0QnkodmFsdWVzLCBcImRhdGVcIik7XHJcblx0XHRcdGlmICh2YWx1ZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdGxldCBndWVzcyA9IDAuMTtcclxuXHRcdFx0XHRjb25zdCBzdW1BbW91bnQgPSB2YWx1ZXNcclxuXHRcdFx0XHRcdC5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KVxyXG5cdFx0XHRcdFx0LnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIsIDApO1xyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPCAwKSB7XHJcblx0XHRcdFx0XHRndWVzcyA9IC0wLjE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vU01QMi0yMjQ5IGZpeGVkIHRoZSBiaWcgaXJyIGlzc3VlXHJcblx0XHRcdFx0aWYgKHN1bUFtb3VudCA9PT0gMCkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IDA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlSXRlbXMgPSB2YWx1ZXMuc2xpY2UoMCwgdmFsdWVzLmxlbmd0aCAtIDEpO1xyXG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uYW1vdW50KTtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGVMaXN0ID0gdmFsdWVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0ZSk7XHJcblx0XHRcdFx0XHRjb25zdCBsYXN0SXRlbSA9IHZhbHVlc1t2YWx1ZXMubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRjb25zdCBuYXZBZGp1c3QgPSBsYXN0SXRlbS5hbW91bnQ7XHJcblx0XHRcdFx0XHRjb25zdCBsYXRlc3REYXRlID0gbGFzdEl0ZW0uZGF0ZTtcclxuXHRcdFx0XHRcdGxldCBpcnIgPVxyXG5cdFx0XHRcdFx0XHR0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkV4Y2VsRm9ybXVsYXMuX0NhbGN1bGF0ZVhpcnIoXHJcblx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdGRhdGVMaXN0LFxyXG5cdFx0XHRcdFx0XHRcdG5hdkFkanVzdCxcclxuXHRcdFx0XHRcdFx0XHRsYXRlc3REYXRlXHJcblx0XHRcdFx0XHRcdCk7XHJcblxyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlyciA9PT0gbnVsbCA/IDAgOiBpcnI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZSAmJlxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV07XHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdG5hbWU6IGFyZ3MuZmllbGROYW1lLFxyXG5cdFx0XHRcdFx0Zm9ybWF0OlxyXG5cdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0PyBmaWVsZFswXS5mb3JtYXQgJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdC5sZW5ndGggJiZcclxuXHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UucGl2b3RUYWJsZWZvcm1hdFBlcmNlbnQoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRbMF0uZm9ybWF0WzBdLnNlbGVjdGVkRm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHQgIClcclxuXHRcdFx0XHRcdFx0XHQ6IFwiUDJcIixcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMzQxMVxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVJUlJSZXBvcnRlZFwiKSB7XHJcblx0XHRcdGxldCBOQVZBZGogPSAwO1xyXG5cdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRlbC5jb2xOYW1lID09PVxyXG5cdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRBZ2dyZWdhdGVUeXBlKFxyXG5cdFx0XHRcdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGVcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdHRoaXMucG9ydGxldC5maWd1cmVDb2RlID09PSBcIkdyb3NzTmV0XCIgfHxcclxuXHRcdFx0XHR0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSA9PT1cclxuXHRcdFx0XHRcdFwiQ29tYmluZWRJbnZlc3RtZW50RnVuZE5Db21wYW55Q2FzaGZsb3dcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuY2VsbFNldHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGNvbnN0IGRhdGEgPSB7XHJcblx0XHRcdFx0XHRcdGFtb3VudDogYXJncy5jZWxsU2V0c1tpXVtcIklSUkFtb3VudFwiXSxcclxuXHRcdFx0XHRcdFx0ZGF0ZTpcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSA9PT1cclxuXHRcdFx0XHRcdFx0XHRcIkludmFsaWQgZGF0ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGFzT2ZEYXRlXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMucGJmLnRpbWUoYXJncy5jZWxsU2V0c1tpXVtcIklSUkRhdGVcIl0pLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdE5BVkFkaiArPSBhcmdzLmNlbGxTZXRzW2ldW1wiUmVwb3J0ZWROQVZcIl07XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5hbW91bnQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChkYXRhKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRhID0ge1xyXG5cdFx0XHRcdFx0XHRhbW91bnQ6IGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJBbW91bnRcIl0sXHJcblx0XHRcdFx0XHRcdGRhdGU6XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5wYmYudGltZShhcmdzLmNlbGxTZXRzW2ldW1wiSVJSRGF0ZVwiXSkgPT09XHJcblx0XHRcdFx0XHRcdFx0XCJJbnZhbGlkIGRhdGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0PyBhc09mRGF0ZVxyXG5cdFx0XHRcdFx0XHRcdFx0OiB0aGlzLnBiZi50aW1lKGFyZ3MuY2VsbFNldHNbaV1bXCJJUlJEYXRlXCJdKSxcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHROQVZBZGogKz0gYXJncy5jZWxsU2V0c1tpXVtcIklSUkFkalZhbHVlXCJdO1xyXG5cdFx0XHRcdFx0aWYgKGRhdGEuYW1vdW50ICE9IDApIHtcclxuXHRcdFx0XHRcdFx0dmFsdWVzLnB1c2goZGF0YSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChOQVZBZGogPiAwLjAwMDEgfHwgTkFWQWRqIDwgLTAuMDAwMSkge1xyXG5cdFx0XHRcdHZhbHVlcy5wdXNoKHtcclxuXHRcdFx0XHRcdGFtb3VudDogTkFWQWRqLFxyXG5cdFx0XHRcdFx0ZGF0ZTogYXNPZkRhdGUsXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdFx0dmFsdWVzID0gc29ydEJ5KHZhbHVlcywgXCJkYXRlXCIpO1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRsZXQgZ3Vlc3MgPSAwLjE7XHJcblx0XHRcdFx0Y29uc3Qgc3VtQW1vdW50ID0gdmFsdWVzXHJcblx0XHRcdFx0XHQubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudClcclxuXHRcdFx0XHRcdC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLCAwKTtcclxuXHRcdFx0XHRpZiAoc3VtQW1vdW50IDwgMCkge1xyXG5cdFx0XHRcdFx0Z3Vlc3MgPSAtMC4xO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvL1NNUDItMjI0OSBmaXhlZCB0aGUgYmlnIGlyciBpc3N1ZVxyXG5cdFx0XHRcdGlmIChzdW1BbW91bnQgPT09IDApIHtcclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSAwO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUl0ZW1zID0gdmFsdWVzLnNsaWNlKDAsIHZhbHVlcy5sZW5ndGggLSAxKTtcclxuXHRcdFx0XHRcdGNvbnN0IHZhbHVlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmFtb3VudCk7XHJcblx0XHRcdFx0XHRjb25zdCBkYXRlTGlzdCA9IHZhbHVlSXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmRhdGUpO1xyXG5cdFx0XHRcdFx0Y29uc3QgbGFzdEl0ZW0gPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0Y29uc3QgbmF2QWRqdXN0ID0gbGFzdEl0ZW0uYW1vdW50O1xyXG5cdFx0XHRcdFx0Y29uc3QgbGF0ZXN0RGF0ZSA9IGxhc3RJdGVtLmRhdGU7XHJcblx0XHRcdFx0XHRsZXQgaXJyID1cclxuXHRcdFx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5FeGNlbEZvcm11bGFzLl9DYWxjdWxhdGVYaXJyKFxyXG5cdFx0XHRcdFx0XHRcdHZhbHVlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRkYXRlTGlzdCxcclxuXHRcdFx0XHRcdFx0XHRuYXZBZGp1c3QsXHJcblx0XHRcdFx0XHRcdFx0bGF0ZXN0RGF0ZVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBpcnIgPT09IG51bGwgPyAwIDogaXJyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gMDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbYXJncy5maWVsZE5hbWVdO1xyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV0gPSB7XHJcblx0XHRcdFx0XHRuYW1lOiBhcmdzLmZpZWxkTmFtZSxcclxuXHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0ZmllbGQubGVuZ3RoID4gMFxyXG5cdFx0XHRcdFx0XHRcdD8gZmllbGRbMF0uZm9ybWF0ICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXRbMF0uZm9ybWF0Q2hlY2tlZFxyXG5cdFx0XHRcdFx0XHRcdFx0PyB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBpdm90VGFibGVmb3JtYXRQZXJjZW50KFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmZvcm1hdFswXS5zZWxlY3RlZEZvcm1hdFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHQ6IHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZm9ybWF0UGVyY2VudChcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5kcFxyXG5cdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0OiBcIlAyXCIsXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlUElDXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZURQSVwiIHx8XHJcblx0XHRcdGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJDYWxjdWxhdGVUVlBJXCIgfHxcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09PSBcIkNhbGN1bGF0ZVJWUElcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTUFjdHVhbEF1ZGl0ZWRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ2FsY3VsYXRlTVJlcG9ydGVkXCJcclxuXHRcdCkge1xyXG5cdFx0XHRsZXQgdG90YWxOdW1lcmF0b3IgPSAwO1xyXG5cdFx0XHRsZXQgdG90YWxEZW5vbWluYXRvciA9IDA7XHJcblx0XHRcdGxldCBudW1lcmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZGVub21pbmF0b3JOYW1lO1xyXG5cdFx0XHRsZXQgZmllbGQgPSB0aGlzLmNvbmZpZ0ZpZWxkcy5maWx0ZXIoXHJcblx0XHRcdFx0KGVsKSA9PlxyXG5cdFx0XHRcdFx0ZWwuY29sTmFtZSA9PT1cclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0QWdncmVnYXRlVHlwZShcclxuXHRcdFx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlXHJcblx0XHRcdFx0XHQpXHJcblx0XHRcdCk7XHJcblx0XHRcdGlmIChmaWVsZC5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0Y29uc3QgZm9ybXVsYUFycmF5ID0gZmllbGRbMF0uZm9ybXVsYS5zcGxpdChcIi9cIik7XHJcblx0XHRcdFx0bnVtZXJhdG9yTmFtZSA9IGZvcm11bGFBcnJheVswXTtcclxuXHRcdFx0XHRkZW5vbWluYXRvck5hbWUgPSBmb3JtdWxhQXJyYXlbMV07XHJcblx0XHRcdH1cclxuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0dG90YWxOdW1lcmF0b3IgKz0gYXJncy5jZWxsU2V0c1tqXVtudW1lcmF0b3JOYW1lXTtcclxuXHRcdFx0XHR0b3RhbERlbm9taW5hdG9yICs9IGFyZ3MuY2VsbFNldHNbal1bZGVub21pbmF0b3JOYW1lXTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAodG90YWxEZW5vbWluYXRvciAhPT0gMCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSB0b3RhbE51bWVyYXRvciAvIHRvdGFsRGVub21pbmF0b3I7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUgJiZcclxuXHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmZvcm1hdEZpZWxkc1thcmdzLmZpZWxkTmFtZV1cclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5mb3JtYXRGaWVsZHNbXHJcblx0XHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZm9ybWF0RmllbGRzW2FyZ3MuZmllbGROYW1lXSA9IHtcclxuXHRcdFx0XHRcdFx0bmFtZTogYXJncy5maWVsZE5hbWUsXHJcblx0XHRcdFx0XHRcdGZvcm1hdDpcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5sZW5ndGggPiAwXHJcblx0XHRcdFx0XHRcdFx0XHQ/IGZpZWxkWzBdLmZvcm1hdCAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0ICBmaWVsZFswXS5mb3JtYXQubGVuZ3RoICYmXHJcblx0XHRcdFx0XHRcdFx0XHQgIGZpZWxkWzBdLmZvcm1hdFswXS5mb3JtYXRDaGVja2VkXHJcblx0XHRcdFx0XHRcdFx0XHRcdD8gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5waXZvdFRhYmxlZm9ybWF0TXVsdGlwbGUoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFswXS5mb3JtYXRbMF0uc2VsZWN0ZWRGb3JtYXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICApXHJcblx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5mb3JtYXRNdWx0aXBsZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkWzBdLmRwXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0OiBcIiMjIzAuMDAneCdcIixcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiIHx8IGFyZ3MuYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IHRoaXMuY2FsY3VsYXRlZEZpc3RMYXN0KFxyXG5cdFx0XHRcdGFyZ3MsXHJcblx0XHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlLFxyXG5cdFx0XHRcdGFyZ3MuZmllbGROYW1lXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiQ291bnRcIiB8fFxyXG5cdFx0XHRhcmdzLmFnZ3JlZ2F0ZVR5cGUgPT09IFwiRGlzdGluY3RDb3VudFwiXHJcblx0XHQpIHtcclxuXHRcdFx0aWYgKGFyZ3MudmFsdWUpIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZS50b0ZpeGVkKDIpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHQhYXJncy52YWx1ZSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IGZhbHNlICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiZmFsc2VcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdH1cclxuXHRcdC8vIOaWsOW7unBpdm90IHRhYmxlLCDov5jmsqHmnInorr7nva5yb3csIOmAieS6hmNvbHVtbuS5i+WQjmdyYW5kdG90YWzkvJrmnInlgLxcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIgJiZcclxuXHRcdFx0IXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHR9XHJcblx0XHQvL1NNUDItMjg4OVxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93U3ViVG90YWxzID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCB2YWx1ZUZpZWxkX2RhdGEgPSB0aGlzLmNvbmZpZy55YXhpcy5zZXJpZXMuZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuY29sTmFtZSA9PT0gYXJncy5maWVsZE5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKHZhbHVlRmllbGRfZGF0YVswXS5zaG93R3JhbmRUb3RhbHMgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0XHRcdGFyZ3Muc2tpcEZvcm1hdHRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8gU01QMi0zNDE2IHN0YXJ0XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMuemVyb0Zvcm1hdERhdGEuaGdMaXN0LmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlID09PSAwXHJcblx0XHQpIHtcclxuXHRcdFx0YXJncy52YWx1ZSA9IFwiLVwiO1xyXG5cdFx0XHRhcmdzLnNraXBGb3JtYXR0aW5nID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy56ZXJvRm9ybWF0RGF0YS5lbXB0eUxpc3QuaW5jbHVkZXMoYXJncy5maWVsZE5hbWUpICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgPT09IDBcclxuXHRcdCkge1xyXG5cdFx0XHRhcmdzLnZhbHVlID0gXCJcIjtcclxuXHRcdFx0YXJncy5za2lwRm9ybWF0dGluZyA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMubWlsbGlvbkZpZWxkcy5pbmNsdWRlcyhhcmdzLmZpZWxkTmFtZSkgJiZcclxuXHRcdFx0IWlzTmFOKE51bWJlcihhcmdzLnZhbHVlKSkgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gMCAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSBcIlwiICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IG51bGxcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdGFyZ3Mucm93Q2VsbFR5cGUgPT0gXCJncmFuZFRvdGFsXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSkge1xyXG5cdFx0XHRcdFx0dGhpcy50b3RhbEZvcm1hdHRlZFthcmdzLmZpZWxkTmFtZV0gPSB0cnVlO1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDAwMDAwO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDAwMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBTTVAyLTI0ODYgJiBwZXJjZW50TnVt55qEZm9ybWF06Zeu6aKYXHJcblx0XHRpZiAoXHJcblx0XHRcdHRoaXMucGVyY2VudE51bUZpZWxkcy5sZW5ndGggJiZcclxuXHRcdFx0dGhpcy5wZXJjZW50TnVtRmllbGRzLmluY2x1ZGVzKGFyZ3MuZmllbGROYW1lKSAmJlxyXG5cdFx0XHQhaXNOYU4oTnVtYmVyKGFyZ3MudmFsdWUpKSAmJlxyXG5cdFx0XHRhcmdzLnZhbHVlICE9PSAwICYmXHJcblx0XHRcdGFyZ3MudmFsdWUgIT09IFwiXCIgJiZcclxuXHRcdFx0YXJncy52YWx1ZSAhPT0gbnVsbFxyXG5cdFx0KSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09IFwiZ3JhbmRUb3RhbFwiICYmXHJcblx0XHRcdFx0YXJncy5yb3dDZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMudG90YWxGb3JtYXR0ZWRbYXJncy5maWVsZE5hbWVdKSB7XHJcblx0XHRcdFx0XHR0aGlzLnRvdGFsRm9ybWF0dGVkW2FyZ3MuZmllbGROYW1lXSA9IHRydWU7XHJcblx0XHRcdFx0XHRhcmdzLnZhbHVlID0gYXJncy52YWx1ZSAvIDEwMDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MudmFsdWUgLyAxMDA7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5hZ2dyZWdhdGVUeXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCIgJiZcclxuXHRcdFx0IU51bWJlci5pc05hTihhcmdzLnZhbHVlKVxyXG5cdFx0KSB7XHJcblx0XHRcdGFyZ3MudmFsdWUgPSBOdW1iZXIoYXJncy52YWx1ZSkudG9GaXhlZCgyKTtcclxuXHRcdH1cclxuXHRcdC8vIFNNUDItMzQxNiBlbmRcclxuXHRcdHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjYWxjdWxhdGVkRmlzdExhc3QoYXJncywgYWdncmVnYXRlVHlwZSwgZmllbGROYW1lKSB7XHJcblx0XHRpZiAoIWFyZ3Mucm93LmFjdHVhbFRleHQpIGFyZ3Mucm93LmFjdHVhbFRleHQgPSBhcmdzLnJvdy5mb3JtYXR0ZWRUZXh0O1xyXG5cdFx0aWYgKCFhcmdzLmNvbHVtbi5hY3R1YWxUZXh0KVxyXG5cdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ID0gYXJncy5jb2x1bW4uZm9ybWF0dGVkVGV4dDtcclxuXHRcdGxldCBmaWVsZCA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0KGVsKSA9PiBlbC5jb2xOYW1lID09PSBmaWVsZE5hbWVcclxuXHRcdClbMF07XHJcblxyXG5cdFx0aWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwidmFsdWVcIiAmJiAhYXJncy5yb3cuaGFzQ2hpbGQpIHtcclxuXHRcdFx0aWYgKGFyZ3MuY2VsbFNldHNbMF0pIHtcclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJGaXJzdFwiKSB7XHJcblx0XHRcdFx0XHRmb3IgKFxyXG5cdFx0XHRcdFx0XHRsZXQgZmlyc3RJbmRleCA9IDA7XHJcblx0XHRcdFx0XHRcdGZpcnN0SW5kZXggPCBhcmdzLmNlbGxTZXRzLmxlbmd0aDtcclxuXHRcdFx0XHRcdFx0Zmlyc3RJbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbZmlyc3RJbmRleF1bZmllbGROYW1lXTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmIChhZ2dyZWdhdGVUeXBlID09PSBcIkxhc3RcIikge1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGxhc3RJbmRleCA9IGFyZ3MuY2VsbFNldHMubGVuZ3RoIC0gMTtcclxuXHRcdFx0XHRcdFx0bGFzdEluZGV4ID49IDA7XHJcblx0XHRcdFx0XHRcdGxhc3RJbmRleC0tXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoID09XHJcblx0XHRcdFx0XHRcdFx0XHQxICYmXHJcblx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW5DZWxsVHlwZSA9PSBcImdyYW5kVG90YWxcIlxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInN0cmluZ1wiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm52YXJjaGFyXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlICYmXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aFxyXG5cdFx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbERhdGFWYWx1ZVthcmdzLnJvdy5yb3dJbmRleF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBvYmogPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClbMF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9iaikgYXJncy52YWx1ZSA9IG9iai52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gbnVsbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IGFyZ3MuY2VsbFNldHNbbGFzdEluZGV4XVtmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJudW1iZXJcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwibXVsdGlwbGVcIiB8fFxyXG5cdFx0XHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJwZXJjZW50TnVtXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUgIT0gbnVsbCkgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0ZmllbGQuZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucGJmLnRpbWUoYXJncy52YWx1ZSkgPiBcIjE5MDAtMDEtMDFcIikgYnJlYWs7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYXJncy52YWx1ZSkgYnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm51bWJlclwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcIm11bHRpcGxlXCIgfHxcclxuXHRcdFx0XHRcdGZpZWxkLmRhdGFUeXBlID09IFwicGVyY2VudFwiIHx8XHJcblx0XHRcdFx0XHRmaWVsZC5kYXRhVHlwZSA9PSBcInBlcmNlbnROdW1cIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLnJvd3MubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0XHQhTnVtYmVyKHRoaXMuZ3JhbmRUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKE51bWJlcih0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFyZ3MuYWdncmVnYXRlVHlwZSAhPT0gXCJDYWxjdWxhdGVkRmllbGRcIikge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdICs9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdCFOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArIGFyZ3Mucm93LmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fFxyXG5cdFx0XHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0XHRcdE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJyb3dcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdID0gMDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFwicm93XCIgKyBhcmdzLnJvdy5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XSArPSBOdW1iZXIoYXJncy52YWx1ZSk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdC8vIFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lIOihqOekuihjZWxsOiBhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJiBhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcInZhbHVlXCIpXHJcblx0XHRcdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0IU51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdF1cclxuXHRcdFx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0XHRcdGlzTmFOKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0XHQpXHJcblx0XHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdF0gKz0gTnVtYmVyKGFyZ3MudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGFyZ3Mucm93Q2VsbFR5cGUgPT09IFwic3ViVG90YWxcIiB8fCBhcmdzLnJvdy5oYXNDaGlsZCkge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT09IFwic3RyaW5nXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PT0gXCJudmFyY2hhclwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRkYXRhVHlwZSA9PSBcImRhdGV0aW1lXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0YXJncy52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0bGV0IHZhbHVlID0gMDtcclxuXHRcdFx0XHRsZXQgY2hpbGRIZWFkZXJzID0gW107XHJcblx0XHRcdFx0aWYgKGFnZ3JlZ2F0ZVR5cGUgPT09IFwiRmlyc3RcIikge1xyXG5cdFx0XHRcdFx0bGV0IGdyb3VwTmFtZUFycmF5cyA9IFtdO1xyXG5cdFx0XHRcdFx0bGV0IHJvd3MgPSB0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5yb3dzO1xyXG5cdFx0XHRcdFx0Zm9yIChcclxuXHRcdFx0XHRcdFx0bGV0IGluZGV4ID0gYXJncy5yb3cubGV2ZWw7XHJcblx0XHRcdFx0XHRcdGluZGV4IDwgcm93cy5sZW5ndGg7XHJcblx0XHRcdFx0XHRcdGluZGV4KytcclxuXHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRncm91cE5hbWVBcnJheXMucHVzaChyb3dzW2luZGV4XS5uYW1lKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5jZWxsU2V0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9IE51bWJlcihfQ2VsbFNldHNbMF1bZmllbGROYW1lXSkgfHwgMDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoYWdncmVnYXRlVHlwZSA9PT0gXCJMYXN0XCIpIHtcclxuXHRcdFx0XHRcdGxldCBncm91cE5hbWVBcnJheXMgPSBbXTtcclxuXHRcdFx0XHRcdGxldCByb3dzID0gdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3Mucm93cztcclxuXHRcdFx0XHRcdGZvciAoXHJcblx0XHRcdFx0XHRcdGxldCBpbmRleCA9IGFyZ3Mucm93LmxldmVsO1xyXG5cdFx0XHRcdFx0XHRpbmRleCA8IHJvd3MubGVuZ3RoO1xyXG5cdFx0XHRcdFx0XHRpbmRleCsrXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLnB1c2gocm93c1tpbmRleF0ubmFtZSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gYXJncy5jZWxsU2V0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzID0gW107XHJcblx0XHRcdFx0XHRcdGxldCBoZWFkZXIgPSBncm91cE5hbWVBcnJheXNcclxuXHRcdFx0XHRcdFx0XHQubWFwKChuYW1lKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMucHVzaChhcmdzLmNlbGxTZXRzW2ldW25hbWVdKTtcclxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBhcmdzLmNlbGxTZXRzW2ldW25hbWVdO1xyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0LmpvaW4oXCItXCIpO1xyXG5cdFx0XHRcdFx0XHRpZiAoIShjaGlsZEhlYWRlcnMgYXMgYW55KS5pbmNsdWRlcyhoZWFkZXIpKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IGZpbHRlck9iajogYW55ID0ge307XHJcblx0XHRcdFx0XHRcdFx0Z3JvdXBOYW1lQXJyYXlzLm1hcChcclxuXHRcdFx0XHRcdFx0XHRcdChuYW1lLCB4KSA9PiAoZmlsdGVyT2JqW25hbWVdID0gdmFsdWVzW3hdKVxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0bGV0IF9DZWxsU2V0cyA9IF9maWx0ZXIoYXJncy5jZWxsU2V0cywgZmlsdGVyT2JqKTtcclxuXHRcdFx0XHRcdFx0XHRjaGlsZEhlYWRlcnMucHVzaChoZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRcdHZhbHVlICs9XHJcblx0XHRcdFx0XHRcdFx0XHROdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0XHRcdF9DZWxsU2V0c1tfQ2VsbFNldHMubGVuZ3RoIC0gMV1bZmllbGROYW1lXVxyXG5cdFx0XHRcdFx0XHRcdFx0KSB8fCAwO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoYXJncy5jb2x1bW4uYWN0dWFsVGV4dCAhPT0gXCJHcmFuZCBUb3RhbFwiKVxyXG5cdFx0XHRcdFx0dGhpcy5jb2x1bW5UZXh0cy5wdXNoKGFyZ3MuY29sdW1uLmFjdHVhbFRleHQpO1xyXG5cclxuXHRcdFx0XHRpZiAoIXRoaXMucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNvbHVtbnMubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdCFOdW1iZXIodGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oTnVtYmVyKHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0pKVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW2ZpZWxkTmFtZV0gPSAwO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbZmllbGROYW1lXSArPSBOdW1iZXIodmFsdWUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoXHJcblx0XHRcdFx0XHR0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5jb2x1bW5zLmxlbmd0aCA9PSAxXHJcblx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHQvLyBcInJvd1wiICsgYXJncy5yb3cuYWN0dWFsVGV4dCArIGZpZWxkTmFtZSDooajnpLooY2VsbDogYXJncy5yb3dDZWxsVHlwZSA9PT0gXCJ2YWx1ZVwiICYmIGFyZ3MuY29sdW1uQ2VsbFR5cGUgPT09IFwiZ3JhbmRUb3RhbFwiKVxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQhTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdCkgfHxcclxuXHRcdFx0XHRcdFx0aXNOYU4oXHJcblx0XHRcdFx0XHRcdFx0TnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zdWJUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XVxyXG5cdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3ViVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy5jb2x1bW4uYWN0dWFsVGV4dCArXHJcblx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XSA9IDA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdF0gKz0gTnVtYmVyKHZhbHVlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gLS0tPiBhbGxEYXRhVmFsdWXkuK3ov5nkuKrljZXlhYPmoLznmoTlgLzkuI3mraPnoa5cclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRhcmdzLmNvbHVtbkNlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIiAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3Mucm93LmFjdHVhbFRleHQgKyBcIkdyYW5kIFRvdGFsXCIgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8g5oqK5YmN6L656L+Z5LiqZmllbGTnmoTlh6DliJdzdWJ0b3RhbOWKoOi1t+adpVxyXG5cdFx0XHRcdFx0XHR0aGlzLmNvbHVtblRleHRzID0gdW5pcUJ5KHRoaXMuY29sdW1uVGV4dHMsIChlbCkgPT4gZWwpO1xyXG5cdFx0XHRcdFx0XHRsZXQgdmFsID0gMDtcclxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtblRleHRzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgZWxlbWVudCA9IHRoaXMuY29sdW1uVGV4dHNbaV07XHJcblx0XHRcdFx0XHRcdFx0dmFsICs9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN1YlRvdGFsc1tcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXJncy5yb3cuYWN0dWFsVGV4dCArIGVsZW1lbnQgKyBmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdF07XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0YXJncy52YWx1ZSA9IHZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChhcmdzLnJvd0NlbGxUeXBlID09PSBcImdyYW5kVG90YWxcIikge1xyXG5cdFx0XHRjb25zdCBkYXRhVHlwZSA9IGZpZWxkLmRhdGFUeXBlO1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJzdHJpbmdcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwibnZhcmNoYXJcIiB8fFxyXG5cdFx0XHRcdGRhdGFUeXBlID09IFwiZGF0ZVwiIHx8XHJcblx0XHRcdFx0ZGF0YVR5cGUgPT0gXCJkYXRldGltZVwiXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGFyZ3MudmFsdWUgPSBcIlwiO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmICghdGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmFsbERhdGFWYWx1ZSAmJiB0aGlzLmFsbERhdGFWYWx1ZS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRpZiAocm93T2Jqcykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzQXJyID0gSlNPTi5wYXJzZShcclxuXHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0XHRsZXQgb2JqQXJyID0gcm93T2Jqc0Fyci5maWx0ZXIoXHJcblx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdGVsLmFjdHVhbFRleHQgPT0gZmllbGROYW1lICYmIGVsLmlzR3JhbmRTdW1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPSB0aGlzLmdyYW5kVG90YWxzW2ZpZWxkTmFtZV07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tmaWVsZE5hbWVdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAoYXJncy5jb2x1bW5DZWxsVHlwZSA9PT0gXCJncmFuZFRvdGFsXCIpIHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuYWxsRGF0YVZhbHVlICYmIHRoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByb3dPYmpzID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsRGF0YVZhbHVlW3RoaXMuYWxsRGF0YVZhbHVlLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChyb3dPYmpzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZXQgcm93T2Jqc0FyciA9IEpTT04ucGFyc2UoXHJcblx0XHRcdFx0XHRcdFx0XHRcdEpTT04uc3RyaW5naWZ5KHJvd09ianMpXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0bGV0IG9iakFyciA9IHJvd09ianNBcnIuZmlsdGVyKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQoZWwpID0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbC5pc0dyYW5kU3VtXHJcblx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKG9iakFyciAmJiBvYmpBcnIubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MudmFsdWUgPVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRPYmplY3Qua2V5cyh0aGlzLmdyYW5kVG90YWxzKS5pbmNsdWRlcyhcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRcdClcclxuXHRcdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmdyYW5kVG90YWxzW1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MuY29sdW1uLmFjdHVhbFRleHQgK1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZE5hbWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQvLyBpZiAoXHJcblx0XHRcdFx0XHRcdC8vIFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY29sdW1ucy5sZW5ndGggPT0gMVxyXG5cdFx0XHRcdFx0XHQvLyApIHtcclxuXHRcdFx0XHRcdFx0Ly8gXHRhcmdzLnZhbHVlID0gdGhpcy5ncmFuZFRvdGFsc1tcclxuXHRcdFx0XHRcdFx0Ly8gXHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdC8vIFx0XTtcclxuXHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5hbGxEYXRhVmFsdWUgJiYgdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hbGxEYXRhVmFsdWVbdGhpcy5hbGxEYXRhVmFsdWUubGVuZ3RoIC0gMV07XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJvd09ianNBcnIgPSBKU09OLnBhcnNlKFxyXG5cdFx0XHRcdFx0XHRcdFx0SlNPTi5zdHJpbmdpZnkocm93T2JqcylcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGxldCBvYmpBcnIgPSByb3dPYmpzQXJyLmZpbHRlcihcclxuXHRcdFx0XHRcdFx0XHRcdChlbCkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuYWN0dWFsVGV4dCA9PSBmaWVsZE5hbWUgJiZcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZWwuaXNHcmFuZFN1bSAmJlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRlbC5jb2x1bW5IZWFkZXJzID09IGFyZ3MuY29sdW1uLmFjdHVhbFRleHRcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChvYmpBcnIgJiYgb2JqQXJyLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9IG9iakFycltvYmpBcnIubGVuZ3RoIC0gMV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChcclxuXHRcdFx0XHRcdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuZ3JhbmRUb3RhbHMpLmluY2x1ZGVzKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcImNvbFwiICsgYXJncy5jb2x1bW4uYWN0dWFsVGV4dCArIGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0YXJncy52YWx1ZSA9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XCJjb2xcIiArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkTmFtZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRhcmdzLnZhbHVlID1cclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZ3JhbmRUb3RhbHNbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiY29sXCIgKyBhcmdzLmNvbHVtbi5hY3R1YWxUZXh0ICsgZmllbGROYW1lXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHR0aGlzLmZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpO1xyXG5cdFx0cmV0dXJuIGFyZ3MudmFsdWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZvcm1hdFZhbChhcmdzLCBmaWVsZE5hbWUpIHtcclxuXHRcdHRoaXMuY29uZmlnRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblx0XHRcdGlmIChmaWVsZC5jb2xOYW1lID09IGZpZWxkTmFtZSkge1xyXG5cdFx0XHRcdHN3aXRjaCAoZmllbGQuZGF0YVR5cGUpIHtcclxuXHRcdFx0XHRcdGNhc2UgXCJkYXRlXCI6XHJcblx0XHRcdFx0XHRjYXNlIFwiZGF0ZXRpbWVcIjpcclxuXHRcdFx0XHRcdFx0aWYgKGFyZ3MudmFsdWUpIGFyZ3MudmFsdWUgPSBuZXcgRGF0ZShhcmdzLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRleGNsdWRlRmllbGRzKGZpZWxkcywgZGF0YSkge1xyXG5cdFx0bGV0IG5hbWVhcnJheSA9IFtdO1xyXG5cdFx0bGV0IGFycmF5ID0gW107XHJcblx0XHRmb3IgKGxldCBwcm9wIGluIGRhdGEpIHtcclxuXHRcdFx0YXJyYXkucHVzaChwcm9wKTtcclxuXHRcdH1cclxuXHRcdGZvciAobGV0IGl0ZW0gb2YgZmllbGRzKSB7XHJcblx0XHRcdG5hbWVhcnJheS5wdXNoKGl0ZW0uY29sTmFtZSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMgPSBkaWZmZXJlbmNlV2l0aChhcnJheSwgbmFtZWFycmF5KTtcclxuXHRcdGlmIChcclxuXHRcdFx0dGhpcy5leGNsdWRlRmllbGRzLmxlbmd0aCAmJlxyXG5cdFx0XHR0aGlzLmNvbmZpZy5ncm91cFNldHRpbmdzICYmXHJcblx0XHRcdHRoaXMuY29uZmlnLmdyb3VwU2V0dGluZ3MubGVuZ3RoXHJcblx0XHQpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmV4Y2x1ZGVGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCBlbCA9IHRoaXMuZXhjbHVkZUZpZWxkc1tpXTtcclxuXHRcdFx0XHRpZiAoc3RhcnRzV2l0aChlbCwgdGhpcy5jb25maWcuZ3JvdXBTZXR0aW5nc1swXS5uYW1lICsgXCJfXCIpKSB7XHJcblx0XHRcdFx0XHR0aGlzLmV4Y2x1ZGVGaWVsZHMuc3BsaWNlKGksIDEpO1xyXG5cdFx0XHRcdFx0aS0tO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRJbmZvKCkge1xyXG5cdFx0dGhpcy5kYXRlUGlwZUZvcm1hdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZGF0ZVBpcGVcIik7XHJcblx0XHR0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuXHRcdEwxMG4ubG9hZCh7XHJcblx0XHRcdFwiZW4tVVNcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR6aDoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcInpoLUhhbnQtSEtcIjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRqYToge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRrbzoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRmcjoge1xyXG5cdFx0XHRcdHBpdm90dmlldzogQUdHUkVHQVRFX1RZUEVTX1RFWFQsXHJcblx0XHRcdFx0cGl2b3RmaWVsZGxpc3Q6IEFHR1JFR0FURV9UWVBFU19URVhULFxyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgb25GaWVsZERyb3AoYXJnczogRmllbGREcm9wRXZlbnRBcmdzKSB7XHJcblx0XHQvL2NoYW5nZSB0aGUgY2FsY3VhbHRlRmllbGQgbWV0aG9kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBjYWxjdWxhdGVcclxuXHRcdGNvbnN0IGNhbGN1YWx0ZUZpZWxkID0gdGhpcy5jb25maWdGaWVsZHMuZmlsdGVyKFxyXG5cdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZmllbGROYW1lICYmIGVsLmlzQ2FsY3VsYXRlZEZpZWxkXHJcblx0XHQpO1xyXG5cdFx0aWYgKGNhbGN1YWx0ZUZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0YXJncy5kcm9wRmllbGQudHlwZSA9XHJcblx0XHRcdFx0dGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRDYWxjdWxhdGVNZXRob2QoXHJcblx0XHRcdFx0XHRjYWxjdWFsdGVGaWVsZFswXS5jb2xOYW1lXHJcblx0XHRcdFx0KSBhcyBhbnk7XHJcblx0XHRcdGFyZ3MuZHJvcEZpZWxkLmNhcHRpb24gPSBhcmdzLmRyb3BGaWVsZC5jYXB0aW9uXHJcblx0XHRcdFx0LnJlcGxhY2UoXCJDYWxjdWxhdGVcIiwgXCJcIilcclxuXHRcdFx0XHQudHJpbSgpO1xyXG5cdFx0fVxyXG5cdFx0Zm9yIChcclxuXHRcdFx0bGV0IGkgPSAwO1xyXG5cdFx0XHRpIDwgYXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3MubGVuZ3RoO1xyXG5cdFx0XHRpKytcclxuXHRcdCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0YXJncy5kYXRhU291cmNlU2V0dGluZ3MuZmlsdGVyU2V0dGluZ3NbaV0ubmFtZSA9PT1cclxuXHRcdFx0XHRcdGFyZ3MuZmllbGROYW1lICYmXHJcblx0XHRcdFx0YXJncy5kcm9wQXhpcyA9PT0gXCJcIlxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHRhcmdzLmRhdGFTb3VyY2VTZXR0aW5ncy5maWx0ZXJTZXR0aW5ncy5zcGxpY2UoaSwgMSk7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJTZXR0aW5ncyA9IGFyZ3MuZGF0YVNvdXJjZVNldHRpbmdzLmZpbHRlclNldHRpbmdzO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNyZWF0ZUJ1dHRvblRleHQoZmllbGQsIGksIGF4aXMsIHZhbHVlUG9zKSB7XHJcblx0XHRsZXQgYnV0dG9uVGV4dDogSFRNTEVsZW1lbnQ7XHJcblx0XHRsZXQgYWdncmVnYXRpb246IHN0cmluZztcclxuXHRcdGxldCBmaWx0ZXJNZW06IHN0cmluZztcclxuXHRcdGlmIChheGlzID09PSBcImZpbHRlcnNcIikge1xyXG5cdFx0XHRmaWx0ZXJNZW0gPSAoXHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmoucGl2b3RCdXR0b25Nb2R1bGUgYXMgYW55XHJcblx0XHRcdCkudXBkYXRlQnV0dG9udGV4dChmaWVsZFtpXS5uYW1lKTtcclxuXHRcdH1cclxuXHRcdGxldCBlbmdpbmVNb2R1bGUgPSB0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZTtcclxuXHRcdGlmIChlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0YWdncmVnYXRpb24gPSBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLmFnZ3JlZ2F0ZVR5cGU7XHJcblx0XHRcdGFnZ3JlZ2F0aW9uID1cclxuXHRcdFx0XHRhZ2dyZWdhdGlvbiA9PT0gXCJTdW1cIlxyXG5cdFx0XHRcdFx0PyBlbmdpbmVNb2R1bGUuZmllbGRMaXN0W2ZpZWxkW2ldLm5hbWVdLnR5cGUgIT09IFwibnVtYmVyXCJcclxuXHRcdFx0XHRcdFx0PyBcIkNvdW50XCJcclxuXHRcdFx0XHRcdFx0OiBcIlN1bVwiXHJcblx0XHRcdFx0XHQ6IGFnZ3JlZ2F0aW9uO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHRleHQ6IHN0cmluZyA9IGZpZWxkW2ldLmNhcHRpb24gPyBmaWVsZFtpXS5jYXB0aW9uIDogZmllbGRbaV0ubmFtZTtcclxuXHRcdGJ1dHRvblRleHQgPSBjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XHJcblx0XHRcdGF0dHJzOiB7XHJcblx0XHRcdFx0dGl0bGU6XHJcblx0XHRcdFx0XHRheGlzID09PSBcImZpbHRlcnNcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHQgKyBcIiAoXCIgKyBmaWx0ZXJNZW0gKyBcIilcIlxyXG5cdFx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdFx0LnNob3dBZ2dyZWdhdGlvbk9uVmFsdWVGaWVsZCB8fFxyXG5cdFx0XHRcdFx0XHQgIGF4aXMgIT09IFwidmFsdWVzXCIgfHxcclxuXHRcdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0XHQ/IHRleHRcclxuXHRcdFx0XHRcdFx0OiB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChhZ2dyZWdhdGlvbikgK1xyXG5cdFx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdFx0ICB0aGlzLnBpdm90T2JqLmxvY2FsZU9iai5nZXRDb25zdGFudChcIm9mXCIpICtcclxuXHRcdFx0XHRcdFx0ICBcIiBcIiArXHJcblx0XHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdFx0XHR0YWJpbmRleDogXCItMVwiLFxyXG5cdFx0XHRcdFwiYXJpYS1kaXNhYmxlZFwiOiBcImZhbHNlXCIsXHJcblx0XHRcdFx0b25jb250ZXh0bWVudTogXCJyZXR1cm4gZmFsc2U7XCIsXHJcblx0XHRcdFx0XCJkYXRhLXR5cGVcIjogdmFsdWVQb3MgPT09IGkgPyBcIlwiIDogYWdncmVnYXRpb24sXHJcblx0XHRcdH0sXHJcblx0XHRcdGNsYXNzTmFtZTpcclxuXHRcdFx0XHRcImUtY29udGVudFwiICtcclxuXHRcdFx0XHRcIiBcIiArXHJcblx0XHRcdFx0KHRoaXMucGl2b3RPYmouZ2V0TW9kdWxlTmFtZSgpID09PSBcInBpdm90dmlld1wiXHJcblx0XHRcdFx0XHQ/IHRoaXMucGl2b3RPYmouZ3JvdXBpbmdCYXJTZXR0aW5ncy5hbGxvd0RyYWdBbmREcm9wICYmXHJcblx0XHRcdFx0XHQgIGZpZWxkW2ldLmFsbG93RHJhZ0FuZERyb3BcclxuXHRcdFx0XHRcdFx0PyBcIlwiXHJcblx0XHRcdFx0XHRcdDogXCJlLWRpc2FibGUtZHJhZ1wiXHJcblx0XHRcdFx0XHQ6IFwiXCIpLFxyXG5cdFx0XHRpbm5lckhUTUw6XHJcblx0XHRcdFx0YXhpcyA9PT0gXCJmaWx0ZXJzXCJcclxuXHRcdFx0XHRcdD8gdGV4dCArIFwiIChcIiArIGZpbHRlck1lbSArIFwiKVwiXHJcblx0XHRcdFx0XHQ6ICF0aGlzLnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5nc1xyXG5cdFx0XHRcdFx0XHRcdC5zaG93QWdncmVnYXRpb25PblZhbHVlRmllbGQgfHxcclxuXHRcdFx0XHRcdCAgYXhpcyAhPT0gXCJ2YWx1ZXNcIiB8fFxyXG5cdFx0XHRcdFx0ICBhZ2dyZWdhdGlvbiA9PT0gXCJDYWxjdWxhdGVkRmllbGRcIlxyXG5cdFx0XHRcdFx0PyB0ZXh0XHJcblx0XHRcdFx0XHQ6IHRoaXMucGl2b3RPYmoubG9jYWxlT2JqLmdldENvbnN0YW50KGFnZ3JlZ2F0aW9uKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGhpcy5waXZvdE9iai5sb2NhbGVPYmouZ2V0Q29uc3RhbnQoXCJvZlwiKSArXHJcblx0XHRcdFx0XHQgIFwiIFwiICtcclxuXHRcdFx0XHRcdCAgdGV4dCxcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIGJ1dHRvblRleHQ7XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5Yib5bu6XHJcblx0cHVibGljIGNhbGN1bGF0ZWRGaWVsZENyZWF0ZShhcmdzOiBDYWxjdWxhdGVkRmllbGRDcmVhdGVFdmVudEFyZ3MpIHtcclxuXHRcdGlmIChcclxuXHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQubmFtZSAhPT0gXCJcIiAmJlxyXG5cdFx0XHRhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLnRyaW0oKSAhPT0gXCJcIlxyXG5cdFx0KSB7XHJcblx0XHRcdGxldCBpbmRleCA9XHJcblx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzLmZpbmRJbmRleChcclxuXHRcdFx0XHRcdChlbCkgPT4gZWwubmFtZSA9PT0gYXJncy5jYWxjdWxhdGVkRmllbGQubmFtZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdGlmIChpbmRleCAhPT0gLTEpIHtcclxuXHRcdFx0XHRpZiAoYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybWF0U3RyaW5nID09PSBcIlwiKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpZWxkbGlzdE9iai5kYXRhU291cmNlU2V0dGluZ3MuY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3NbXHJcblx0XHRcdFx0XHRcdGluZGV4XHJcblx0XHRcdFx0XHRdLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5maWVsZGxpc3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmNhbGN1bGF0ZWRGaWVsZFNldHRpbmdzW1xyXG5cdFx0XHRcdFx0XHRpbmRleFxyXG5cdFx0XHRcdFx0XS5mb3JtYXRTdHJpbmcgPSBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtYXRTdHJpbmcgPT09IFwiXCIpIHtcclxuXHRcdFx0XHRcdGFyZ3MuY2FsY3VsYXRlZEZpZWxkLmZvcm1hdFN0cmluZyA9IFwiTjJcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8g56e76Zmk6YeN5aSNXHJcblx0XHRcdGxldCBmSW5kZXggPSB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmluZEluZGV4KFxyXG5cdFx0XHRcdChmKSA9PiBmLm5hbWUgPT09IGFyZ3MuY2FsY3VsYXRlZEZpZWxkLm5hbWVcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGZJbmRleCA+IC0xKSB7XHJcblx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnNwbGljZShmSW5kZXgsIDEpO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIOWMuemFjei/kOeul+espiBGaXJzdCB8fCBMYXN0XHJcblx0XHRcdGxldCBmb3JtdWxhU3RyID0gYXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYTtcclxuXHRcdFx0bGV0IHJlZzEgPSAvXCJGaXJzdFxcKCguKz8pXFwpXCIvZztcclxuXHRcdFx0bGV0IHJlZzIgPSAvXCJMYXN0XFwoKC4rPylcXClcIi9nO1xyXG5cdFx0XHRpZiAocmVnMS50ZXN0KGZvcm11bGFTdHIpIHx8IHJlZzIudGVzdChmb3JtdWxhU3RyKSkge1xyXG5cdFx0XHRcdC8vIOWIpOaWreaYr+WQpuWtmOWcqEZpcnN0IHx8IExhc3Qg6KGo6L6+5byPXHJcblx0XHRcdFx0bGV0IG1hdGNoRmlyc3RGaWVsZHMgPSBBcnJheS5mcm9tKFxyXG5cdFx0XHRcdFx0Zm9ybXVsYVN0cltcIm1hdGNoQWxsXCJdKC9cIkZpcnN0XFwoKC4rPylcXClcIi9nKSxcclxuXHRcdFx0XHRcdChtKSA9PiB7XHJcblx0XHRcdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hTdHI6IG1bMF0sXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hXb3JkOiBtWzFdLFxyXG5cdFx0XHRcdFx0XHRcdHJlcGxhY2VWYWx1ZTogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRtYXRjaE1ldGhvZDogXCJGaXJzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTGFzdEZpZWxkcyA9IEFycmF5LmZyb20oXHJcblx0XHRcdFx0XHRmb3JtdWxhU3RyW1wibWF0Y2hBbGxcIl0oL1wiTGFzdFxcKCguKz8pXFwpXCIvZyksXHJcblx0XHRcdFx0XHQobSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0XHRcdG1hdGNoU3RyOiBtWzBdLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoV29yZDogbVsxXSxcclxuXHRcdFx0XHRcdFx0XHRyZXBsYWNlVmFsdWU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0bWF0Y2hNZXRob2Q6IFwiTGFzdFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWF4RmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNYXhcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1heFwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoTWluRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJNaW5cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIk1pblwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoU3VtRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJTdW1cXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIlN1bVwiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0bGV0IG1hdGNoQXZnRmllbGRzID0gQXJyYXkuZnJvbShcclxuXHRcdFx0XHRcdGZvcm11bGFTdHJbXCJtYXRjaEFsbFwiXSgvXCJBdmdcXCgoLis/KVxcKVwiL2cpLFxyXG5cdFx0XHRcdFx0KG0pID0+IHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFN0cjogbVswXSxcclxuXHRcdFx0XHRcdFx0XHRtYXRjaFdvcmQ6IG1bMV0sXHJcblx0XHRcdFx0XHRcdFx0cmVwbGFjZVZhbHVlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdG1hdGNoTWV0aG9kOiBcIkF2Z1wiLFxyXG5cdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0bWF0Y2hGaXJzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdCkgJiZcclxuXHRcdFx0XHRcdG1hdGNoTGFzdEZpZWxkcy5ldmVyeSgoeCkgPT5cclxuXHRcdFx0XHRcdFx0dGhpcy5hbGxvd2VkQ2FsY3VsYXRlZEZpZWxkcy5pbmNsdWRlcyh4Lm1hdGNoV29yZClcclxuXHRcdFx0XHRcdClcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdC8vIOWIpOaWrUZpcnN05ZKMTGFzdOihqOi+vuW8j+WGheeahOWtl+auteaYr+WQpuWQiOazlVxyXG5cdFx0XHRcdFx0dGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5uYW1lLFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhOiBhcmdzLmNhbGN1bGF0ZWRGaWVsZC5mb3JtdWxhLFxyXG5cdFx0XHRcdFx0XHRtYXRjaEZpZWxkczogW1xyXG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEZpcnN0RmllbGRzLFxyXG5cdFx0XHRcdFx0XHRcdC4uLm1hdGNoTGFzdEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1heEZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaE1pbkZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaFN1bUZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XHQuLi5tYXRjaEF2Z0ZpZWxkcyxcclxuXHRcdFx0XHRcdFx0XSxcclxuXHRcdFx0XHRcdFx0Z3JhbmRUb3RhbDogMCxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0bGV0IGZpZWxkTmFtZSA9IChcclxuXHRcdFx0XHRcdFx0Zm9ybXVsYVN0ci5zcGxpdChcIkZpcnN0KFwiKVsxXSB8fFxyXG5cdFx0XHRcdFx0XHRmb3JtdWxhU3RyLnNwbGl0KFwiTGFzdChcIilbMV1cclxuXHRcdFx0XHRcdCkuc3BsaXQoXCIpXCIpWzBdO1xyXG5cdFx0XHRcdFx0YXJncy5jYWxjdWxhdGVkRmllbGQuZm9ybXVsYSA9XHJcblx0XHRcdFx0XHRcdFwiJ1xcXCJcIiArIFwiU3VtKFwiICsgZmllbGROYW1lICsgJylcIj0nICsgZm9ybXVsYVN0ciArIFwiJ1wiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gQ2FsY3VsYXRlZCBmaWVsZOS6i+S7tu+8muWujOaIkFxyXG5cdHB1YmxpYyBhY3Rpb25Db21wbGV0ZShhcmdzKSB7XHJcblx0XHRpZiAoYXJncy5hY3Rpb25OYW1lID09IFwiRmllbGQgcmVtb3ZlZFwiKSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHRhcmdzLmZpZWxkSW5mbyAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbSAmJlxyXG5cdFx0XHRcdGFyZ3MuZmllbGRJbmZvLmZpZWxkSXRlbS50eXBlID09IFwiQ2FsY3VsYXRlZEZpZWxkXCJcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0bGV0IGZpZWxkID0gYXJncy5maWVsZEluZm8uZmllbGROYW1lO1xyXG5cdFx0XHRcdC8vIFJlbW92ZSB0aGUgZGVsZXRlZCBjYWxjdWxhdGVkIGZpZWxkIGZyb20gYW4gc3RvcmVkIGFycmF5LlxyXG5cdFx0XHRcdHRoaXMuY3VzdG9tQ2FsY3VsYXRlZEZpZWxkcyA9XHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMuZmlsdGVyKGZ1bmN0aW9uIChvYmopIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIG9iai5uYW1lICE9PSBmaWVsZDtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvLyBDYWxjdWxhdGVkIGZpZWxk5LqL5Lu277ya5byA5aeLXHJcblx0cHVibGljIGFjdGlvbkJlZ2luKGFyZ3MpIHtcclxuXHRcdGlmIChhcmdzLmFjdGlvbk5hbWUgPT09IFwiRWRpdCBjYWxjdWxhdGVkIGZpZWxkXCIpIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZSAmJlxyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XVxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0dGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUuZmllbGRMaXN0W1xyXG5cdFx0XHRcdFx0XHR0aGlzLmN1c3RvbUNhbGN1bGF0ZWRGaWVsZHNbaV0ubmFtZVxyXG5cdFx0XHRcdFx0XS5mb3JtdWxhID0gdGhpcy5jdXN0b21DYWxjdWxhdGVkRmllbGRzW2ldLmZvcm11bGE7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlc2l6ZVN0b3AoYXJncykge1xyXG5cdFx0aWYgKHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCkge1xyXG5cdFx0XHRjb25zdCBoZWFkZXJfZmllbGQgPSB0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGguZmlsdGVyKFxyXG5cdFx0XHRcdChlbCkgPT4gZWwuaGVhZGVyVGV4dCA9PT0gYXJncy5jb2x1bW4uaGVhZGVyVGV4dFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAoaGVhZGVyX2ZpZWxkLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRoZWFkZXJfZmllbGRbMF0ud2lkdGggPSBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb25maWcuY29sdW1uc1dpZHRoLnB1c2goe1xyXG5cdFx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHRcdHdpZHRoOiBwYXJzZUludChhcmdzLmNvbHVtbi53aWR0aCksXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuY29uZmlnLmNvbHVtbnNXaWR0aCA9IFtdO1xyXG5cdFx0XHR0aGlzLmNvbmZpZy5jb2x1bW5zV2lkdGgucHVzaCh7XHJcblx0XHRcdFx0aGVhZGVyVGV4dDogYXJncy5jb2x1bW4uaGVhZGVyVGV4dCxcclxuXHRcdFx0XHR3aWR0aDogcGFyc2VJbnQoYXJncy5jb2x1bW4ud2lkdGgpLFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHBvcnRsZXQgPSB0aGlzLnBvcnRsZXQ7XHJcblx0XHRwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHRcdGNvbnN0IGluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoKHgpID0+IHgubmV3SWQgPT09IHBvcnRsZXQubmV3SWQpO1xyXG5cdFx0aWYgKGluZGV4ID4gLTEpIHRoaXMucG9ydGxldHNbaW5kZXhdID0gcG9ydGxldDtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBvbkxvYWQoKTogdm9pZCB7fVxyXG5cclxuXHRwcml2YXRlIGVuZ2luZVBvcHVsYXRlZChhcmdzKSB7XHJcblx0XHRsZXQgY2xvbmVkVmFsdWVzOiBJUGl2b3RWYWx1ZXM7XHJcblx0XHRsZXQgY3VycmVudFBpdm90VmFsdWVzOiBhbnkgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlc1xyXG5cdFx0KTtcclxuXHRcdGxldCBwYWdlU2V0dGluZ3M6IElQYWdlU2V0dGluZ3MgPVxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5wYWdlU2V0dGluZ3M7XHJcblxyXG5cdFx0Ly8gdGhpcy5waXZvdE9iai5lbmdpbmVNb2R1bGUucGFnZVNldHRpbmdzID0gbnVsbDtcclxuXHRcdGlmICh0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5nZW5lcmF0ZUdyaWREYXRhKSB7XHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLmdlbmVyYXRlR3JpZERhdGEoXHJcblx0XHRcdFx0dGhpcy5waXZvdE9iai5kYXRhU291cmNlU2V0dGluZ3MsXHJcblx0XHRcdFx0dHJ1ZVxyXG5cdFx0XHQpO1xyXG5cdFx0XHRjbG9uZWRWYWx1ZXMgPSB0aGlzLmdldENsb25lZFBpdm90VmFsdWVzKFxyXG5cdFx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBpdm90VmFsdWVzXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHR0aGlzLnBpdm90T2JqLmVuZ2luZU1vZHVsZS5waXZvdFZhbHVlcyA9IGN1cnJlbnRQaXZvdFZhbHVlcztcclxuXHJcblx0XHRcdHRoaXMucGl2b3RPYmouZW5naW5lTW9kdWxlLnBhZ2VTZXR0aW5ncyA9IHBhZ2VTZXR0aW5ncztcclxuXHJcblx0XHRcdC8vIEhlcmUgXCJjbG9uZWRWYWx1ZXNcIiBjb250YWlucyB0aGUgd2hvbGUgcGl2b3QgdmFsdWVzLlxyXG5cdFx0XHR0aGlzLmFsbERhdGFWYWx1ZSA9IGNsb25lZFZhbHVlcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0Q2xvbmVkUGl2b3RWYWx1ZXMocGl2b3RWYWx1ZXM6IElQaXZvdFZhbHVlcyk6IElQaXZvdFZhbHVlcyB7XHJcblx0XHRsZXQgY2xvbmVkU2V0czogSVBpdm90VmFsdWVzID0gW107XHJcblx0XHRpZiAocGl2b3RWYWx1ZXMgJiYgcGl2b3RWYWx1ZXMubGVuZ3RoKSB7XHJcblx0XHRcdGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBwaXZvdFZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXSkge1xyXG5cdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXSA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHBpdm90VmFsdWVzW2ldLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdGlmIChwaXZvdFZhbHVlc1tpXVtqXSkge1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1kaXNhYmxlICovXHJcblx0XHRcdFx0XHRcdFx0Y2xvbmVkU2V0c1tpXVtqXSA9IHRoaXMuZ2V0Q2xvbmVkUGl2b3RWYWx1ZU9iaihcclxuXHRcdFx0XHRcdFx0XHRcdHBpdm90VmFsdWVzW2ldW2pdIGFzIHsgW2tleTogc3RyaW5nXTogT2JqZWN0IH1cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRcdC8qIGVzbGludC1lbmFibGUgKi9cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGNsb25lZFNldHM7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGdldENsb25lZFBpdm90VmFsdWVPYmooZGF0YTogeyBba2V5OiBzdHJpbmddOiBPYmplY3QgfSk6IHtcclxuXHRcdFtrZXk6IHN0cmluZ106IE9iamVjdDtcclxuXHR9IHtcclxuXHRcdGxldCBrZXlQb3M6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgZnJhbWVkU2V0OiBhbnkgPSB7fTtcclxuXHRcdGlmICghKGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkKSkge1xyXG5cdFx0XHRsZXQgZmllbGRzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGRhdGEpO1xyXG5cdFx0XHR3aGlsZSAoa2V5UG9zIDwgZmllbGRzLmxlbmd0aCkge1xyXG5cdFx0XHRcdGZyYW1lZFNldFtmaWVsZHNba2V5UG9zXV0gPSBkYXRhW2ZpZWxkc1trZXlQb3NdXTtcclxuXHRcdFx0XHRrZXlQb3MrKztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZnJhbWVkU2V0ID0gZGF0YTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBmcmFtZWRTZXQ7XHJcblx0fVxyXG5cclxuXHQvLyNyZWdpb24gRmlsdGVyaW5nIHRoZSBUcmVlTm9kZXNcclxuXHRwcml2YXRlIHNlYXJjaE5vZGVzKGFyZ3MpIHtcclxuXHRcdGxldCBfdGV4dCA9IGFyZ3MubWFza2VkVmFsdWU7XHJcblx0XHRsZXQgcHJlZGljYXRzID0gW10sXHJcblx0XHRcdF9hcnJheSA9IFtdLFxyXG5cdFx0XHRfZmlsdGVyID0gW107XHJcblx0XHRpZiAoX3RleHQgPT0gXCJcIikge1xyXG5cdFx0XHR0aGlzLmNoYW5nZURhdGFTb3VyY2UoXHJcblx0XHRcdFx0KCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueSkuZ2V0VHJlZURhdGEoKVxyXG5cdFx0XHQpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0bGV0IHByZWRpY2F0ZSA9IG5ldyBQcmVkaWNhdGUoXCJjYXB0aW9uXCIsIFwiY29udGFpbnNcIiwgX3RleHQsIHRydWUpO1xyXG5cdFx0XHRsZXQgZmlsdGVyZWRMaXN0ID0gbmV3IERhdGFNYW5hZ2VyKFxyXG5cdFx0XHRcdCgodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZSBhcyBhbnkpLmdldFRyZWVEYXRhKClcclxuXHRcdFx0KS5leGVjdXRlTG9jYWwobmV3IFF1ZXJ5KCkud2hlcmUocHJlZGljYXRlKSk7XHJcblx0XHRcdGZvciAobGV0IGogPSAwOyBqIDwgZmlsdGVyZWRMaXN0Lmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0X2ZpbHRlci5wdXNoKGZpbHRlcmVkTGlzdFtqXVtcImlkXCJdKTtcclxuXHRcdFx0XHRsZXQgZmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoXHJcblx0XHRcdFx0XHRmaWx0ZXJlZExpc3Rbal0sXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0X2FycmF5LmluZGV4T2YoZmlsdGVyc1tpXSkgPT0gLTEgJiZcclxuXHRcdFx0XHRcdFx0ZmlsdGVyc1tpXSAhPSBudWxsXHJcblx0XHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdFx0X2FycmF5LnB1c2goZmlsdGVyc1tpXSk7XHJcblx0XHRcdFx0XHRcdHByZWRpY2F0cy5wdXNoKFxyXG5cdFx0XHRcdFx0XHRcdG5ldyBQcmVkaWNhdGUoXCJpZFwiLCBcImVxdWFsXCIsIGZpbHRlcnNbaV0sIGZhbHNlKVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAocHJlZGljYXRzLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5jaGFuZ2VEYXRhU291cmNlKFtdKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRsZXQgcXVlcnkgPSBuZXcgUXVlcnkoKS53aGVyZShQcmVkaWNhdGUub3IocHJlZGljYXRzKSk7XHJcblx0XHRcdFx0bGV0IG5ld0xpc3QgPSBuZXcgRGF0YU1hbmFnZXIoXHJcblx0XHRcdFx0XHQoXHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSkuZmllbGRsaXN0T2JqLnRyZWVWaWV3TW9kdWxlIGFzIGFueVxyXG5cdFx0XHRcdFx0KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdFx0KS5leGVjdXRlTG9jYWwocXVlcnkpO1xyXG5cdFx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShuZXdMaXN0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9GaW5kIHRoZSBQYXJlbnQgTm9kZXMgZm9yIGNvcnJlc3BvbmRpbmcgY2hpbGRzXHJcblx0cHVibGljIGdldEZpbHRlckl0ZW1zKGZMaXN0LCBsaXN0KSB7XHJcblx0XHRsZXQgbm9kZXMgPSBbXTtcclxuXHRcdG5vZGVzLnB1c2goZkxpc3RbXCJpZFwiXSk7XHJcblx0XHRsZXQgcXVlcnkyID0gbmV3IFF1ZXJ5KCkud2hlcmUoXCJpZFwiLCBcImVxdWFsXCIsIGZMaXN0W1wicGlkXCJdLCBmYWxzZSk7XHJcblx0XHRsZXQgZkxpc3QxID0gbmV3IERhdGFNYW5hZ2VyKGxpc3QpLmV4ZWN1dGVMb2NhbChxdWVyeTIpO1xyXG5cdFx0aWYgKGZMaXN0MS5sZW5ndGggIT0gMCkge1xyXG5cdFx0XHRsZXQgcE5vZGUgPSB0aGlzLmdldEZpbHRlckl0ZW1zKGZMaXN0MVswXSwgbGlzdCk7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcE5vZGUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRpZiAobm9kZXMuaW5kZXhPZihwTm9kZVtpXSkgPT0gLTEgJiYgcE5vZGVbaV0gIT0gbnVsbClcclxuXHRcdFx0XHRcdG5vZGVzLnB1c2gocE5vZGVbaV0pO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBub2RlcztcclxuXHRcdH1cclxuXHRcdHJldHVybiBub2RlcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBjcmVhdGVkKGFyZ3M6IGFueSkge1xyXG5cdFx0aWYgKHRoaXMuZmllbGRsaXN0T2JqICYmICF0aGlzLmZpZWxkbGlzdE9iai5lbmdpbmVNb2R1bGUuZmllbGRzKSB7XHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVuZ2luZU1vZHVsZS5maWVsZHMgPSBbXTtcclxuXHRcdH1cclxuXHRcdGxldCBzZWFyY2ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XHJcblx0XHRzZWFyY2guaWQgPSBcInBpdm90U2VhcmNoQm94XCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkO1xyXG5cdFx0bGV0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuXHRcdFx0XCIjXCIgKyB0aGlzLmZpZWxkbGlzdE9iai5lbGVtZW50LmlkICsgXCJfQ29udGFpbmVyIC5lLWZpZWxkLXRhYmxlXCJcclxuXHRcdCk7XHJcblx0XHRpZiAoZWwpIGVsLnByZXBlbmQoc2VhcmNoKTtcclxuXHRcdHRoaXMucGl2b3RTZWFyY2hCb3ggPSBuZXcgTWFza2VkVGV4dEJveCh7XHJcblx0XHRcdHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0aW9uLlNFQVJDSCB8fCBcIi5TRUFSQ0hcIixcclxuXHRcdFx0Y3NzQ2xhc3M6IFwicGl2b3Qtc2VhcmNoXCIsXHJcblx0XHRcdGNoYW5nZTogdGhpcy5zZWFyY2hOb2Rlcy5iaW5kKHRoaXMpLFxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLnBpdm90U2VhcmNoQm94LmFwcGVuZFRvKFxyXG5cdFx0XHRcIiNwaXZvdFNlYXJjaEJveFwiICsgdGhpcy5maWVsZGxpc3RPYmouZWxlbWVudC5pZFxyXG5cdFx0KTtcclxuXHJcblx0XHQvLyBORVcgRGFzaGJvYXJkIOeCueWHu1wiYXBwbHlcIuaXtu+8jOivt+axguaWsOaVsOaNrlxyXG5cdFx0bGV0IGFwcGx5QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcblx0XHRcdHRoaXMuZmllbGRsaXN0T2JqLmVsZW1lbnQuaWQgKyBcIl9EZWZlclVwZGF0ZUJ1dHRvbjFcIlxyXG5cdFx0KTtcclxuXHRcdGFwcGx5QnRuICYmXHJcblx0XHRcdGFwcGx5QnRuLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZ2V0RGF0YUJ5UG9ydGxldHNOZXcoXHJcblx0XHRcdFx0XHRbdGhpcy5wb3J0bGV0XSxcclxuXHRcdFx0XHRcdCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdG51bGwsXHJcblx0XHRcdFx0XHRmYWxzZSxcclxuXHRcdFx0XHRcdHRoaXMuZGFzaGJvYXJkLFxyXG5cdFx0XHRcdFx0ZmFsc2VcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBmaWVsZExpc3RSZWZyZXNoZWQoYXJncykge1xyXG5cdFx0aWYgKHRoaXMucGl2b3RTZWFyY2hCb3gpIHtcclxuXHRcdFx0dGhpcy5waXZvdFNlYXJjaEJveC52YWx1ZSA9IFwiXCI7XHJcblx0XHRcdHRoaXMuY2hhbmdlRGF0YVNvdXJjZShcclxuXHRcdFx0XHQodGhpcy5maWVsZGxpc3RPYmoudHJlZVZpZXdNb2R1bGUgYXMgYW55KS5nZXRUcmVlRGF0YSgpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNoYW5nZURhdGFTb3VyY2UoZGF0YSkge1xyXG5cdFx0bGV0IGZpZWxkVGFibGUgPSAodGhpcyBhcyBhbnkpLmZpZWxkbGlzdE9iai50cmVlVmlld01vZHVsZS5maWVsZFRhYmxlO1xyXG5cdFx0aWYgKGZpZWxkVGFibGUpIHtcclxuXHRcdFx0ZmllbGRUYWJsZS5maWVsZHMgPSB7XHJcblx0XHRcdFx0ZGF0YVNvdXJjZTogZGF0YSxcclxuXHRcdFx0XHRpZDogXCJpZFwiLFxyXG5cdFx0XHRcdHRleHQ6IFwiY2FwdGlvblwiLFxyXG5cdFx0XHRcdGlzQ2hlY2tlZDogXCJpc1NlbGVjdGVkXCIsXHJcblx0XHRcdFx0cGFyZW50SUQ6IFwicGlkXCIsXHJcblx0XHRcdFx0aWNvbkNzczogXCJzcHJpdGVDc3NDbGFzc1wiLFxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly9TTVAyLTI5NTcgZml4IHRoZSBkYXRlIGlzc3VlIG9uIHRoZSByYXcgZGF0YVxyXG5cdHB1YmxpYyBkcmlsbFRocm91Z2goYXJnczogRHJpbGxUaHJvdWdoRXZlbnRBcmdzKSB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MuZ3JpZENvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMuY29uZmlnRmllbGRzLmZpbHRlcihcclxuXHRcdFx0XHQoZWwpID0+IGVsLmNvbE5hbWUgPT09IGFyZ3MuZ3JpZENvbHVtbnNbaV0uZmllbGRcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ZGF0YVswXS5kYXRhVHlwZSA9PT0gXCJkYXRlXCIgfHxcclxuXHRcdFx0XHRcdGRhdGFbMF0uZGF0YVR5cGUgPT09IFwiZGF0ZXRpbWVcIlxyXG5cdFx0XHRcdCkge1xyXG5cdFx0XHRcdFx0YXJncy5ncmlkQ29sdW1uc1tpXS50eXBlID0gXCJkYXRlXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdC8vI2VuZHJlZ2lvblxyXG5cclxuXHRwcml2YXRlIHNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwob2JqLCBkYXRhLCBjb2RlKSB7XHJcblx0XHRpZiAoY29kZSA9PT0gLTEpIHtcclxuXHRcdFx0b2JqLnN0eWxlLmNvbG9yID0gZGF0YS5uZWdhRm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEubmVnYUZvbnRGYW1pbHlWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmZvbnRTaXplID0gZGF0YS5uZWdhRm9udFNpemVWYWx1ZTtcclxuXHRcdFx0b2JqLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGRhdGEubmVnYUJhY2tncm91bmRDb2xvcjtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG9iai5zdHlsZS5jb2xvciA9IGRhdGEuZm9udENvbG9yO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udEZhbWlseSA9IGRhdGEuZm9udEZhbWlseVZhbHVlO1xyXG5cdFx0XHRvYmouc3R5bGUuZm9udFNpemUgPSBkYXRhLmZvbnRTaXplVmFsdWU7XHJcblx0XHRcdG9iai5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBkYXRhLmJhY2tncm91bmRDb2xvcjtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0Q29tcGFyZUNvbmRpdGlvbmFsKFxyXG5cdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRkYXRhXHJcblx0KSB7XHJcblx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMSkgPT0gMCkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuXCI6IC8vIOWkp+S6jlxyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhbk9yRXF1YWxUb1wiOiAvLyDlpKfkuo7nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikgPT09IDEpIHtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUxKSA9PT0gMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKGRhdGEuY29tcGFyZVZhbHVlMSk7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTGVzc1RoYW5cIjtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJHcmVhdGVyVGhhblwiOiAvLyDlpKfkuo5cclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5PckVxdWFsVG9cIjogLy8g5aSn5LqO562J5LqOXHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkVxdWFsc1wiOiAvLyDnrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiRXF1YWxzXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIk5vdEVxdWFsc1wiOiAvLyDkuI3nrYnkuo5cclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoZGF0YS5jb21wYXJlVmFsdWUxKTtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihkYXRhLmNvbXBhcmVWYWx1ZTEpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiR3JlYXRlclRoYW5cIjtcclxuXHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJMZXNzVGhhbk9yRXF1YWxUb1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJCZXR3ZWVuXCI6IC8vIHZhbHVlMTw9IHZhbCA8PXZhbHVlMlxyXG5cdFx0XHRcdFx0aWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTIpID09PSAxKSB7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IE51bWJlcihcclxuXHRcdFx0XHRcdFx0XHRkYXRhLmNvbXBhcmVWYWx1ZTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gTnVtYmVyKFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEuY29tcGFyZVZhbHVlMlxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RCZXR3ZWVuXCI6IC8vIHZhbCA+PSB2YWx1ZTIsIHZhbCA8PSB2YWx1ZTFcclxuXHRcdFx0XHRcdGlmIChNYXRoLnNpZ24oZGF0YS5jb21wYXJlVmFsdWUyKSA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0Ly8gcHVzaOi/m+aVsOe7hFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSBOdW1iZXIoXHJcblx0XHRcdFx0XHRcdFx0ZGF0YS5jb21wYXJlVmFsdWUyXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdC8vIHB1c2jov5vmlbDnu4RcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKE1hdGguc2lnbihkYXRhLmNvbXBhcmVWYWx1ZTEpID09PSAtMSkge1xyXG5cdFx0XHRzd2l0Y2ggKGRhdGEuY29tcGFyZVNlbGVjdCkge1xyXG5cdFx0XHRcdGNhc2UgXCJMZXNzVGhhblwiOiAvLyDlsI/kuo5cclxuXHRcdFx0XHRjYXNlIFwiTGVzc1RoYW5PckVxdWFsVG9cIjogLy8g5bCP5LqO562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBkYXRhLmNvbXBhcmVTZWxlY3Q7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiR3JlYXRlclRoYW5cIjogLy8g5aSn5LqOXHJcblx0XHRcdFx0Y2FzZSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI6IC8vIOWkp+S6juetieS6jlxyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuT3JFcXVhbFRvXCI7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiQmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJFcXVhbHNcIjogLy8g562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdGNhc2UgXCJOb3RFcXVhbHNcIjogLy8g5LiN562J5LqOXHJcblx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIk5vdEVxdWFsc1wiO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gMDtcclxuXHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0Y2FzZSBcIkJldHdlZW5cIjogLy8gdmFsdWUxPD0gdmFsIDw9dmFsdWUyXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTE7XHJcblx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJCZXR3ZWVuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTEgPSAwO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai52YWx1ZTIgPSBkYXRhLmNvbXBhcmVWYWx1ZTI7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0MVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMiA9IGRhdGEuY29tcGFyZVZhbHVlMjtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkJldHdlZW5cIjtcclxuXHRcdFx0XHRcdFx0dGhpcy5zZXRGb250U2V0dGluZ0NvbmRpdGlvbmFsKFxyXG5cdFx0XHRcdFx0XHRcdG5lZ2FDb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdC0xXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRjYXNlIFwiTm90QmV0d2VlblwiOiAvLyB2YWwgPj0gdmFsdWUyLCB2YWwgPD0gdmFsdWUxXHJcblx0XHRcdFx0XHRpZiAoTWF0aC5zaWduKGRhdGEuY29tcGFyZVZhbHVlMikpIHtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IGRhdGEuY29tcGFyZVZhbHVlMTtcclxuXHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkxlc3NUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQtMVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iai5jb25kaXRpb25zID0gXCJHcmVhdGVyVGhhblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0Y29uZGl0aW9uYWxGb3JtYXRPYmosXHJcblx0XHRcdFx0XHRcdFx0ZGF0YSxcclxuXHRcdFx0XHRcdFx0XHQxXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUxID0gZGF0YS5jb21wYXJlVmFsdWUxO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmoudmFsdWUyID0gZGF0YS5jb21wYXJlVmFsdWUyO1xyXG5cdFx0XHRcdFx0XHRuZWdhQ29uZGl0aW9uYWxGb3JtYXRPYmouY29uZGl0aW9ucyA9IFwiTm90QmV0d2VlblwiO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNldEZvbnRTZXR0aW5nQ29uZGl0aW9uYWwoXHJcblx0XHRcdFx0XHRcdFx0bmVnYUNvbmRpdGlvbmFsRm9ybWF0T2JqLFxyXG5cdFx0XHRcdFx0XHRcdGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0LTFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLnZhbHVlMSA9IDA7XHJcblx0XHRcdFx0XHRcdGNvbmRpdGlvbmFsRm9ybWF0T2JqLmNvbmRpdGlvbnMgPSBcIkdyZWF0ZXJUaGFuXCI7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9udFNldHRpbmdDb25kaXRpb25hbChcclxuXHRcdFx0XHRcdFx0XHRjb25kaXRpb25hbEZvcm1hdE9iaixcclxuXHRcdFx0XHRcdFx0XHRkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdDFcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQHBhcmFtIHRpbWVBcnJheSDmlbDnu4Tlr7nosaEgW3tcImRhdGVcIjpcIjIwMjEtMDEtMDFcIn0se1wiZGF0ZVwiOlwiMjAyMS0wMi0wMVwifV1cclxuXHQgKiBAcGFyYW0gZW5kRGF0ZSDmiKroh7Pml7bpl7RcclxuXHQgKiBAcGFyYW0gaW50ZXJ2YWwg5pe26Ze06Ze06ZqUIHllYXIgLyBxdWFydGVyIC8gbW9udGhcclxuXHQgKiBAcGFyYW0gdGltZUtleSDml7bpl7TlrZfmrrXlkI0gZGF0ZVxyXG5cdCAqIEByZXR1cm5zIOWIkuWIhuWQjueahOaXtumXtOWIhue7hOWvueixoVxyXG5cdCAqL1xyXG5cdGdldFRpbWVSYW5nZXModGltZUFycmF5LCBlbmREYXRlLCBpbnRlcnZhbCwgdGltZUtleSkge1xyXG5cdFx0Ly8g5bCG5pe26Ze05a2X56ym5Liy6L2s5o2i5Li6IG1vbWVudCDlr7nosaFcclxuXHRcdGNvbnN0IGRhdGVzID0gdGltZUFycmF5Lm1hcCgoaXRlbSkgPT4gbW9tZW50KGl0ZW1bdGltZUtleSB8fCBcImRhdGVcIl0pKTtcclxuXHJcblx0XHQvLyDliIbpmpTnrKZcclxuXHRcdGNvbnN0IGRlbGltaXRlciA9IFwiLVwiO1xyXG5cclxuXHRcdC8vIOaJvuWIsOacgOWwj+aXtumXtOWSjOacgOWkp+aXtumXtFxyXG5cdFx0Y29uc3QgbWluRGF0ZSA9IG1vbWVudC5taW4oZGF0ZXMpO1xyXG5cdFx0Y29uc3QgbWF4RGF0ZSA9IG1vbWVudChlbmREYXRlKTtcclxuXHJcblx0XHQvLyDliJ3lp4vljJbnu5Pmnpzlr7nosaFcclxuXHRcdGNvbnN0IHJlc3VsdCA9IHt9O1xyXG5cclxuXHRcdC8vIOagueaNruWFpeWPgui/m+ihjOWIkuWIhlxyXG5cdFx0aWYgKGludGVydmFsID09PSBcInllYXJcIikge1xyXG5cdFx0XHRjb25zdCBzdGFydFllYXIgPSBtaW5EYXRlLnllYXIoKTtcclxuXHRcdFx0Y29uc3QgZW5kWWVhciA9IG1heERhdGUueWVhcigpO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgeWVhciA9IHN0YXJ0WWVhcjsgeWVhciA8PSBlbmRZZWFyOyB5ZWFyKyspIHtcclxuXHRcdFx0XHRyZXN1bHRbeWVhcl0gPSBbXTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0cmVzdWx0W3llYXJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIGlmIChpbnRlcnZhbCA9PT0gXCJxdWFydGVyXCIpIHtcclxuXHRcdFx0Ly8g5a2Y5YKo5a2j5bqm5a2X56ym5LiyXHJcblx0XHRcdGNvbnN0IHF1YXJ0ZXJzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrlraPluqZcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDMsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdGNvbnN0IHllYXIgPSBjdXJyZW50RGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IE1hdGguY2VpbCgoY3VycmVudERhdGUubW9udGgoKSArIDEpIC8gMyk7IC8vIOiuoeeul+Wto+W6plxyXG5cdFx0XHRcdHF1YXJ0ZXJzLnB1c2goYCR7eWVhcn0ke2RlbGltaXRlcn1RJHtxdWFydGVyfWApOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5a2j5bqmXHJcblx0XHRcdHF1YXJ0ZXJzLmZvckVhY2goKHF1YXJ0ZXIsIGluZGV4KSA9PiB7XHJcblx0XHRcdFx0cmVzdWx0W3F1YXJ0ZXJdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgcXVhcnRlciA9IGRhdGUucXVhcnRlcigpOyAvLyDojrflj5blraPluqZcclxuXHRcdFx0XHRpZiAocXVhcnRlciA9PT0gMSlcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRMVwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHRcdGVsc2UgaWYgKHF1YXJ0ZXIgPT09IDIpXHJcblx0XHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIFwiUTJcIl0ucHVzaCh0aW1lQXJyYXlbaW5kZXhdKTtcclxuXHRcdFx0XHRlbHNlIGlmIChxdWFydGVyID09PSAzKVxyXG5cdFx0XHRcdFx0cmVzdWx0W3llYXIgKyBkZWxpbWl0ZXIgKyBcIlEzXCJdLnB1c2godGltZUFycmF5W2luZGV4XSk7XHJcblx0XHRcdFx0ZWxzZSBpZiAocXVhcnRlciA9PT0gNClcclxuXHRcdFx0XHRcdHJlc3VsdFt5ZWFyICsgZGVsaW1pdGVyICsgXCJRNFwiXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSBpZiAoaW50ZXJ2YWwgPT09IFwibW9udGhcIikge1xyXG5cdFx0XHQvLyDlrZjlgqjmnIjku73lrZfnrKbkuLJcclxuXHRcdFx0Y29uc3QgbW9udGhzID0gW107XHJcblxyXG5cdFx0XHQvLyDpgJDkuIDpgY3ljobmr4/kuKrmnIhcclxuXHRcdFx0Zm9yIChcclxuXHRcdFx0XHRsZXQgY3VycmVudERhdGUgPSBtaW5EYXRlLmNsb25lKCk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuaXNTYW1lT3JCZWZvcmUobWF4RGF0ZSk7XHJcblx0XHRcdFx0Y3VycmVudERhdGUuYWRkKDEsIFwibW9udGhzXCIpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdG1vbnRocy5wdXNoKGN1cnJlbnREYXRlLmZvcm1hdChgWVlZWSR7ZGVsaW1pdGVyfU1NYCkpOyAvLyDmoLzlvI/ljJblubbmt7vliqDliLDmlbDnu4RcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8g6L6T5Ye65omA5pyJ5pyI5Lu9XHJcblx0XHRcdG1vbnRocy5mb3JFYWNoKChtb250aCwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRyZXN1bHRbbW9udGhdID0gW107XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0ZGF0ZXMuZm9yRWFjaCgoZGF0ZSwgaW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XHJcblx0XHRcdFx0Y29uc3QgbW9udGggPSAoZGF0ZS5tb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7IC8vIDAtMTFcclxuXHRcdFx0XHRyZXN1bHRbeWVhciArIGRlbGltaXRlciArIG1vbnRoXS5wdXNoKHRpbWVBcnJheVtpbmRleF0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICog6K6h566X5Yeg5L2V566X5pWw5bmz5pa55pu0XHJcblx0ICogQHBhcmFtIHZhbHVlcyDmlbDnu4QgWzAsIDAsIDAuMjU3NV1cclxuXHQgKiBAcmV0dXJuc1xyXG5cdCAqL1xyXG5cdGNhbGN1bGF0ZUdyb3d0aFJhdGUodmFsdWVzKSB7XHJcblx0XHRjb25zdCBwcm9kdWN0ID0gdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWwpID0+IGFjYyAqICgxICsgdmFsKSwgMSk7XHJcblx0XHRpZiAocHJvZHVjdCA+PSAwKSB7XHJcblx0XHRcdHJldHVybiBNYXRoLnBvdyhwcm9kdWN0LCAxIC8gdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0fSBlbHNlIGlmIChwcm9kdWN0IDwgMCkge1xyXG5cdFx0XHRpZiAodmFsdWVzLmxlbmd0aCAlIDIgPT0gMCkge1xyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLm50aHJvb3QocHJvZHVjdCwgdmFsdWVzLmxlbmd0aCkgLSAxO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdG50aHJvb3QoeCwgbikge1xyXG5cdFx0bGV0IG5nID0gbiAlIDI7XHJcblx0XHRpZiAobmcgPT0gMSB8fCB4IDwgMCkgeCA9IC14O1xyXG5cdFx0dmFyIHIgPSBNYXRoLnBvdyh4LCAxIC8gbik7XHJcblx0XHRuID0gTWF0aC5wb3cociwgbik7XHJcblxyXG5cdFx0aWYgKE1hdGguYWJzKHggLSBuKSA8IDEgJiYgeCA+IDAgPT09IG4gPiAwKSByZXR1cm4gbmcgPyAtciA6IHI7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiDmoIflh4blgY/lt65cclxuXHQgKiBAcGFyYW0gdmFsdWVzIOaVsOe7hCBbMCwgMCwgLTAuNDc3NV1cclxuXHQgKiBAcmV0dXJucyAwLjI3NTY4NDc1MzUzODA0NjNcclxuXHQgKi9cclxuXHRjYWxjdWxhdGVTdGFuZGFyZERldmlhdGlvbih2YWx1ZXMpIHtcclxuXHRcdGNvbnN0IG4gPSB2YWx1ZXMubGVuZ3RoO1xyXG5cclxuXHRcdC8vIOajgOafpeaVsOaNrueCueaVsOmHj1xyXG5cdFx0aWYgKG4gPCAyKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIuiHs+WwkemcgOimgeS4pOS4quaVsOaNrueCueadpeiuoeeul+agt+acrOagh+WHhuWBj+W3rlwiKTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyDorqHnrpflnYflgLxcclxuXHRcdGNvbnN0IG1lYW4gPSB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbCkgPT4gYWNjICsgdmFsLCAwKSAvIG47XHJcblxyXG5cdFx0Ly8g6K6h566X5pa55beuXHJcblx0XHRjb25zdCB2YXJpYW5jZSA9XHJcblx0XHRcdHZhbHVlcy5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgKyBNYXRoLnBvdyh2YWwgLSBtZWFuLCAyKSwgMCkgL1xyXG5cdFx0XHQobiAtIDEpO1xyXG5cclxuXHRcdC8vIOi/lOWbnuagh+WHhuWBj+W3rlxyXG5cdFx0cmV0dXJuIE1hdGguc3FydCh2YXJpYW5jZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==