vcomply-workflow-engine 6.1.9 → 6.1.11

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 (58) hide show
  1. package/esm2022/lib/constants/link-responsibility.constants.mjs +5 -1
  2. package/esm2022/lib/report-a-case/components/assignee/assignee.component.mjs +1 -1
  3. package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +1 -1
  4. package/esm2022/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.mjs +4 -4
  5. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +19 -10
  6. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +1 -1
  7. package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +1 -1
  8. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +1 -1
  9. package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +1 -1
  10. package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +1 -1
  11. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +1 -1
  12. package/esm2022/lib/sharedComponents/floating-bar/floating-bar.component.mjs +6 -3
  13. package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +1 -1
  14. package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -1
  15. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +1 -1
  16. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +3 -3
  17. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +2 -2
  18. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +187 -74
  19. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.interface.mjs +2 -0
  20. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.module.mjs +16 -4
  21. package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +1 -1
  22. package/esm2022/lib/sharedComponents/pipes/getRCList.pipe.mjs +24 -0
  23. package/esm2022/lib/sharedComponents/pipes/parentResponsibilitySelection.pipe.mjs +22 -0
  24. package/esm2022/lib/sharedComponents/pipes/pipe.module.mjs +20 -0
  25. package/esm2022/lib/sharedComponents/pipes/userDetails.pipe.mjs +44 -0
  26. package/esm2022/lib/sharedComponents/policy-template/select-template-list/select-template-list.component.mjs +1 -1
  27. package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +1 -1
  28. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +1 -1
  29. package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +1 -1
  30. package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +1 -1
  31. package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +1 -1
  32. package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +1 -1
  33. package/esm2022/lib/sharedComponents/risk-classification/risk-classification.component.mjs +1 -1
  34. package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +1 -1
  35. package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +1 -1
  36. package/esm2022/lib/ui-kit/avatar/avatar.component.mjs +26 -0
  37. package/esm2022/lib/ui-kit/avatar/avatar.constants.mjs +13 -0
  38. package/esm2022/lib/ui-kit/avatar/avatar.module.mjs +20 -0
  39. package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +2 -2
  40. package/esm2022/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +2 -2
  41. package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +2 -2
  42. package/esm2022/lib/workflow/shared/components/risk-category-risk-listing/risk-category-risk-listing.component.mjs +2 -2
  43. package/fesm2022/vcomply-workflow-engine.mjs +396 -121
  44. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  45. package/lib/constants/link-responsibility.constants.d.ts +4 -0
  46. package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +2 -1
  47. package/lib/sharedComponents/frequency/frequency.service.d.ts +1 -1
  48. package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +38 -3
  49. package/lib/sharedComponents/link-responsibility/link-responsibility.interface.d.ts +8 -0
  50. package/lib/sharedComponents/link-responsibility/link-responsibility.module.d.ts +4 -1
  51. package/lib/sharedComponents/pipes/getRCList.pipe.d.ts +7 -0
  52. package/lib/sharedComponents/pipes/parentResponsibilitySelection.pipe.d.ts +7 -0
  53. package/lib/sharedComponents/pipes/pipe.module.d.ts +10 -0
  54. package/lib/sharedComponents/pipes/userDetails.pipe.d.ts +11 -0
  55. package/lib/ui-kit/avatar/avatar.component.d.ts +8 -0
  56. package/lib/ui-kit/avatar/avatar.constants.d.ts +12 -0
  57. package/lib/ui-kit/avatar/avatar.module.d.ts +10 -0
  58. package/package.json +1 -1
@@ -212,7 +212,7 @@ export class RiskCategoryRiskListingComponent {
212
212
  }
213
213
  }
