vcomply-workflow-engine 6.0.52 → 6.0.53

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 (73) hide show
  1. package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +2 -2
  2. package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -2
  3. package/esm2022/lib/constants/assets.constants.mjs +57 -0
  4. package/esm2022/lib/constants/link-responsibility.constants.mjs +2 -2
  5. package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +2 -2
  6. package/esm2022/lib/more-option/more-option.component.mjs +2 -2
  7. package/esm2022/lib/report-a-case/components/assignee/assignee.component.mjs +2 -2
  8. package/esm2022/lib/report-a-case/components/case-assignees/case-assignees.component.mjs +2 -2
  9. package/esm2022/lib/report-a-case/components/case-category/case-category.component.mjs +2 -2
  10. package/esm2022/lib/report-a-case/components/case-details/case-details.component.mjs +2 -2
  11. package/esm2022/lib/report-a-case/components/case-owners/case-owners.component.mjs +2 -2
  12. package/esm2022/lib/report-a-case/components/case-priority/case-priority.component.mjs +2 -2
  13. package/esm2022/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.mjs +2 -2
  14. package/esm2022/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.mjs +2 -2
  15. package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +2 -2
  16. package/esm2022/lib/report-a-case/components/field-holder/field-holder.component.mjs +2 -2
  17. package/esm2022/lib/report-a-case/components/linked assessment/linked-assessment.component.mjs +2 -2
  18. package/esm2022/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.mjs +2 -2
  19. package/esm2022/lib/report-a-case/components/rc-details/rc-details.component.mjs +2 -2
  20. package/esm2022/lib/report-a-case/components/report-date/report-date.component.mjs +2 -2
  21. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +2 -2
  22. package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +2 -2
  23. package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +2 -2
  24. package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +2 -2
  25. package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +2 -2
  26. package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +2 -2
  27. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +2 -2
  28. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +2 -2
  29. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +2 -2
  30. package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +2 -2
  31. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +2 -2
  32. package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +2 -2
  33. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +2 -2
  34. package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +2 -2
  35. package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +2 -2
  36. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +2 -2
  37. package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +2 -2
  38. package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +2 -2
  39. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +2 -2
  40. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +2 -2
  41. package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +2 -2
  42. package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +2 -2
  43. package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +2 -2
  44. package/esm2022/lib/sharedComponents/policy-template/constants/template.constant.mjs +2 -2
  45. package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +2 -2
  46. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +2 -2
  47. package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +2 -2
  48. package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +2 -2
  49. package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +2 -2
  50. package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +2 -2
  51. package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +2 -2
  52. package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +2 -2
  53. package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -2
  54. package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +2 -2
  55. package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +2 -2
  56. package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +2 -2
  57. package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +2 -2
  58. package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +2 -2
  59. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +2 -2
  60. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +2 -2
  61. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +2 -2
  62. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +2 -2
  63. package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +2 -2
  64. package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +2 -2
  65. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +2 -2
  66. package/esm2022/lib/workflow-program/workflow-program.component.mjs +2 -2
  67. package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +2 -2
  68. package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +2 -2
  69. package/fesm2022/vcomply-workflow-engine.mjs +14 -15
  70. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  71. package/package.json +1 -1
  72. package/esm2022/lib/constants/assessts.constants.mjs +0 -57
  73. /package/lib/constants/{assessts.constants.d.ts → assets.constants.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { HttpParams } from '@angular/common/http';
2
2
  import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
- import { ASSETS } from '../../constants/assessts.constants';
3
+ import { ASSETS } from '../../constants/assets.constants';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../../workflow-services/responsibility.service";
6
6
  import * as i2 from "@angular/common";
@@ -738,4 +738,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
738
738
  }], closeEvent: [{
739
739
  type: Output
740
740
  }] } });