214
214
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RiskCategoryRiskListingComponent, deps: [{ token: i1.GrcService }], target: i0.ɵɵFactoryTarget.Component }); }
215
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RiskCategoryRiskListingComponent, isStandalone: true, selector: "app-risk-category-risk-listing", inputs: { selectedTab: "selectedTab", selectedCatAndRiskData: ["selectedCatAndRisk", "selectedCatAndRiskData"], selectedRC: "selectedRC" }, outputs: { closeUsersList: "closeUsersList" }, viewQueries: [{ propertyName: "responsibilityListingComponent", first: true, predicate: ["dataListing"], descendants: true }], ngImport: i0, template: "<div class=\"risk-category-risk-listing\" [class.animate]=\"animation\">\n <div class=\"risk-category-risk-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risks</h3></div>\n <div class=\"risk-category-risk-listing-body\">\n <app-table-card class=\"vx-w-100\" [tableCard]=\"tableCard\" [singleSelectedText]=\"'Category Selected'\" [multipleSelectedText]=\"'Categories Selected'\" (setSelectedTab)=\"setSelectedTab($event)\" [selectedTab]=\"1\"></app-table-card>\n <div class=\"search-block vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Risk Categories\" />\n </div>\n <div class=\"risk-category-risk-listing-body-inner vx-mb-2 vx-d-flex\" [class.with-noData]=\"(!isCategoryLoader && !categoriesList?.length)\">\n <ng-container *ngIf=\"isCategoryLoader || categoriesList?.length\">\n <div class=\"inner-item-left vx-pr-2\">\n <app-grc-category-listing *ngIf=\"!isCategoryLoader\" [headerText]=\"'Risk Categories'\" [categories]=\"categoriesList\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [tableCard]=\"tableCard\" [currentPage]=\"categoryCurrentPage\" [selectedTabIndex]=\"selectedTab\" [selectedCategoryIds]=\"selectedCategoryIds\" (activeSelectedCategory)=\"activeSelectedCategory($event)\" (onCategoryPageChange)=\"onCategoryPageChange($event)\"></app-grc-category-listing>\n <app-list-loader *ngIf=\"isCategoryLoader\"></app-list-loader>\n </div>\n <div class=\"inner-item-right\">\n <app-grc-risk-listing #dataListing *ngIf=\"!isRiskLoader && !isCategoryLoader && risksList?.length\" [headerText]=\"'Risk Name'\" [dataList]=\"risksList\" [activeCategory]=\"activeCategory\" [selectedCatAndRisk]=\"selectedCatAndRisk\" (changeSelectedCatAndRisk)=\"changeSelectedCatAndRisk($event)\" [currentPage]=\"riskCurrentPage\" [perPageLimit]=\"activeCategory?.categoryRiskLimit\" [totalListData]=\"activeCategory?.categoryRiskCount\" [totalPages]=\"getTotalRiskPage()\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-risk-listing>\n <app-list-loader *ngIf=\"isRiskLoader || isCategoryLoader\"></app-list-loader>\n <app-no-data *ngIf=\"risksList?.length === 0 && !(isRiskLoader || isCategoryLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\n </div>\n </ng-container>\n <app-no-data *ngIf=\"(!isCategoryLoader && !categoriesList?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\n </div>\n <app-floating-bar [selectedData]=\"selectedRisks?.length ? selectedRisks : []\" (closeList)=\"close()\" (closeEvent)=\"save()\" [displayElementKey]=\"'name'\" [singularText]=\"'Risk selected'\" [pluralText]=\"'Risks selected'\" (deleteEvent)=\"deleteEvent($event)\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .risk-category-risk-listing{position:fixed;inset:0 30px 0 0}::ng-deep .risk-category-risk-listing:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .risk-category-risk-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .risk-category-risk-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .risk-category-risk-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .risk-category-risk-listing-body .search-block{position:relative}::ng-deep .risk-category-risk-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .risk-category-risk-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .risk-category-risk-listing-body .search-block input::placeholder{color:#747576}::ng-deep .risk-category-risk-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .risk-category-risk-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .risk-category-risk-listing-body-inner.with-noData{align-items:center;justify-content:center}::ng-deep .risk-category-risk-listing-body-inner .inner-item-left{width:25%}::ng-deep .risk-category-risk-listing-body-inner .inner-item-right{width:75%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: FormgroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FloatingBarModule }, { kind: "component", type: i3.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: TableCardComponent, selector: "app-table-card", inputs: ["singleSelectedText", "multipleSelectedText", "selectedTab", "tableCard"], outputs: ["setSelectedTab"] }, { kind: "component", type: GrcCategoryListingComponent, selector: "app-grc-category-listing", inputs: ["tableCard", "headerText", "currentPage", "selectedTabIndex", "selectedCatAndRisk", "selectedCategoryIds", "categories", "programData"], outputs: ["activeSelectedCategory", "onCategoryPageChange"] }, { kind: "component", type: GrcRiskListingComponent, selector: "app-grc-risk-listing", inputs: ["tableCard", "activeCategory", "headerText", "currentPage", "perPageLimit", "totalListData", "totalPages", "selectedListData", "selectedListDataIds", "selectedCatAndRisk", "calledFrom", "dataList"], outputs: ["getUpdatedDataList", "changeSelectedCatAndRisk"] }, { kind: "ngmodule", type: ListLoaderModule }, { kind: "component", type: i4.ListLoaderComponent, selector: "app-list-loader" }, { kind: "ngmodule", type: NoDataModule }, { kind: "component", type: i5.NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }] }); }
215
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RiskCategoryRiskListingComponent, isStandalone: true, selector: "app-risk-category-risk-listing", inputs: { selectedTab: "selectedTab", selectedCatAndRiskData: ["selectedCatAndRisk", "selectedCatAndRiskData"], selectedRC: "selectedRC" }, outputs: { closeUsersList: "closeUsersList" }, viewQueries: [{ propertyName: "responsibilityListingComponent", first: true, predicate: ["dataListing"], descendants: true }], ngImport: i0, template: "<div class=\"risk-category-risk-listing\" [class.animate]=\"animation\">\n <div class=\"risk-category-risk-listing-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\">\n <h3 class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select Risks</h3></div>\n <div class=\"risk-category-risk-listing-body\">\n <app-table-card class=\"vx-w-100\" [tableCard]=\"tableCard\" [singleSelectedText]=\"'Category Selected'\" [multipleSelectedText]=\"'Categories Selected'\" (setSelectedTab)=\"setSelectedTab($event)\" [selectedTab]=\"1\"></app-table-card>\n <div class=\"search-block vx-mb-2\">\n <i class=\"icons\">&#xe90b;</i>\n <input type=\"text\" #searchRiskCategory (keyup.enter)=\"handleSearch($event.target.value)\" placeholder=\"Search Risk Categories\" />\n </div>\n <div class=\"risk-category-risk-listing-body-inner vx-mb-2 vx-d-flex\" [class.with-noData]=\"(!isCategoryLoader && !categoriesList?.length)\">\n <ng-container *ngIf=\"isCategoryLoader || categoriesList?.length\">\n <div class=\"inner-item-left vx-pr-2\">\n <app-grc-category-listing *ngIf=\"!isCategoryLoader\" [headerText]=\"'Risk Categories'\" [categories]=\"categoriesList\" [selectedCatAndRisk]=\"selectedCatAndRisk\" [tableCard]=\"tableCard\" [currentPage]=\"categoryCurrentPage\" [selectedTabIndex]=\"selectedTab\" [selectedCategoryIds]=\"selectedCategoryIds\" (activeSelectedCategory)=\"activeSelectedCategory($event)\" (onCategoryPageChange)=\"onCategoryPageChange($event)\"></app-grc-category-listing>\n <app-list-loader *ngIf=\"isCategoryLoader\"></app-list-loader>\n </div>\n <div class=\"inner-item-right\">\n <app-grc-risk-listing #dataListing *ngIf=\"!isRiskLoader && !isCategoryLoader && risksList?.length\" [headerText]=\"'Risk Name'\" [dataList]=\"risksList\" [activeCategory]=\"activeCategory\" [selectedCatAndRisk]=\"selectedCatAndRisk\" (changeSelectedCatAndRisk)=\"changeSelectedCatAndRisk($event)\" [currentPage]=\"riskCurrentPage\" [perPageLimit]=\"activeCategory?.categoryRiskLimit\" [totalListData]=\"activeCategory?.categoryRiskCount\" [totalPages]=\"getTotalRiskPage()\" (getUpdatedDataList)=\"getUpdatedDataList($event)\" ></app-grc-risk-listing>\n <app-list-loader *ngIf=\"isRiskLoader || isCategoryLoader\"></app-list-loader>\n <app-no-data *ngIf=\"risksList?.length === 0 && !(isRiskLoader || isCategoryLoader)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\n </div>\n </ng-container>\n <app-no-data *ngIf=\"(!isCategoryLoader && !categoriesList?.length)\" [noDataImage]=\"CDN_LINK?.noData\" [noDataText]=\"'No data to display'\"></app-no-data>\n </div>\n <app-floating-bar [selectedData]=\"selectedRisks?.length ? selectedRisks : []\" (closeList)=\"close()\" (closeEvent)=\"save()\" [displayElementKey]=\"'name'\" [singularText]=\"'Risk selected'\" [pluralText]=\"'Risks selected'\" (deleteEvent)=\"deleteEvent($event)\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";::ng-deep .risk-category-risk-listing{position:fixed;inset:0 30px 0 0}::ng-deep .risk-category-risk-listing:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .risk-category-risk-listing.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .risk-category-risk-listing-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .risk-category-risk-listing-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .risk-category-risk-listing-body .search-block{position:relative}::ng-deep .risk-category-risk-listing-body .search-block input{height:2.75rem;line-height:1.5rem;padding:.5rem 1rem .5rem 2.5rem;outline:none;border:1px solid #7475763f;border-radius:.25rem;width:100%;font-size:14px;color:#747576}::ng-deep .risk-category-risk-listing-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .risk-category-risk-listing-body .search-block input::placeholder{color:#747576}::ng-deep .risk-category-risk-listing-body .search-block i{position:absolute;left:1rem;font-size:12px;font-weight:400;top:1rem;pointer-events:none;color:#f1f1f1}::ng-deep .risk-category-risk-listing-body-inner{height:calc(100vh - 17.5rem)}::ng-deep .risk-category-risk-listing-body-inner.with-noData{align-items:center;justify-content:center}::ng-deep .risk-category-risk-listing-body-inner .inner-item-left{width:25%}::ng-deep .risk-category-risk-listing-body-inner .inner-item-right{width:75%}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: FormgroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FloatingBarModule }, { kind: "component", type: i3.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: TableCardComponent, selector: "app-table-card", inputs: ["singleSelectedText", "multipleSelectedText", "selectedTab", "tableCard"], outputs: ["setSelectedTab"] }, { kind: "component", type: GrcCategoryListingComponent, selector: "app-grc-category-listing", inputs: ["tableCard", "headerText", "currentPage", "selectedTabIndex", "selectedCatAndRisk", "selectedCategoryIds", "categories", "programData"], outputs: ["activeSelectedCategory", "onCategoryPageChange"] }, { kind: "component", type: GrcRiskListingComponent, selector: "app-grc-risk-listing", inputs: ["tableCard", "activeCategory", "headerText", "currentPage", "perPageLimit", "totalListData", "totalPages", "selectedListData", "selectedListDataIds", "selectedCatAndRisk", "calledFrom", "dataList"], outputs: ["getUpdatedDataList", "changeSelectedCatAndRisk"] }, { kind: "ngmodule", type: ListLoaderModule }, { kind: "component", type: i4.ListLoaderComponent, selector: "app-list-loader" }, { kind: "ngmodule", type: NoDataModule }, { kind: "component", type: i5.NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }] }); }
216
216
  }
217
217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RiskCategoryRiskListingComponent, decorators: [{
218
218
  type: Component,
@@ -238,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
238
238
  type: ViewChild,
239
239
  args: ['dataListing']
240
240
  }] } });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFekYs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R0FBaEMsZ0NBQWdDLG9aQzVDN0MsaW1HQXlCTSwwd0RERUYsWUFBWSxrSUFDWixhQUFhLDhCQUNiLGVBQWUsOEJBQ2YsYUFBYSw4QkFDYixpQkFBaUIseWpCQUNqQixnQkFBZ0IsK0JBQ2hCLGtCQUFrQiw0S0FDbEIsMkJBQTJCLG9SQUMzQix1QkFBdUIsNlVBQ3ZCLGdCQUFnQixnSEFDaEIsWUFBWTs7NEZBT0gsZ0NBQWdDO2tCQXJCNUMsU0FBUzsrQkFDRSxnQ0FBZ0MsY0FDOUIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsWUFBWTtxQkFDYixVQUdPLENBQUMsYUFBYSxDQUFDLFdBQ2QsQ0FBQyxnQkFBZ0IsQ0FBQztpR0EwQk0sc0JBQXNCO3NCQUF0RCxLQUFLO3VCQUFDLG9CQUFvQjtnQkFNbEIsVUFBVTtzQkFBbEIsS0FBSztnQkFLTiw4QkFBOEI7c0JBRDdCLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvYXRpbmdCYXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIubW9kdWxlJztcbmltcG9ydCB7IEZvcm1ncm91cE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9mb3JtZ3JvdXAvZm9ybWdyb3VwLm1vZHVsZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi91aS1raXQvdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBUYWJsZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1jYXJkL3RhYmxlLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1jYXRlZ29yeS1saXN0aW5nL2dyYy1jYXRlZ29yeS1saXN0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmNSaXNrTGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1yaXNrLWxpc3RpbmcvZ3JjLXJpc2stbGlzdGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JjU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCB7IFRBQkxFX0NBUkQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ3JjT2JqZWN0LmNvbnN0YW50JztcbmltcG9ydCB7IE5vRGF0YU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9uby1kYXRhL25vLWRhdGEubW9kdWxlJztcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Nkbi1saW5rLmNvbnN0YW50JztcbmltcG9ydCB7IExpc3RMb2FkZXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2xpc3QtbG9hZGVyL2xpc3QtbG9hZGVyLm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcbiAgICBGb3JtZ3JvdXBNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBGbG9hdGluZ0Jhck1vZHVsZSxcbiAgICBQYWdpbmF0aW9uTW9kdWxlLFxuICAgIFRhYmxlQ2FyZENvbXBvbmVudCxcbiAgICBHcmNDYXRlZ29yeUxpc3RpbmdDb21wb25lbnQsXG4gICAgR3JjUmlza0xpc3RpbmdDb21wb25lbnQsXG4gICAgTGlzdExvYWRlck1vZHVsZSxcbiAgICBOb0RhdGFNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLmNvbXBvbmVudC5sZXNzJ10sXG4gIGlucHV0czogWydzZWxlY3RlZFRhYiddLFxuICBvdXRwdXRzOiBbJ2Nsb3NlVXNlcnNMaXN0J10sXG59KVxuZXhwb3J0IGNsYXNzIFJpc2tDYXRlZ29yeVJpc2tMaXN0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdGFibGVDYXJkID0gVEFCTEVfQ0FSRDtcbiAgQ0ROX0xJTksgPSBMSU5LUztcblxuICBjYXRlZ29yeVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcmlza1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBhbmltYXRpb24gPSBmYWxzZTtcbiAgaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xuICBpc1Jpc2tMb2FkZXIgPSBmYWxzZTtcblxuICBzZWxlY3RlZFRhYjogbnVtYmVyID0gMTtcbiAgY2F0ZWdvcnlDdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgc2VhcmNoU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgY2F0ZWdvcmllc0xpc3Q6IGFueSA9IFtdO1xuICByaXNrc0xpc3Q6IGFueSA9IFtdO1xuICBhY3RpdmVDYXRlZ29yeTogYW55ID0ge307XG4gIHJpc2tDdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgc2VsZWN0ZWRDYXRBbmRSaXNrOiBhbnkgPSBbXTtcbiAgcHJlU2VsZWN0ZWRDYXRBbmRSaXNrOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRDYXRlZ29yeUlkczogYW55ID0gW107XG4gIHNlbGVjdGVkQ2F0ZWdvcmllczogYW55ID0gW107XG4gIHNlbGVjdGVkUmlza3M6IGFueSA9IFtdO1xuXG4gIEBJbnB1dCgnc2VsZWN0ZWRDYXRBbmRSaXNrJykgc2V0IHNlbGVjdGVkQ2F0QW5kUmlza0RhdGEodmFsdWU6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRBbmRSaXNrID0gdmFsdWU7XG4gICAgdGhpcy5wcmVTZWxlY3RlZENhdEFuZFJpc2sgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgdGhpcy5nZXRTZWxlY3RlZENhdGVnb3JpZXNJZCh0aGlzLnNlbGVjdGVkQ2F0QW5kUmlzayk7XG4gICAgdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZWxlY3RlZFJDOiBhbnlbXSA9IFtdO1xuXG4gIGNsb3NlVXNlcnNMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdkYXRhTGlzdGluZycpXG4gIHJlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCE6IEdyY1Jpc2tMaXN0aW5nQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0NvdW50KCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZFRhYihldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IGV2ZW50Py50eXBlO1xuICAgIHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgbGV0IHF1ZXJ5UGFyYW0gPSB7XG4gICAgICBwYWdlTm86IHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA/PyAxLFxuICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZyA/PyAnJyxcbiAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRUYWIgPz8gMSxcbiAgICB9O1xuICAgIHRoaXMuaXNDYXRlZ29yeUxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jYXRlZ29yeVN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JjU2VydmljZVxuICAgICAgLmdldFJpc2tDYXRlZ29yaWVzKHF1ZXJ5UGFyYW0pXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0ID0gcmVzPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNhdGVnb3J5LFxuICAgICAgICAgICAgICBuYW1lOiBjYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5yaXNrQ3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNMaXN0Py5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5jYXRlZ29yaWVzTGlzdFswXVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0Py5sZW5ndGggPyB0aGlzLmdldFJpc2tMaXN0KCkgOiBudWxsO1xuICAgICAgICAgIHRoaXMuaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzQ2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldENhdGVnb3JpZXNDb3VudCgpIHtcbiAgICBsZXQgcXVlcnlQYXJhbSA9IHtcbiAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgPz8gJycsXG4gICAgICByY19pZHM6IHRoaXMuc2VsZWN0ZWRSQz8ubWFwKChyYzogYW55KSA9PiByYz8ucmNfaWQpID8/IFtdLFxuICAgIH07XG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldFJpc2tDYXRlZ29yaWVzQ291bnQocXVlcnlQYXJhbSkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVDYXJkID0gcmVzLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5jYXRlZ29yeVR5cGVOYW1lLFxuICAgICAgICAgICAgY291bnQ6IGl0ZW0/LmNhdGVnb3J5Q291bnQsXG4gICAgICAgICAgICB0eXBlOiBpdGVtPy5jYXRlZ29yeVR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgKGVycjogYW55KSA9PiB7fVxuICAgICk7XG4gIH1cblxuICBnZXRSaXNrTGlzdChjbGlja2VkVHlwZT86IGFueSkge1xuICAgIGlmICh0aGlzLnJpc2tTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucmlza1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBsZXQgcGF5bG9hZCA9IHtcbiAgICAgIHA6IHRoaXMucmlza0N1cnJlbnRQYWdlID8/IDEsXG4gICAgICBxOiB0aGlzLnNlYXJjaFN0cmluZyA/PyAnJyxcbiAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRUYWIgPz8gMSxcbiAgICAgIHNvdXJjZTogJ3Jpc2tfY2F0ZWdvcnknLFxuICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMuYWN0aXZlQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkID8/IFtdLFxuICAgICAgcmNfaWRzOiB0aGlzLnNlbGVjdGVkUkM/Lm1hcCgocmM6IGFueSkgPT4gcmM/LnJjX2lkKS5qb2luKCkgPz8gJycsXG4gICAgfTtcbiAgICB0aGlzLmlzUmlza0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yaXNrU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlLmdldFJpc2tzKHBheWxvYWQpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJpc2tzTGlzdCA9IHRoaXMuc2V0RGF0YUxpc3RTdHJ1Y3R1cmUocmVzKTtcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0RGF0YUxpc3RTdHJ1Y3R1cmUocmVzOiBhbnkpIHtcbiAgICBjb25zdCBkYXRhID0gcmVzPy5tYXAoKHJpc2s6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmlzayxcbiAgICAgICAgbmFtZTogcmlzaz8uUmlza05hbWUsXG4gICAgICAgIGNvbnRyb2xJZDogcmlzaz8uUmlza0NvbnRyb2xJZCxcbiAgICAgICAgX2lkOiByaXNrPy5FbmNyeXB0ZWRSaXNrSWQsXG4gICAgICAgIGVudHJ1c3RlZEJ5OiB7XG4gICAgICAgICAgbmFtZTogcmlzaz8uTWVtYmVyTmFtZSxcbiAgICAgICAgICBlbWFpbDogcmlzaz8uTWVtYmVyRW1haWwsXG4gICAgICAgICAgcHJvZmlsZVBpYzogcmlzaz8uTWVtYmVyUHJvZmlsZVBpYyA/PyAnJyxcbiAgICAgICAgICBzaG9ydE5hbWU6IHJpc2s/Lk1lbWJlclNvcnROYW1lLFxuICAgICAgICB9LFxuICAgICAgICBlbnRydXN0ZWRUbzoge30sXG4gICAgICAgIHdpdGhpbkRhdGE6IHJpc2s/LkVudGl0eT8ubWFwKCh3aXRoaW46IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiB3aXRoaW4/LnJjX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYWN0aXZlU2VsZWN0ZWRDYXRlZ29yeShldmVudDogYW55KSB7XG4gICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IGV2ZW50Py5jYXRlZ29yeTtcbiAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5nZXRSaXNrTGlzdChldmVudD8uY2xpY2tlZFR5cGUpO1xuICB9XG5cbiAgZ2V0VXBkYXRlZERhdGFMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm87XG4gICAgdGhpcy5nZXRSaXNrTGlzdCgpO1xuICB9XG5cbiAgZ2V0VG90YWxSaXNrUGFnZSgpIHtcbiAgICBjb25zdCB0b3RhbFBhZ2UgPVxuICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrQ291bnQgL1xuICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrTGltaXQ7XG4gICAgcmV0dXJuIE1hdGguY2VpbChNYXRoLmFicyh0b3RhbFBhZ2UpKTtcbiAgfVxuXG4gIGhhbmRsZVNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XG4gICAgICB0aGlzLmNhdGVnb3J5Q3VycmVudFBhZ2UgPSAxO1xuICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSBldmVudDtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0NvdW50KCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZVVzZXJzTGlzdC5lbWl0KHRoaXMucHJlU2VsZWN0ZWRDYXRBbmRSaXNrKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5jbG9zZVVzZXJzTGlzdC5lbWl0KHRoaXMuc2VsZWN0ZWRDYXRBbmRSaXNrKTtcbiAgfVxuXG4gIG9uQ2F0ZWdvcnlQYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNhdGVnb3J5Q3VycmVudFBhZ2UgPSBldmVudD8ucGFnZU5vO1xuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGVkQ2F0QW5kUmlzayhldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhdEFuZFJpc2sgPSBldmVudDtcbiAgICB0aGlzLmdldFJpc2tDYXRlZ29yeVBheWxvYWQoZXZlbnQpO1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRDYXRlZ29yaWVzSWQodGhpcy5zZWxlY3RlZENhdEFuZFJpc2spO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDYXRlZ29yaWVzSWQoc2VsZWN0ZWREYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlJZHMgPSBbXTtcbiAgICBzZWxlY3RlZERhdGE/LmZvckVhY2goKHNlbGVjdGVkOiBhbnkpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZD8uY2F0ZWdvcnk/Ll9pZCA9PT0gJ3VuY2F0ZWdvcml6ZWQnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkcz8ucHVzaCgndW5jYXRlZ29yaXplZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWRzPy5wdXNoKHNlbGVjdGVkPy5jYXRlZ29yeT8uY2F0ZWdvcnlfaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChzZWxlY3RlZERhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSaXNrcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XG4gICAgc2VsZWN0ZWREYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFJpc2tzLnB1c2goLi4uaXRlbT8ucmlza3MpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMucHVzaChpdGVtPy5jYXRlZ29yeSk7XG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVFdmVudChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkID09IGV2ZW50Py5DYXRlZ29yeUlkc1swXSkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxpc3RpbmdDb21wb25lbnQuZ2V0U2VsZWN0ZWREYXRhKGV2ZW50LCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50Py5kZWxldGVTZWxlY3RlZFJpc2soXG4gICAgICAgIGV2ZW50Py5DYXRlZ29yeUlkc1swXSxcbiAgICAgICAgZXZlbnRcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmdcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmctaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBSaXNrczwvaDM+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHlcIj5cbiAgICAgICAgPGFwcC10YWJsZS1jYXJkIGNsYXNzPVwidngtdy0xMDBcIiBbdGFibGVDYXJkXT1cInRhYmxlQ2FyZFwiIFtzaW5nbGVTZWxlY3RlZFRleHRdPVwiJ0NhdGVnb3J5IFNlbGVjdGVkJ1wiIFttdWx0aXBsZVNlbGVjdGVkVGV4dF09XCInQ2F0ZWdvcmllcyBTZWxlY3RlZCdcIiAoc2V0U2VsZWN0ZWRUYWIpPVwic2V0U2VsZWN0ZWRUYWIoJGV2ZW50KVwiIFtzZWxlY3RlZFRhYl09XCIxXCI+PC9hcHAtdGFibGUtY2FyZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ibG9jayB2eC1tYi0yXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICAjc2VhcmNoUmlza0NhdGVnb3J5IChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSaXNrIENhdGVnb3JpZXNcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHktaW5uZXIgdngtbWItMiB2eC1kLWZsZXhcIiBbY2xhc3Mud2l0aC1ub0RhdGFdPVwiKCFpc0NhdGVnb3J5TG9hZGVyICYmICFjYXRlZ29yaWVzTGlzdD8ubGVuZ3RoKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ2F0ZWdvcnlMb2FkZXIgfHwgY2F0ZWdvcmllc0xpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1pdGVtLWxlZnQgdngtcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWdyYy1jYXRlZ29yeS1saXN0aW5nICpuZ0lmPVwiIWlzQ2F0ZWdvcnlMb2FkZXJcIiBbaGVhZGVyVGV4dF09XCInUmlzayBDYXRlZ29yaWVzJ1wiIFtjYXRlZ29yaWVzXT1cImNhdGVnb3JpZXNMaXN0XCIgIFtzZWxlY3RlZENhdEFuZFJpc2tdPVwic2VsZWN0ZWRDYXRBbmRSaXNrXCIgW3RhYmxlQ2FyZF09XCJ0YWJsZUNhcmRcIiBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcnlDdXJyZW50UGFnZVwiIFtzZWxlY3RlZFRhYkluZGV4XT1cInNlbGVjdGVkVGFiXCIgW3NlbGVjdGVkQ2F0ZWdvcnlJZHNdPVwic2VsZWN0ZWRDYXRlZ29yeUlkc1wiIChhY3RpdmVTZWxlY3RlZENhdGVnb3J5KT1cImFjdGl2ZVNlbGVjdGVkQ2F0ZWdvcnkoJGV2ZW50KVwiIChvbkNhdGVnb3J5UGFnZUNoYW5nZSk9XCJvbkNhdGVnb3J5UGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9hcHAtZ3JjLWNhdGVnb3J5LWxpc3Rpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJpc0NhdGVnb3J5TG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlubmVyLWl0ZW0tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1ncmMtcmlzay1saXN0aW5nICNkYXRhTGlzdGluZyAqbmdJZj1cIiFpc1Jpc2tMb2FkZXIgJiYgIWlzQ2F0ZWdvcnlMb2FkZXIgJiYgcmlza3NMaXN0Py5sZW5ndGhcIiBbaGVhZGVyVGV4dF09XCInUmlzayBOYW1lJ1wiIFtkYXRhTGlzdF09XCJyaXNrc0xpc3RcIiBbYWN0aXZlQ2F0ZWdvcnldPVwiYWN0aXZlQ2F0ZWdvcnlcIiBbc2VsZWN0ZWRDYXRBbmRSaXNrXT1cInNlbGVjdGVkQ2F0QW5kUmlza1wiIChjaGFuZ2VTZWxlY3RlZENhdEFuZFJpc2spPVwiY2hhbmdlU2VsZWN0ZWRDYXRBbmRSaXNrKCRldmVudClcIiBbY3VycmVudFBhZ2VdPVwicmlza0N1cnJlbnRQYWdlXCIgW3BlclBhZ2VMaW1pdF09XCJhY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrTGltaXRcIiBbdG90YWxMaXN0RGF0YV09XCJhY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrQ291bnRcIiBbdG90YWxQYWdlc109XCJnZXRUb3RhbFJpc2tQYWdlKClcIiAoZ2V0VXBkYXRlZERhdGFMaXN0KT1cImdldFVwZGF0ZWREYXRhTGlzdCgkZXZlbnQpXCIgPjwvYXBwLWdyYy1yaXNrLWxpc3Rpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJpc1Jpc2tMb2FkZXIgfHwgaXNDYXRlZ29yeUxvYWRlclwiPjwvYXBwLWxpc3QtbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJyaXNrc0xpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhKGlzUmlza0xvYWRlciB8fCBpc0NhdGVnb3J5TG9hZGVyKVwiIFtub0RhdGFJbWFnZV09XCJDRE5fTElOSz8ubm9EYXRhXCIgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIj48L2FwcC1uby1kYXRhPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCIoIWlzQ2F0ZWdvcnlMb2FkZXIgJiYgIWNhdGVnb3JpZXNMaXN0Py5sZW5ndGgpXCIgW25vRGF0YUltYWdlXT1cIkNETl9MSU5LPy5ub0RhdGFcIiBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiPjwvYXBwLW5vLWRhdGE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWZsb2F0aW5nLWJhciAgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZFJpc2tzPy5sZW5ndGggPyBzZWxlY3RlZFJpc2tzIDogW11cIiAgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCIgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCIgIFtkaXNwbGF5RWxlbWVudEtleV09XCInbmFtZSdcIiBbc2luZ3VsYXJUZXh0XT1cIidSaXNrIHNlbGVjdGVkJ1wiIFtwbHVyYWxUZXh0XT1cIidSaXNrcyBzZWxlY3RlZCdcIiAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlRXZlbnQoJGV2ZW50KVwiPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3cvc2hhcmVkL2NvbXBvbmVudHMvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3Rpbmcvcmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDckcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFekYs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R0FBaEMsZ0NBQWdDLG9aQzVDN0MsaW1HQXlCTSwwd0RERUYsWUFBWSxrSUFDWixhQUFhLDhCQUNiLGVBQWUsOEJBQ2YsYUFBYSw4QkFDYixpQkFBaUIsNmtCQUNqQixnQkFBZ0IsK0JBQ2hCLGtCQUFrQiw0S0FDbEIsMkJBQTJCLG9SQUMzQix1QkFBdUIsNlVBQ3ZCLGdCQUFnQixnSEFDaEIsWUFBWTs7NEZBT0gsZ0NBQWdDO2tCQXJCNUMsU0FBUzsrQkFDRSxnQ0FBZ0MsY0FDOUIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsMkJBQTJCO3dCQUMzQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsWUFBWTtxQkFDYixVQUdPLENBQUMsYUFBYSxDQUFDLFdBQ2QsQ0FBQyxnQkFBZ0IsQ0FBQztpR0EwQk0sc0JBQXNCO3NCQUF0RCxLQUFLO3VCQUFDLG9CQUFvQjtnQkFNbEIsVUFBVTtzQkFBbEIsS0FBSztnQkFLTiw4QkFBOEI7c0JBRDdCLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvYXRpbmdCYXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2Zsb2F0aW5nLWJhci9mbG9hdGluZy1iYXIubW9kdWxlJztcbmltcG9ydCB7IEZvcm1ncm91cE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9mb3JtZ3JvdXAvZm9ybWdyb3VwLm1vZHVsZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdWkta2l0L3BhZ2luYXRpb24vcGFnaW5hdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9wb3BvdmVyL3BvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi91aS1raXQvdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBUYWJsZUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1jYXJkL3RhYmxlLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyY0NhdGVnb3J5TGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1jYXRlZ29yeS1saXN0aW5nL2dyYy1jYXRlZ29yeS1saXN0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmNSaXNrTGlzdGluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dyYy1yaXNrLWxpc3RpbmcvZ3JjLXJpc2stbGlzdGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JjU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCB7IFRBQkxFX0NBUkQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ3JjT2JqZWN0LmNvbnN0YW50JztcbmltcG9ydCB7IE5vRGF0YU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uL3VpLWtpdC9uby1kYXRhL25vLWRhdGEubW9kdWxlJztcbmltcG9ydCB7IExJTktTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Nkbi1saW5rLmNvbnN0YW50JztcbmltcG9ydCB7IExpc3RMb2FkZXJNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2xpc3QtbG9hZGVyL2xpc3QtbG9hZGVyLm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcbiAgICBGb3JtZ3JvdXBNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBGbG9hdGluZ0Jhck1vZHVsZSxcbiAgICBQYWdpbmF0aW9uTW9kdWxlLFxuICAgIFRhYmxlQ2FyZENvbXBvbmVudCxcbiAgICBHcmNDYXRlZ29yeUxpc3RpbmdDb21wb25lbnQsXG4gICAgR3JjUmlza0xpc3RpbmdDb21wb25lbnQsXG4gICAgTGlzdExvYWRlck1vZHVsZSxcbiAgICBOb0RhdGFNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yaXNrLWNhdGVnb3J5LXJpc2stbGlzdGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLmNvbXBvbmVudC5sZXNzJ10sXG4gIGlucHV0czogWydzZWxlY3RlZFRhYiddLFxuICBvdXRwdXRzOiBbJ2Nsb3NlVXNlcnNMaXN0J10sXG59KVxuZXhwb3J0IGNsYXNzIFJpc2tDYXRlZ29yeVJpc2tMaXN0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdGFibGVDYXJkID0gVEFCTEVfQ0FSRDtcbiAgQ0ROX0xJTksgPSBMSU5LUztcblxuICBjYXRlZ29yeVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcmlza1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBhbmltYXRpb24gPSBmYWxzZTtcbiAgaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xuICBpc1Jpc2tMb2FkZXIgPSBmYWxzZTtcblxuICBzZWxlY3RlZFRhYjogbnVtYmVyID0gMTtcbiAgY2F0ZWdvcnlDdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgc2VhcmNoU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgY2F0ZWdvcmllc0xpc3Q6IGFueSA9IFtdO1xuICByaXNrc0xpc3Q6IGFueSA9IFtdO1xuICBhY3RpdmVDYXRlZ29yeTogYW55ID0ge307XG4gIHJpc2tDdXJyZW50UGFnZTogbnVtYmVyID0gMTtcbiAgc2VsZWN0ZWRDYXRBbmRSaXNrOiBhbnkgPSBbXTtcbiAgcHJlU2VsZWN0ZWRDYXRBbmRSaXNrOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRDYXRlZ29yeUlkczogYW55ID0gW107XG4gIHNlbGVjdGVkQ2F0ZWdvcmllczogYW55ID0gW107XG4gIHNlbGVjdGVkUmlza3M6IGFueSA9IFtdO1xuXG4gIEBJbnB1dCgnc2VsZWN0ZWRDYXRBbmRSaXNrJykgc2V0IHNlbGVjdGVkQ2F0QW5kUmlza0RhdGEodmFsdWU6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRBbmRSaXNrID0gdmFsdWU7XG4gICAgdGhpcy5wcmVTZWxlY3RlZENhdEFuZFJpc2sgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgdGhpcy5nZXRTZWxlY3RlZENhdGVnb3JpZXNJZCh0aGlzLnNlbGVjdGVkQ2F0QW5kUmlzayk7XG4gICAgdGhpcy5nZXRSaXNrQ2F0ZWdvcnlQYXlsb2FkKHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZWxlY3RlZFJDOiBhbnlbXSA9IFtdO1xuXG4gIGNsb3NlVXNlcnNMaXN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdkYXRhTGlzdGluZycpXG4gIHJlc3BvbnNpYmlsaXR5TGlzdGluZ0NvbXBvbmVudCE6IEdyY1Jpc2tMaXN0aW5nQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0NvdW50KCk7XG4gIH1cblxuICBzZXRTZWxlY3RlZFRhYihldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IGV2ZW50Py50eXBlO1xuICAgIHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XG4gICAgaWYgKHRoaXMuY2F0ZWdvcnlTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgbGV0IHF1ZXJ5UGFyYW0gPSB7XG4gICAgICBwYWdlTm86IHRoaXMuY2F0ZWdvcnlDdXJyZW50UGFnZSA/PyAxLFxuICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZyA/PyAnJyxcbiAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRUYWIgPz8gMSxcbiAgICB9O1xuICAgIHRoaXMuaXNDYXRlZ29yeUxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jYXRlZ29yeVN1YnNjcmlwdGlvbiA9IHRoaXMuZ3JjU2VydmljZVxuICAgICAgLmdldFJpc2tDYXRlZ29yaWVzKHF1ZXJ5UGFyYW0pXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0ID0gcmVzPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNhdGVnb3J5LFxuICAgICAgICAgICAgICBuYW1lOiBjYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5yaXNrQ3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgIHRoaXMuYWN0aXZlQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXNMaXN0Py5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy5jYXRlZ29yaWVzTGlzdFswXVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0Py5sZW5ndGggPyB0aGlzLmdldFJpc2tMaXN0KCkgOiBudWxsO1xuICAgICAgICAgIHRoaXMuaXNDYXRlZ29yeUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzQ2F0ZWdvcnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldENhdGVnb3JpZXNDb3VudCgpIHtcbiAgICBsZXQgcXVlcnlQYXJhbSA9IHtcbiAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgPz8gJycsXG4gICAgICByY19pZHM6IHRoaXMuc2VsZWN0ZWRSQz8ubWFwKChyYzogYW55KSA9PiByYz8ucmNfaWQpID8/IFtdLFxuICAgIH07XG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldFJpc2tDYXRlZ29yaWVzQ291bnQocXVlcnlQYXJhbSkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVDYXJkID0gcmVzLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5jYXRlZ29yeVR5cGVOYW1lLFxuICAgICAgICAgICAgY291bnQ6IGl0ZW0/LmNhdGVnb3J5Q291bnQsXG4gICAgICAgICAgICB0eXBlOiBpdGVtPy5jYXRlZ29yeVR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgKGVycjogYW55KSA9PiB7fVxuICAgICk7XG4gIH1cblxuICBnZXRSaXNrTGlzdChjbGlja2VkVHlwZT86IGFueSkge1xuICAgIGlmICh0aGlzLnJpc2tTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucmlza1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBsZXQgcGF5bG9hZCA9IHtcbiAgICAgIHA6IHRoaXMucmlza0N1cnJlbnRQYWdlID8/IDEsXG4gICAgICBxOiB0aGlzLnNlYXJjaFN0cmluZyA/PyAnJyxcbiAgICAgIHR5cGU6IHRoaXMuc2VsZWN0ZWRUYWIgPz8gMSxcbiAgICAgIHNvdXJjZTogJ3Jpc2tfY2F0ZWdvcnknLFxuICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMuYWN0aXZlQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkID8/IFtdLFxuICAgICAgcmNfaWRzOiB0aGlzLnNlbGVjdGVkUkM/Lm1hcCgocmM6IGFueSkgPT4gcmM/LnJjX2lkKS5qb2luKCkgPz8gJycsXG4gICAgfTtcbiAgICB0aGlzLmlzUmlza0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yaXNrU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlLmdldFJpc2tzKHBheWxvYWQpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJpc2tzTGlzdCA9IHRoaXMuc2V0RGF0YUxpc3RTdHJ1Y3R1cmUocmVzKTtcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jpc2tMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0RGF0YUxpc3RTdHJ1Y3R1cmUocmVzOiBhbnkpIHtcbiAgICBjb25zdCBkYXRhID0gcmVzPy5tYXAoKHJpc2s6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmlzayxcbiAgICAgICAgbmFtZTogcmlzaz8uUmlza05hbWUsXG4gICAgICAgIGNvbnRyb2xJZDogcmlzaz8uUmlza0NvbnRyb2xJZCxcbiAgICAgICAgX2lkOiByaXNrPy5FbmNyeXB0ZWRSaXNrSWQsXG4gICAgICAgIGVudHJ1c3RlZEJ5OiB7XG4gICAgICAgICAgbmFtZTogcmlzaz8uTWVtYmVyTmFtZSxcbiAgICAgICAgICBlbWFpbDogcmlzaz8uTWVtYmVyRW1haWwsXG4gICAgICAgICAgcHJvZmlsZVBpYzogcmlzaz8uTWVtYmVyUHJvZmlsZVBpYyA/PyAnJyxcbiAgICAgICAgICBzaG9ydE5hbWU6IHJpc2s/Lk1lbWJlclNvcnROYW1lLFxuICAgICAgICB9LFxuICAgICAgICBlbnRydXN0ZWRUbzoge30sXG4gICAgICAgIHdpdGhpbkRhdGE6IHJpc2s/LkVudGl0eT8ubWFwKCh3aXRoaW46IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiB3aXRoaW4/LnJjX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYWN0aXZlU2VsZWN0ZWRDYXRlZ29yeShldmVudDogYW55KSB7XG4gICAgdGhpcy5hY3RpdmVDYXRlZ29yeSA9IGV2ZW50Py5jYXRlZ29yeTtcbiAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5nZXRSaXNrTGlzdChldmVudD8uY2xpY2tlZFR5cGUpO1xuICB9XG5cbiAgZ2V0VXBkYXRlZERhdGFMaXN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJpc2tDdXJyZW50UGFnZSA9IGV2ZW50Py5wYWdlTm87XG4gICAgdGhpcy5nZXRSaXNrTGlzdCgpO1xuICB9XG5cbiAgZ2V0VG90YWxSaXNrUGFnZSgpIHtcbiAgICBjb25zdCB0b3RhbFBhZ2UgPVxuICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrQ291bnQgL1xuICAgICAgdGhpcy5hY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrTGltaXQ7XG4gICAgcmV0dXJuIE1hdGguY2VpbChNYXRoLmFicyh0b3RhbFBhZ2UpKTtcbiAgfVxuXG4gIGhhbmRsZVNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoU3RyaW5nICE9IGV2ZW50KSB7XG4gICAgICB0aGlzLmNhdGVnb3J5Q3VycmVudFBhZ2UgPSAxO1xuICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSBldmVudDtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0NvdW50KCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5jbG9zZVVzZXJzTGlzdC5lbWl0KHRoaXMucHJlU2VsZWN0ZWRDYXRBbmRSaXNrKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5jbG9zZVVzZXJzTGlzdC5lbWl0KHRoaXMuc2VsZWN0ZWRDYXRBbmRSaXNrKTtcbiAgfVxuXG4gIG9uQ2F0ZWdvcnlQYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNhdGVnb3J5Q3VycmVudFBhZ2UgPSBldmVudD8ucGFnZU5vO1xuICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc0xpc3QoKTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGVkQ2F0QW5kUmlzayhldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhdEFuZFJpc2sgPSBldmVudDtcbiAgICB0aGlzLmdldFJpc2tDYXRlZ29yeVBheWxvYWQoZXZlbnQpO1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRDYXRlZ29yaWVzSWQodGhpcy5zZWxlY3RlZENhdEFuZFJpc2spO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDYXRlZ29yaWVzSWQoc2VsZWN0ZWREYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnlJZHMgPSBbXTtcbiAgICBzZWxlY3RlZERhdGE/LmZvckVhY2goKHNlbGVjdGVkOiBhbnkpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZD8uY2F0ZWdvcnk/Ll9pZCA9PT0gJ3VuY2F0ZWdvcml6ZWQnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkcz8ucHVzaCgndW5jYXRlZ29yaXplZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWRzPy5wdXNoKHNlbGVjdGVkPy5jYXRlZ29yeT8uY2F0ZWdvcnlfaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Umlza0NhdGVnb3J5UGF5bG9hZChzZWxlY3RlZERhdGE6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSaXNrcyA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzID0gW107XG4gICAgc2VsZWN0ZWREYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFJpc2tzLnB1c2goLi4uaXRlbT8ucmlza3MpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhdGVnb3JpZXMucHVzaChpdGVtPy5jYXRlZ29yeSk7XG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVFdmVudChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkID09IGV2ZW50Py5DYXRlZ29yeUlkc1swXSkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxpc3RpbmdDb21wb25lbnQuZ2V0U2VsZWN0ZWREYXRhKGV2ZW50LCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMaXN0aW5nQ29tcG9uZW50Py5kZWxldGVTZWxlY3RlZFJpc2soXG4gICAgICAgIGV2ZW50Py5DYXRlZ29yeUlkc1swXSxcbiAgICAgICAgZXZlbnRcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmdcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwicmlzay1jYXRlZ29yeS1yaXNrLWxpc3RpbmctaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlNlbGVjdCBSaXNrczwvaDM+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHlcIj5cbiAgICAgICAgPGFwcC10YWJsZS1jYXJkIGNsYXNzPVwidngtdy0xMDBcIiBbdGFibGVDYXJkXT1cInRhYmxlQ2FyZFwiIFtzaW5nbGVTZWxlY3RlZFRleHRdPVwiJ0NhdGVnb3J5IFNlbGVjdGVkJ1wiIFttdWx0aXBsZVNlbGVjdGVkVGV4dF09XCInQ2F0ZWdvcmllcyBTZWxlY3RlZCdcIiAoc2V0U2VsZWN0ZWRUYWIpPVwic2V0U2VsZWN0ZWRUYWIoJGV2ZW50KVwiIFtzZWxlY3RlZFRhYl09XCIxXCI+PC9hcHAtdGFibGUtY2FyZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ibG9jayB2eC1tYi0yXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICAjc2VhcmNoUmlza0NhdGVnb3J5IChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSaXNrIENhdGVnb3JpZXNcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJpc2stY2F0ZWdvcnktcmlzay1saXN0aW5nLWJvZHktaW5uZXIgdngtbWItMiB2eC1kLWZsZXhcIiBbY2xhc3Mud2l0aC1ub0RhdGFdPVwiKCFpc0NhdGVnb3J5TG9hZGVyICYmICFjYXRlZ29yaWVzTGlzdD8ubGVuZ3RoKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ2F0ZWdvcnlMb2FkZXIgfHwgY2F0ZWdvcmllc0xpc3Q/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1pdGVtLWxlZnQgdngtcHItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWdyYy1jYXRlZ29yeS1saXN0aW5nICpuZ0lmPVwiIWlzQ2F0ZWdvcnlMb2FkZXJcIiBbaGVhZGVyVGV4dF09XCInUmlzayBDYXRlZ29yaWVzJ1wiIFtjYXRlZ29yaWVzXT1cImNhdGVnb3JpZXNMaXN0XCIgIFtzZWxlY3RlZENhdEFuZFJpc2tdPVwic2VsZWN0ZWRDYXRBbmRSaXNrXCIgW3RhYmxlQ2FyZF09XCJ0YWJsZUNhcmRcIiBbY3VycmVudFBhZ2VdPVwiY2F0ZWdvcnlDdXJyZW50UGFnZVwiIFtzZWxlY3RlZFRhYkluZGV4XT1cInNlbGVjdGVkVGFiXCIgW3NlbGVjdGVkQ2F0ZWdvcnlJZHNdPVwic2VsZWN0ZWRDYXRlZ29yeUlkc1wiIChhY3RpdmVTZWxlY3RlZENhdGVnb3J5KT1cImFjdGl2ZVNlbGVjdGVkQ2F0ZWdvcnkoJGV2ZW50KVwiIChvbkNhdGVnb3J5UGFnZUNoYW5nZSk9XCJvbkNhdGVnb3J5UGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9hcHAtZ3JjLWNhdGVnb3J5LWxpc3Rpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJpc0NhdGVnb3J5TG9hZGVyXCI+PC9hcHAtbGlzdC1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlubmVyLWl0ZW0tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1ncmMtcmlzay1saXN0aW5nICNkYXRhTGlzdGluZyAqbmdJZj1cIiFpc1Jpc2tMb2FkZXIgJiYgIWlzQ2F0ZWdvcnlMb2FkZXIgJiYgcmlza3NMaXN0Py5sZW5ndGhcIiBbaGVhZGVyVGV4dF09XCInUmlzayBOYW1lJ1wiIFtkYXRhTGlzdF09XCJyaXNrc0xpc3RcIiBbYWN0aXZlQ2F0ZWdvcnldPVwiYWN0aXZlQ2F0ZWdvcnlcIiBbc2VsZWN0ZWRDYXRBbmRSaXNrXT1cInNlbGVjdGVkQ2F0QW5kUmlza1wiIChjaGFuZ2VTZWxlY3RlZENhdEFuZFJpc2spPVwiY2hhbmdlU2VsZWN0ZWRDYXRBbmRSaXNrKCRldmVudClcIiBbY3VycmVudFBhZ2VdPVwicmlza0N1cnJlbnRQYWdlXCIgW3BlclBhZ2VMaW1pdF09XCJhY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrTGltaXRcIiBbdG90YWxMaXN0RGF0YV09XCJhY3RpdmVDYXRlZ29yeT8uY2F0ZWdvcnlSaXNrQ291bnRcIiBbdG90YWxQYWdlc109XCJnZXRUb3RhbFJpc2tQYWdlKClcIiAoZ2V0VXBkYXRlZERhdGFMaXN0KT1cImdldFVwZGF0ZWREYXRhTGlzdCgkZXZlbnQpXCIgPjwvYXBwLWdyYy1yaXNrLWxpc3Rpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbGlzdC1sb2FkZXIgKm5nSWY9XCJpc1Jpc2tMb2FkZXIgfHwgaXNDYXRlZ29yeUxvYWRlclwiPjwvYXBwLWxpc3QtbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJyaXNrc0xpc3Q/Lmxlbmd0aCA9PT0gMCAmJiAhKGlzUmlza0xvYWRlciB8fCBpc0NhdGVnb3J5TG9hZGVyKVwiIFtub0RhdGFJbWFnZV09XCJDRE5fTElOSz8ubm9EYXRhXCIgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIj48L2FwcC1uby1kYXRhPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCIoIWlzQ2F0ZWdvcnlMb2FkZXIgJiYgIWNhdGVnb3JpZXNMaXN0Py5sZW5ndGgpXCIgW25vRGF0YUltYWdlXT1cIkNETl9MSU5LPy5ub0RhdGFcIiBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiPjwvYXBwLW5vLWRhdGE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWZsb2F0aW5nLWJhciAgW3NlbGVjdGVkRGF0YV09XCJzZWxlY3RlZFJpc2tzPy5sZW5ndGggPyBzZWxlY3RlZFJpc2tzIDogW11cIiAgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCIgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCIgIFtkaXNwbGF5RWxlbWVudEtleV09XCInbmFtZSdcIiBbc2luZ3VsYXJUZXh0XT1cIidSaXNrIHNlbGVjdGVkJ1wiIFtwbHVyYWxUZXh0XT1cIidSaXNrcyBzZWxlY3RlZCdcIiAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlRXZlbnQoJGV2ZW50KVwiPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==