741
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0aW5nL3Byb2dyYW0tbGlzdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3Byb2dyYW0tbGlzdGluZy9wcm9ncmFtLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzVELE1BQU0sT0FBTyx1QkFBdUI7SUFjbEMsSUFBaUMscUJBQXFCLENBQUMsUUFBYTtRQUNsRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFhRCxJQUE0QixnQkFBZ0IsQ0FBQyxPQUFZO1FBQ3ZELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxD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WUFBWTtzQkFBcEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTTJCLHFCQUFxQjtzQkFBckQsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBSWxCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDc0IsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNHLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQU1DLGdCQUFnQjtzQkFBM0MsS0FBSzt1QkFBQyxlQUFlO2dCQW1GWixtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBjYXRlZ29yeUxpc3QsIHByb2dyYW1MaXN0IH0gZnJvbSAnLi9wcm9ncmFtLWxpc3QtbW9kZWwnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Fzc2Vzc3RzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9ncmFtLWxpc3RpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3JhbS1saXN0aW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3JhbS1saXN0aW5nLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyYW1MaXN0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBhbmltYXRpb24gPSBmYWxzZTtcbiAgc3ViTGlzdCA9IGZhbHNlO1xuICBsb2FkZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgcHJvZ3JhbXNMaXN0OiBhbnk7XG4gIC8vIEBJbnB1dCgpIGFsbFByb2dyYW1zOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZFByb2dyYW0hOiBhbnk7XG4gIEBJbnB1dCgpIG9wZW5lZEZyb206IHN0cmluZyA9ICcnO1xuICAvLyBASW5wdXQoKSBzZWxlY3RlZENhdGVnb3JpZXM6IGFueVtdID0gW107XG5cbiAgdmlld09ubHlQcm9ncmFtc0NhdGVnb3J5SWQ6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQ2F0ZWdvcmllczogYW55W10gPSBbXTtcbiAgdGVtcFNlbGVjdGVkQ2F0ZWdvcmllczogYW55ID0gW107XG4gIEBJbnB1dCgnc2VsZWN0ZWRDYXRlZ29yaWVzJykgc2V0IGdldFNlbGVjdGVkQ2F0ZWdvcmllcyhjYXRlZ29yeTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMgPSBjYXRlZ29yeTtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZENhdGVnb3JpZXMgPSBKU09OLnN0cmluZ2lmeShjYXRlZ29yeSk7XG4gIH1cbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdHlJZCA9ICcnO1xuICBASW5wdXQoKSBmZWF0dXJlITogYW55O1xuXG4gIEBJbnB1dCgpIGhpZGVQcm9ncmFtc0xpc3QhOiBhbnk7XG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICdDUkVBVEUnO1xuICBAVmlld0NoaWxkKCdzZWFyY2hQcm9ncmFtJykgc2VhcmNoUHJvZ3JhbSE6IGFueTtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoQ2F0ZWdvcnknKSBzZWFyY2hDYXRlZ29yeSE6IGFueTtcblxuICBwcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zOiBhbnk7XG4gIHByZXNlcnZlZFByb2dyYW1zSWQ6IGFueTtcbiAgcHJlc2VydmVQcmltYXJ5UHJvZ3JhbTogYW55O1xuXG4gIEBJbnB1dCgnbGlua2VkUHJvZ3JhbScpIHNldCBnZXRMaW5rZWRQcm9ncmFtKHByb2dyYW06IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkID0gW107XG4gICAgdGhpcy52aWV3T25seVByb2dyYW1zQ2F0ZWdvcnlJZCA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA9IHByb2dyYW07XG4gICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZC5wdXNoKGVsZT8uX2lkKTtcbiAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQodHJ1ZSwgZWxlPy5wcm9ncmFtVHlwZSk7XG4gICAgICBlbGU/LmlzVmlld09ubHlQcm9ncmFtXG4gICAgICAgID8gdGhpcy52aWV3T25seVByb2dyYW1zQ2F0ZWdvcnlJZD8ucHVzaChlbGU/LmNhdGVnb3J5X2lkKVxuICAgICAgICA6IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBwcmV2aW91c1NlbGVjdGVkVmFsdWVzOiBhbnkgPSB7XG4gICAgcHJvZ3JhbToge30sXG4gICAgY2F0ZWdvcmllczogW10sXG4gIH07XG4gIHByb2dyYW1EYXRhOiBwcm9ncmFtTGlzdCA9IHtcbiAgICBkYXRhOiBbXSxcbiAgICBmcm9tOiAwLFxuICAgIHRvOiAwLFxuICAgIHRvdGFsUGFnZXM6IDAsXG4gICAgdG90YWxSZWNvcmRzOiAwLFxuICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgIEFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50OiAwLFxuICAgIEFsbE90aGVyc1Byb2dyYW1zQ291bnQ6IDAsXG4gICAgQWxsUmVndWxhdGlvblByb2dyYW1zQ291bnQ6IDAsXG4gICAgQWxsU3RhbmRhcmRQcm9ncmFtc0NvdW50OiAwLFxuICAgIFNlbGVjdGVkSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQ6IDAsXG4gICAgU2VsZWN0ZWRPdGhlcnNQcm9ncmFtc0NvdW50OiAwLFxuICAgIFNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQ6IDAsXG4gICAgU2VsZWN0ZWRTdGFuZGFyZFByb2dyYW1zQ291bnQ6IDAsXG4gICAgQWxsUHJvZ3JhbXNDb3VudDogMCxcbiAgICBBbGxWaWV3T25seVByb2dyYW1Db3VudDogMCxcbiAgfTtcblxuICBwcm9ncmFtVGFiRGF0YUNvdW50OiBhbnkgPSB7XG4gICAgYWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQ6IDAsXG4gICAgYWxsT3RoZXJzUHJvZ3JhbXNDb3VudDogMCxcbiAgICBhbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudDogMCxcbiAgICBhbGxTdGFuZGFyZFByb2dyYW1zQ291bnQ6IDAsXG4gIH07XG5cbiAgY2F0ZWdvcnlEYXRhOiBjYXRlZ29yeUxpc3QgPSB7XG4gICAgZGF0YTogW10sXG4gICAgZnJvbTogMCxcbiAgICB0bzogMCxcbiAgICB0b3RhbFBhZ2VzOiAwLFxuICAgIHRvdGFsUmVjb3JkczogMCxcbiAgICBjdXJyZW50UGFnZTogMSxcbiAgICBzZWxlY3RlZENhdGVnb3JpZXM6IFtdLFxuICB9O1xuXG4gIHNob3dDYXRlZ29yaWVzID0gZmFsc2U7XG4gIGN1cnJlbnRQcm9ncmFtITogYW55O1xuICBzZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xuICBjYXRlZ29yeVNlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XG5cbiAgYWN0aXZlVGFiOiAncmVndWxhdGlvbnMnIHwgJ3N0YW5kYXJkcycgfCAnaW50ZXJuYWxfY29udHJvbHMnIHwgJ290aGVycycgPVxuICAgICdyZWd1bGF0aW9ucyc7XG4gIHNlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xuICBjYXRlZ29yeUxpc3Q6IGFueVtdID0gW107XG4gIGJsb2NrV2lkdGg6IGFueTtcblxuICBwcm9ncmFtVHlwZU9iamVjdCA9IHtcbiAgICByZWd1bGF0aW9uczogMSxcbiAgICBzdGFuZGFyZHM6IDIsXG4gICAgaW50ZXJuYWxfY29udHJvbHM6IDMsXG4gICAgb3RoZXJzOiAwLFxuICB9O1xuXG4gIGRpc3BsYXlDb25maXJtYXRpb25NZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIHRlbXBQcmltYXJ5UHJvZ3JhbTogYW55ID0ge307XG4gIHByaW1hcnlDb25maXJtYXRpb25NZXNzYWdlOiBzdHJpbmcgPSBgT25jZSBjb25maXJtZWQsIHRoZSA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjaGFuZ2VkLiBIZW5jZSwgYWxsIHRoZSBkZWZhdWx0IHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIG5ldyA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gd2lsbCBub3cgYXBwbHkgdG8gdGhpcyByZXNwb25zaWJpbGl0eS5gO1xuICBpc1ByaW1hcnlDb25maXJtYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNVbmNoZWNrZWRQcm9ncmFtOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUHJpbWFyeVVuY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZFByb2dyYW1zRGV0YWlsOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRQcm9ncmFtc0lkOiBhbnkgPSBbXTtcbiAgcHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XG4gIGRlcHJlY2F0ZVByaW1hcnlQcm9ncmFtRmxhZyA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzYXZlU2VsZWN0ZWRQcm9ncmFtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgYWxsQ2F0ZWdvcmllczogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3BvbnNpYmlsaXR5U2VydmljZTogUmVzcG9uc2liaWxpdHlTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGVwcmVjYXRlUHJpbWFyeVByb2dyYW1GbGFnID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJ1xuICAgICk7XG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJiB0aGlzLnNlbGVjdGVkUHJvZ3JhbVswXSkge1xuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdO1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnIHx8IHRoaXMub3BlbmVkRnJvbSA9PT0gJ1BST0dSQU1fV09SS1JPT00nKSB7XG4gICAgICAgIHRoaXMudmlld09ubHlQcm9ncmFtc0NhdGVnb3J5SWQ/LnB1c2godGhpcy5jdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQpO1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0aGlzLmN1cnJlbnRQcm9ncmFtPy5wcm9ncmFtVHlwZSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAnb3RoZXJzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gJ3JlZ3VsYXRpb25zJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gJ3N0YW5kYXJkcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9ICdpbnRlcm5hbF9jb250cm9scyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAncmVndWxhdGlvbnMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1Db3VudCgpO1xuICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzPy5sZW5ndGggJiYgdGhpcy5jdXJyZW50UHJvZ3JhbSkge1xuICAgICAgdGhpcy5wb3B1bGF0ZUNhdGVnb3JpZXMoKTtcbiAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaWRlUHJvZ3JhbXNMaXN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZD8ucHVzaCh0aGlzLnNlbGVjdGVkUHJvZ3JhbVswXT8uX2lkKTtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgICB9XG4gICAgdGhpcy5nZXRQcm9ncmFtc0NvdW50KCk7XG5cbiAgICB0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMgPSB7XG4gICAgICBwcm9ncmFtczogdGhpcy5jdXJyZW50UHJvZ3JhbSxcbiAgICAgIGNhdGVnb3JpZXM6IHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLmxlbmd0aFxuICAgICAgICA/IFsuLi5uZXcgU2V0KHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzKV1cbiAgICAgICAgOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5wcmVzZXJ2ZVByZXZpb3VzRGV0YWlscygpO1xuICB9XG4gIHBvcHVsYXRlQ2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgLy8gcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZCcsIHRoaXMuY3VycmVudFByb2dyYW0uX2lkKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdpc1BhZ2luYXRpb24nLCBmYWxzZSk7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlJZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmVwb3J0SWQnLCB0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xuICAgIH1cblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0UHJvZ3JhbXNMaXN0KHBhcmFtcywgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgYWxsQ2F0ZWdvcmllcyA9IHJlcy5kYXRhO1xuXG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzID0gYWxsQ2F0ZWdvcmllcy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLmluY2x1ZGVzKGVsZS5jYXRlZ29yeV9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChlbGVtZW50LmNhdGVnb3J5X2lkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XG4gICAgICB0aGlzLnByb2dyYW1EYXRhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQ7XG4gICAgICB0aGlzLmdldFByb2dyYW1zTGlzdCh7IHNlYXJjaDogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNDb3VudCh7IHNlYXJjaDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cbiAgY2F0ZWdvcnlTZWFyY2goZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nID0gZXZlbnQ7XG4gICAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KHsgc2VhcmNoOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFByb2dyYW0oZXZlbnQ6IGFueSwgcHJvZ3JhbTogYW55KSB7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFByb2dyYW1zKGV2ZW50LCBwcm9ncmFtKTtcbiAgICAvLyB0aGlzLmdldFNlbGVjdGVkUHJvZ3JhbUNvdW50KGV2ZW50LCBwcm9ncmFtPy5wcm9ncmFtVHlwZSk7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBpZiAoIXRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKSkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmN1cnJlbnRQcm9ncmFtID8/IHt9KS5sZW5ndGhcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6ICh0aGlzLmN1cnJlbnRQcm9ncmFtID0gcHJvZ3JhbSk7XG4gICAgICB9XG4gICAgICAvLyB0aGlzLmN1cnJlbnRQcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICAvLyB0aGlzLmdldFNlbGVjdGVkUHJvZ3JhbUNvdW50KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBldmVudCBpcyB0cnVlLCB0aGVuIHB1c2ggdGhlIHByb2dyYW0gdG8gdGhlIHNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgYXJyYXkuIElmIHRoZSBldmVudCBpc1xuICAgKiBmYWxzZSwgdGhlbiByZW1vdmUgdGhlIHByb2dyYW0gZnJvbSB0aGUgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCBhcnJheS5cbiAgICogQHBhcmFtIHthbnl9IGV2ZW50IC0gYm9vbGVhblxuICAgKiBAcGFyYW0ge2FueX0gcHJvZ3JhbSAtIGFueSA9IHtcbiAgICovXG4gIHVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXMoZXZlbnQ6IGFueSwgcHJvZ3JhbTogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBjb25zdCBpbmRleE9mUHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uZmluZEluZGV4KFxuICAgICAgICAoZWw6IGFueSkgPT4gZWw/LmNhdGVnb3J5X2lkID09PSBwcm9ncmFtPy5jYXRlZ29yeV9pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleE9mUHJvZ3JhbSA9PT0gLTEgJiYgT2JqZWN0LmtleXMocHJvZ3JhbSk/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZD8ucHVzaChwcm9ncmFtPy5faWQpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWw/LnB1c2gocHJvZ3JhbSk7XG4gICAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoZXZlbnQsIHByb2dyYW0/LnByb2dyYW1UeXBlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5kZXhPZlByb2dyYW0gPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWw/LmZpbmRJbmRleChcbiAgICAgICAgKGVsOiBhbnkpID0+IGVsPy5jYXRlZ29yeV9pZCA9PT0gcHJvZ3JhbT8uY2F0ZWdvcnlfaWRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXhPZlByb2dyYW0gIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uc3BsaWNlKGluZGV4T2ZQcm9ncmFtLCAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4T2ZJZCA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5maW5kSW5kZXgoXG4gICAgICAgIChlbDogYW55KSA9PiBlbCA9PT0gcHJvZ3JhbT8uX2lkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4T2ZJZCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LnNwbGljZShpbmRleE9mSWQsIDEpO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1ByaW1hcnlVbmNoZWNrZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtICYmXG4gICAgICAgIHRoaXMuY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkID09PSBwcm9ncmFtPy5jYXRlZ29yeV9pZFxuICAgICAgKSB7XG4gICAgICAgIC8vIHRoaXMucHJpbWFyeUNvbmZpcm1hdGlvbk1lc3NhZ2UgPSAnWW91IGNhbm5vdCBkZXNlbGVjdCB0aGlzIFByb2dyYW0gc2luY2UgdGhpcyBpcyB0aGUgPGVtPlByaW1hcnkgUHJvZ3JhbTwvZW0+IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LiBUbyBwcm9jZWVkLCBmaXJzdCBzZWxlY3QgYW5vdGhlciBQcm9ncmFtIGFzIHRoZSA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4uJztcbiAgICAgICAgdGhpcy5pc1ByaW1hcnlDb25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudGVtcFByaW1hcnlQcm9ncmFtID0gSlNPTi5zdHJpbmdpZnkocHJvZ3JhbSk7XG4gICAgICAgIC8vIHRoaXMuY3VycmVudFByb2dyYW0gPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIH1cbiAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoZXZlbnQsIHByb2dyYW0/LnByb2dyYW1UeXBlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8ubGVuZ3RoICYmICF0aGlzLmN1cnJlbnRQcm9ncmFtPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWxbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGN1cnJlbnRQcm9ncmFtIGlzIHNldCwgdGhlbiBzZXQgdGhlIGN1cnJlbnRQcm9ncmFtIHRvIHRoZSBwcm9ncmFtIHBhc3NlZCBpbiwgYW5kIHNldCB0aGVcbiAgICogdGVtcFByaW1hcnlQcm9ncmFtIHRvIHRoZSBjdXJyZW50UHJvZ3JhbS5cbiAgICogSWYgdGhlIGN1cnJlbnRQcm9ncmFtIGlzIG5vdCBzZXQsIHRoZW4gc2V0IHRoZSBjdXJyZW50UHJvZ3JhbSB0byB0aGUgcHJvZ3JhbSBwYXNzZWQgaW4uXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgY2hlY2tib3hcbiAgICogQHBhcmFtIHthbnl9IHByb2dyYW0gLSB0aGUgcHJvZ3JhbSB0aGF0IGlzIGJlaW5nIHNlbGVjdGVkXG4gICAqL1xuICBzZXRQcmltYXJ5UHJvZ3JhbShldmVudDogYW55LCBwcm9ncmFtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50UHJvZ3JhbSkge1xuICAgICAgY29uc3QgY3VycmVudFRlbXAgPSB0aGlzLmN1cnJlbnRQcm9ncmFtO1xuICAgICAgdGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPSBKU09OLnN0cmluZ2lmeShjdXJyZW50VGVtcCk7XG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyh0cnVlLCBwcm9ncmFtKTtcbiAgICAgIGlmICghZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5wcmltYXJ5Q29uZmlybWF0aW9uTWVzc2FnZSA9XG4gICAgICAgICdPbmNlIGNvbmZpcm1lZCwgdGhlIDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPiBmb3IgdGhpcyByZXNwb25zaWJpbGl0eSB3aWxsIGJlIGNoYW5nZWQuIEhlbmNlLCBhbGwgdGhlIGRlZmF1bHQgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgbmV3IDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPiB3aWxsIG5vdyBhcHBseSB0byB0aGlzIHJlc3BvbnNpYmlsaXR5Lic7XG4gICAgICB0aGlzLmlzUHJpbWFyeUNvbmZpcm1hdGlvbiA9IHRydWU7XG4gICAgfVxuICAgIGlmIChldmVudCAmJiAhdGhpcy5jdXJyZW50UHJvZ3JhbSkge1xuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHByb2dyYW07XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXModHJ1ZSwgcHJvZ3JhbSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSB1c2VyIGNsaWNrcyBcIlllc1wiIG9uIHRoZSBjb25maXJtYXRpb24gbW9kYWwsIHRoZW4gdGhlIGZ1bmN0aW9uIHdpbGwgcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb21cbiAgICogdGhlIHNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgYXJyYXkgYW5kIHRoZSBzZWxlY3RlZFByb2dyYW1zSWQgYXJyYXkuIElmIHRoZSB1c2VyIGNsaWNrcyBcIk5vXCIgb24gdGhlXG4gICAqIGNvbmZpcm1hdGlvbiBtb2RhbCwgdGhlbiB0aGUgZnVuY3Rpb24gd2lsbCBkbyBub3RoaW5nLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV2ZW50IC0gYm9vbGVhbiAtJmd0OyB0aGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcbiAgICovXG4gIHVwZGF0ZVByaW1hcnlQcm9ncmFtKGV2ZW50OiBib29sZWFuKSB7XG4gICAgaWYgKGV2ZW50ICYmIHRoaXMuaXNQcmltYXJ5VW5jaGVja2VkKSB7XG4gICAgICBjb25zdCBpbmRleE9mUHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uZmluZEluZGV4KFxuICAgICAgICAoZWw6IGFueSkgPT5cbiAgICAgICAgICBlbD8uY2F0ZWdvcnlfaWQgPT09XG4gICAgICAgICAgSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSk/LmNhdGVnb3J5X2lkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4T2ZQcm9ncmFtICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWw/LnNwbGljZShpbmRleE9mUHJvZ3JhbSwgMSk7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleE9mSWQgPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZD8uZmluZEluZGV4KFxuICAgICAgICAoZWw6IGFueSkgPT4gZWwgPT09IEpTT04ucGFyc2UodGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPz8ge30pPy5faWRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXhPZklkICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZD8uc3BsaWNlKGluZGV4T2ZJZCwgMSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzUHJpbWFyeUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHt9O1xuICAgIH0gZWxzZSBpZiAoIWV2ZW50ICYmIHRoaXMuaXNQcmltYXJ5VW5jaGVja2VkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXMoXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRoaXMudGVtcFByaW1hcnlQcm9ncmFtPy5sZW5ndGhcbiAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPz8ge30pXG4gICAgICAgICAgOiB7fVxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbT8ubGVuZ3RoXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSlcbiAgICAgICAgOiB7fTtcbiAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChldmVudCkge1xuICAgICAgLy8gdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHRoaXMuaXNQcmltYXJ5VW5jaGVja2VkID8ge30gOiBKU09OLnBhcnNlKHRoaXMudGVtcFByaW1hcnlQcm9ncmFtKTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyhcbiAgICAgICAgdGhpcy5pc1ByaW1hcnlVbmNoZWNrZWQgPyBmYWxzZSA6IHRydWUsXG4gICAgICAgIHRoaXMudGVtcFByaW1hcnlQcm9ncmFtPy5sZW5ndGhcbiAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPz8ge30pXG4gICAgICAgICAgOiB7fVxuICAgICAgKTtcbiAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjdXJyZW50UHJpbWFyeSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFByb2dyYW0pO1xuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHt9O1xuICAgICAgLy8gdGhpcy51cGRhdGVTZWxlY3RlZFByb2dyYW1zKGZhbHNlLCBKU09OLnBhcnNlKGN1cnJlbnRQcmltYXJ5KT8/IHt9KTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyh0cnVlLCBKU09OLnBhcnNlKGN1cnJlbnRQcmltYXJ5KSA/PyB7fSk7XG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0gdGhpcy50ZW1wUHJpbWFyeVByb2dyYW0/Lmxlbmd0aFxuICAgICAgICA/IEpTT04ucGFyc2UodGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPz8ge30pXG4gICAgICAgIDoge307XG4gICAgICB0aGlzLmlzUHJpbWFyeUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA9IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0QWxsQ2F0ZWdvcmllcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XG4gICAgICBpZiAodGhpcy5jYXRlZ29yeURhdGEudG90YWxQYWdlcyA8IDIpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuZGF0YS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChlbGUuY2F0ZWdvcnlfaWQpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5wdXNoKGVsZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgLy8gcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZCcsIHRoaXMuY3VycmVudFByb2dyYW0/Ll9pZCk7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2lzUGFnaW5hdGlvbicsIGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlJZCkge1xuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JlcG9ydElkJywgdGhpcy5yZXNwb25zaWJpbGl0eUlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAgICAgLmdldFByb2dyYW1zTGlzdChwYXJhbXMsIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkKVxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbENhdGVnb3JpZXMgPSByZXMuZGF0YTtcblxuICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSByZXMuZGF0YTtcbiAgICAgICAgICAgICAgYWxsQ2F0ZWdvcmllcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goZWxlbWVudC5jYXRlZ29yeV9pZCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQ2F0ZWdvcmllc1NlbGVjdGlvbigpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoID09XG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS50b3RhbFJlY29yZHNcbiAgICApIHtcbiAgICAgIHJldHVybiAnY2hlY2tlZCc7XG4gICAgfSBlbHNlIGlmICghdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICd1bmNoZWNrZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2luZGV0ZXJtaW5hdGUnO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5DYXRlZ29yaWVzKCkge1xuICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgdGhpcy5jYXRlZ29yeVNlYXJjaFN0cmluZyA9ICcnO1xuICAgIGNvbnN0IGlzU3ViUHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uc29tZShcbiAgICAgIChlbDogYW55KSA9PiBlbD8uY2hpbGRfaWQ/Lmxlbmd0aFxuICAgICk7XG5cbiAgICB0aGlzLnBvcHVsYXRlQ2F0ZWdvcmllcygpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRQcm9ncmFtPy5jaGlsZF9pZD8ubGVuZ3RoIHx8IGlzU3ViUHJvZ3JhbSkge1xuICAgICAgdGhpcy5zaG93Q2F0ZWdvcmllcyA9IHRydWU7XG4gICAgICB0aGlzLmdldENhdGVnb3JpZXNMaXN0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgIHRoaXMuc2F2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGJhY2tUb1Byb2dyYW1zKCkge1xuICAgIGlmICghdGhpcy5oaWRlUHJvZ3JhbXNMaXN0KSB7XG4gICAgICB0aGlzLnNob3dDYXRlZ29yaWVzID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5wcmV2aW91c1NlbGVjdGVkVmFsdWVzPy5wcm9ncmFtPy5faWQgPT0gdGhpcy5jdXJyZW50UHJvZ3JhbSkge1xuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSBbXG4gICAgICAgICAgLi4ubmV3IFNldCh0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXMuY2F0ZWdvcmllcyksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVGFiKFxuICAgIHR5cGU6ICdyZWd1bGF0aW9ucycgfCAnc3RhbmRhcmRzJyB8ICdpbnRlcm5hbF9jb250cm9scycgfCAnb3RoZXJzJ1xuICApIHtcbiAgICB0aGlzLnByb2dyYW1TdWJUYWIgPSAnUFJPR1JBTVMnO1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdHlwZTtcbiAgICB0aGlzLnByb2dyYW1EYXRhLmN1cnJlbnRQYWdlID0gMTtcbiAgICBpZiAodGhpcy5zZWFyY2hTdHJpbmc/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSAnJztcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNDb3VudCgpO1xuICAgIH1cbiAgICAvLyB0aGlzLnNlYXJjaFN0cmluZyA9ICcnO1xuICAgIHRoaXMuc2VhcmNoUHJvZ3JhbS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgfVxuXG4gIGNoYW5nZVBhZ2UoZXZlbnQ6IGFueSwgdHlwZTogJ2NhdGVnb3J5JyB8ICdwcm9ncmFtJykge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAncHJvZ3JhbSc6XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuY3VycmVudFBhZ2UgPSBldmVudDtcbiAgICAgICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLmN1cnJlbnRQYWdlID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvZ3JhbXNMaXN0KHBhcmFtc09iamVjdD86IGFueSkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFxuICAgICAgJ3Byb2dyYW1UeXBlJyxcbiAgICAgIHRoaXMucHJvZ3JhbVR5cGVPYmplY3RbdGhpcy5hY3RpdmVUYWJdXG4gICAgKTtcbiAgICBpZiAocGFyYW1zT2JqZWN0Py5zZWFyY2ggfHwgdGhpcy5zZWFyY2hTdHJpbmcpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3NlYXJjaFRleHQnLCB0aGlzLnNlYXJjaFN0cmluZyk7XG4gICAgfVxuICAgIC8vIGVsc2Uge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2VObycsIHRoaXMucHJvZ3JhbURhdGEuY3VycmVudFBhZ2UpO1xuICAgIC8vIH1cbiAgICBpZiAodGhpcy5wcm9ncmFtU3ViVGFiID09PSAnT1RIRVJfUFJPR1JBTVMnKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdpc1ZpZXdPbmx5UHJvZ3JhbXMnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUlkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXBvcnRJZCcsIHRoaXMucmVzcG9uc2liaWxpdHlJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0UHJvZ3JhbXNMaXN0KHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2dyYW1EYXRhLmRhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5mcm9tID0gcmVzLmZyb207XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEudG8gPSByZXMudG87XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEudG90YWxQYWdlcyA9IHJlcy50b3RhbFBhZ2VzO1xuICAgICAgICB0aGlzLnByb2dyYW1EYXRhLnRvdGFsUmVjb3JkcyA9IHJlcy50b3RhbFJlY29yZHM7XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQgPVxuICAgICAgICAgIHJlcy5BbGxJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudDtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5BbGxPdGhlcnNQcm9ncmFtc0NvdW50ID0gcmVzLkFsbE90aGVyc1Byb2dyYW1zQ291bnQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsUmVndWxhdGlvblByb2dyYW1zQ291bnQgPVxuICAgICAgICAgIHJlcy5BbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudDtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5BbGxTdGFuZGFyZFByb2dyYW1zQ291bnQgPVxuICAgICAgICAgIHJlcy5BbGxTdGFuZGFyZFByb2dyYW1zQ291bnQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsUHJvZ3JhbXNDb3VudCA9IHJlcz8uQWxsUHJvZ3JhbXNDb3VudFxuICAgICAgICAgID8gcmVzPy5BbGxQcm9ncmFtc0NvdW50XG4gICAgICAgICAgOiAwO1xuICAgICAgICB0aGlzLnByb2dyYW1EYXRhLkFsbFZpZXdPbmx5UHJvZ3JhbUNvdW50ID0gcmVzPy5BbGxWaWV3T25seVByb2dyYW1Db3VudFxuICAgICAgICAgID8gcmVzPy5BbGxWaWV3T25seVByb2dyYW1Db3VudFxuICAgICAgICAgIDogMDtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UHJvZ3JhbXNDb3VudChwYXJhbXNPYmplY3Q/OiBhbnkpIHtcbiAgICB0aGlzLnByb2dyYW1Db3VudExvYWRlciA9IHRydWU7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgLy8gcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbVR5cGUnLCB0aGlzLnByb2dyYW1UeXBlT2JqZWN0W3RoaXMuYWN0aXZlVGFiXSk7XG4gICAgaWYgKHBhcmFtc09iamVjdD8uc2VhcmNoIHx8IHRoaXMuc2VhcmNoU3RyaW5nKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzZWFyY2hUZXh0JywgdGhpcy5zZWFyY2hTdHJpbmcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUlkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXBvcnRJZCcsIHRoaXMucmVzcG9uc2liaWxpdHlJZCk7XG4gICAgfVxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldFByb2dyYW1zTGlzdENvdW50KHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2dyYW1UYWJEYXRhQ291bnQuYWxsUmVndWxhdGlvblByb2dyYW1zQ291bnQgPVxuICAgICAgICAgIHJlcz8uQWxsUmVndWxhdGlvblByb2dyYW1zQ291bnQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbVRhYkRhdGFDb3VudC5hbGxTdGFuZGFyZFByb2dyYW1zQ291bnQgPVxuICAgICAgICAgIHJlcz8uQWxsU3RhbmRhcmRQcm9ncmFtc0NvdW50O1xuICAgICAgICB0aGlzLnByb2dyYW1UYWJEYXRhQ291bnQuYWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQgPVxuICAgICAgICAgIHJlcz8uQWxsSW50ZXJuYWxDb250cm9sc1Byb2dyYW1zQ291bnQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbVRhYkRhdGFDb3VudC5hbGxPdGhlcnNQcm9ncmFtc0NvdW50ID1cbiAgICAgICAgICByZXM/LkFsbE90aGVyc1Byb2dyYW1zQ291bnQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLnByb2dyYW1Db3VudExvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHM6IGFueVtdID0gW107XG4gIGdldENhdGVnb3JpZXNMaXN0KHF1ZXJ5T2JqZWN0PzogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIC8vIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWQnLCB0aGlzLmN1cnJlbnRQcm9ncmFtPy5faWQpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3BhZ2VObycsIHRoaXMuY2F0ZWdvcnlEYXRhLmN1cnJlbnRQYWdlKTtcbiAgICBpZiAocXVlcnlPYmplY3Q/LnNlYXJjaCB8fCB0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzZWFyY2hUZXh0JywgdGhpcy5jYXRlZ29yeVNlYXJjaFN0cmluZyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JlcG9ydElkJywgdGhpcy5yZXNwb25zaWJpbGl0eUlkKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxuICAgICAgLmdldFByb2dyYW1zTGlzdChwYXJhbXMsIFsuLi5uZXcgU2V0KHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkKV0pXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuZGF0YSA9IHJlcy5kYXRhO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLmZyb20gPSByZXMuZnJvbTtcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS50byA9IHJlcy50bztcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS50b3RhbFBhZ2VzID0gcmVzLnRvdGFsUGFnZXM7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEudG90YWxSZWNvcmRzID0gcmVzLnRvdGFsUmVjb3JkcztcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHMgPSByZXM/LnNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHM/Lmxlbmd0aFxuICAgICAgICAgICAgPyByZXM/LnNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHNcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIHRoaXMuc2hvd0NhdGVnb3JpZXMgPSB0cnVlO1xuICB9XG5cbiAgc2F2ZVByb2dyYW0oKSB7fVxuXG4gIHNlbGVjdENhdGVnb3J5KG1vZGU6IGFueSwgY2F0ZWdvcnk6IGFueSkge1xuICAgIGlmIChtb2RlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpO1xuICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMucHVzaChjYXRlZ29yeS5jYXRlZ29yeV9pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZElkcy5maW5kSW5kZXgoXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gY2F0ZWdvcnkuY2F0ZWdvcnlfaWRcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gY2F0ZWdvcnkuY2F0ZWdvcnlfaWRcbiAgICAgICk7XG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUgPT0gY2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKHNlbGVjdGVkSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUNhdGVnb3JpZXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuZmluZEluZGV4KFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gZXZlbnQuY2F0ZWdvcnlfaWRcbiAgICApO1xuICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSWRzLmZpbmRJbmRleChcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gZXZlbnQuY2F0ZWdvcnlfaWRcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGNvbnN0IGN1cnJlbnRQcm9ncmFtID0gdGhpcy5wcmVzZXJ2ZVByaW1hcnlQcm9ncmFtPy5sZW5ndGhcbiAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnByZXNlcnZlUHJpbWFyeVByb2dyYW0pXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IHNlbGVjdGVkUHJvZ3JhbXNJZCA9IHRoaXMucHJlc2VydmVkUHJvZ3JhbXNJZD8ubGVuZ3RoXG4gICAgICA/IEpTT04ucGFyc2UodGhpcy5wcmVzZXJ2ZWRQcm9ncmFtc0lkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA9IHRoaXMucHJlc2VydmVkU2VsZWN0ZWRQcm9ncmFtcz8ubGVuZ3RoXG4gICAgICA/IEpTT04ucGFyc2UodGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zKVxuICAgICAgOiBbXTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByZXNlcnZlUHJpbWFyeVByb2dyYW0/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkUHJvZ3JhbS5lbWl0KHtcbiAgICAgICAgcHJvZ3JhbTogY3VycmVudFByb2dyYW0sXG4gICAgICAgIGNhdGVnb3JpZXM6IEpTT04ucGFyc2UodGhpcy50ZW1wU2VsZWN0ZWRDYXRlZ29yaWVzKSxcbiAgICAgICAgbGlua2VkUHJvZ3JhbTogc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7cHJvZ3JhbTogY3VycmVudFByb2dyYW0sIGNhdGVnb3JpZXM6IHRoaXMuc2VsZWN0ZWRJZHMsIGxpbmtlZFByb2dyYW06IHNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgIH0pO1xuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICghdGhpcy5oaWRlUHJvZ3JhbXNMaXN0ICYmIGZhbHNlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb25maXJtYXRpb25NZXNzYWdlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeUlkcyA9IHRoaXMuc2VsZWN0ZWRJZHMuY29uY2F0KFxuICAgICAgICB0aGlzLnNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHNcbiAgICAgICk7XG4gICAgICB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7XG4gICAgICAgIHByb2dyYW06IHRoaXMuY3VycmVudFByb2dyYW0sXG4gICAgICAgIGNhdGVnb3JpZXM6IFsuLi5uZXcgU2V0KHNlbGVjdGVkQ2F0ZWdvcnlJZHMpXSxcbiAgICAgICAgbGlua2VkUHJvZ3JhbTogdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsLFxuICAgICAgfSk7XG4gICAgICAvLyB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7IHByb2dyYW06IHRoaXMuY3VycmVudFByb2dyYW0sIGNhdGVnb3JpZXM6IHRoaXMuc2VsZWN0ZWRJZHMgfSk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZUNoYW5nZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcnlJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmNvbmNhdChcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1YkNhdGVnb3J5SWRzXG4gICAgICApO1xuICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRQcm9ncmFtLmVtaXQoe1xuICAgICAgICBwcm9ncmFtOiB0aGlzLmN1cnJlbnRQcm9ncmFtLFxuICAgICAgICBjYXRlZ29yaWVzOiBbLi4ubmV3IFNldChzZWxlY3RlZENhdGVnb3J5SWRzKV0sXG4gICAgICAgIGxpbmtlZFByb2dyYW06IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCxcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcy5zYXZlU2VsZWN0ZWRQcm9ncmFtLmVtaXQoeyBwcm9ncmFtOiB0aGlzLmN1cnJlbnRQcm9ncmFtLCBjYXRlZ29yaWVzOiB0aGlzLnNlbGVjdGVkSWRzIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb25maXJtYXRpb25NZXNzYWdlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGluZGV4T2ZQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5maW5kSW5kZXgoXG4gICAgICAoZWw6IGFueSkgPT4gZWw/LmNhdGVnb3J5X2lkID09PSBldmVudD8uY2F0ZWdvcnlfaWRcbiAgICApO1xuICAgIGlmIChpbmRleE9mUHJvZ3JhbSAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uc3BsaWNlKGluZGV4T2ZQcm9ncmFtLCAxKTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXhPZklkID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LmZpbmRJbmRleChcbiAgICAgIChlbDogYW55KSA9PiBlbCA9PT0gZXZlbnQ/Ll9pZFxuICAgICk7XG4gICAgaWYgKGluZGV4T2ZJZCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5zcGxpY2UoaW5kZXhPZklkLCAxKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gZXZlbnQ/Ll9pZCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWxbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNob3dDYXRlZ29yaWVzID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XG4gICAgLy9BcyB0aGlzIGlzIGEgcmFkaW8gbGlzdCBhbmQgb25seSBvbmUgaXRlbSBjYW4gYmUgc2VsZWN0ZWQgdGhhdHMgd2h5IHdlIGFyZSByZXNldHRpbmcgYWxsIHRoZSBjb3VudHMgdG8gemVyb1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoZmFsc2UsIGV2ZW50Py5wcm9ncmFtVHlwZSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZFByb2dyYW1Db3VudChldmVudD86IGJvb2xlYW4sIHByb2dyYW1UeXBlPzogbnVtYmVyKSB7XG4gICAgLy8gc3dpdGNoICh0aGlzLmN1cnJlbnRQcm9ncmFtLnByb2dyYW1UeXBlKSB7XG4gICAgc3dpdGNoIChwcm9ncmFtVHlwZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBldmVudFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZE90aGVyc1Byb2dyYW1zQ291bnQrK1xuICAgICAgICAgIDogdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZE90aGVyc1Byb2dyYW1zQ291bnQtLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGV2ZW50XG4gICAgICAgICAgPyB0aGlzLnByb2dyYW1EYXRhLlNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQrK1xuICAgICAgICAgIDogdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50LS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBldmVudFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZFN0YW5kYXJkUHJvZ3JhbXNDb3VudCsrXG4gICAgICAgICAgOiB0aGlzLnByb2dyYW1EYXRhLlNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50LS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBldmVudFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50KytcbiAgICAgICAgICA6IHRoaXMucHJvZ3JhbURhdGEuU2VsZWN0ZWRJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudC0tO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHNlbGVjdGVkUHJvZ3JhbSBhcnJheSBoYXMgYSBsZW5ndGgsIHRoZW4gcHJlc2VydmUgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGFycmF5IGFzIHRoZVxuICAgKiBwcmVzZXJ2ZVByaW1hcnlQcm9ncmFtIHZhcmlhYmxlLiBPdGhlcndpc2UsIHNldCB0aGUgcHJlc2VydmVQcmltYXJ5UHJvZ3JhbSB2YXJpYWJsZSB0byBhbiBlbXB0eVxuICAgKiBvYmplY3QuXG4gICAqXG4gICAqIElmIHRoZSBzZWxlY3RlZFByb2dyYW1zSWQgYXJyYXkgaGFzIGEgbGVuZ3RoLCB0aGVuIHByZXNlcnZlIHRoZSBhcnJheSBhcyB0aGUgcHJlc2VydmVkUHJvZ3JhbXNJZFxuICAgKiB2YXJpYWJsZS4gT3RoZXJ3aXNlLCBzZXQgdGhlIHByZXNlcnZlZFByb2dyYW1zSWQgdmFyaWFibGUgdG8gYW4gZW1wdHkgYXJyYXkuXG4gICAqXG4gICAqIElmIHRoZSBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIGFycmF5IGhhcyBhIGxlbmd0aCwgdGhlbiBwcmVzZXJ2ZSB0aGUgYXJyYXkgYXMgdGhlXG4gICAqIHByZXNlcnZlZFNlbGVjdGVkUHJvZ3JhbXMgdmFyaWFibGUuIE90aGVyd2lzZSwgc2V0IHRoZSBwcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zIHZhcmlhYmxlIHRvIGFuXG4gICAqIGVtcHR5IGFycmF5LlxuICAgKlxuICAgKiBJZiB0aGUgc2VsZWN0ZWRQcm9ncmFtIGFycmF5IGRvZXMgbm90IGhhdmUgYSBsZW5ndGgsIHRoZW4gc2V0IHRoZSBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIGFycmF5IHRvXG4gICAqIGFuIGVtcHR5IGFycmF5IGFuZCB0aGUgc2VsZWN0ZWRQcm9ncmFtc0lkIGFycmF5IHRvIGFuIGVtcHR5IGFycmF5LlxuICAgKi9cbiAgcHJlc2VydmVQcmV2aW91c0RldGFpbHMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdPy5sZW5ndGggfHwgdGhpcy5jdXJyZW50UHJvZ3JhbSkge1xuICAgICAgdGhpcy5wcmVzZXJ2ZVByaW1hcnlQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW0/Lmxlbmd0aFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdKVxuICAgICAgICA6IHt9O1xuICAgICAgdGhpcy5wcmVzZXJ2ZWRQcm9ncmFtc0lkID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/Lmxlbmd0aFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkKVxuICAgICAgICA6IFtdO1xuICAgICAgdGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsXG4gICAgICAgID8gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsKVxuICAgICAgICA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJvZ3JhbVN1YlRhYjogJ1BST0dSQU1TJyB8ICdPVEhFUl9QUk9HUkFNUycgPSAnUFJPR1JBTVMnO1xuICBzZXRQcm9ncmFtU3ViVGFiKHRhYjogJ1BST0dSQU1TJyB8ICdPVEhFUl9QUk9HUkFNUycpIHtcbiAgICB0aGlzLnByb2dyYW1TdWJUYWIgPSB0YWI7XG4gICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInByb2dyYW0tbGlzdGluZ1wiXG4gIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiXG4gICpuZ0lmPVwiIXNob3dDYXRlZ29yaWVzICYmICFoaWRlUHJvZ3JhbXNMaXN0XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUHJvZ3JhbTwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXJkLXJvd1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZpbHRlci1jYXJkIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTMgdngtdy0xMDBcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSAncmVndWxhdGlvbnMnXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRhYigncmVndWxhdGlvbnMnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cInZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICA+UkVHVUxBVElPTlM8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICAgIDxwICpuZ0lmPVwicHJvZ3JhbURhdGE/LlNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQgPiAwXCI+XG4gICAgICAgICAgICB7eyBwcm9ncmFtRGF0YT8uU2VsZWN0ZWRSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudCB9fVxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgcHJvZ3JhbURhdGE/LlNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQgPT0gMVxuICAgICAgICAgICAgICAgID8gXCJQcm9ncmFtXCJcbiAgICAgICAgICAgICAgICA6IFwiUHJvZ3JhbXNcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3Byb2dyYW1EYXRhPy5BbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudH19PC9zcGFuPiAtLT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3tcbiAgICAgICAgICBwcm9ncmFtVGFiRGF0YUNvdW50Py5hbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudFxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZpbHRlci1jYXJkIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTMgdngtdy0xMDBcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSAnc3RhbmRhcmRzJ1wiXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VUYWIoJ3N0YW5kYXJkcycpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5TVEFOREFSRFM8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICAgIDxwICpuZ0lmPVwicHJvZ3JhbURhdGE/LlNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50ID4gMFwiPlxuICAgICAgICAgICAge3sgcHJvZ3JhbURhdGE/LlNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50IH19XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBwcm9ncmFtRGF0YT8uU2VsZWN0ZWRTdGFuZGFyZFByb2dyYW1zQ291bnQgPT0gMVxuICAgICAgICAgICAgICAgID8gXCJQcm9ncmFtXCJcbiAgICAgICAgICAgICAgICA6IFwiUHJvZ3JhbXNcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3Byb2dyYW1EYXRhPy5BbGxTdGFuZGFyZFByb2dyYW1zQ291bnR9fTwvc3Bhbj4gLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7XG4gICAgICAgICAgcHJvZ3JhbVRhYkRhdGFDb3VudD8uYWxsU3RhbmRhcmRQcm9ncmFtc0NvdW50XG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItMyB2eC13LTEwMFwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09ICdpbnRlcm5hbF9jb250cm9scydcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVGFiKCdpbnRlcm5hbF9jb250cm9scycpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5JTlRFUk5BTCBDT05UUk9MUzwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPHAgKm5nSWY9XCJwcm9ncmFtRGF0YT8uU2VsZWN0ZWRJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudCA+IDBcIj5cbiAgICAgICAgICAgIHt7IHByb2dyYW1EYXRhPy5TZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50IH19XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBwcm9ncmFtRGF0YT8uU2VsZWN0ZWRJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudCA9PSAxXG4gICAgICAgICAgICAgICAgPyBcIlByb2dyYW1cIlxuICAgICAgICAgICAgICAgIDogXCJQcm9ncmFtc1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgc2VsZWN0ZWRcbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cHJvZ3JhbURhdGE/LkFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50fX08L3NwYW4+IC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e1xuICAgICAgICAgIHByb2dyYW1UYWJEYXRhQ291bnQ/LmFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50XG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItMyB2eC13LTEwMFwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09ICdvdGhlcnMnXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRhYignb3RoZXJzJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJ2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgPk9USEVSUzwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPHAgKm5nSWY9XCJwcm9ncmFtRGF0YT8uU2VsZWN0ZWRPdGhlcnNQcm9ncmFtc0NvdW50ID4gMFwiPlxuICAgICAgICAgICAge3sgcHJvZ3JhbURhdGE/LlNlbGVjdGVkT3RoZXJzUHJvZ3JhbXNDb3VudCB9fVxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgcHJvZ3JhbURhdGE/LlNlbGVjdGVkT3RoZXJzUHJvZ3JhbXNDb3VudCA9PSAxXG4gICAgICAgICAgICAgICAgPyBcIlByb2dyYW1cIlxuICAgICAgICAgICAgICAgIDogXCJQcm9ncmFtc1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgc2VsZWN0ZWRcbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cHJvZ3JhbURhdGE/LkFsbE90aGVyc1Byb2dyYW1zQ291bnR9fTwvc3Bhbj4gLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7XG4gICAgICAgICAgcHJvZ3JhbVRhYkRhdGFDb3VudD8uYWxsT3RoZXJzUHJvZ3JhbXNDb3VudFxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICNzZWFyY2hQcm9ncmFtXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9ncmFtc1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gbW9kZSA9PT0gJ0VESVQnIC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ0VESVQnICYmIHByb2dyYW1EYXRhPy5BbGxWaWV3T25seVByb2dyYW1Db3VudFwiXG4gICAgICBjbGFzcz1cInByb2dyYW0tbGlzdGluZy10YWIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2V0UHJvZ3JhbVN1YlRhYignUFJPR1JBTVMnKVwiXG4gICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInByb2dyYW1TdWJUYWIgPT09ICdQUk9HUkFNUydcIlxuICAgICAgPlxuICAgICAgICBQUk9HUkFNU1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiY291bnQgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbWwtMiB2eC1saC00XCJcbiAgICAgICAgICA+e3sgcHJvZ3JhbURhdGE/LkFsbFByb2dyYW1zQ291bnQgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJzZXRQcm9ncmFtU3ViVGFiKCdPVEhFUl9QUk9HUkFNUycpXCJcbiAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy02MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBiLTIgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicHJvZ3JhbVN1YlRhYiA9PT0gJ09USEVSX1BST0dSQU1TJ1wiXG4gICAgICA+XG4gICAgICAgIE9USEVSIFBST0dSQU1TXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJjb3VudCB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1tbC0yIHZ4LWxoLTRcIlxuICAgICAgICAgID57eyBwcm9ncmFtRGF0YT8uQWxsVmlld09ubHlQcm9ncmFtQ291bnQgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1wYWdpbmF0aW9uXG4gICAgICAqbmdJZj1cInByb2dyYW1EYXRhLnRvdGFsUGFnZXMgPiAxXCJcbiAgICAgIFtzdGFydF09XCJwcm9ncmFtRGF0YS5mcm9tXCJcbiAgICAgIFtlbmRdPVwicHJvZ3JhbURhdGEudG9cIlxuICAgICAgW3RvdGFsXT1cInByb2dyYW1EYXRhLnRvdGFsUmVjb3Jkc1wiXG4gICAgICBbcGFnZUNvdW50XT1cInByb2dyYW1EYXRhLnRvdGFsUGFnZXNcIlxuICAgICAgW2N1cnJlbnRQYWdlXT1cInByb2dyYW1EYXRhLmN1cnJlbnRQYWdlXCJcbiAgICAgIChzZWxlY3RlZFBhZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQsICdwcm9ncmFtJylcIlxuICAgID48L2FwcC1wYWdpbmF0aW9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLXBhcnQgdngtbWItNFwiXG4gICAgICBbY2xhc3Mud2l0aC1jYXRlZ29yeS1saXN0XT1cIiFzaG93Q2F0ZWdvcmllcyAmJiAhaGlkZVByb2dyYW1zTGlzdFwiXG4gICAgICBbY2xhc3Mud2l0aC1wYWdpbmF0aW9uXT1cInByb2dyYW1EYXRhLnRvdGFsUGFnZXMgPiAxXCJcbiAgICA+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJwcm9ncmFtRGF0YT8uZGF0YT8ubGVuZ3RoID09PSAwICYmICFsb2FkZXJcIlxuICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIERhdGEgRm91bmQnXCJcbiAgICAgID48L2FwcC1uby1kYXRhPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWl0ZW1cIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dDYXRlZ29yaWVzICYmIGN1cnJlbnRQcm9ncmFtPy5faWQgPT0gcHJvZ3JhbT8uX2lkXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHByb2dyYW0gb2YgcHJvZ3JhbURhdGEuZGF0YTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtjbGFzcy5maW5hbC1zZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgICA8IS0tIGFmdGVyIGNhdGVnb3J5IHdhcyBzZWxlY3QgJiB1c2VyIG1vdmUgdG8gYmFjayBhbmQgZWRpdCB0aGVuIGZpbmFsLXNlbGVjdCBjbGFzcyB3YXMgc2hvdyAtLT5cbiAgICAgICAgPCEtLSBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkICYmIChtb2RlID09PSAnRURJVCcgfHwgb3BlbmVkRnJvbSA9PT0gJ1BST0dSQU1fV09SS1JPT00nKSAmJiBwcm9ncmFtU3ViVGFiICE9PSAnT1RIRVJfUFJPR1JBTVMnXCIgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRhYmxlLXJvdyBtYWluLWxpc3RcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRQcm9ncmFtc0lkPy5pbmNsdWRlcyhwcm9ncmFtPy5faWQpXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICBmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpXG4gICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgOiBjdXJyZW50UHJvZ3JhbT8uX2lkID09PSBwcm9ncmFtPy5faWQgJiZcbiAgICAgICAgICAgICAgICAobW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJykgJiZcbiAgICAgICAgICAgICAgICBwcm9ncmFtU3ViVGFiICE9PSAnT1RIRVJfUFJPR1JBTVMnXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic3Itbm9cIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJpICsgcHJvZ3JhbURhdGEuZnJvbVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBpICsgcHJvZ3JhbURhdGEuZnJvbSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFtkaXNhYmxlZF09XCJjdXJyZW50UHJvZ3JhbT8uX2lkID09PSBwcm9ncmFtPy5faWQgJiYgKG1vZGUgPT09ICdFRElUJyB8fCBvcGVuZWRGcm9tID09PSAnUFJPR1JBTV9XT1JLUk9PTScpXCIgLS0+XG4gICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICpuZ0lmPVwicHJvZ3JhbVN1YlRhYiAhPT0gJ09USEVSX1BST0dSQU1TJ1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpXG4gICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICA6IGN1cnJlbnRQcm9ncmFtPy5faWQgPT09IHByb2dyYW0/Ll9pZCAmJlxuICAgICAgICAgICAgICAgICAgICAobW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJylcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwic2VsZWN0ZWRQcm9ncmFtc0lkPy5pbmNsdWRlcyhwcm9ncmFtPy5faWQpXCJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0UHJvZ3JhbSgkZXZlbnQsIHByb2dyYW0pXCJcbiAgICAgICAgICAgID48L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgIDwhLS0gPGFwcC1jcy1yYWRpbyBbbmFtZV09XCIndCdcIiBbY2hlY2tlZF09XCJjdXJyZW50UHJvZ3JhbT8uX2lkID09IHByb2dyYW0/Ll9pZFwiIChjaGVja2VkRXZlbnQpPVwic2VsZWN0UHJvZ3JhbSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQscHJvZ3JhbSlcIj48L2FwcC1jcy1yYWRpbz4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBuYW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS1pbm5lclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS13aXRoLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwcm9ncmFtPy5pdGVtX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcHJvZ3JhbT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gcHJpbWFyeS1wcm9ncmFtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgIShtb2RlID09PSAnRURJVCcgfHwgb3BlbmVkRnJvbSA9PT0gJ1BST0dSQU1fV09SS1JPT00nKSB8fFxuICAgICAgICAgICAgICAgICAgY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJjdXJyZW50UHJvZ3JhbT8uX2lkID09PSBwcm9ncmFtPy5faWRcIlxuICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNldFByaW1hcnlQcm9ncmFtKCRldmVudCwgcHJvZ3JhbSlcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkXG4gICAgICAgICAgICAgICAgICAgID8gXCJQUklNQVJZIFBST0dSQU1cIlxuICAgICAgICAgICAgICAgICAgICA6IFwiU0VUIEFTIFBSSU1BUlkgUFJPR1JBTVwiXG4gICAgICAgICAgICAgICAgfX08L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGFjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFycm93XCIgKm5nSWY9XCJwcm9ncmFtPy5jaGlsZF9pZD8ubGVuZ3RoXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiEoc2hvd0NhdGVnb3JpZXMgJiYgY3VycmVudFByb2dyYW0/Ll9pZCA9PSBwcm9ncmFtPy5faWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByb2dyYW0oJGV2ZW50LHByb2dyYW0pXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5NzA7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic2hvd0NhdGVnb3JpZXMgJiYgY3VycmVudFByb2dyYW0/Ll9pZCA9PSBwcm9ncmFtPy5faWRcIiBjbGFzcz1cImljb25zXCI+JiN4ZTllODs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgICpuZ0lmPVwiZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cIlxuICAgICAgICBzZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5sZW5ndGggPyBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIDogW11cbiAgICAgIFwiXG4gICAgICBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ25hbWUnXCJcbiAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1Byb2dyYW0gc2VsZWN0ZWQnXCJcbiAgICAgIFtwbHVyYWxUZXh0XT1cIidQcm9ncmFtcyBzZWxlY3RlZCdcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwib3BlbkNhdGVnb3JpZXMoKVwiXG4gICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlRXZlbnQoJGV2ZW50KVwiXG4gICAgICBbaXNEaXNhYmxlZF09XCJcbiAgICAgICAgKGN1cnJlbnRQcm9ncmFtPy5jYXRlZ29yeV9pZCA/IFtjdXJyZW50UHJvZ3JhbV0gOiBbXSk/Lmxlbmd0aFxuICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICA6IHRydWVcbiAgICAgIFwiXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlKClcIlxuICAgICAgW2VsZW1lbnRJZF09XCInY2F0ZWdvcnlfaWQnXCJcbiAgICA+XG4gICAgPC9hcHAtZmxvYXRpbmctYmFyPlxuXG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgICpuZ0lmPVwiIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIlxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJcbiAgICAgICAgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8ubGVuZ3RoID8gc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA6IFtdXG4gICAgICBcIlxuICAgICAgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIiduYW1lJ1wiXG4gICAgICBbc2luZ3VsYXJUZXh0XT1cIidQcm9ncmFtIHNlbGVjdGVkJ1wiXG4gICAgICBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbXMgc2VsZWN0ZWQnXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cIm9wZW5DYXRlZ29yaWVzKClcIlxuICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50KCRldmVudClcIlxuICAgICAgW2lzRGlzYWJsZWRdPVwiXG4gICAgICAgIChjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQgPyBbY3VycmVudFByb2dyYW1dIDogW10pPy5sZW5ndGhcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiB0cnVlXG4gICAgICBcIlxuICAgICAgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCJcbiAgICAgIFtkZWZhdWx0U2VsZWN0ZWRdPVwiY3VycmVudFByb2dyYW1cIlxuICAgICAgW25vblJlbW92YWJsZVVzZXJzTGlzdF09XCJcbiAgICAgICAgbW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJ1xuICAgICAgICAgID8gdmlld09ubHlQcm9ncmFtc0NhdGVnb3J5SWRcbiAgICAgICAgICA6IFtjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWRdXG4gICAgICBcIlxuICAgICAgW2VsZW1lbnRJZF09XCInY2F0ZWdvcnlfaWQnXCJcbiAgICA+XG4gICAgPC9hcHAtZmxvYXRpbmctYmFyPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctY29uZmlybWF0aW9uXCJcbiAgICAgICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1hdGlvbk1lc3NhZ2VcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWJsb2NrXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MzA7PC9pPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICAgIE9uY2UgeW91IHNlbGVjdCB0aGlzIFByb2dyYW0sIGFsbCBkZWZhdWx0IHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhpc1xuICAgICAgICAgIFByb2dyYW0gd2lsbCBhbHNvIGJlIHVwZGF0ZWQuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJvdHRvbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vLWJ0blwiIChjbGljayk9XCJzYXZlQ2hhbmdlcyhmYWxzZSlcIj5OTzwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ5ZXMtYnRuXCIgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKHRydWUpXCI+WUVTPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctY29uZmlybWF0aW9uXCJcbiAgICAgICpuZ0lmPVwiaXNQcmltYXJ5Q29uZmlybWF0aW9uICYmICFpc1ByaW1hcnlVbmNoZWNrZWRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWJsb2NrXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MzA7PC9pPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiIFtpbm5lckhUTUxdPVwicHJpbWFyeUNvbmZpcm1hdGlvbk1lc3NhZ2VcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi1ib3R0b21cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5BcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gcHJvY2VlZD88L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuby1idG5cIiAoY2xpY2spPVwidXBkYXRlUHJpbWFyeVByb2dyYW0oZmFsc2UpXCI+XG4gICAgICAgICAgICBOT1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ5ZXMtYnRuXCIgKGNsaWNrKT1cInVwZGF0ZVByaW1hcnlQcm9ncmFtKHRydWUpXCI+XG4gICAgICAgICAgICBZRVNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWNvbmZpcm1hdGlvbiBlcnJvci1jb25maXJtYXRpb25cIlxuICAgICAgKm5nSWY9XCJpc1ByaW1hcnlVbmNoZWNrZWRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgdngtcHItNFwiPlxuICAgICAgICAgICAgWW91IGNhbm5vdCBkZXNlbGVjdCB0aGlzIFByb2dyYW0gc2luY2UgdGhpcyBpcyB0aGVcbiAgICAgICAgICAgIDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPiBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS4gVG8gcHJvY2VlZCwgZmlyc3RcbiAgICAgICAgICAgIHNlbGVjdCBhbm90aGVyIFByb2dyYW0gYXMgdGhlIDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPi5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJvay1idG5cIiAoY2xpY2spPVwidXBkYXRlUHJpbWFyeVByb2dyYW0oZmFsc2UpXCI+T0s8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPCEtLSA8YXBwLWZsb2F0aW5nLWJhciBbc2VsZWN0ZWREYXRhXT1cIihjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQpP1tjdXJyZW50UHJvZ3JhbV06W11cIiBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ25hbWUnXCJcbiAgICAgICAgW3Npbmd1bGFyVGV4dF09XCInUHJvZ3JhbSBzZWxlY3RlZCdcIiBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbXMgc2VsZWN0ZWQnXCIgKGNsb3NlRXZlbnQpPVwib3BlbkNhdGVnb3JpZXMoKVwiXG4gICAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVFdmVudCgkZXZlbnQpXCIgW2lzRGlzYWJsZWRdPVwiKChjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQpP1tjdXJyZW50UHJvZ3JhbV06W10pPy5sZW5ndGggPyBmYWxzZSA6dHJ1ZSBcIiAoY2xvc2VMaXN0KT1cImNsb3NlKClcIj5cbiAgICA8L2FwcC1mbG9hdGluZy1iYXI+IC0tPlxuXG4gIDwhLS0gKChjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQpP1tjdXJyZW50UHJvZ3JhbV06W10pPy5sZW5ndGggPyBmYWxzZSA6dHJ1ZSAgLS0+XG5cbiAgPGFwcC1sb2FkZXIgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXI+XG48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmdcIlxuICBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIlxuICAqbmdJZj1cInNob3dDYXRlZ29yaWVzIHx8IGhpZGVQcm9ncmFtc0xpc3RcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJiYWNrLWJ0biB2eC1mcy0xNiB2eC1wLTAgdngtbXItMlwiXG4gICAgICAgIChjbGljayk9XCJiYWNrVG9Qcm9ncmFtcygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWQ7PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiY3VycmVudFByb2dyYW0/Lm5hbWVcIj4ge3tjdXJyZW50UHJvZ3JhbT8ubmFtZX19ID4gPC9zcGFuPiAtLT5cbiAgICAgIFByb2dyYW0gPiBTZWxlY3QgUHJvZ3JhbSBDYXRlZ29yaWVzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAjc2VhcmNoQ2F0ZWdvcnlcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImNhdGVnb3J5U2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggQ2F0ZWdvcmllc1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCJjYXRlZ29yeURhdGEudG90YWxQYWdlcyA+IDFcIlxuICAgICAgY2xhc3M9XCJjYXRlZ29yeS1wYWdpbmF0aW9uXCJcbiAgICAgIFtzdGFydF09XCJjYXRlZ29yeURhdGEuZnJvbVwiXG4gICAgICBbZW5kXT1cImNhdGVnb3J5RGF0YS50b1wiXG4gICAgICBbdG90YWxdPVwiY2F0ZWdvcnlEYXRhLnRvdGFsUmVjb3Jkc1wiXG4gICAgICBbcGFnZUNvdW50XT1cImNhdGVnb3J5RGF0YS50b3RhbFBhZ2VzXCJcbiAgICAgIFtjdXJyZW50UGFnZV09XCJjYXRlZ29yeURhdGEuY3VycmVudFBhZ2VcIlxuICAgICAgKHNlbGVjdGVkUGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudCwgJ2NhdGVnb3J5JylcIlxuICAgID48L2FwcC1wYWdpbmF0aW9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLXBhcnQgdngtbWItNFwiXG4gICAgICBbY2xhc3Mud2l0aC1jYXRlZ29yeS1wYWdpbmF0aW9uXT1cImNhdGVnb3J5RGF0YS50b3RhbFBhZ2VzID4gMVwiXG4gICAgPlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICpuZ0lmPVwiY2F0ZWdvcnlEYXRhPy5kYXRhPy5sZW5ndGggPT09IDAgJiYgIWxvYWRlclwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gRGF0YSBGb3VuZCdcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVyICYmIGNhdGVnb3J5RGF0YS5kYXRhPy5sZW5ndGhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZhbHNlXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1hcmVhXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICFsb2FkZXIgJiZcbiAgICAgICAgICAgICAgKGN1cnJlbnRQcm9ncmFtPy5uYW1lXG4gICAgICAgICAgICAgICAgPyBjYXRlZ29yeURhdGEuZGF0YT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiBwcm9ncmFtRGF0YT8uZGF0YT8ubGVuZ3RoKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tDYXRlZ29yaWVzU2VsZWN0aW9uKCkgPT0gJ2NoZWNrZWQnXCJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEFsbENhdGVnb3JpZXMoZmFsc2UpXCJcbiAgICAgICAgICAgICAgPkRlc2VsZWN0IEFsbDwvYXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCJjaGVja0NhdGVnb3JpZXNTZWxlY3Rpb24oKSA9PSAnaW5kZXRlcm1pbmF0ZSdcIlxuICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0QWxsQ2F0ZWdvcmllcyhmYWxzZSlcIlxuICAgICAgICAgICAgICA+RGVzZWxlY3QgQWxsPC9hcHAtY3MtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxuICAgICAgICAgICAgICAqbmdJZj1cImNoZWNrQ2F0ZWdvcmllc1NlbGVjdGlvbigpID09ICd1bmNoZWNrZWQnXCJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RBbGxDYXRlZ29yaWVzKHRydWUpXCJcbiAgICAgICAgICAgICAgPlNlbGVjdCBBbGw8L2FwcC1jcy1jaGVja2JveFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHNlcmlhbFwiPiM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY2F0ZWdvcnktbmFtZVwiPkNBVEVHT1JJRVM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY2F0ZWdvcnktd2l0aGluXCI+V0lUSElOPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctaXRlbVwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzdWJMaXN0XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcnlEYXRhLmRhdGE7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRJZHMuaW5jbHVkZXMoY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3cgbWFpbi1saXN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHNlcmlhbFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzci1ub1wiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIGNhdGVnb3J5RGF0YT8uZnJvbVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBpICsgY2F0ZWdvcnlEYXRhPy5mcm9tIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwic2VsZWN0ZWRJZHMuaW5jbHVkZXMoY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpXCJcbiAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RDYXRlZ29yeSgkZXZlbnQsIGNhdGVnb3J5KVwiXG4gICAgICAgICAgICAgID48L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjYXRlZ29yeS1uYW1lXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtd2l0aC1jb3VudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgY2F0ZWdvcnk/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIndpdGhpbi1wYXJ0XCIgKm5nSWY9XCJjYXRlZ29yeT8ucGFyZW50X2NhdGVnb3J5X25hbWU/Lmxlbmd0aD4wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndpdGhpbi1ib3hcIj5XaXRoaW48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCIgW2FwcFRvb2x0aXBdPVwiJ1NvdXRoIEFmcmljYSA+IEFtZXJpY2EgPiBJbmRpYSdcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHBhcmVudCBvZiBjYXRlZ29yeT8ucGFyZW50X2NhdGVnb3J5X25hbWU7bGV0IGo9aW5kZXhcIj57eyhqIT0oY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5sZW5ndGgtMSkpP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQrJyA8ICc6cGFyZW50fX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIGNhdGVnb3J5LXdpdGhpblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudCBvZiBjYXRlZ29yeT8ucGFyZW50X2NhdGVnb3J5X25hbWU7XG4gICAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2l0aGluLW5hbWVcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lXG4gICAgICAgICAgICAgICAgICAgID8uc2xpY2UoKVxuICAgICAgICAgICAgICAgICAgICA/LnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICA/LmpvaW4oJyA+ICcpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHBhcmVudCB9fVxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxhc3RcIj4gPiZuYnNwOyA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNhdGVnb3J5Py5wYXJlbnRfY2F0ZWdvcnlfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkXG4gICAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwcmltYXJ5LWxhYmVsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFBSSU1BUllcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxhcHAtZmxvYXRpbmctYmFyXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cImNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXNcIlxuICAgICAgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIiduYW1lJ1wiXG4gICAgICBbc2luZ3VsYXJUZXh0XT1cIidQcm9ncmFtIENhdGVnb3J5IHNlbGVjdGVkJ1wiXG4gICAgICBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbSBDYXRlZ29yaWVzIHNlbGVjdGVkJ1wiXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKClcIlxuICAgICAgKGRlbGV0ZUV2ZW50KT1cInJlbW92ZUNhdGVnb3JpZXMoJGV2ZW50KVwiXG4gICAgICAoY2xvc2VMaXN0KT1cImJhY2tUb1Byb2dyYW1zKClcIlxuICAgID5cbiAgICA8L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCIhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1jb25maXJtYXRpb25cIlxuICAgICAgKm5nSWY9XCJkaXNwbGF5Q29uZmlybWF0aW9uTWVzc2FnZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi10b3BcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgT25jZSB5b3Ugc2VsZWN0IHRoaXMgUHJvZ3JhbSwgYWxsIGRlZmF1bHQgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzXG4gICAgICAgICAgUHJvZ3JhbSB3aWxsIGFsc28gYmUgdXBkYXRlZC5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tYm90dG9tXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+QXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHByb2NlZWQ/PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKGZhbHNlKVwiPk5PPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInllcy1idG5cIiAoY2xpY2spPVwic2F2ZUNoYW5nZXModHJ1ZSlcIj5ZRVM8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxhcHAtbG9hZGVyICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyPlxuPC9kaXY+XG4iXX0=
741
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1saXN0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0aW5nL3Byb2dyYW0tbGlzdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3Byb2dyYW0tbGlzdGluZy9wcm9ncmFtLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzFELE1BQU0sT0FBTyx1QkFBdUI7SUFjbEMsSUFBaUMscUJBQXFCLENBQUMsUUFBYTtRQUNsRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFhRCxJQUE0QixnQkFBZ0IsQ0FBQyxPQUFZO1FBQ3ZELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxD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WUFBWTtzQkFBcEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTTJCLHFCQUFxQjtzQkFBckQsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBSWxCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDc0IsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNHLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQU1DLGdCQUFnQjtzQkFBM0MsS0FBSzt1QkFBQyxlQUFlO2dCQW1GWixtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvcmVzcG9uc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBjYXRlZ29yeUxpc3QsIHByb2dyYW1MaXN0IH0gZnJvbSAnLi9wcm9ncmFtLWxpc3QtbW9kZWwnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZ3JhbS1saXN0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyYW0tbGlzdGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2dyYW0tbGlzdGluZy5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9ncmFtTGlzdGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgYW5pbWF0aW9uID0gZmFsc2U7XG4gIHN1Ykxpc3QgPSBmYWxzZTtcbiAgbG9hZGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHByb2dyYW1zTGlzdDogYW55O1xuICAvLyBASW5wdXQoKSBhbGxQcm9ncmFtczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgc2VsZWN0ZWRQcm9ncmFtITogYW55O1xuICBASW5wdXQoKSBvcGVuZWRGcm9tOiBzdHJpbmcgPSAnJztcbiAgLy8gQElucHV0KCkgc2VsZWN0ZWRDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xuXG4gIHZpZXdPbmx5UHJvZ3JhbXNDYXRlZ29yeUlkOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZENhdGVnb3JpZXM6IGFueVtdID0gW107XG4gIHRlbXBTZWxlY3RlZENhdGVnb3JpZXM6IGFueSA9IFtdO1xuICBASW5wdXQoJ3NlbGVjdGVkQ2F0ZWdvcmllcycpIHNldCBnZXRTZWxlY3RlZENhdGVnb3JpZXMoY2F0ZWdvcnk6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzID0gY2F0ZWdvcnk7XG4gICAgdGhpcy50ZW1wU2VsZWN0ZWRDYXRlZ29yaWVzID0gSlNPTi5zdHJpbmdpZnkoY2F0ZWdvcnkpO1xuICB9XG4gIEBJbnB1dCgpIHJlc3BvbnNpYmlsaXR5SWQgPSAnJztcbiAgQElucHV0KCkgZmVhdHVyZSE6IGFueTtcblxuICBASW5wdXQoKSBoaWRlUHJvZ3JhbXNMaXN0ITogYW55O1xuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnQ1JFQVRFJztcbiAgQFZpZXdDaGlsZCgnc2VhcmNoUHJvZ3JhbScpIHNlYXJjaFByb2dyYW0hOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaENhdGVnb3J5Jykgc2VhcmNoQ2F0ZWdvcnkhOiBhbnk7XG5cbiAgcHJlc2VydmVkU2VsZWN0ZWRQcm9ncmFtczogYW55O1xuICBwcmVzZXJ2ZWRQcm9ncmFtc0lkOiBhbnk7XG4gIHByZXNlcnZlUHJpbWFyeVByb2dyYW06IGFueTtcblxuICBASW5wdXQoJ2xpbmtlZFByb2dyYW0nKSBzZXQgZ2V0TGlua2VkUHJvZ3JhbShwcm9ncmFtOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZCA9IFtdO1xuICAgIHRoaXMudmlld09ubHlQcm9ncmFtc0NhdGVnb3J5SWQgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgPSBwcm9ncmFtO1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbC5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQucHVzaChlbGU/Ll9pZCk7XG4gICAgICB0aGlzLmdldFNlbGVjdGVkUHJvZ3JhbUNvdW50KHRydWUsIGVsZT8ucHJvZ3JhbVR5cGUpO1xuICAgICAgZWxlPy5pc1ZpZXdPbmx5UHJvZ3JhbVxuICAgICAgICA/IHRoaXMudmlld09ubHlQcm9ncmFtc0NhdGVnb3J5SWQ/LnB1c2goZWxlPy5jYXRlZ29yeV9pZClcbiAgICAgICAgOiBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgcHJldmlvdXNTZWxlY3RlZFZhbHVlczogYW55ID0ge1xuICAgIHByb2dyYW06IHt9LFxuICAgIGNhdGVnb3JpZXM6IFtdLFxuICB9O1xuICBwcm9ncmFtRGF0YTogcHJvZ3JhbUxpc3QgPSB7XG4gICAgZGF0YTogW10sXG4gICAgZnJvbTogMCxcbiAgICB0bzogMCxcbiAgICB0b3RhbFBhZ2VzOiAwLFxuICAgIHRvdGFsUmVjb3JkczogMCxcbiAgICBjdXJyZW50UGFnZTogMSxcbiAgICBBbGxJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudDogMCxcbiAgICBBbGxPdGhlcnNQcm9ncmFtc0NvdW50OiAwLFxuICAgIEFsbFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50OiAwLFxuICAgIEFsbFN0YW5kYXJkUHJvZ3JhbXNDb3VudDogMCxcbiAgICBTZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50OiAwLFxuICAgIFNlbGVjdGVkT3RoZXJzUHJvZ3JhbXNDb3VudDogMCxcbiAgICBTZWxlY3RlZFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50OiAwLFxuICAgIFNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50OiAwLFxuICAgIEFsbFByb2dyYW1zQ291bnQ6IDAsXG4gICAgQWxsVmlld09ubHlQcm9ncmFtQ291bnQ6IDAsXG4gIH07XG5cbiAgcHJvZ3JhbVRhYkRhdGFDb3VudDogYW55ID0ge1xuICAgIGFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50OiAwLFxuICAgIGFsbE90aGVyc1Byb2dyYW1zQ291bnQ6IDAsXG4gICAgYWxsUmVndWxhdGlvblByb2dyYW1zQ291bnQ6IDAsXG4gICAgYWxsU3RhbmRhcmRQcm9ncmFtc0NvdW50OiAwLFxuICB9O1xuXG4gIGNhdGVnb3J5RGF0YTogY2F0ZWdvcnlMaXN0ID0ge1xuICAgIGRhdGE6IFtdLFxuICAgIGZyb206IDAsXG4gICAgdG86IDAsXG4gICAgdG90YWxQYWdlczogMCxcbiAgICB0b3RhbFJlY29yZHM6IDAsXG4gICAgY3VycmVudFBhZ2U6IDEsXG4gICAgc2VsZWN0ZWRDYXRlZ29yaWVzOiBbXSxcbiAgfTtcblxuICBzaG93Q2F0ZWdvcmllcyA9IGZhbHNlO1xuICBjdXJyZW50UHJvZ3JhbSE6IGFueTtcbiAgc2VhcmNoU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgY2F0ZWdvcnlTZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xuXG4gIGFjdGl2ZVRhYjogJ3JlZ3VsYXRpb25zJyB8ICdzdGFuZGFyZHMnIHwgJ2ludGVybmFsX2NvbnRyb2xzJyB8ICdvdGhlcnMnID1cbiAgICAncmVndWxhdGlvbnMnO1xuICBzZWxlY3RlZElkczogYW55W10gPSBbXTtcbiAgY2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuICBibG9ja1dpZHRoOiBhbnk7XG5cbiAgcHJvZ3JhbVR5cGVPYmplY3QgPSB7XG4gICAgcmVndWxhdGlvbnM6IDEsXG4gICAgc3RhbmRhcmRzOiAyLFxuICAgIGludGVybmFsX2NvbnRyb2xzOiAzLFxuICAgIG90aGVyczogMCxcbiAgfTtcblxuICBkaXNwbGF5Q29uZmlybWF0aW9uTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0ZW1wUHJpbWFyeVByb2dyYW06IGFueSA9IHt9O1xuICBwcmltYXJ5Q29uZmlybWF0aW9uTWVzc2FnZTogc3RyaW5nID0gYE9uY2UgY29uZmlybWVkLCB0aGUgPGVtPlByaW1hcnkgUHJvZ3JhbTwvZW0+IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgY2hhbmdlZC4gSGVuY2UsIGFsbCB0aGUgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBuZXcgPGVtPlByaW1hcnkgUHJvZ3JhbTwvZW0+IHdpbGwgbm93IGFwcGx5IHRvIHRoaXMgcmVzcG9uc2liaWxpdHkuYDtcbiAgaXNQcmltYXJ5Q29uZmlybWF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIGlzVW5jaGVja2VkUHJvZ3JhbTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1ByaW1hcnlVbmNoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbDogYW55ID0gW107XG4gIHNlbGVjdGVkUHJvZ3JhbXNJZDogYW55ID0gW107XG4gIHByb2dyYW1Db3VudExvYWRlciA9IGZhbHNlO1xuICBkZXByZWNhdGVQcmltYXJ5UHJvZ3JhbUZsYWcgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2F2ZVNlbGVjdGVkUHJvZ3JhbSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGFsbENhdGVnb3JpZXM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kZXByZWNhdGVQcmltYXJ5UHJvZ3JhbUZsYWcgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnXG4gICAgKTtcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmIHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1bMF07XG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcgfHwgdGhpcy5vcGVuZWRGcm9tID09PSAnUFJPR1JBTV9XT1JLUk9PTScpIHtcbiAgICAgICAgdGhpcy52aWV3T25seVByb2dyYW1zQ2F0ZWdvcnlJZD8ucHVzaCh0aGlzLmN1cnJlbnRQcm9ncmFtPy5jYXRlZ29yeV9pZCk7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHRoaXMuY3VycmVudFByb2dyYW0/LnByb2dyYW1UeXBlKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9ICdvdGhlcnMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAncmVndWxhdGlvbnMnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSAnc3RhbmRhcmRzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gJ2ludGVybmFsX2NvbnRyb2xzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9ICdyZWd1bGF0aW9ucyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmdldFNlbGVjdGVkUHJvZ3JhbUNvdW50KCk7XG4gICAgICAvLyBpZiAodGhpcy5zZWxlY3RlZENhdGVnb3JpZXM/Lmxlbmd0aCAmJiB0aGlzLmN1cnJlbnRQcm9ncmFtKSB7XG4gICAgICB0aGlzLnBvcHVsYXRlQ2F0ZWdvcmllcygpO1xuICAgICAgLy8gfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhpZGVQcm9ncmFtc0xpc3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5wdXNoKHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdPy5faWQpO1xuICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xuICAgIH1cbiAgICB0aGlzLmdldFByb2dyYW1zQ291bnQoKTtcblxuICAgIHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcyA9IHtcbiAgICAgIHByb2dyYW1zOiB0aGlzLmN1cnJlbnRQcm9ncmFtLFxuICAgICAgY2F0ZWdvcmllczogdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoXG4gICAgICAgID8gWy4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZENhdGVnb3JpZXMpXVxuICAgICAgICA6IFtdLFxuICAgIH07XG5cbiAgICB0aGlzLnByZXNlcnZlUHJldmlvdXNEZXRhaWxzKCk7XG4gIH1cbiAgcG9wdWxhdGVDYXRlZ29yaWVzKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAvLyBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkJywgdGhpcy5jdXJyZW50UHJvZ3JhbS5faWQpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2lzUGFnaW5hdGlvbicsIGZhbHNlKTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUlkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdyZXBvcnRJZCcsIHRoaXMucmVzcG9uc2liaWxpdHlJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgIC5nZXRQcm9ncmFtc0xpc3QocGFyYW1zLCB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBhbGxDYXRlZ29yaWVzID0gcmVzLmRhdGE7XG5cbiAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSBhbGxDYXRlZ29yaWVzLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMuaW5jbHVkZXMoZWxlLmNhdGVnb3J5X2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKGVsZW1lbnQuY2F0ZWdvcnlfaWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hTdHJpbmcgIT0gZXZlbnQpIHtcbiAgICAgIHRoaXMucHJvZ3JhbURhdGEuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSBldmVudDtcbiAgICAgIHRoaXMuZ2V0UHJvZ3JhbXNMaXN0KHsgc2VhcmNoOiB0cnVlIH0pO1xuICAgICAgdGhpcy5nZXRQcm9ncmFtc0NvdW50KHsgc2VhcmNoOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuICBjYXRlZ29yeVNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlTZWFyY2hTdHJpbmcgIT0gZXZlbnQpIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgIHRoaXMuY2F0ZWdvcnlTZWFyY2hTdHJpbmcgPSBldmVudDtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoeyBzZWFyY2g6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UHJvZ3JhbShldmVudDogYW55LCBwcm9ncmFtOiBhbnkpIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXMoZXZlbnQsIHByb2dyYW0pO1xuICAgIC8vIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoZXZlbnQsIHByb2dyYW0/LnByb2dyYW1UeXBlKTtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGlmICghdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VycmVudFByb2dyYW0gPz8ge30pLmxlbmd0aFxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogKHRoaXMuY3VycmVudFByb2dyYW0gPSBwcm9ncmFtKTtcbiAgICAgIH1cbiAgICAgIC8vIHRoaXMuY3VycmVudFByb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgdGhpcy5jYXRlZ29yeUxpc3QgPSBbXTtcbiAgICAgIC8vIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGV2ZW50IGlzIHRydWUsIHRoZW4gcHVzaCB0aGUgcHJvZ3JhbSB0byB0aGUgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCBhcnJheS4gSWYgdGhlIGV2ZW50IGlzXG4gICAqIGZhbHNlLCB0aGVuIHJlbW92ZSB0aGUgcHJvZ3JhbSBmcm9tIHRoZSBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIGFycmF5LlxuICAgKiBAcGFyYW0ge2FueX0gZXZlbnQgLSBib29sZWFuXG4gICAqIEBwYXJhbSB7YW55fSBwcm9ncmFtIC0gYW55ID0ge1xuICAgKi9cbiAgdXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyhldmVudDogYW55LCBwcm9ncmFtOiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGluZGV4T2ZQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5maW5kSW5kZXgoXG4gICAgICAgIChlbDogYW55KSA9PiBlbD8uY2F0ZWdvcnlfaWQgPT09IHByb2dyYW0/LmNhdGVnb3J5X2lkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4T2ZQcm9ncmFtID09PSAtMSAmJiBPYmplY3Qua2V5cyhwcm9ncmFtKT8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5wdXNoKHByb2dyYW0/Ll9pZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8ucHVzaChwcm9ncmFtKTtcbiAgICAgICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1Db3VudChldmVudCwgcHJvZ3JhbT8ucHJvZ3JhbVR5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmRleE9mUHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uZmluZEluZGV4KFxuICAgICAgICAoZWw6IGFueSkgPT4gZWw/LmNhdGVnb3J5X2lkID09PSBwcm9ncmFtPy5jYXRlZ29yeV9pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleE9mUHJvZ3JhbSAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5zcGxpY2UoaW5kZXhPZlByb2dyYW0sIDEpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5kZXhPZklkID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LmZpbmRJbmRleChcbiAgICAgICAgKGVsOiBhbnkpID0+IGVsID09PSBwcm9ncmFtPy5faWRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXhPZklkICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNJZD8uc3BsaWNlKGluZGV4T2ZJZCwgMSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gJiZcbiAgICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQgPT09IHByb2dyYW0/LmNhdGVnb3J5X2lkXG4gICAgICApIHtcbiAgICAgICAgLy8gdGhpcy5wcmltYXJ5Q29uZmlybWF0aW9uTWVzc2FnZSA9ICdZb3UgY2Fubm90IGRlc2VsZWN0IHRoaXMgUHJvZ3JhbSBzaW5jZSB0aGlzIGlzIHRoZSA8ZW0+UHJpbWFyeSBQcm9ncmFtPC9lbT4gZm9yIHRoaXMgcmVzcG9uc2liaWxpdHkuIFRvIHByb2NlZWQsIGZpcnN0IHNlbGVjdCBhbm90aGVyIFByb2dyYW0gYXMgdGhlIDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPi4nO1xuICAgICAgICB0aGlzLmlzUHJpbWFyeUNvbmZpcm1hdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNQcmltYXJ5VW5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50ZW1wUHJpbWFyeVByb2dyYW0gPSBKU09OLnN0cmluZ2lmeShwcm9ncmFtKTtcbiAgICAgICAgLy8gdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gfVxuICAgICAgdGhpcy5nZXRTZWxlY3RlZFByb2dyYW1Db3VudChldmVudCwgcHJvZ3JhbT8ucHJvZ3JhbVR5cGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5sZW5ndGggJiYgIXRoaXMuY3VycmVudFByb2dyYW0/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbFswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgY3VycmVudFByb2dyYW0gaXMgc2V0LCB0aGVuIHNldCB0aGUgY3VycmVudFByb2dyYW0gdG8gdGhlIHByb2dyYW0gcGFzc2VkIGluLCBhbmQgc2V0IHRoZVxuICAgKiB0ZW1wUHJpbWFyeVByb2dyYW0gdG8gdGhlIGN1cnJlbnRQcm9ncmFtLlxuICAgKiBJZiB0aGUgY3VycmVudFByb2dyYW0gaXMgbm90IHNldCwgdGhlbiBzZXQgdGhlIGN1cnJlbnRQcm9ncmFtIHRvIHRoZSBwcm9ncmFtIHBhc3NlZCBpbi5cbiAgICogQHBhcmFtIHthbnl9IGV2ZW50IC0gYW55IC0gdGhlIGV2ZW50IHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBjaGVja2JveFxuICAgKiBAcGFyYW0ge2FueX0gcHJvZ3JhbSAtIHRoZSBwcm9ncmFtIHRoYXQgaXMgYmVpbmcgc2VsZWN0ZWRcbiAgICovXG4gIHNldFByaW1hcnlQcm9ncmFtKGV2ZW50OiBhbnksIHByb2dyYW06IGFueSkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRQcm9ncmFtKSB7XG4gICAgICBjb25zdCBjdXJyZW50VGVtcCA9IHRoaXMuY3VycmVudFByb2dyYW07XG4gICAgICB0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRUZW1wKTtcbiAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFByb2dyYW1zKHRydWUsIHByb2dyYW0pO1xuICAgICAgaWYgKCFldmVudCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0ge307XG4gICAgICB9XG4gICAgICB0aGlzLnByaW1hcnlDb25maXJtYXRpb25NZXNzYWdlID1cbiAgICAgICAgJ09uY2UgY29uZmlybWVkLCB0aGUgPGVtPlByaW1hcnkgUHJvZ3JhbTwvZW0+IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgY2hhbmdlZC4gSGVuY2UsIGFsbCB0aGUgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBuZXcgPGVtPlByaW1hcnkgUHJvZ3JhbTwvZW0+IHdpbGwgbm93IGFwcGx5IHRvIHRoaXMgcmVzcG9uc2liaWxpdHkuJztcbiAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGV2ZW50ICYmICF0aGlzLmN1cnJlbnRQcm9ncmFtKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyh0cnVlLCBwcm9ncmFtKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHVzZXIgY2xpY2tzIFwiWWVzXCIgb24gdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCwgdGhlbiB0aGUgZnVuY3Rpb24gd2lsbCByZW1vdmUgdGhlIHByb2dyYW0gZnJvbVxuICAgKiB0aGUgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCBhcnJheSBhbmQgdGhlIHNlbGVjdGVkUHJvZ3JhbXNJZCBhcnJheS4gSWYgdGhlIHVzZXIgY2xpY2tzIFwiTm9cIiBvbiB0aGVcbiAgICogY29uZmlybWF0aW9uIG1vZGFsLCB0aGVuIHRoZSBmdW5jdGlvbiB3aWxsIGRvIG5vdGhpbmcuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXZlbnQgLSBib29sZWFuIC0mZ3Q7IHRoaXMgaXMgdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveFxuICAgKi9cbiAgdXBkYXRlUHJpbWFyeVByb2dyYW0oZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoZXZlbnQgJiYgdGhpcy5pc1ByaW1hcnlVbmNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IGluZGV4T2ZQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5maW5kSW5kZXgoXG4gICAgICAgIChlbDogYW55KSA9PlxuICAgICAgICAgIGVsPy5jYXRlZ29yeV9pZCA9PT1cbiAgICAgICAgICBKU09OLnBhcnNlKHRoaXMudGVtcFByaW1hcnlQcm9ncmFtID8/IHt9KT8uY2F0ZWdvcnlfaWRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXhPZlByb2dyYW0gIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uc3BsaWNlKGluZGV4T2ZQcm9ncmFtLCAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4T2ZJZCA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5maW5kSW5kZXgoXG4gICAgICAgIChlbDogYW55KSA9PiBlbCA9PT0gSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSk/Ll9pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleE9mSWQgIT09IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5zcGxpY2UoaW5kZXhPZklkLCAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0ge307XG4gICAgfSBlbHNlIGlmICghZXZlbnQgJiYgdGhpcy5pc1ByaW1hcnlVbmNoZWNrZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRQcm9ncmFtcyhcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdGhpcy50ZW1wUHJpbWFyeVByb2dyYW0/Lmxlbmd0aFxuICAgICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSlcbiAgICAgICAgICA6IHt9XG4gICAgICApO1xuICAgICAgdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHRoaXMudGVtcFByaW1hcnlQcm9ncmFtPy5sZW5ndGhcbiAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMudGVtcFByaW1hcnlQcm9ncmFtID8/IHt9KVxuICAgICAgICA6IHt9O1xuICAgICAgdGhpcy5pc1ByaW1hcnlDb25maXJtYXRpb24gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50KSB7XG4gICAgICAvLyB0aGlzLmN1cnJlbnRQcm9ncmFtID0gdGhpcy5pc1ByaW1hcnlVbmNoZWNrZWQgPyB7fSA6IEpTT04ucGFyc2UodGhpcy50ZW1wUHJpbWFyeVByb2dyYW0pO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFByb2dyYW1zKFxuICAgICAgICB0aGlzLmlzUHJpbWFyeVVuY2hlY2tlZCA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgdGhpcy50ZW1wUHJpbWFyeVByb2dyYW0/Lmxlbmd0aFxuICAgICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSlcbiAgICAgICAgICA6IHt9XG4gICAgICApO1xuICAgICAgdGhpcy5pc1ByaW1hcnlDb25maXJtYXRpb24gPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGN1cnJlbnRQcmltYXJ5ID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50UHJvZ3JhbSk7XG4gICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0ge307XG4gICAgICAvLyB0aGlzLnVwZGF0ZVNlbGVjdGVkUHJvZ3JhbXMoZmFsc2UsIEpTT04ucGFyc2UoY3VycmVudFByaW1hcnkpPz8ge30pO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFByb2dyYW1zKHRydWUsIEpTT04ucGFyc2UoY3VycmVudFByaW1hcnkpID8/IHt9KTtcbiAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbT8ubGVuZ3RoXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnRlbXBQcmltYXJ5UHJvZ3JhbSA/PyB7fSlcbiAgICAgICAgOiB7fTtcbiAgICAgIHRoaXMuaXNQcmltYXJ5Q29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuaXNQcmltYXJ5VW5jaGVja2VkID0gZmFsc2U7XG4gIH1cblxuICBzZWxlY3RBbGxDYXRlZ29yaWVzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSBbXTtcbiAgICAgIGlmICh0aGlzLmNhdGVnb3J5RGF0YS50b3RhbFBhZ2VzIDwgMikge1xuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5kYXRhLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZElkcy5wdXNoKGVsZS5jYXRlZ29yeV9pZCk7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLnB1c2goZWxlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICAvLyBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkJywgdGhpcy5jdXJyZW50UHJvZ3JhbT8uX2lkKTtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnaXNQYWdpbmF0aW9uJywgZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUlkKSB7XG4gICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmVwb3J0SWQnLCB0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgICAgICAuZ2V0UHJvZ3JhbXNMaXN0KHBhcmFtcywgdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQpXG4gICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYWxsQ2F0ZWdvcmllcyA9IHJlcy5kYXRhO1xuXG4gICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgICBhbGxDYXRlZ29yaWVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChlbGVtZW50LmNhdGVnb3J5X2lkKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XG4gICAgfVxuICB9XG5cbiAgY2hlY2tDYXRlZ29yaWVzU2VsZWN0aW9uKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5sZW5ndGggPT1cbiAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnRvdGFsUmVjb3Jkc1xuICAgICkge1xuICAgICAgcmV0dXJuICdjaGVja2VkJztcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJ3VuY2hlY2tlZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnaW5kZXRlcm1pbmF0ZSc7XG4gICAgfVxuICB9XG5cbiAgb3BlbkNhdGVnb3JpZXMoKSB7XG4gICAgdGhpcy5zZWFyY2hTdHJpbmcgPSAnJztcbiAgICB0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nID0gJyc7XG4gICAgY29uc3QgaXNTdWJQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5zb21lKFxuICAgICAgKGVsOiBhbnkpID0+IGVsPy5jaGlsZF9pZD8ubGVuZ3RoXG4gICAgKTtcblxuICAgIHRoaXMucG9wdWxhdGVDYXRlZ29yaWVzKCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFByb2dyYW0/LmNoaWxkX2lkPy5sZW5ndGggfHwgaXNTdWJQcm9ncmFtKSB7XG4gICAgICB0aGlzLnNob3dDYXRlZ29yaWVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgdGhpcy5zYXZlKCk7XG4gICAgfVxuICB9XG5cbiAgYmFja1RvUHJvZ3JhbXMoKSB7XG4gICAgaWYgKCF0aGlzLmhpZGVQcm9ncmFtc0xpc3QpIHtcbiAgICAgIHRoaXMuc2hvd0NhdGVnb3JpZXMgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzU2VsZWN0ZWRWYWx1ZXM/LnByb2dyYW0/Ll9pZCA9PSB0aGlzLmN1cnJlbnRQcm9ncmFtKSB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcyA9IFtcbiAgICAgICAgICAuLi5uZXcgU2V0KHRoaXMucHJldmlvdXNTZWxlY3RlZFZhbHVlcy5jYXRlZ29yaWVzKSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xuICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VUYWIoXG4gICAgdHlwZTogJ3JlZ3VsYXRpb25zJyB8ICdzdGFuZGFyZHMnIHwgJ2ludGVybmFsX2NvbnRyb2xzJyB8ICdvdGhlcnMnXG4gICkge1xuICAgIHRoaXMucHJvZ3JhbVN1YlRhYiA9ICdQUk9HUkFNUyc7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0eXBlO1xuICAgIHRoaXMucHJvZ3JhbURhdGEuY3VycmVudFBhZ2UgPSAxO1xuICAgIGlmICh0aGlzLnNlYXJjaFN0cmluZz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlYXJjaFN0cmluZyA9ICcnO1xuICAgICAgdGhpcy5nZXRQcm9ncmFtc0NvdW50KCk7XG4gICAgfVxuICAgIC8vIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgdGhpcy5zZWFyY2hQcm9ncmFtLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xuICB9XG5cbiAgY2hhbmdlUGFnZShldmVudDogYW55LCB0eXBlOiAnY2F0ZWdvcnknIHwgJ3Byb2dyYW0nKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdwcm9ncmFtJzpcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5jdXJyZW50UGFnZSA9IGV2ZW50O1xuICAgICAgICB0aGlzLmdldFByb2dyYW1zTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuY3VycmVudFBhZ2UgPSBldmVudDtcbiAgICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXRQcm9ncmFtc0xpc3QocGFyYW1zT2JqZWN0PzogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoXG4gICAgICAncHJvZ3JhbVR5cGUnLFxuICAgICAgdGhpcy5wcm9ncmFtVHlwZU9iamVjdFt0aGlzLmFjdGl2ZVRhYl1cbiAgICApO1xuICAgIGlmIChwYXJhbXNPYmplY3Q/LnNlYXJjaCB8fCB0aGlzLnNlYXJjaFN0cmluZykge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnc2VhcmNoVGV4dCcsIHRoaXMuc2VhcmNoU3RyaW5nKTtcbiAgICB9XG4gICAgLy8gZWxzZSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZU5vJywgdGhpcy5wcm9ncmFtRGF0YS5jdXJyZW50UGFnZSk7XG4gICAgLy8gfVxuICAgIGlmICh0aGlzLnByb2dyYW1TdWJUYWIgPT09ICdPVEhFUl9QUk9HUkFNUycpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2lzVmlld09ubHlQcm9ncmFtcycsIHRydWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JlcG9ydElkJywgdGhpcy5yZXNwb25zaWJpbGl0eUlkKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRQcm9ncmFtc0xpc3QocGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuZGF0YSA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLnByb2dyYW1EYXRhLmZyb20gPSByZXMuZnJvbTtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS50byA9IHJlcy50bztcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS50b3RhbFBhZ2VzID0gcmVzLnRvdGFsUGFnZXM7XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEudG90YWxSZWNvcmRzID0gcmVzLnRvdGFsUmVjb3JkcztcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5BbGxJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudCA9XG4gICAgICAgICAgcmVzLkFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50O1xuICAgICAgICB0aGlzLnByb2dyYW1EYXRhLkFsbE90aGVyc1Byb2dyYW1zQ291bnQgPSByZXMuQWxsT3RoZXJzUHJvZ3JhbXNDb3VudDtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5BbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudCA9XG4gICAgICAgICAgcmVzLkFsbFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50O1xuICAgICAgICB0aGlzLnByb2dyYW1EYXRhLkFsbFN0YW5kYXJkUHJvZ3JhbXNDb3VudCA9XG4gICAgICAgICAgcmVzLkFsbFN0YW5kYXJkUHJvZ3JhbXNDb3VudDtcbiAgICAgICAgdGhpcy5wcm9ncmFtRGF0YS5BbGxQcm9ncmFtc0NvdW50ID0gcmVzPy5BbGxQcm9ncmFtc0NvdW50XG4gICAgICAgICAgPyByZXM/LkFsbFByb2dyYW1zQ291bnRcbiAgICAgICAgICA6IDA7XG4gICAgICAgIHRoaXMucHJvZ3JhbURhdGEuQWxsVmlld09ubHlQcm9ncmFtQ291bnQgPSByZXM/LkFsbFZpZXdPbmx5UHJvZ3JhbUNvdW50XG4gICAgICAgICAgPyByZXM/LkFsbFZpZXdPbmx5UHJvZ3JhbUNvdW50XG4gICAgICAgICAgOiAwO1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9ncmFtc0NvdW50KHBhcmFtc09iamVjdD86IGFueSkge1xuICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gdHJ1ZTtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAvLyBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtVHlwZScsIHRoaXMucHJvZ3JhbVR5cGVPYmplY3RbdGhpcy5hY3RpdmVUYWJdKTtcbiAgICBpZiAocGFyYW1zT2JqZWN0Py5zZWFyY2ggfHwgdGhpcy5zZWFyY2hTdHJpbmcpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3NlYXJjaFRleHQnLCB0aGlzLnNlYXJjaFN0cmluZyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3JlcG9ydElkJywgdGhpcy5yZXNwb25zaWJpbGl0eUlkKTtcbiAgICB9XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0UHJvZ3JhbXNMaXN0Q291bnQocGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZ3JhbVRhYkRhdGFDb3VudC5hbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudCA9XG4gICAgICAgICAgcmVzPy5BbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudDtcbiAgICAgICAgdGhpcy5wcm9ncmFtVGFiRGF0YUNvdW50LmFsbFN0YW5kYXJkUHJvZ3JhbXNDb3VudCA9XG4gICAgICAgICAgcmVzPy5BbGxTdGFuZGFyZFByb2dyYW1zQ291bnQ7XG4gICAgICAgIHRoaXMucHJvZ3JhbVRhYkRhdGFDb3VudC5hbGxJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudCA9XG4gICAgICAgICAgcmVzPy5BbGxJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudDtcbiAgICAgICAgdGhpcy5wcm9ncmFtVGFiRGF0YUNvdW50LmFsbE90aGVyc1Byb2dyYW1zQ291bnQgPVxuICAgICAgICAgIHJlcz8uQWxsT3RoZXJzUHJvZ3JhbXNDb3VudDtcbiAgICAgICAgdGhpcy5wcm9ncmFtQ291bnRMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMucHJvZ3JhbUNvdW50TG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0ZWRTdWJDYXRlZ29yeUlkczogYW55W10gPSBbXTtcbiAgZ2V0Q2F0ZWdvcmllc0xpc3QocXVlcnlPYmplY3Q/OiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgLy8gcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZCcsIHRoaXMuY3VycmVudFByb2dyYW0/Ll9pZCk7XG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZU5vJywgdGhpcy5jYXRlZ29yeURhdGEuY3VycmVudFBhZ2UpO1xuICAgIGlmIChxdWVyeU9iamVjdD8uc2VhcmNoIHx8IHRoaXMuY2F0ZWdvcnlTZWFyY2hTdHJpbmcpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3NlYXJjaFRleHQnLCB0aGlzLmNhdGVnb3J5U2VhcmNoU3RyaW5nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlJZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncmVwb3J0SWQnLCB0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xuICAgIH1cblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0UHJvZ3JhbXNMaXN0KHBhcmFtcywgWy4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZFByb2dyYW1zSWQpXSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS5kYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgdGhpcy5jYXRlZ29yeURhdGEuZnJvbSA9IHJlcy5mcm9tO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnRvID0gcmVzLnRvO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnRvdGFsUGFnZXMgPSByZXMudG90YWxQYWdlcztcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YS50b3RhbFJlY29yZHMgPSByZXMudG90YWxSZWNvcmRzO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdWJDYXRlZ29yeUlkcyA9IHJlcz8uc2VsZWN0ZWRTdWJDYXRlZ29yeUlkcz8ubGVuZ3RoXG4gICAgICAgICAgICA/IHJlcz8uc2VsZWN0ZWRTdWJDYXRlZ29yeUlkc1xuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgdGhpcy5zaG93Q2F0ZWdvcmllcyA9IHRydWU7XG4gIH1cblxuICBzYXZlUHJvZ3JhbSgpIHsgfVxuXG4gIHNlbGVjdENhdGVnb3J5KG1vZGU6IGFueSwgY2F0ZWdvcnk6IGFueSkge1xuICAgIGlmIChtb2RlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnB1c2goY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpO1xuICAgICAgdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMucHVzaChjYXRlZ29yeS5jYXRlZ29yeV9pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZElkcy5maW5kSW5kZXgoXG4gICAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gY2F0ZWdvcnkuY2F0ZWdvcnlfaWRcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5jYXRlZ29yeURhdGEuc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gY2F0ZWdvcnkuY2F0ZWdvcnlfaWRcbiAgICAgICk7XG4gICAgICB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUgPT0gY2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMuc3BsaWNlKHNlbGVjdGVkSW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUNhdGVnb3JpZXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLmNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXMuZmluZEluZGV4KFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT0gZXZlbnQuY2F0ZWdvcnlfaWRcbiAgICApO1xuICAgIHRoaXMuY2F0ZWdvcnlEYXRhLnNlbGVjdGVkQ2F0ZWdvcmllcy5zcGxpY2UoY2F0ZWdvcnlJbmRleCwgMSk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSWRzLmZpbmRJbmRleChcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gZXZlbnQuY2F0ZWdvcnlfaWRcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGNvbnN0IGN1cnJlbnRQcm9ncmFtID0gdGhpcy5wcmVzZXJ2ZVByaW1hcnlQcm9ncmFtPy5sZW5ndGhcbiAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnByZXNlcnZlUHJpbWFyeVByb2dyYW0pXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IHNlbGVjdGVkUHJvZ3JhbXNJZCA9IHRoaXMucHJlc2VydmVkUHJvZ3JhbXNJZD8ubGVuZ3RoXG4gICAgICA/IEpTT04ucGFyc2UodGhpcy5wcmVzZXJ2ZWRQcm9ncmFtc0lkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA9IHRoaXMucHJlc2VydmVkU2VsZWN0ZWRQcm9ncmFtcz8ubGVuZ3RoXG4gICAgICA/IEpTT04ucGFyc2UodGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zKVxuICAgICAgOiBbXTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByZXNlcnZlUHJpbWFyeVByb2dyYW0/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuc2F2ZVNlbGVjdGVkUHJvZ3JhbS5lbWl0KHtcbiAgICAgICAgcHJvZ3JhbTogY3VycmVudFByb2dyYW0sXG4gICAgICAgIGNhdGVnb3JpZXM6IEpTT04ucGFyc2UodGhpcy50ZW1wU2VsZWN0ZWRDYXRlZ29yaWVzKSxcbiAgICAgICAgbGlua2VkUHJvZ3JhbTogc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7cHJvZ3JhbTogY3VycmVudFByb2dyYW0sIGNhdGVnb3JpZXM6IHRoaXMuc2VsZWN0ZWRJZHMsIGxpbmtlZFByb2dyYW06IHNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgIH0pO1xuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIGlmICghdGhpcy5oaWRlUHJvZ3JhbXNMaXN0ICYmIGZhbHNlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb25maXJtYXRpb25NZXNzYWdlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeUlkcyA9IHRoaXMuc2VsZWN0ZWRJZHMuY29uY2F0KFxuICAgICAgICB0aGlzLnNlbGVjdGVkU3ViQ2F0ZWdvcnlJZHNcbiAgICAgICk7XG4gICAgICB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7XG4gICAgICAgIHByb2dyYW06IHRoaXMuY3VycmVudFByb2dyYW0sXG4gICAgICAgIGNhdGVnb3JpZXM6IFsuLi5uZXcgU2V0KHNlbGVjdGVkQ2F0ZWdvcnlJZHMpXSxcbiAgICAgICAgbGlua2VkUHJvZ3JhbTogdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsLFxuICAgICAgfSk7XG4gICAgICAvLyB0aGlzLnNhdmVTZWxlY3RlZFByb2dyYW0uZW1pdCh7IHByb2dyYW06IHRoaXMuY3VycmVudFByb2dyYW0sIGNhdGVnb3JpZXM6IHRoaXMuc2VsZWN0ZWRJZHMgfSk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZUNoYW5nZXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcnlJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmNvbmNhdChcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1YkNhdGVnb3J5SWRzXG4gICAgICApO1xuICAgICAgdGhpcy5zYXZlU2VsZWN0ZWRQcm9ncmFtLmVtaXQoe1xuICAgICAgICBwcm9ncmFtOiB0aGlzLmN1cnJlbnRQcm9ncmFtLFxuICAgICAgICBjYXRlZ29yaWVzOiBbLi4ubmV3IFNldChzZWxlY3RlZENhdGVnb3J5SWRzKV0sXG4gICAgICAgIGxpbmtlZFByb2dyYW06IHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCxcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcy5zYXZlU2VsZWN0ZWRQcm9ncmFtLmVtaXQoeyBwcm9ncmFtOiB0aGlzLmN1cnJlbnRQcm9ncmFtLCBjYXRlZ29yaWVzOiB0aGlzLnNlbGVjdGVkSWRzIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb25maXJtYXRpb25NZXNzYWdlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGluZGV4T2ZQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5maW5kSW5kZXgoXG4gICAgICAoZWw6IGFueSkgPT4gZWw/LmNhdGVnb3J5X2lkID09PSBldmVudD8uY2F0ZWdvcnlfaWRcbiAgICApO1xuICAgIGlmIChpbmRleE9mUHJvZ3JhbSAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8uc3BsaWNlKGluZGV4T2ZQcm9ncmFtLCAxKTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXhPZklkID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/LmZpbmRJbmRleChcbiAgICAgIChlbDogYW55KSA9PiBlbCA9PT0gZXZlbnQ/Ll9pZFxuICAgICk7XG4gICAgaWYgKGluZGV4T2ZJZCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkPy5zcGxpY2UoaW5kZXhPZklkLCAxKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gZXZlbnQ/Ll9pZCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFByb2dyYW0gPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWxbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1cnJlbnRQcm9ncmFtID0ge307XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGhpcy5jdXJyZW50UHJvZ3JhbSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNob3dDYXRlZ29yaWVzID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xuICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XG4gICAgLy9BcyB0aGlzIGlzIGEgcmFkaW8gbGlzdCBhbmQgb25seSBvbmUgaXRlbSBjYW4gYmUgc2VsZWN0ZWQgdGhhdHMgd2h5IHdlIGFyZSByZXNldHRpbmcgYWxsIHRoZSBjb3VudHMgdG8gemVyb1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRQcm9ncmFtQ291bnQoZmFsc2UsIGV2ZW50Py5wcm9ncmFtVHlwZSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZFByb2dyYW1Db3VudChldmVudD86IGJvb2xlYW4sIHByb2dyYW1UeXBlPzogbnVtYmVyKSB7XG4gICAgLy8gc3dpdGNoICh0aGlzLmN1cnJlbnRQcm9ncmFtLnByb2dyYW1UeXBlKSB7XG4gICAgc3dpdGNoIChwcm9ncmFtVHlwZSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBldmVudFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZE90aGVyc1Byb2dyYW1zQ291bnQrK1xuICAgICAgICAgIDogdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZE90aGVyc1Byb2dyYW1zQ291bnQtLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGV2ZW50XG4gICAgICAgICAgPyB0aGlzLnByb2dyYW1EYXRhLlNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQrK1xuICAgICAgICAgIDogdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZFJlZ3VsYXRpb25Qcm9ncmFtc0NvdW50LS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBldmVudFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZFN0YW5kYXJkUHJvZ3JhbXNDb3VudCsrXG4gICAgICAgICAgOiB0aGlzLnByb2dyYW1EYXRhLlNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50LS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBldmVudFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtRGF0YS5TZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50KytcbiAgICAgICAgICA6IHRoaXMucHJvZ3JhbURhdGEuU2VsZWN0ZWRJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudC0tO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHNlbGVjdGVkUHJvZ3JhbSBhcnJheSBoYXMgYSBsZW5ndGgsIHRoZW4gcHJlc2VydmUgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGFycmF5IGFzIHRoZVxuICAgKiBwcmVzZXJ2ZVByaW1hcnlQcm9ncmFtIHZhcmlhYmxlLiBPdGhlcndpc2UsIHNldCB0aGUgcHJlc2VydmVQcmltYXJ5UHJvZ3JhbSB2YXJpYWJsZSB0byBhbiBlbXB0eVxuICAgKiBvYmplY3QuXG4gICAqXG4gICAqIElmIHRoZSBzZWxlY3RlZFByb2dyYW1zSWQgYXJyYXkgaGFzIGEgbGVuZ3RoLCB0aGVuIHByZXNlcnZlIHRoZSBhcnJheSBhcyB0aGUgcHJlc2VydmVkUHJvZ3JhbXNJZFxuICAgKiB2YXJpYWJsZS4gT3RoZXJ3aXNlLCBzZXQgdGhlIHByZXNlcnZlZFByb2dyYW1zSWQgdmFyaWFibGUgdG8gYW4gZW1wdHkgYXJyYXkuXG4gICAqXG4gICAqIElmIHRoZSBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIGFycmF5IGhhcyBhIGxlbmd0aCwgdGhlbiBwcmVzZXJ2ZSB0aGUgYXJyYXkgYXMgdGhlXG4gICAqIHByZXNlcnZlZFNlbGVjdGVkUHJvZ3JhbXMgdmFyaWFibGUuIE90aGVyd2lzZSwgc2V0IHRoZSBwcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zIHZhcmlhYmxlIHRvIGFuXG4gICAqIGVtcHR5IGFycmF5LlxuICAgKlxuICAgKiBJZiB0aGUgc2VsZWN0ZWRQcm9ncmFtIGFycmF5IGRvZXMgbm90IGhhdmUgYSBsZW5ndGgsIHRoZW4gc2V0IHRoZSBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIGFycmF5IHRvXG4gICAqIGFuIGVtcHR5IGFycmF5IGFuZCB0aGUgc2VsZWN0ZWRQcm9ncmFtc0lkIGFycmF5IHRvIGFuIGVtcHR5IGFycmF5LlxuICAgKi9cbiAgcHJlc2VydmVQcmV2aW91c0RldGFpbHMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdPy5sZW5ndGggfHwgdGhpcy5jdXJyZW50UHJvZ3JhbSkge1xuICAgICAgdGhpcy5wcmVzZXJ2ZVByaW1hcnlQcm9ncmFtID0gdGhpcy5zZWxlY3RlZFByb2dyYW0/Lmxlbmd0aFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRQcm9ncmFtWzBdKVxuICAgICAgICA6IHt9O1xuICAgICAgdGhpcy5wcmVzZXJ2ZWRQcm9ncmFtc0lkID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zSWQ/Lmxlbmd0aFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkKVxuICAgICAgICA6IFtdO1xuICAgICAgdGhpcy5wcmVzZXJ2ZWRTZWxlY3RlZFByb2dyYW1zID0gdGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsXG4gICAgICAgID8gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZFByb2dyYW1zRGV0YWlsKVxuICAgICAgICA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNEZXRhaWwgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtc0lkID0gW107XG4gICAgfVxuICB9XG5cbiAgcHJvZ3JhbVN1YlRhYjogJ1BST0dSQU1TJyB8ICdPVEhFUl9QUk9HUkFNUycgPSAnUFJPR1JBTVMnO1xuICBzZXRQcm9ncmFtU3ViVGFiKHRhYjogJ1BST0dSQU1TJyB8ICdPVEhFUl9QUk9HUkFNUycpIHtcbiAgICB0aGlzLnByb2dyYW1TdWJUYWIgPSB0YWI7XG4gICAgdGhpcy5nZXRQcm9ncmFtc0xpc3QoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInByb2dyYW0tbGlzdGluZ1wiXG4gIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiXG4gICpuZ0lmPVwiIXNob3dDYXRlZ29yaWVzICYmICFoaWRlUHJvZ3JhbXNMaXN0XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2VsZWN0IGEgUHJvZ3JhbTwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci1jYXJkLXJvd1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZpbHRlci1jYXJkIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTMgdngtdy0xMDBcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSAncmVndWxhdGlvbnMnXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRhYigncmVndWxhdGlvbnMnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cInZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICA+UkVHVUxBVElPTlM8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICAgIDxwICpuZ0lmPVwicHJvZ3JhbURhdGE/LlNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQgPiAwXCI+XG4gICAgICAgICAgICB7eyBwcm9ncmFtRGF0YT8uU2VsZWN0ZWRSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudCB9fVxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgcHJvZ3JhbURhdGE/LlNlbGVjdGVkUmVndWxhdGlvblByb2dyYW1zQ291bnQgPT0gMVxuICAgICAgICAgICAgICAgID8gXCJQcm9ncmFtXCJcbiAgICAgICAgICAgICAgICA6IFwiUHJvZ3JhbXNcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3Byb2dyYW1EYXRhPy5BbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudH19PC9zcGFuPiAtLT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3tcbiAgICAgICAgICBwcm9ncmFtVGFiRGF0YUNvdW50Py5hbGxSZWd1bGF0aW9uUHJvZ3JhbXNDb3VudFxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZpbHRlci1jYXJkIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTMgdngtdy0xMDBcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSAnc3RhbmRhcmRzJ1wiXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VUYWIoJ3N0YW5kYXJkcycpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5TVEFOREFSRFM8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICAgIDxwICpuZ0lmPVwicHJvZ3JhbURhdGE/LlNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50ID4gMFwiPlxuICAgICAgICAgICAge3sgcHJvZ3JhbURhdGE/LlNlbGVjdGVkU3RhbmRhcmRQcm9ncmFtc0NvdW50IH19XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBwcm9ncmFtRGF0YT8uU2VsZWN0ZWRTdGFuZGFyZFByb2dyYW1zQ291bnQgPT0gMVxuICAgICAgICAgICAgICAgID8gXCJQcm9ncmFtXCJcbiAgICAgICAgICAgICAgICA6IFwiUHJvZ3JhbXNcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3Byb2dyYW1EYXRhPy5BbGxTdGFuZGFyZFByb2dyYW1zQ291bnR9fTwvc3Bhbj4gLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7XG4gICAgICAgICAgcHJvZ3JhbVRhYkRhdGFDb3VudD8uYWxsU3RhbmRhcmRQcm9ncmFtc0NvdW50XG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItMyB2eC13LTEwMFwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09ICdpbnRlcm5hbF9jb250cm9scydcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlVGFiKCdpbnRlcm5hbF9jb250cm9scycpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwidngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgID5JTlRFUk5BTCBDT05UUk9MUzwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPHAgKm5nSWY9XCJwcm9ncmFtRGF0YT8uU2VsZWN0ZWRJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudCA+IDBcIj5cbiAgICAgICAgICAgIHt7IHByb2dyYW1EYXRhPy5TZWxlY3RlZEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50IH19XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBwcm9ncmFtRGF0YT8uU2VsZWN0ZWRJbnRlcm5hbENvbnRyb2xzUHJvZ3JhbXNDb3VudCA9PSAxXG4gICAgICAgICAgICAgICAgPyBcIlByb2dyYW1cIlxuICAgICAgICAgICAgICAgIDogXCJQcm9ncmFtc1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgc2VsZWN0ZWRcbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cHJvZ3JhbURhdGE/LkFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50fX08L3NwYW4+IC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e1xuICAgICAgICAgIHByb2dyYW1UYWJEYXRhQ291bnQ/LmFsbEludGVybmFsQ29udHJvbHNQcm9ncmFtc0NvdW50XG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWNhcmQgdngtYmctd2hpdGUgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXIgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItMyB2eC13LTEwMFwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09ICdvdGhlcnMnXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRhYignb3RoZXJzJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJ2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgPk9USEVSUzwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPHAgKm5nSWY9XCJwcm9ncmFtRGF0YT8uU2VsZWN0ZWRPdGhlcnNQcm9ncmFtc0NvdW50ID4gMFwiPlxuICAgICAgICAgICAge3sgcHJvZ3JhbURhdGE/LlNlbGVjdGVkT3RoZXJzUHJvZ3JhbXNDb3VudCB9fVxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgcHJvZ3JhbURhdGE/LlNlbGVjdGVkT3RoZXJzUHJvZ3JhbXNDb3VudCA9PSAxXG4gICAgICAgICAgICAgICAgPyBcIlByb2dyYW1cIlxuICAgICAgICAgICAgICAgIDogXCJQcm9ncmFtc1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgc2VsZWN0ZWRcbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cHJvZ3JhbURhdGE/LkFsbE90aGVyc1Byb2dyYW1zQ291bnR9fTwvc3Bhbj4gLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7XG4gICAgICAgICAgcHJvZ3JhbVRhYkRhdGFDb3VudD8uYWxsT3RoZXJzUHJvZ3JhbXNDb3VudFxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICNzZWFyY2hQcm9ncmFtXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBQcm9ncmFtc1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gbW9kZSA9PT0gJ0VESVQnIC0tPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ0VESVQnICYmIHByb2dyYW1EYXRhPy5BbGxWaWV3T25seVByb2dyYW1Db3VudFwiXG4gICAgICBjbGFzcz1cInByb2dyYW0tbGlzdGluZy10YWIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2V0UHJvZ3JhbVN1YlRhYignUFJPR1JBTVMnKVwiXG4gICAgICAgIGNsYXNzPVwidngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInByb2dyYW1TdWJUYWIgPT09ICdQUk9HUkFNUydcIlxuICAgICAgPlxuICAgICAgICBQUk9HUkFNU1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiY291bnQgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbWwtMiB2eC1saC00XCJcbiAgICAgICAgICA+e3sgcHJvZ3JhbURhdGE/LkFsbFByb2dyYW1zQ291bnQgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJzZXRQcm9ncmFtU3ViVGFiKCdPVEhFUl9QUk9HUkFNUycpXCJcbiAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy02MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBiLTIgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicHJvZ3JhbVN1YlRhYiA9PT0gJ09USEVSX1BST0dSQU1TJ1wiXG4gICAgICA+XG4gICAgICAgIE9USEVSIFBST0dSQU1TXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJjb3VudCB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1tbC0yIHZ4LWxoLTRcIlxuICAgICAgICAgID57eyBwcm9ncmFtRGF0YT8uQWxsVmlld09ubHlQcm9ncmFtQ291bnQgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1wYWdpbmF0aW9uXG4gICAgICAqbmdJZj1cInByb2dyYW1EYXRhLnRvdGFsUGFnZXMgPiAxXCJcbiAgICAgIFtzdGFydF09XCJwcm9ncmFtRGF0YS5mcm9tXCJcbiAgICAgIFtlbmRdPVwicHJvZ3JhbURhdGEudG9cIlxuICAgICAgW3RvdGFsXT1cInByb2dyYW1EYXRhLnRvdGFsUmVjb3Jkc1wiXG4gICAgICBbcGFnZUNvdW50XT1cInByb2dyYW1EYXRhLnRvdGFsUGFnZXNcIlxuICAgICAgW2N1cnJlbnRQYWdlXT1cInByb2dyYW1EYXRhLmN1cnJlbnRQYWdlXCJcbiAgICAgIChzZWxlY3RlZFBhZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQsICdwcm9ncmFtJylcIlxuICAgID48L2FwcC1wYWdpbmF0aW9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLXBhcnQgdngtbWItNFwiXG4gICAgICBbY2xhc3Mud2l0aC1jYXRlZ29yeS1saXN0XT1cIiFzaG93Q2F0ZWdvcmllcyAmJiAhaGlkZVByb2dyYW1zTGlzdFwiXG4gICAgICBbY2xhc3Mud2l0aC1wYWdpbmF0aW9uXT1cInByb2dyYW1EYXRhLnRvdGFsUGFnZXMgPiAxXCJcbiAgICA+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJwcm9ncmFtRGF0YT8uZGF0YT8ubGVuZ3RoID09PSAwICYmICFsb2FkZXJcIlxuICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIERhdGEgRm91bmQnXCJcbiAgICAgID48L2FwcC1uby1kYXRhPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWl0ZW1cIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dDYXRlZ29yaWVzICYmIGN1cnJlbnRQcm9ncmFtPy5faWQgPT0gcHJvZ3JhbT8uX2lkXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHByb2dyYW0gb2YgcHJvZ3JhbURhdGEuZGF0YTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtjbGFzcy5maW5hbC1zZWxlY3RdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgICA8IS0tIGFmdGVyIGNhdGVnb3J5IHdhcyBzZWxlY3QgJiB1c2VyIG1vdmUgdG8gYmFjayBhbmQgZWRpdCB0aGVuIGZpbmFsLXNlbGVjdCBjbGFzcyB3YXMgc2hvdyAtLT5cbiAgICAgICAgPCEtLSBbY2xhc3MuZGlzYWJsZWRdPVwiY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkICYmIChtb2RlID09PSAnRURJVCcgfHwgb3BlbmVkRnJvbSA9PT0gJ1BST0dSQU1fV09SS1JPT00nKSAmJiBwcm9ncmFtU3ViVGFiICE9PSAnT1RIRVJfUFJPR1JBTVMnXCIgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInRhYmxlLXJvdyBtYWluLWxpc3RcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRQcm9ncmFtc0lkPy5pbmNsdWRlcyhwcm9ncmFtPy5faWQpXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICBmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpXG4gICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgOiBjdXJyZW50UHJvZ3JhbT8uX2lkID09PSBwcm9ncmFtPy5faWQgJiZcbiAgICAgICAgICAgICAgICAobW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJykgJiZcbiAgICAgICAgICAgICAgICBwcm9ncmFtU3ViVGFiICE9PSAnT1RIRVJfUFJPR1JBTVMnXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic3Itbm9cIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJpICsgcHJvZ3JhbURhdGEuZnJvbVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBpICsgcHJvZ3JhbURhdGEuZnJvbSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFtkaXNhYmxlZF09XCJjdXJyZW50UHJvZ3JhbT8uX2lkID09PSBwcm9ncmFtPy5faWQgJiYgKG1vZGUgPT09ICdFRElUJyB8fCBvcGVuZWRGcm9tID09PSAnUFJPR1JBTV9XT1JLUk9PTScpXCIgLS0+XG4gICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICpuZ0lmPVwicHJvZ3JhbVN1YlRhYiAhPT0gJ09USEVSX1BST0dSQU1TJ1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2RlcHJlY2F0ZV9wcmltYXJ5X3Byb2dyYW1fZmxhZycpXG4gICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICA6IGN1cnJlbnRQcm9ncmFtPy5faWQgPT09IHByb2dyYW0/Ll9pZCAmJlxuICAgICAgICAgICAgICAgICAgICAobW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJylcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwic2VsZWN0ZWRQcm9ncmFtc0lkPy5pbmNsdWRlcyhwcm9ncmFtPy5faWQpXCJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0UHJvZ3JhbSgkZXZlbnQsIHByb2dyYW0pXCJcbiAgICAgICAgICAgID48L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgIDwhLS0gPGFwcC1jcy1yYWRpbyBbbmFtZV09XCIndCdcIiBbY2hlY2tlZF09XCJjdXJyZW50UHJvZ3JhbT8uX2lkID09IHByb2dyYW0/Ll9pZFwiIChjaGVja2VkRXZlbnQpPVwic2VsZWN0UHJvZ3JhbSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQscHJvZ3JhbSlcIj48L2FwcC1jcy1yYWRpbz4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBuYW1lXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS1pbm5lclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS13aXRoLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwcm9ncmFtPy5pdGVtX25hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcHJvZ3JhbT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gcHJpbWFyeS1wcm9ncmFtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgIShtb2RlID09PSAnRURJVCcgfHwgb3BlbmVkRnJvbSA9PT0gJ1BST0dSQU1fV09SS1JPT00nKSB8fFxuICAgICAgICAgICAgICAgICAgY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJjdXJyZW50UHJvZ3JhbT8uX2lkID09PSBwcm9ncmFtPy5faWRcIlxuICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNldFByaW1hcnlQcm9ncmFtKCRldmVudCwgcHJvZ3JhbSlcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY3VycmVudFByb2dyYW0/Ll9pZCA9PT0gcHJvZ3JhbT8uX2lkXG4gICAgICAgICAgICAgICAgICAgID8gXCJQUklNQVJZIFBST0dSQU1cIlxuICAgICAgICAgICAgICAgICAgICA6IFwiU0VUIEFTIFBSSU1BUlkgUFJPR1JBTVwiXG4gICAgICAgICAgICAgICAgfX08L2FwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGFjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFycm93XCIgKm5nSWY9XCJwcm9ncmFtPy5jaGlsZF9pZD8ubGVuZ3RoXCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiEoc2hvd0NhdGVnb3JpZXMgJiYgY3VycmVudFByb2dyYW0/Ll9pZCA9PSBwcm9ncmFtPy5faWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByb2dyYW0oJGV2ZW50LHByb2dyYW0pXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5NzA7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwic2hvd0NhdGVnb3JpZXMgJiYgY3VycmVudFByb2dyYW0/Ll9pZCA9PSBwcm9ncmFtPy5faWRcIiBjbGFzcz1cImljb25zXCI+JiN4ZTllODs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgICpuZ0lmPVwiZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cIlxuICAgICAgICBzZWxlY3RlZFByb2dyYW1zRGV0YWlsPy5sZW5ndGggPyBzZWxlY3RlZFByb2dyYW1zRGV0YWlsIDogW11cbiAgICAgIFwiXG4gICAgICBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ25hbWUnXCJcbiAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1Byb2dyYW0gc2VsZWN0ZWQnXCJcbiAgICAgIFtwbHVyYWxUZXh0XT1cIidQcm9ncmFtcyBzZWxlY3RlZCdcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwib3BlbkNhdGVnb3JpZXMoKVwiXG4gICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlRXZlbnQoJGV2ZW50KVwiXG4gICAgICBbaXNEaXNhYmxlZF09XCJcbiAgICAgICAgKGN1cnJlbnRQcm9ncmFtPy5jYXRlZ29yeV9pZCA/IFtjdXJyZW50UHJvZ3JhbV0gOiBbXSk/Lmxlbmd0aFxuICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICA6IHRydWVcbiAgICAgIFwiXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlKClcIlxuICAgICAgW2VsZW1lbnRJZF09XCInY2F0ZWdvcnlfaWQnXCJcbiAgICA+XG4gICAgPC9hcHAtZmxvYXRpbmctYmFyPlxuXG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgICpuZ0lmPVwiIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIlxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJcbiAgICAgICAgc2VsZWN0ZWRQcm9ncmFtc0RldGFpbD8ubGVuZ3RoID8gc2VsZWN0ZWRQcm9ncmFtc0RldGFpbCA6IFtdXG4gICAgICBcIlxuICAgICAgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIiduYW1lJ1wiXG4gICAgICBbc2luZ3VsYXJUZXh0XT1cIidQcm9ncmFtIHNlbGVjdGVkJ1wiXG4gICAgICBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbXMgc2VsZWN0ZWQnXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cIm9wZW5DYXRlZ29yaWVzKClcIlxuICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUV2ZW50KCRldmVudClcIlxuICAgICAgW2lzRGlzYWJsZWRdPVwiXG4gICAgICAgIChjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQgPyBbY3VycmVudFByb2dyYW1dIDogW10pPy5sZW5ndGhcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiB0cnVlXG4gICAgICBcIlxuICAgICAgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCJcbiAgICAgIFtkZWZhdWx0U2VsZWN0ZWRdPVwiY3VycmVudFByb2dyYW1cIlxuICAgICAgW25vblJlbW92YWJsZVVzZXJzTGlzdF09XCJcbiAgICAgICAgbW9kZSA9PT0gJ0VESVQnIHx8IG9wZW5lZEZyb20gPT09ICdQUk9HUkFNX1dPUktST09NJ1xuICAgICAgICAgID8gdmlld09ubHlQcm9ncmFtc0NhdGVnb3J5SWRcbiAgICAgICAgICA6IFtjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWRdXG4gICAgICBcIlxuICAgICAgW2VsZW1lbnRJZF09XCInY2F0ZWdvcnlfaWQnXCJcbiAgICA+XG4gICAgPC9hcHAtZmxvYXRpbmctYmFyPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctY29uZmlybWF0aW9uXCJcbiAgICAgICpuZ0lmPVwiZGlzcGxheUNvbmZpcm1hdGlvbk1lc3NhZ2VcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWJsb2NrXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MzA7PC9pPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICAgIE9uY2UgeW91IHNlbGVjdCB0aGlzIFByb2dyYW0sIGFsbCBkZWZhdWx0IHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhpc1xuICAgICAgICAgIFByb2dyYW0gd2lsbCBhbHNvIGJlIHVwZGF0ZWQuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJvdHRvbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vLWJ0blwiIChjbGljayk9XCJzYXZlQ2hhbmdlcyhmYWxzZSlcIj5OTzwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ5ZXMtYnRuXCIgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKHRydWUpXCI+WUVTPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctY29uZmlybWF0aW9uXCJcbiAgICAgICpuZ0lmPVwiaXNQcmltYXJ5Q29uZmlybWF0aW9uICYmICFpc1ByaW1hcnlVbmNoZWNrZWRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWJsb2NrXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MzA7PC9pPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiIFtpbm5lckhUTUxdPVwicHJpbWFyeUNvbmZpcm1hdGlvbk1lc3NhZ2VcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi1ib3R0b21cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5BcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gcHJvY2VlZD88L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuby1idG5cIiAoY2xpY2spPVwidXBkYXRlUHJpbWFyeVByb2dyYW0oZmFsc2UpXCI+XG4gICAgICAgICAgICBOT1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ5ZXMtYnRuXCIgKGNsaWNrKT1cInVwZGF0ZVByaW1hcnlQcm9ncmFtKHRydWUpXCI+XG4gICAgICAgICAgICBZRVNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWNvbmZpcm1hdGlvbiBlcnJvci1jb25maXJtYXRpb25cIlxuICAgICAgKm5nSWY9XCJpc1ByaW1hcnlVbmNoZWNrZWRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQgdngtcHItNFwiPlxuICAgICAgICAgICAgWW91IGNhbm5vdCBkZXNlbGVjdCB0aGlzIFByb2dyYW0gc2luY2UgdGhpcyBpcyB0aGVcbiAgICAgICAgICAgIDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPiBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS4gVG8gcHJvY2VlZCwgZmlyc3RcbiAgICAgICAgICAgIHNlbGVjdCBhbm90aGVyIFByb2dyYW0gYXMgdGhlIDxlbT5QcmltYXJ5IFByb2dyYW08L2VtPi5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJvay1idG5cIiAoY2xpY2spPVwidXBkYXRlUHJpbWFyeVByb2dyYW0oZmFsc2UpXCI+T0s8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPCEtLSA8YXBwLWZsb2F0aW5nLWJhciBbc2VsZWN0ZWREYXRhXT1cIihjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQpP1tjdXJyZW50UHJvZ3JhbV06W11cIiBbZGlzcGxheUVsZW1lbnRLZXldPVwiJ25hbWUnXCJcbiAgICAgICAgW3Npbmd1bGFyVGV4dF09XCInUHJvZ3JhbSBzZWxlY3RlZCdcIiBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbXMgc2VsZWN0ZWQnXCIgKGNsb3NlRXZlbnQpPVwib3BlbkNhdGVnb3JpZXMoKVwiXG4gICAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVFdmVudCgkZXZlbnQpXCIgW2lzRGlzYWJsZWRdPVwiKChjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQpP1tjdXJyZW50UHJvZ3JhbV06W10pPy5sZW5ndGggPyBmYWxzZSA6dHJ1ZSBcIiAoY2xvc2VMaXN0KT1cImNsb3NlKClcIj5cbiAgICA8L2FwcC1mbG9hdGluZy1iYXI+IC0tPlxuXG4gIDwhLS0gKChjdXJyZW50UHJvZ3JhbT8uY2F0ZWdvcnlfaWQpP1tjdXJyZW50UHJvZ3JhbV06W10pPy5sZW5ndGggPyBmYWxzZSA6dHJ1ZSAgLS0+XG5cbiAgPGFwcC1sb2FkZXIgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXI+XG48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmdcIlxuICBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIlxuICAqbmdJZj1cInNob3dDYXRlZ29yaWVzIHx8IGhpZGVQcm9ncmFtc0xpc3RcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJiYWNrLWJ0biB2eC1mcy0xNiB2eC1wLTAgdngtbXItMlwiXG4gICAgICAgIChjbGljayk9XCJiYWNrVG9Qcm9ncmFtcygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWQ7PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiY3VycmVudFByb2dyYW0/Lm5hbWVcIj4ge3tjdXJyZW50UHJvZ3JhbT8ubmFtZX19ID4gPC9zcGFuPiAtLT5cbiAgICAgIFByb2dyYW0gPiBTZWxlY3QgUHJvZ3JhbSBDYXRlZ29yaWVzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAjc2VhcmNoQ2F0ZWdvcnlcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImNhdGVnb3J5U2VhcmNoKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggQ2F0ZWdvcmllc1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCJjYXRlZ29yeURhdGEudG90YWxQYWdlcyA+IDFcIlxuICAgICAgY2xhc3M9XCJjYXRlZ29yeS1wYWdpbmF0aW9uXCJcbiAgICAgIFtzdGFydF09XCJjYXRlZ29yeURhdGEuZnJvbVwiXG4gICAgICBbZW5kXT1cImNhdGVnb3J5RGF0YS50b1wiXG4gICAgICBbdG90YWxdPVwiY2F0ZWdvcnlEYXRhLnRvdGFsUmVjb3Jkc1wiXG4gICAgICBbcGFnZUNvdW50XT1cImNhdGVnb3J5RGF0YS50b3RhbFBhZ2VzXCJcbiAgICAgIFtjdXJyZW50UGFnZV09XCJjYXRlZ29yeURhdGEuY3VycmVudFBhZ2VcIlxuICAgICAgKHNlbGVjdGVkUGFnZSk9XCJjaGFuZ2VQYWdlKCRldmVudCwgJ2NhdGVnb3J5JylcIlxuICAgID48L2FwcC1wYWdpbmF0aW9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicHJvZ3JhbS1saXN0aW5nLXBhcnQgdngtbWItNFwiXG4gICAgICBbY2xhc3Mud2l0aC1jYXRlZ29yeS1wYWdpbmF0aW9uXT1cImNhdGVnb3J5RGF0YS50b3RhbFBhZ2VzID4gMVwiXG4gICAgPlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICpuZ0lmPVwiY2F0ZWdvcnlEYXRhPy5kYXRhPy5sZW5ndGggPT09IDAgJiYgIWxvYWRlclwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gRGF0YSBGb3VuZCdcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGVyICYmIGNhdGVnb3J5RGF0YS5kYXRhPy5sZW5ndGhcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZhbHNlXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZC1hcmVhXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICFsb2FkZXIgJiZcbiAgICAgICAgICAgICAgKGN1cnJlbnRQcm9ncmFtPy5uYW1lXG4gICAgICAgICAgICAgICAgPyBjYXRlZ29yeURhdGEuZGF0YT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiBwcm9ncmFtRGF0YT8uZGF0YT8ubGVuZ3RoKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tDYXRlZ29yaWVzU2VsZWN0aW9uKCkgPT0gJ2NoZWNrZWQnXCJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEFsbENhdGVnb3JpZXMoZmFsc2UpXCJcbiAgICAgICAgICAgICAgPkRlc2VsZWN0IEFsbDwvYXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCJjaGVja0NhdGVnb3JpZXNTZWxlY3Rpb24oKSA9PSAnaW5kZXRlcm1pbmF0ZSdcIlxuICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0QWxsQ2F0ZWdvcmllcyhmYWxzZSlcIlxuICAgICAgICAgICAgICA+RGVzZWxlY3QgQWxsPC9hcHAtY3MtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxuICAgICAgICAgICAgICAqbmdJZj1cImNoZWNrQ2F0ZWdvcmllc1NlbGVjdGlvbigpID09ICd1bmNoZWNrZWQnXCJcbiAgICAgICAgICAgICAgW25nVmFsdWVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RBbGxDYXRlZ29yaWVzKHRydWUpXCJcbiAgICAgICAgICAgICAgPlNlbGVjdCBBbGw8L2FwcC1jcy1jaGVja2JveFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHNlcmlhbFwiPiM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY2F0ZWdvcnktbmFtZVwiPkNBVEVHT1JJRVM8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY2F0ZWdvcnktd2l0aGluXCI+V0lUSElOPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwcm9ncmFtLWxpc3RpbmctaXRlbVwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzdWJMaXN0XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcnlEYXRhLmRhdGE7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRJZHMuaW5jbHVkZXMoY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3cgbWFpbi1saXN0XCIgW2NsYXNzLmRpc2FibGVkXT1cImZhbHNlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHNlcmlhbFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzci1ub1wiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIGNhdGVnb3J5RGF0YT8uZnJvbVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBpICsgY2F0ZWdvcnlEYXRhPy5mcm9tIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW25nVmFsdWVdPVwic2VsZWN0ZWRJZHMuaW5jbHVkZXMoY2F0ZWdvcnkuY2F0ZWdvcnlfaWQpXCJcbiAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RDYXRlZ29yeSgkZXZlbnQsIGNhdGVnb3J5KVwiXG4gICAgICAgICAgICAgID48L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjYXRlZ29yeS1uYW1lXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtd2l0aC1jb3VudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgY2F0ZWdvcnk/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIndpdGhpbi1wYXJ0XCIgKm5nSWY9XCJjYXRlZ29yeT8ucGFyZW50X2NhdGVnb3J5X25hbWU/Lmxlbmd0aD4wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndpdGhpbi1ib3hcIj5XaXRoaW48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCIgW2FwcFRvb2x0aXBdPVwiJ1NvdXRoIEFmcmljYSA+IEFtZXJpY2EgPiBJbmRpYSdcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHBhcmVudCBvZiBjYXRlZ29yeT8ucGFyZW50X2NhdGVnb3J5X25hbWU7bGV0IGo9aW5kZXhcIj57eyhqIT0oY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5sZW5ndGgtMSkpP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQrJyA8ICc6cGFyZW50fX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIGNhdGVnb3J5LXdpdGhpblwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudCBvZiBjYXRlZ29yeT8ucGFyZW50X2NhdGVnb3J5X25hbWU7XG4gICAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2l0aGluLW5hbWVcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk/LnBhcmVudF9jYXRlZ29yeV9uYW1lXG4gICAgICAgICAgICAgICAgICAgID8uc2xpY2UoKVxuICAgICAgICAgICAgICAgICAgICA/LnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICA/LmpvaW4oJyA+ICcpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHBhcmVudCB9fVxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxhc3RcIj4gPiZuYnNwOyA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNhdGVnb3J5Py5wYXJlbnRfY2F0ZWdvcnlfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFByb2dyYW0/LmNhdGVnb3J5X2lkXG4gICAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwcmltYXJ5LWxhYmVsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFBSSU1BUllcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxhcHAtZmxvYXRpbmctYmFyXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cImNhdGVnb3J5RGF0YS5zZWxlY3RlZENhdGVnb3JpZXNcIlxuICAgICAgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIiduYW1lJ1wiXG4gICAgICBbc2luZ3VsYXJUZXh0XT1cIidQcm9ncmFtIENhdGVnb3J5IHNlbGVjdGVkJ1wiXG4gICAgICBbcGx1cmFsVGV4dF09XCInUHJvZ3JhbSBDYXRlZ29yaWVzIHNlbGVjdGVkJ1wiXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKClcIlxuICAgICAgKGRlbGV0ZUV2ZW50KT1cInJlbW92ZUNhdGVnb3JpZXMoJGV2ZW50KVwiXG4gICAgICAoY2xvc2VMaXN0KT1cImJhY2tUb1Byb2dyYW1zKClcIlxuICAgID5cbiAgICA8L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCIhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInByb2dyYW0tbGlzdGluZy1jb25maXJtYXRpb25cIlxuICAgICAgKm5nSWY9XCJkaXNwbGF5Q29uZmlybWF0aW9uTWVzc2FnZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbmZpcm1hdGlvbi10b3BcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgT25jZSB5b3Ugc2VsZWN0IHRoaXMgUHJvZ3JhbSwgYWxsIGRlZmF1bHQgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzXG4gICAgICAgICAgUHJvZ3JhbSB3aWxsIGFsc28gYmUgdXBkYXRlZC5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tYm90dG9tXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+QXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHByb2NlZWQ/PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cInNhdmVDaGFuZ2VzKGZhbHNlKVwiPk5PPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInllcy1idG5cIiAoY2xpY2spPVwic2F2ZUNoYW5nZXModHJ1ZSlcIj5ZRVM8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxhcHAtbG9hZGVyICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyPlxuPC9kaXY+XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
- import { ASSETS } from '../../constants/assessts.constants';
2
+ import { ASSETS } from '../../constants/assets.constants';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/forms";
5
5
  import * as i2 from "@angular/common";
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
85
85
  }], loader: [{
86
86
  type: Input
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7OztBQU81RCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3QjtRQWRTLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNqQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsV0FBTSxHQUFHLE1BQU0sQ0FBQztJQUNELENBQUM7SUFFaEIsUUFBUTtRQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUUsdUJBQXVCO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQy9ELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsdUJBQXVCO0lBQ3pCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxhQUFrQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBbERVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZhQ2pCL0IsNCtHQTZGQTs7NEZENUVhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7MEVBS2lCLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDaEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Fzc2Vzc3RzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yYWRpby1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1saXN0LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2xpc3RCbG9jaycsIHsgc3RhdGljOiBmYWxzZSB9KSBsaXN0QmxvY2shOiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSBpdGVtc0xpc3Q6IGFueSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgaWRlbnRpZmllcktleSA9ICcnO1xuICBASW5wdXQoKSBkaXNwbGF5S2V5ID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXBLZXkgPSAnJztcbiAgQElucHV0KCkgY29uZmlnITogYW55O1xuICBASW5wdXQoKSB0d29Db2x1bW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNsb3NlTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNhdmVMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgc2VhcmNoSXRlbSA9ICcnO1xuICBibG9ja1dpZHRoOiBhbnk7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuYXJyYXlUb0lkKHRoaXMuc2VsZWN0ZWRJdGVtcywgdGhpcy5pZGVudGlmaWVyS2V5KTtcbiAgICAvLyB0aGlzLnJlcmVuZGVyTGlzdCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5ibG9ja1dpZHRoID0gdGhpcy5saXN0QmxvY2s/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoO1xuICAgIH0sIDEwMCk7XG4gIH1cbiAgc2VsZWN0SXRlbShpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgfVxuICBkZWxldGVJdGVtKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIC8vIHRoaXMucmVyZW5kZXJMaXN0KCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2F2ZUxpc3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZUxpc3QuZW1pdCgpO1xuICB9XG5cbiAgYXJyYXlUb0lkKGFycmF5OiBhbnksIGlkZW50aWZpZXJLZXk6IGFueSkge1xuICAgIHJldHVybiBhcnJheS5tYXAoKGE6IGFueSkgPT4gYVtpZGVudGlmaWVyS2V5XSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyYWRpby1saXN0XCIgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJhZGlvLWxpc3QtaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj57eyBjb25maWc/LnBhbmVsVGl0bGUgfX08L2Rpdj5cbiAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJyYWRpby1saXN0LWNsb3NlXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cImNsb3NlKClcIj4mI3hlOTBkOzwvaT5cbiAgICA8L2J1dHRvbj4gLS0+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJyYWRpby1saXN0LWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LW1iLTJcIiAqbmdJZj1cImNvbmZpZz8uc2VhcmNoRW5hYmxlZFwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZz8uc2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEl0ZW1cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJsb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiaXRlbXNMaXN0IHwgc2VhcmNoIDogc2VhcmNoSXRlbSA6IGRpc3BsYXlLZXkgYXMgc2VhcmNoTGlzdFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXMgdngtbWItNFwiICpuZ0lmPVwic2VhcmNoTGlzdD8ubGVuZ3RoID4gMFwiPlxuICAgICAgICA8dWwgW2NsYXNzLnR3by1jb2x1bW5dPVwidHdvQ29sdW1uXCIgKm5nSWY9XCJzZWFyY2hMaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaExpc3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXRlbVtkaXNwbGF5S2V5XSB8IGRhdGFUeXBlKSAhPT0gJ29iamVjdCdcIj5cbiAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgIFtuYW1lXT1cIidyYWRpby1zZWxlY3RvcidcIlxuICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbShpdGVtW2lkZW50aWZpZXJLZXldKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ3J4LWNhdGVnb3J5J1wiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtW2lkZW50aWZpZXJLZXldKVwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwidG9vbHRpcEtleSA/IGl0ZW1bdG9vbHRpcEtleV0gOiBpdGVtW2Rpc3BsYXlLZXldXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW1bZGlzcGxheUtleV0gfX1cbiAgICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXRlbVtkaXNwbGF5S2V5XSB8IGRhdGFUeXBlKSA9PT0gJ29iamVjdCdcIj5cbiAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgIFtuYW1lXT1cIidyYWRpby1zZWxlY3RvcidcIlxuICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbShpdGVtW2lkZW50aWZpZXJLZXldKVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRJdGVtcy5pbmNsdWRlcyhpdGVtW2lkZW50aWZpZXJLZXldKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjYXRlZ29yeS13aXRoaW4tbGlzdFwiICNsaXN0QmxvY2s+XG4gICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW1bZGlzcGxheUtleV1cIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImJsb2NrV2lkdGggLyBpdGVtW2Rpc3BsYXlLZXldLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgID57eyBjaGlsZCB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICpuZ0lmPVwic2VhcmNoTGlzdD8ubGVuZ3RoID09PSAwICYmICFsb2FkZXJcIlxuICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwiXG4gICAgICAgICAgY29uZmlnPy5ub0RhdGFUZXh0Py5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IGNvbmZpZz8ubm9EYXRhVGV4dFxuICAgICAgICAgICAgOiAnTm8gZGF0YSB0byBkaXNwbGF5J1xuICAgICAgICBcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8YXBwLWZsb2F0aW5nLWJhclxuICAgICAgKm5nSWY9XCIhbG9hZGVyXCJcbiAgICAgIFtzZWxlY3RlZERhdGFdPVwic2VsZWN0ZWRJdGVtcyB8IGxpc3RNYXBwZXIgOiBpdGVtc0xpc3QgOiBpZGVudGlmaWVyS2V5XCJcbiAgICAgIFtkaXNwbGF5RWxlbWVudEtleV09XCJkaXNwbGF5S2V5XCJcbiAgICAgIFtzaW5ndWxhclRleHRdPVwiY29uZmlnPy5mbG9hdGluZ1RleHRTaW5ndWxhclwiXG4gICAgICBbcGx1cmFsVGV4dF09XCJcbiAgICAgICAgY29uZmlnPy5mbG9hdGluZ1RleHRQbHVyYWxcbiAgICAgICAgICA/IGNvbmZpZz8uZmxvYXRpbmdUZXh0UGx1cmFsXG4gICAgICAgICAgOiAnVXNlcnMgc2VsZWN0ZWQnXG4gICAgICBcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCJcbiAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2UoKVwiXG4gICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlSXRlbSgkZXZlbnQpXCJcbiAgICAgIFtpc0Rpc2FibGVkXT1cInNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAwIHx8IGl0ZW1zTGlzdC5sZW5ndGggPT09IDBcIlxuICAgID5cbiAgICA8L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3JhZGlvLWxpc3QvcmFkaW8tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7OztBQU8xRCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3QjtRQWRTLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUNqQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsV0FBTSxHQUFHLE1BQU0sQ0FBQztJQUNBLENBQUM7SUFFakIsUUFBUTtRQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUUsdUJBQXVCO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQy9ELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxVQUFVLENBQUMsSUFBUztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLElBQVM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsdUJBQXVCO0lBQ3pCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxhQUFrQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBbERVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZhQ2pCL0IsNCtHQTZGQTs7NEZENUVhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxnQkFBZ0I7MEVBS2lCLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDaEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmFkaW8tbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8tbGlzdC5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdsaXN0QmxvY2snLCB7IHN0YXRpYzogZmFsc2UgfSkgbGlzdEJsb2NrITogRWxlbWVudFJlZjtcbiAgQElucHV0KCkgaXRlbXNMaXN0OiBhbnkgPSBbXTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55ID0gW107XG4gIEBJbnB1dCgpIGlkZW50aWZpZXJLZXkgPSAnJztcbiAgQElucHV0KCkgZGlzcGxheUtleSA9ICcnO1xuICBASW5wdXQoKSB0b29sdGlwS2V5ID0gJyc7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IGFueTtcbiAgQElucHV0KCkgdHdvQ29sdW1uID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBjbG9zZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzYXZlTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGFuaW1hdGlvbiA9IHRydWU7XG4gIHNlYXJjaEl0ZW0gPSAnJztcbiAgYmxvY2tXaWR0aDogYW55O1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5hcnJheVRvSWQodGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLmlkZW50aWZpZXJLZXkpO1xuICAgIC8vIHRoaXMucmVyZW5kZXJMaXN0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmJsb2NrV2lkdGggPSB0aGlzLmxpc3RCbG9jaz8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGg7XG4gICAgfSwgMTAwKTtcbiAgfVxuICBzZWxlY3RJdGVtKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICB9XG4gIGRlbGV0ZUl0ZW0oaXRlbTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgLy8gdGhpcy5yZXJlbmRlckxpc3QoKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zYXZlTGlzdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmNsb3NlTGlzdC5lbWl0KCk7XG4gIH1cblxuICBhcnJheVRvSWQoYXJyYXk6IGFueSwgaWRlbnRpZmllcktleTogYW55KSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoYTogYW55KSA9PiBhW2lkZW50aWZpZXJLZXldKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJhZGlvLWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicmFkaW8tbGlzdC1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPnt7IGNvbmZpZz8ucGFuZWxUaXRsZSB9fTwvZGl2PlxuICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cInJhZGlvLWxpc3QtY2xvc2VcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwiY2xvc2UoKVwiPiYjeGU5MGQ7PC9pPlxuICAgIDwvYnV0dG9uPiAtLT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInJhZGlvLWxpc3QtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMlwiICpuZ0lmPVwiY29uZmlnPy5zZWFyY2hFbmFibGVkXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnPy5zZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoSXRlbVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJpdGVtc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2hJdGVtIDogZGlzcGxheUtleSBhcyBzZWFyY2hMaXN0XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcmllcyB2eC1tYi00XCIgKm5nSWY9XCJzZWFyY2hMaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgIDx1bCBbY2xhc3MudHdvLWNvbHVtbl09XCJ0d29Db2x1bW5cIiAqbmdJZj1cInNlYXJjaExpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VhcmNoTGlzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpdGVtW2Rpc3BsYXlLZXldIHwgZGF0YVR5cGUpICE9PSAnb2JqZWN0J1wiPlxuICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ3JhZGlvLXNlbGVjdG9yJ1wiXG4gICAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZWxlY3RJdGVtKGl0ZW1baWRlbnRpZmllcktleV0pXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCIncngtY2F0ZWdvcnknXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW1baWRlbnRpZmllcktleV0pXCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ0b29sdGlwS2V5ID8gaXRlbVt0b29sdGlwS2V5XSA6IGl0ZW1bZGlzcGxheUtleV1cIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgaXRlbVtkaXNwbGF5S2V5XSB9fVxuICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpdGVtW2Rpc3BsYXlLZXldIHwgZGF0YVR5cGUpID09PSAnb2JqZWN0J1wiPlxuICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ3JhZGlvLXNlbGVjdG9yJ1wiXG4gICAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZWxlY3RJdGVtKGl0ZW1baWRlbnRpZmllcktleV0pXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEl0ZW1zLmluY2x1ZGVzKGl0ZW1baWRlbnRpZmllcktleV0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNhdGVnb3J5LXdpdGhpbi1saXN0XCIgI2xpc3RCbG9jaz5cbiAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbVtkaXNwbGF5S2V5XVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwiYmxvY2tXaWR0aCAvIGl0ZW1bZGlzcGxheUtleV0ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7IGNoaWxkIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJzZWFyY2hMaXN0Py5sZW5ndGggPT09IDAgJiYgIWxvYWRlclwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCJcbiAgICAgICAgICBjb25maWc/Lm5vRGF0YVRleHQ/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gY29uZmlnPy5ub0RhdGFUZXh0XG4gICAgICAgICAgICA6ICdObyBkYXRhIHRvIGRpc3BsYXknXG4gICAgICAgIFwiXG4gICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxhcHAtZmxvYXRpbmctYmFyXG4gICAgICAqbmdJZj1cIiFsb2FkZXJcIlxuICAgICAgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZEl0ZW1zIHwgbGlzdE1hcHBlciA6IGl0ZW1zTGlzdCA6IGlkZW50aWZpZXJLZXlcIlxuICAgICAgW2Rpc3BsYXlFbGVtZW50S2V5XT1cImRpc3BsYXlLZXlcIlxuICAgICAgW3Npbmd1bGFyVGV4dF09XCJjb25maWc/LmZsb2F0aW5nVGV4dFNpbmd1bGFyXCJcbiAgICAgIFtwbHVyYWxUZXh0XT1cIlxuICAgICAgICBjb25maWc/LmZsb2F0aW5nVGV4dFBsdXJhbFxuICAgICAgICAgID8gY29uZmlnPy5mbG9hdGluZ1RleHRQbHVyYWxcbiAgICAgICAgICA6ICdVc2VycyBzZWxlY3RlZCdcbiAgICAgIFwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKClcIlxuICAgICAgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCJcbiAgICAgIChkZWxldGVFdmVudCk9XCJkZWxldGVJdGVtKCRldmVudClcIlxuICAgICAgW2lzRGlzYWJsZWRdPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDAgfHwgaXRlbXNMaXN0Lmxlbmd0aCA9PT0gMFwiXG4gICAgPlxuICAgIDwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==