vc-create-dashboard 2.8.3 → 2.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/create-dashboard-container/categories/categories.component.mjs +2 -2
- package/esm2020/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.mjs +41 -41
- package/esm2020/lib/create-dashboard-container/create-dashboard.component.mjs +3 -3
- package/esm2020/lib/create-dashboard-container/services/create-dashboard.service.mjs +2 -2
- package/esm2020/lib/create-dashboard-container/user-list/user-list.component.mjs +3 -3
- package/esm2020/lib/ui-kit/dashboard-footer/dashboard-footer/dashboard-footer.component.mjs +3 -3
- package/fesm2015/create-dashboard.mjs +49 -49
- package/fesm2015/create-dashboard.mjs.map +1 -1
- package/fesm2020/create-dashboard.mjs +49 -49
- package/fesm2020/create-dashboard.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -187,10 +187,10 @@ export class CategoriesComponent {
|
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
CategoriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CategoriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
190
|
-
CategoriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CategoriesComponent, selector: "app-categories", inputs: { categoryList: "categoryList", allCategories: "allCategories", categoryIdKey: "categoryIdKey", selectedCategories: "selectedCategories" }, outputs: { saveSelectedCategory: "saveSelectedCategory", closeList: "closeList", closeCategoriesList: "closeCategoriesList" }, ngImport: i0, template: "<div class=\"category-list\" [class.animate-slideInRight]=\"animation\">\r\n <div class=\"category-list-head vx-d-flex vx-align-center vx-justify-between vx-p-3\">\r\n <span class=\"vx-fw-500 vx-label-txt vx-lh-5\">Select Program(s)</span>\r\n <!-- <button class=\"vx-d-flex vx-align-center vx-label-txt vx-tt-uppercase vx-fw-500 vx-p-0\"><i class=\"icons\"></i> Back</button> -->\r\n </div>\r\n <div class=\"category-list-mid\">\r\n <!-- <div class=\"category-list-tab\">\r\n <ul>\r\n <li class=\"active\"><button>Compliance<span>98</span></button></li>\r\n <li><button>Risks<span>120</span></button></li>\r\n <li><button>Audit<span>28</span></button></li>\r\n <li><button>Policy<span>45</span></button></li>\r\n </ul>\r\n </div> -->\r\n \r\n <div class=\"vx-d-flex vx-mb-2\">\r\n \r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'regulations'\" (click)=\"activeTab = 'regulations'\">\r\n <div class=\"left\">\r\n <label>REGULATIONS</label>\r\n <p *ngIf=\"categoryList?.regulations?.selectedList?.length != 0\">\r\n {{categoryList?.regulations?.selectedList?.length}}\r\n {{(categoryList?.regulations?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.regulations?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'standards'\" (click)=\"activeTab = 'standards'\">\r\n <div class=\"left\">\r\n <label>STANDARDS</label>\r\n <p *ngIf=\"categoryList?.standards?.selectedList?.length != 0\">\r\n {{categoryList?.standards?.selectedList?.length}}\r\n {{(categoryList?.standards?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.standards?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'internalControls'\"\r\n (click)=\"activeTab = 'internalControls'\">\r\n <div class=\"left\">\r\n <label>INTERNAL CONTROLS</label>\r\n <p *ngIf=\"categoryList?.internalControls?.selectedList?.length != 0\">\r\n {{categoryList?.internalControls?.selectedList?.length}}\r\n {{(categoryList?.internalControls?.selectedList?.length==1)?'Program':'programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.internalControls?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'others'\" (click)=\"activeTab = 'others'\">\r\n <div class=\"left\">\r\n <label>OTHERS</label>\r\n <p *ngIf=\"categoryList?.others?.selectedList?.length != 0\">\r\n {{categoryList?.others?.selectedList?.length}}\r\n {{(categoryList?.others?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.others?.list?.length}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"search\">\r\n <i class=\"icons vx-fs-3\"></i>\r\n <input type=\"text\" [(ngModel)]=\"search\" placeholder=\"Search Program\" />\r\n </div>\r\n\r\n <ng-container *ngIf=\"(categoryList[activeTab].list | filter: search) as searchList\">\r\n <div class=\"select-all\" *ngIf=\"searchList.length > 1\">\r\n <app-cs-checkbox [ngValue]=\"checkSelectAll(activeTab)\" (ngValueChange)=\"selectAll($event,activeTab)\">\r\n <strong>{{checkSelectAll(activeTab) ? 'Deselect All' : 'Select All'}}</strong>\r\n </app-cs-checkbox>\r\n </div>\r\n <div class=\"category-list-item\" *ngIf=\"searchList.length > 0\">\r\n <ul class=\"category-list-item-ul vx-m-0 vx-p-0\">\r\n <li class=\"vx-mb-5\" *ngFor=\"let category of searchList\" >\r\n <app-cs-checkbox [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\r\n (ngValueChange)=\"selectCategory($event,activeTab,category)\">\r\n <ul class=\"categories\">\r\n <li *ngFor=\"let entity of category.category_name; let j = index\" [arTooltip]=\"entity\" placement=\"bottom-left\" delay=\"0\">\r\n {{entity}}\r\n </li>\r\n </ul>\r\n </app-cs-checkbox>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <app-no-data *ngIf=\"searchList.length == 0\"\r\n [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No data to display'\">\r\n </app-no-data>\r\n </ng-container>\r\n </div>\r\n <app-dashboard-footer \r\n [footerDetails] =\"footerDetails\"\r\n (cancelEvent)=\"close()\"\r\n (deleteEvent) =\"deleteEvent($event)\"\r\n (submitEvent)=\"save()\"\r\n ></app-dashboard-footer>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";::ng-deep .category-list{background:#FFFFFF}::ng-deep .category-list-head{background:#FBFBFB;border-bottom:1px solid #F1F1F1;border-radius:2px 2px 0 0}::ng-deep .category-list-head span{font-size:14px}::ng-deep .category-list-head button{background:transparent;border-radius:0;border:none}::ng-deep .category-list-head button i{margin:-1px 4px 0 0}::ng-deep .category-list-card{display:flex;align-items:center;border:1px solid #DBDBDB;border-radius:4px;height:55px;padding:12px 12px 12px 16px;width:100%;justify-content:space-between;cursor:pointer}::ng-deep .category-list-card .left{display:flex;flex-wrap:wrap;pointer-events:none}::ng-deep .category-list-card .left label{font-weight:600;text-transform:uppercase;color:#747576;line-height:16px;margin-left:0;font-size:11px;width:100%}::ng-deep .category-list-card .left p{line-height:16px;font-size:11px;color:#161b2f;font-weight:600;margin:0}::ng-deep .category-list-card span.counter{display:flex;height:32px;min-width:32px;border-radius:4px;background:#042e7d;color:#fff;font-size:11px;line-height:32px;justify-content:center;align-items:center;padding:0 5px;pointer-events:none}::ng-deep .category-list-card.active{box-shadow:0 3px 6px #1e5dd326}::ng-deep .category-list-card+.category-list-card{margin-left:4px}::ng-deep .category-list-mid{background:#FFFFFF;height:calc(100vh - 112px);border-radius:0 0 1px 1px;padding:24px 36px 4px;overflow-y:auto}::ng-deep .category-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-mid .category-card .vx-table-card:last-of-type{margin-right:0!important}::ng-deep .category-list-mid .search{position:relative;margin-bottom:8px}::ng-deep .category-list-mid .search i{position:absolute;top:16px;left:16px;color:#dbdbdb}::ng-deep .category-list-mid .search input{border:1px solid #DBDBDB;border-radius:4px;height:44px;padding:10px 180px 10px 40px;width:100%;font-size:14px;color:#747576;outline:none}::ng-deep .category-list-mid .search input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5d08}::ng-deep .category-list-mid .select-all{display:flex;padding-bottom:20px}::ng-deep .category-list-mid .select-all app-cs-checkbox{display:flex}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value{max-width:unset!important}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value strong{font-weight:600;color:#161b2f}::ng-deep .category-list-item ul.category-list-item-ul{list-style-type:none;display:block;align-items:flex-start;flex-wrap:wrap;max-height:calc(100vh - 295px);min-height:calc(100vh - 295px);overflow:auto;padding:16px 0 0}::ng-deep .category-list-item ul.category-list-item-ul::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-item ul.category-list-item-ul li{list-style:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox{display:flex}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label{width:100%}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value{width:auto;justify-content:flex-start}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories{display:flex;max-width:100%;padding:0;margin:0;justify-content:flex-start;width:auto}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li{display:block;padding:0 8px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:#747576}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:after{content:\">\";position:absolute;top:0;right:0;color:#747576;font-size:13px}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type{color:#34aa44}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type:after{display:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:first-of-type{padding-left:0;color:#1e5dd3}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value"], outputs: ["ngValueChange"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[arTooltip]", inputs: ["arTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i5.DashboardFooterComponent, selector: "app-dashboard-footer", inputs: ["footerDetails"], outputs: ["cancelEvent", "submitEvent", "deleteEvent"] }, { kind: "component", type: i6.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "buttonIcon", "iconClass"], outputs: ["buttonAction"] }, { kind: "pipe", type: i7.FilterPipe, name: "filter" }] });
|
|
190
|
+
CategoriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: CategoriesComponent, selector: "app-categories", inputs: { categoryList: "categoryList", allCategories: "allCategories", categoryIdKey: "categoryIdKey", selectedCategories: "selectedCategories" }, outputs: { saveSelectedCategory: "saveSelectedCategory", closeList: "closeList", closeCategoriesList: "closeCategoriesList" }, ngImport: i0, template: "<div class=\"category-list\" [class.animate-slideInRight]=\"animation\">\r\n <div class=\"category-list-head vx-d-flex vx-align-center vx-justify-between vx-p-3\">\r\n <span class=\"vx-fw-500 vx-label-txt vx-lh-5\">Select Program(s)</span>\r\n <!-- <button class=\"vx-d-flex vx-align-center vx-label-txt vx-tt-uppercase vx-fw-500 vx-p-0\"><i class=\"icons\"></i> Back</button> -->\r\n </div>\r\n <div class=\"category-list-mid\">\r\n <!-- <div class=\"category-list-tab\">\r\n <ul>\r\n <li class=\"active\"><button>Compliance<span>98</span></button></li>\r\n <li><button>Risks<span>120</span></button></li>\r\n <li><button>Audit<span>28</span></button></li>\r\n <li><button>Policy<span>45</span></button></li>\r\n </ul>\r\n </div> -->\r\n \r\n <div class=\"vx-d-flex vx-mb-2\">\r\n \r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'regulations'\" (click)=\"activeTab = 'regulations'\">\r\n <div class=\"left\">\r\n <label>REGULATIONS</label>\r\n <p *ngIf=\"categoryList?.regulations?.selectedList?.length != 0\">\r\n {{categoryList?.regulations?.selectedList?.length}}\r\n {{(categoryList?.regulations?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.regulations?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'standards'\" (click)=\"activeTab = 'standards'\">\r\n <div class=\"left\">\r\n <label>STANDARDS</label>\r\n <p *ngIf=\"categoryList?.standards?.selectedList?.length != 0\">\r\n {{categoryList?.standards?.selectedList?.length}}\r\n {{(categoryList?.standards?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.standards?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'internalControls'\"\r\n (click)=\"activeTab = 'internalControls'\">\r\n <div class=\"left\">\r\n <label>INTERNAL CONTROLS</label>\r\n <p *ngIf=\"categoryList?.internalControls?.selectedList?.length != 0\">\r\n {{categoryList?.internalControls?.selectedList?.length}}\r\n {{(categoryList?.internalControls?.selectedList?.length==1)?'Program':'programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.internalControls?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'others'\" (click)=\"activeTab = 'others'\">\r\n <div class=\"left\">\r\n <label>OTHERS</label>\r\n <p *ngIf=\"categoryList?.others?.selectedList?.length != 0\">\r\n {{categoryList?.others?.selectedList?.length}}\r\n {{(categoryList?.others?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.others?.list?.length}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"search\">\r\n <i class=\"icons vx-fs-3\"></i>\r\n <input type=\"text\" [(ngModel)]=\"search\" placeholder=\"Search Program\" />\r\n </div>\r\n\r\n <ng-container *ngIf=\"(categoryList[activeTab].list | filter: search) as searchList\">\r\n <div class=\"select-all\" *ngIf=\"searchList.length > 1\">\r\n <app-cs-checkbox [ngValue]=\"checkSelectAll(activeTab)\" (ngValueChange)=\"selectAll($event,activeTab)\">\r\n <strong>{{checkSelectAll(activeTab) ? 'Deselect All' : 'Select All'}}</strong>\r\n </app-cs-checkbox>\r\n </div>\r\n <div class=\"category-list-item\" *ngIf=\"searchList.length > 0\">\r\n <ul class=\"category-list-item-ul vx-m-0 vx-p-0\">\r\n <li class=\"vx-mb-5\" *ngFor=\"let category of searchList\" >\r\n <app-cs-checkbox [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\r\n (ngValueChange)=\"selectCategory($event,activeTab,category)\">\r\n <ul class=\"categories\">\r\n <li *ngFor=\"let entity of category.category_name; let j = index\" [arTooltip]=\"entity\" placement=\"bottom-left\" delay=\"0\">\r\n {{entity}}\r\n </li>\r\n </ul>\r\n </app-cs-checkbox>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <app-no-data *ngIf=\"searchList.length == 0\"\r\n [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No data to display'\">\r\n </app-no-data>\r\n </ng-container>\r\n </div>\r\n <app-dashboard-footer \r\n [footerDetails] =\"footerDetails\"\r\n (cancelEvent)=\"close()\"\r\n (deleteEvent) =\"deleteEvent($event)\"\r\n (submitEvent)=\"save()\"\r\n ></app-dashboard-footer>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";::ng-deep .category-list{background:#FFFFFF}::ng-deep .category-list-head{background:#FBFBFB;border-bottom:1px solid #F1F1F1;border-radius:2px 2px 0 0}::ng-deep .category-list-head span{font-size:14px}::ng-deep .category-list-head button{background:transparent;border-radius:0;border:none}::ng-deep .category-list-head button i{margin:-1px 4px 0 0}::ng-deep .category-list-card{display:flex;align-items:center;border:1px solid #DBDBDB;border-radius:4px;height:55px;padding:12px 12px 12px 16px;width:100%;justify-content:space-between;cursor:pointer}::ng-deep .category-list-card .left{display:flex;flex-wrap:wrap;pointer-events:none}::ng-deep .category-list-card .left label{font-weight:600;text-transform:uppercase;color:#747576;line-height:16px;margin-left:0;font-size:11px;width:100%}::ng-deep .category-list-card .left p{line-height:16px;font-size:11px;color:#161b2f;font-weight:600;margin:0}::ng-deep .category-list-card span.counter{display:flex;height:32px;min-width:32px;border-radius:4px;background:#042e7d;color:#fff;font-size:11px;line-height:32px;justify-content:center;align-items:center;padding:0 5px;pointer-events:none}::ng-deep .category-list-card.active{box-shadow:0 3px 6px #1e5dd326}::ng-deep .category-list-card+.category-list-card{margin-left:4px}::ng-deep .category-list-mid{background:#FFFFFF;height:calc(100vh - 112px);border-radius:0 0 1px 1px;padding:24px 36px 4px;overflow-y:auto}::ng-deep .category-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-mid .category-card .vx-table-card:last-of-type{margin-right:0!important}::ng-deep .category-list-mid .search{position:relative;margin-bottom:8px}::ng-deep .category-list-mid .search i{position:absolute;top:16px;left:16px;color:#dbdbdb}::ng-deep .category-list-mid .search input{border:1px solid #DBDBDB;border-radius:4px;height:44px;padding:10px 180px 10px 40px;width:100%;font-size:14px;color:#747576;outline:none}::ng-deep .category-list-mid .search input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5d08}::ng-deep .category-list-mid .select-all{display:flex;padding-bottom:20px}::ng-deep .category-list-mid .select-all app-cs-checkbox{display:flex}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value{max-width:unset!important}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value strong{font-weight:600;color:#161b2f}::ng-deep .category-list-mid app-no-data .no-data-wrapper{height:calc(100vh - 260px)}::ng-deep .category-list-item ul.category-list-item-ul{list-style-type:none;display:block;align-items:flex-start;flex-wrap:wrap;max-height:calc(100vh - 295px);min-height:calc(100vh - 295px);overflow:auto;padding:16px 0 0}::ng-deep .category-list-item ul.category-list-item-ul::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-item ul.category-list-item-ul li{list-style:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox{display:flex}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label{width:100%}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value{width:auto;justify-content:flex-start}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories{display:flex;max-width:100%;padding:0;margin:0;justify-content:flex-start;width:auto}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li{display:block;padding:0 8px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:#747576}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:after{content:\">\";position:absolute;top:0;right:0;color:#747576;font-size:13px}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type{color:#34aa44}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type:after{display:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:first-of-type{padding-left:0;color:#1e5dd3}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value"], outputs: ["ngValueChange"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[arTooltip]", inputs: ["arTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i5.DashboardFooterComponent, selector: "app-dashboard-footer", inputs: ["footerDetails"], outputs: ["cancelEvent", "submitEvent", "deleteEvent"] }, { kind: "component", type: i6.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "buttonIcon", "iconClass"], outputs: ["buttonAction"] }, { kind: "pipe", type: i7.FilterPipe, name: "filter" }] });
|
|
191
191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: CategoriesComponent, decorators: [{
|
|
192
192
|
type: Component,
|
|
193
|
-
args: [{ selector: 'app-categories', template: "<div class=\"category-list\" [class.animate-slideInRight]=\"animation\">\r\n <div class=\"category-list-head vx-d-flex vx-align-center vx-justify-between vx-p-3\">\r\n <span class=\"vx-fw-500 vx-label-txt vx-lh-5\">Select Program(s)</span>\r\n <!-- <button class=\"vx-d-flex vx-align-center vx-label-txt vx-tt-uppercase vx-fw-500 vx-p-0\"><i class=\"icons\"></i> Back</button> -->\r\n </div>\r\n <div class=\"category-list-mid\">\r\n <!-- <div class=\"category-list-tab\">\r\n <ul>\r\n <li class=\"active\"><button>Compliance<span>98</span></button></li>\r\n <li><button>Risks<span>120</span></button></li>\r\n <li><button>Audit<span>28</span></button></li>\r\n <li><button>Policy<span>45</span></button></li>\r\n </ul>\r\n </div> -->\r\n \r\n <div class=\"vx-d-flex vx-mb-2\">\r\n \r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'regulations'\" (click)=\"activeTab = 'regulations'\">\r\n <div class=\"left\">\r\n <label>REGULATIONS</label>\r\n <p *ngIf=\"categoryList?.regulations?.selectedList?.length != 0\">\r\n {{categoryList?.regulations?.selectedList?.length}}\r\n {{(categoryList?.regulations?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.regulations?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'standards'\" (click)=\"activeTab = 'standards'\">\r\n <div class=\"left\">\r\n <label>STANDARDS</label>\r\n <p *ngIf=\"categoryList?.standards?.selectedList?.length != 0\">\r\n {{categoryList?.standards?.selectedList?.length}}\r\n {{(categoryList?.standards?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.standards?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'internalControls'\"\r\n (click)=\"activeTab = 'internalControls'\">\r\n <div class=\"left\">\r\n <label>INTERNAL CONTROLS</label>\r\n <p *ngIf=\"categoryList?.internalControls?.selectedList?.length != 0\">\r\n {{categoryList?.internalControls?.selectedList?.length}}\r\n {{(categoryList?.internalControls?.selectedList?.length==1)?'Program':'programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.internalControls?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'others'\" (click)=\"activeTab = 'others'\">\r\n <div class=\"left\">\r\n <label>OTHERS</label>\r\n <p *ngIf=\"categoryList?.others?.selectedList?.length != 0\">\r\n {{categoryList?.others?.selectedList?.length}}\r\n {{(categoryList?.others?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.others?.list?.length}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"search\">\r\n <i class=\"icons vx-fs-3\"></i>\r\n <input type=\"text\" [(ngModel)]=\"search\" placeholder=\"Search Program\" />\r\n </div>\r\n\r\n <ng-container *ngIf=\"(categoryList[activeTab].list | filter: search) as searchList\">\r\n <div class=\"select-all\" *ngIf=\"searchList.length > 1\">\r\n <app-cs-checkbox [ngValue]=\"checkSelectAll(activeTab)\" (ngValueChange)=\"selectAll($event,activeTab)\">\r\n <strong>{{checkSelectAll(activeTab) ? 'Deselect All' : 'Select All'}}</strong>\r\n </app-cs-checkbox>\r\n </div>\r\n <div class=\"category-list-item\" *ngIf=\"searchList.length > 0\">\r\n <ul class=\"category-list-item-ul vx-m-0 vx-p-0\">\r\n <li class=\"vx-mb-5\" *ngFor=\"let category of searchList\" >\r\n <app-cs-checkbox [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\r\n (ngValueChange)=\"selectCategory($event,activeTab,category)\">\r\n <ul class=\"categories\">\r\n <li *ngFor=\"let entity of category.category_name; let j = index\" [arTooltip]=\"entity\" placement=\"bottom-left\" delay=\"0\">\r\n {{entity}}\r\n </li>\r\n </ul>\r\n </app-cs-checkbox>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <app-no-data *ngIf=\"searchList.length == 0\"\r\n [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No data to display'\">\r\n </app-no-data>\r\n </ng-container>\r\n </div>\r\n <app-dashboard-footer \r\n [footerDetails] =\"footerDetails\"\r\n (cancelEvent)=\"close()\"\r\n (deleteEvent) =\"deleteEvent($event)\"\r\n (submitEvent)=\"save()\"\r\n ></app-dashboard-footer>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";::ng-deep .category-list{background:#FFFFFF}::ng-deep .category-list-head{background:#FBFBFB;border-bottom:1px solid #F1F1F1;border-radius:2px 2px 0 0}::ng-deep .category-list-head span{font-size:14px}::ng-deep .category-list-head button{background:transparent;border-radius:0;border:none}::ng-deep .category-list-head button i{margin:-1px 4px 0 0}::ng-deep .category-list-card{display:flex;align-items:center;border:1px solid #DBDBDB;border-radius:4px;height:55px;padding:12px 12px 12px 16px;width:100%;justify-content:space-between;cursor:pointer}::ng-deep .category-list-card .left{display:flex;flex-wrap:wrap;pointer-events:none}::ng-deep .category-list-card .left label{font-weight:600;text-transform:uppercase;color:#747576;line-height:16px;margin-left:0;font-size:11px;width:100%}::ng-deep .category-list-card .left p{line-height:16px;font-size:11px;color:#161b2f;font-weight:600;margin:0}::ng-deep .category-list-card span.counter{display:flex;height:32px;min-width:32px;border-radius:4px;background:#042e7d;color:#fff;font-size:11px;line-height:32px;justify-content:center;align-items:center;padding:0 5px;pointer-events:none}::ng-deep .category-list-card.active{box-shadow:0 3px 6px #1e5dd326}::ng-deep .category-list-card+.category-list-card{margin-left:4px}::ng-deep .category-list-mid{background:#FFFFFF;height:calc(100vh - 112px);border-radius:0 0 1px 1px;padding:24px 36px 4px;overflow-y:auto}::ng-deep .category-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-mid .category-card .vx-table-card:last-of-type{margin-right:0!important}::ng-deep .category-list-mid .search{position:relative;margin-bottom:8px}::ng-deep .category-list-mid .search i{position:absolute;top:16px;left:16px;color:#dbdbdb}::ng-deep .category-list-mid .search input{border:1px solid #DBDBDB;border-radius:4px;height:44px;padding:10px 180px 10px 40px;width:100%;font-size:14px;color:#747576;outline:none}::ng-deep .category-list-mid .search input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5d08}::ng-deep .category-list-mid .select-all{display:flex;padding-bottom:20px}::ng-deep .category-list-mid .select-all app-cs-checkbox{display:flex}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value{max-width:unset!important}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value strong{font-weight:600;color:#161b2f}::ng-deep .category-list-item ul.category-list-item-ul{list-style-type:none;display:block;align-items:flex-start;flex-wrap:wrap;max-height:calc(100vh - 295px);min-height:calc(100vh - 295px);overflow:auto;padding:16px 0 0}::ng-deep .category-list-item ul.category-list-item-ul::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-item ul.category-list-item-ul li{list-style:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox{display:flex}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label{width:100%}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value{width:auto;justify-content:flex-start}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories{display:flex;max-width:100%;padding:0;margin:0;justify-content:flex-start;width:auto}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li{display:block;padding:0 8px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:#747576}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:after{content:\">\";position:absolute;top:0;right:0;color:#747576;font-size:13px}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type{color:#34aa44}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type:after{display:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:first-of-type{padding-left:0;color:#1e5dd3}\n"] }]
|
|
193
|
+
args: [{ selector: 'app-categories', template: "<div class=\"category-list\" [class.animate-slideInRight]=\"animation\">\r\n <div class=\"category-list-head vx-d-flex vx-align-center vx-justify-between vx-p-3\">\r\n <span class=\"vx-fw-500 vx-label-txt vx-lh-5\">Select Program(s)</span>\r\n <!-- <button class=\"vx-d-flex vx-align-center vx-label-txt vx-tt-uppercase vx-fw-500 vx-p-0\"><i class=\"icons\"></i> Back</button> -->\r\n </div>\r\n <div class=\"category-list-mid\">\r\n <!-- <div class=\"category-list-tab\">\r\n <ul>\r\n <li class=\"active\"><button>Compliance<span>98</span></button></li>\r\n <li><button>Risks<span>120</span></button></li>\r\n <li><button>Audit<span>28</span></button></li>\r\n <li><button>Policy<span>45</span></button></li>\r\n </ul>\r\n </div> -->\r\n \r\n <div class=\"vx-d-flex vx-mb-2\">\r\n \r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'regulations'\" (click)=\"activeTab = 'regulations'\">\r\n <div class=\"left\">\r\n <label>REGULATIONS</label>\r\n <p *ngIf=\"categoryList?.regulations?.selectedList?.length != 0\">\r\n {{categoryList?.regulations?.selectedList?.length}}\r\n {{(categoryList?.regulations?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.regulations?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'standards'\" (click)=\"activeTab = 'standards'\">\r\n <div class=\"left\">\r\n <label>STANDARDS</label>\r\n <p *ngIf=\"categoryList?.standards?.selectedList?.length != 0\">\r\n {{categoryList?.standards?.selectedList?.length}}\r\n {{(categoryList?.standards?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.standards?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'internalControls'\"\r\n (click)=\"activeTab = 'internalControls'\">\r\n <div class=\"left\">\r\n <label>INTERNAL CONTROLS</label>\r\n <p *ngIf=\"categoryList?.internalControls?.selectedList?.length != 0\">\r\n {{categoryList?.internalControls?.selectedList?.length}}\r\n {{(categoryList?.internalControls?.selectedList?.length==1)?'Program':'programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.internalControls?.list?.length}}</span>\r\n </div>\r\n <div class=\"category-list-card\" [class.active]=\"activeTab == 'others'\" (click)=\"activeTab = 'others'\">\r\n <div class=\"left\">\r\n <label>OTHERS</label>\r\n <p *ngIf=\"categoryList?.others?.selectedList?.length != 0\">\r\n {{categoryList?.others?.selectedList?.length}}\r\n {{(categoryList?.others?.selectedList?.length==1)?'Program':'Programs'}} selected\r\n </p>\r\n </div>\r\n <span class=\"counter\">{{categoryList?.others?.list?.length}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"search\">\r\n <i class=\"icons vx-fs-3\"></i>\r\n <input type=\"text\" [(ngModel)]=\"search\" placeholder=\"Search Program\" />\r\n </div>\r\n\r\n <ng-container *ngIf=\"(categoryList[activeTab].list | filter: search) as searchList\">\r\n <div class=\"select-all\" *ngIf=\"searchList.length > 1\">\r\n <app-cs-checkbox [ngValue]=\"checkSelectAll(activeTab)\" (ngValueChange)=\"selectAll($event,activeTab)\">\r\n <strong>{{checkSelectAll(activeTab) ? 'Deselect All' : 'Select All'}}</strong>\r\n </app-cs-checkbox>\r\n </div>\r\n <div class=\"category-list-item\" *ngIf=\"searchList.length > 0\">\r\n <ul class=\"category-list-item-ul vx-m-0 vx-p-0\">\r\n <li class=\"vx-mb-5\" *ngFor=\"let category of searchList\" >\r\n <app-cs-checkbox [ngValue]=\"selectedIds.includes(category[categoryIdKey])\"\r\n (ngValueChange)=\"selectCategory($event,activeTab,category)\">\r\n <ul class=\"categories\">\r\n <li *ngFor=\"let entity of category.category_name; let j = index\" [arTooltip]=\"entity\" placement=\"bottom-left\" delay=\"0\">\r\n {{entity}}\r\n </li>\r\n </ul>\r\n </app-cs-checkbox>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <app-no-data *ngIf=\"searchList.length == 0\"\r\n [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No data to display'\">\r\n </app-no-data>\r\n </ng-container>\r\n </div>\r\n <app-dashboard-footer \r\n [footerDetails] =\"footerDetails\"\r\n (cancelEvent)=\"close()\"\r\n (deleteEvent) =\"deleteEvent($event)\"\r\n (submitEvent)=\"save()\"\r\n ></app-dashboard-footer>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animation.css\";@import\"https://cdn.v-comply.com/design-system/css/animate/animate-slide-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";::ng-deep .category-list{background:#FFFFFF}::ng-deep .category-list-head{background:#FBFBFB;border-bottom:1px solid #F1F1F1;border-radius:2px 2px 0 0}::ng-deep .category-list-head span{font-size:14px}::ng-deep .category-list-head button{background:transparent;border-radius:0;border:none}::ng-deep .category-list-head button i{margin:-1px 4px 0 0}::ng-deep .category-list-card{display:flex;align-items:center;border:1px solid #DBDBDB;border-radius:4px;height:55px;padding:12px 12px 12px 16px;width:100%;justify-content:space-between;cursor:pointer}::ng-deep .category-list-card .left{display:flex;flex-wrap:wrap;pointer-events:none}::ng-deep .category-list-card .left label{font-weight:600;text-transform:uppercase;color:#747576;line-height:16px;margin-left:0;font-size:11px;width:100%}::ng-deep .category-list-card .left p{line-height:16px;font-size:11px;color:#161b2f;font-weight:600;margin:0}::ng-deep .category-list-card span.counter{display:flex;height:32px;min-width:32px;border-radius:4px;background:#042e7d;color:#fff;font-size:11px;line-height:32px;justify-content:center;align-items:center;padding:0 5px;pointer-events:none}::ng-deep .category-list-card.active{box-shadow:0 3px 6px #1e5dd326}::ng-deep .category-list-card+.category-list-card{margin-left:4px}::ng-deep .category-list-mid{background:#FFFFFF;height:calc(100vh - 112px);border-radius:0 0 1px 1px;padding:24px 36px 4px;overflow-y:auto}::ng-deep .category-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-mid .category-card .vx-table-card:last-of-type{margin-right:0!important}::ng-deep .category-list-mid .search{position:relative;margin-bottom:8px}::ng-deep .category-list-mid .search i{position:absolute;top:16px;left:16px;color:#dbdbdb}::ng-deep .category-list-mid .search input{border:1px solid #DBDBDB;border-radius:4px;height:44px;padding:10px 180px 10px 40px;width:100%;font-size:14px;color:#747576;outline:none}::ng-deep .category-list-mid .search input:focus{border-color:#1e5dd3;box-shadow:0 0 5px #1e5d08}::ng-deep .category-list-mid .select-all{display:flex;padding-bottom:20px}::ng-deep .category-list-mid .select-all app-cs-checkbox{display:flex}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value{max-width:unset!important}::ng-deep .category-list-mid .select-all app-cs-checkbox .checkbox-item .value strong{font-weight:600;color:#161b2f}::ng-deep .category-list-mid app-no-data .no-data-wrapper{height:calc(100vh - 260px)}::ng-deep .category-list-item ul.category-list-item-ul{list-style-type:none;display:block;align-items:flex-start;flex-wrap:wrap;max-height:calc(100vh - 295px);min-height:calc(100vh - 295px);overflow:auto;padding:16px 0 0}::ng-deep .category-list-item ul.category-list-item-ul::-webkit-scrollbar-track{background-color:#fff}::ng-deep .category-list-item ul.category-list-item-ul li{list-style:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox{display:flex}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label{width:100%}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value{width:auto;justify-content:flex-start}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories{display:flex;max-width:100%;padding:0;margin:0;justify-content:flex-start;width:auto}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li{display:block;padding:0 8px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:#747576}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:after{content:\">\";position:absolute;top:0;right:0;color:#747576;font-size:13px}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type{color:#34aa44}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:last-of-type:after,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:last-of-type:after{display:none}::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.radio-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-radio label.checkbox-item span.value ul.categories li:first-of-type,::ng-deep .category-list-item ul.category-list-item-ul li app-cs-checkbox label.checkbox-item span.value ul.categories li:first-of-type{padding-left:0;color:#1e5dd3}\n"] }]
|
|
194
194
|
}], ctorParameters: function () { return []; }, propDecorators: { categoryList: [{
|
|
195
195
|
type: Input
|
|
196
196
|
}], allCategories: [{
|
|
@@ -31,7 +31,7 @@ export class ConfigureWidgetsComponent {
|
|
|
31
31
|
this.subKeyResponsibilitiesSelected = false;
|
|
32
32
|
this.showWidgets = true;
|
|
33
33
|
this.complianceWidgetsDisplayCount = 9;
|
|
34
|
-
this.riskWidgetsDisplayCount =
|
|
34
|
+
this.riskWidgetsDisplayCount = 9;
|
|
35
35
|
this.widgetsList = {
|
|
36
36
|
COMPLIANCE: [
|
|
37
37
|
{
|
|
@@ -209,12 +209,12 @@ export class ConfigureWidgetsComponent {
|
|
|
209
209
|
value: false,
|
|
210
210
|
visibility: true,
|
|
211
211
|
},
|
|
212
|
-
{
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
},
|
|
212
|
+
// {
|
|
213
|
+
// title: 'Exceeds Risk Tolerance',
|
|
214
|
+
// id: 'exceeds_risk_tolerance',
|
|
215
|
+
// value: false,
|
|
216
|
+
// visibility:true,
|
|
217
|
+
// },
|
|
218
218
|
]
|
|
219
219
|
},
|
|
220
220
|
{
|
|
@@ -277,41 +277,41 @@ export class ConfigureWidgetsComponent {
|
|
|
277
277
|
module: 'RISK',
|
|
278
278
|
subWidgets: []
|
|
279
279
|
},
|
|
280
|
+
// {
|
|
281
|
+
// title: 'Inherent Risk Rating Trend by Responsibility Centers',
|
|
282
|
+
// id: 'inherent_risk_rating_trend_by_responsibility_centers',
|
|
283
|
+
// description: 'This widget is a graphical representation of the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
284
|
+
// widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-trend.png',
|
|
285
|
+
// value: false,
|
|
286
|
+
// visibility:true,
|
|
287
|
+
// module: 'RISK',
|
|
288
|
+
// subWidgets: []
|
|
289
|
+
// },
|
|
290
|
+
// {
|
|
291
|
+
// title: 'Residual Risk Rating Trend by Responsibility Centers',
|
|
292
|
+
// id: 'residual_risk_rating_trend_by_responsibility_centers',
|
|
293
|
+
// description: 'This widget is a graphical representation of the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
294
|
+
// widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-trend.png',
|
|
295
|
+
// value: false,
|
|
296
|
+
// visibility:true,
|
|
297
|
+
// module: 'RISK',
|
|
298
|
+
// subWidgets: []
|
|
299
|
+
// },
|
|
300
|
+
// {
|
|
301
|
+
// title: 'Risk Rating Trend by Categories',
|
|
302
|
+
// id: 'risk_rating_trend_by_categories',
|
|
303
|
+
// description: 'This widgets is a trend chart that shows the inherent and residual risk rating trend across the different Risk Categories.',
|
|
304
|
+
// widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-trend.png',
|
|
305
|
+
// value: false,
|
|
306
|
+
// visibility:true,
|
|
307
|
+
// module: 'RISK',
|
|
308
|
+
// subWidgets: []
|
|
309
|
+
// },
|
|
280
310
|
{
|
|
281
|
-
title: '
|
|
282
|
-
id: '
|
|
283
|
-
description: 'This widget is a graphical representation of the number of risks within each inherent risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
284
|
-
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/inherent-trend.png',
|
|
285
|
-
value: false,
|
|
286
|
-
visibility: true,
|
|
287
|
-
module: 'RISK',
|
|
288
|
-
subWidgets: []
|
|
289
|
-
},
|
|
290
|
-
{
|
|
291
|
-
title: 'Residual Risk Rating Trend by Responsibility Centers',
|
|
292
|
-
id: 'residual_risk_rating_trend_by_responsibility_centers',
|
|
293
|
-
description: 'This widget is a graphical representation of the number of risks within each residual risk rating, grouped according to the Responsibility Center exposed to the risk.',
|
|
294
|
-
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/residual-trend.png',
|
|
295
|
-
value: false,
|
|
296
|
-
visibility: true,
|
|
297
|
-
module: 'RISK',
|
|
298
|
-
subWidgets: []
|
|
299
|
-
},
|
|
300
|
-
{
|
|
301
|
-
title: 'Risk Rating Trend by Categories',
|
|
302
|
-
id: 'risk_rating_trend_by_categories',
|
|
303
|
-
description: 'This widgets is a trend chart that shows the inherent and residual risk rating trend across the different Risk Categories.',
|
|
304
|
-
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/risk-trend.png',
|
|
305
|
-
value: false,
|
|
306
|
-
visibility: true,
|
|
307
|
-
module: 'RISK',
|
|
308
|
-
subWidgets: []
|
|
309
|
-
},
|
|
310
|
-
{
|
|
311
|
-
title: 'Top 5 Risk Ratings',
|
|
312
|
-
id: 'top_5_residual_risk_ratings',
|
|
311
|
+
title: 'Top 10 Risk Ratings',
|
|
312
|
+
id: 'top_10_residual_risk_ratings',
|
|
313
313
|
description: 'This widgets shows ths top five risks with the highest risk rating.',
|
|
314
|
-
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/
|
|
314
|
+
widgetImage: 'https://cdn.v-comply.com/libraries/configure-widget/assets/images/10-risk-ratings.png',
|
|
315
315
|
value: false,
|
|
316
316
|
visibility: true,
|
|
317
317
|
module: 'RISK',
|
|
@@ -534,4 +534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
534
534
|
}], mode: [{
|
|
535
535
|
type: Input
|
|
536
536
|
}] } });
|
|
537
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9jb25maWd1cmUtd2lkZ2V0cy9jb25maWd1cmUtd2lkZ2V0cy9jb25maWd1cmUtd2lkZ2V0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFZMUYsTUFBTSxPQUFPLHlCQUF5QjtJQXlCcEMsWUFDVSxNQUFpQixFQUNsQix1QkFBZ0QsRUFDL0MsUUFBeUI7UUFGekIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNsQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBMUJ6Qix3QkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1RCwwQkFBcUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RSxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQTZDLEVBQUUsQ0FBQztRQUM1RCxvQkFBZSxHQUEyQixFQUFFLENBQUM7UUFFN0MsV0FBTSxHQUEwQixZQUFZLENBQUM7UUFDcEMsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUMzQixhQUFRLEdBQUcs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TTtnQkFPRSxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWd1cmVXaWRnZXRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZ3VyZS13aWRnZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHdpZGdldERhdGFNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2lkZ2V0LWRhdGEtbW9kZWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvZGlhbG9nL2RpYWxvZy1yZWYnO1xyXG5pbXBvcnQgeyB3aWRnZXRDb25maWcgfSBmcm9tICcuL3dpZGdldC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvbmZpZ3VyZS13aWRnZXRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyZS13aWRnZXRzLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyZVdpZGdldHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBPdXRwdXQoKSB3aWRnZXRzRGF0YU1vZGlmaWVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2xvc2VDb25maWd1cmVXaWRnZXRzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBjaGVja2JveFN0YXR1cyE6IGFueTtcclxuICBzZWFyY2g6IHN0cmluZyA9ICcnO1xyXG4gIGNoZWNrZWRBcnJheTogQXJyYXk8eyBpbmRleDogbnVtYmVyLCBzdGF0dXM6IG51bWJlciB9PiA9IFtdO1xyXG4gIHNlbGVjdGVkV2lkZ2V0czogQXJyYXk8d2lkZ2V0RGF0YU1vZGVsPiA9IFtdO1xyXG5cclxuICBtb2R1bGU6IFwiQ09NUExJQU5DRVwiIHwgXCJSSVNLXCIgPSAnQ09NUExJQU5DRSc7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRXaWRnZXRzRGF0YTogYW55ID0gW107XHJcbiAgQElucHV0KCkgZGlzcGxheWVkV2lkZ2V0czogYW55ID0gW107XHJcbiAgQElucHV0KCkgc2hvd1Jpc2sgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Q29tcGxpYW5jZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJ1xyXG4gIG5vRGF0YVRleHQgPSAnWW91IGhhdmUgbm90IGNvbmZpZ3VyZWQgYW55IHdpZGdldHMuIENsaWNrIG9uIHRoZSA8c3Ryb25nPkNvbmZpZ3VyZSBXaWRnZXRzPC9zdHJvbmc+IGJ1dHRvbiB0byBiZWdpbi4nO1xyXG5cclxuICBzZWxlY3RlZFdpZGdldElkczogYW55ID0gW107XHJcbiAgc3ViUmVzcG9uc2liaWxpdGllc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2VcclxuICBzdWJLZXlSZXNwb25zaWJpbGl0aWVzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHNob3dXaWRnZXRzID0gdHJ1ZTtcclxuICBjb21wbGlhbmNlV2lkZ2V0c0Rpc3BsYXlDb3VudCA9IDk7XHJcbiAgcmlza1dpZGdldHNEaXNwbGF5Q291bnQgPSAxMjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IERpYWxvZ1JlZixcclxuICAgIHB1YmxpYyBjb25maWd1cmVXaWRnZXRzU2VydmljZTogQ29uZmlndXJlV2lkZ2V0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UpIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnKSB7XHJcbiAgICAgIHRoaXMuc2V0V2lkZ2V0c1Zpc2liaWxpdHlUb0ZhbHNlKClcclxuICAgICAgdGhpcy5yaXNrV2lkZ2V0c0Rpc3BsYXlDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMuY29tcGxpYW5jZVdpZGdldHNEaXNwbGF5Q291bnQgPSAwO1xyXG4gICAgICBjb25zdCBmaW5hbERhdGEgPSBbLi4ubmV3IFNldCh0aGlzLmRpc3BsYXllZFdpZGdldHMpXTtcclxuICAgICAgZmluYWxEYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMud2lkZ2V0c0xpc3QuQ09NUExJQU5DRS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZS5pZCA9PSBlbGVtZW50LndpZGdldF9jb2RlKSB7XHJcbiAgICAgICAgICAgIGVsZS52aXNpYmlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGVsZS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJEYXRhOiBhbnkgPSBbXVxyXG4gICAgICAgICAgICAgIGVsZW1lbnQuc3ViX3dpZGdldHMuZmlsdGVyKChzdWJ3aWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJEYXRhLnB1c2goc3Vid2lkZ2V0LndpZGdldF9jb2RlKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJFbGVtZW50OiBhbnksIHN1YkluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRhLmluY2x1ZGVzKHN1YkVsZW1lbnQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52aXNpYmlsaXR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52aXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jb21wbGlhbmNlV2lkZ2V0c0Rpc3BsYXlDb3VudCsrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGUuaWQgPT0gZWxlbWVudC53aWRnZXRfY29kZSkge1xyXG4gICAgICAgICAgICBlbGUudmlzaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChlbGUuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YTogYW55ID0gW11cclxuICAgICAgICAgICAgICBlbGVtZW50LnN1Yl93aWRnZXRzLmZpbHRlcigoc3Vid2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyRGF0YS5wdXNoKHN1YndpZGdldC53aWRnZXRfY29kZSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55LCBzdWJJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRGF0YS5pbmNsdWRlcyhzdWJFbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmlzaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmlzaWJpbGl0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJpc2tXaWRnZXRzRGlzcGxheUNvdW50KytcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGEgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkV2lkZ2V0c0RhdGEpXTtcclxuICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMud2lkZ2V0c0xpc3QuQ09NUExJQU5DRS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGUuaWQgPT0gZWxlbWVudC53aWRnZXRfY29kZSAmJiBlbGVtZW50LnN0YXRlID09ICdBQ1RJVkUnKSB7XHJcbiAgICAgICAgICBlbGUudmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGVsZS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YTogYW55ID0gW11cclxuICAgICAgICAgICAgZWxlbWVudC5zdWJfd2lkZ2V0cy5maWx0ZXIoKHN1YndpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHN1YndpZGdldC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyRGF0YS5wdXNoKHN1YndpZGdldC53aWRnZXRfY29kZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55LCBzdWJJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGEuaW5jbHVkZXMoc3ViRWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMucHVzaChlbGUpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMud2lkZ2V0c0xpc3QuUklTSy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGUuaWQgPT0gZWxlbWVudC53aWRnZXRfY29kZSAmJiBlbGVtZW50LnN0YXRlID09ICdBQ1RJVkUnKSB7XHJcbiAgICAgICAgICBlbGUudmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGVsZS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YTogYW55ID0gW11cclxuICAgICAgICAgICAgZWxlbWVudC5zdWJfd2lkZ2V0cy5maWx0ZXIoKHN1YndpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHN1YndpZGdldC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyRGF0YS5wdXNoKHN1YndpZGdldC53aWRnZXRfY29kZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55LCBzdWJJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGEuaW5jbHVkZXMoc3ViRWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzW3N1YkluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMucHVzaChlbGUpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm1vZHVsZSA9ICh0aGlzLnNob3dDb21wbGlhbmNlKSA/ICdDT01QTElBTkNFJyA6ICdSSVNLJztcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRXaWRnZXRzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgd2lkZ2V0c0xpc3QgPSB7XHJcbiAgICBDT01QTElBTkNFOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ092ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ292ZXJ2aWV3JyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ092ZXJ2aWV3IHNob3dzIHRoZSBwZXJmb3JtYW5jZSBvZiByZXNwb25zaWJpbGl0aWVzIGFuZCBQcm9ncmFtcy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvb3ZlcnZpZXcucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENhbGVuZGFyJyxcclxuICAgICAgICBpZDogJ2NvbXBsaWFuY2VfY2FsZW5kYXJfZmxhZycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgUmVzcG9uc2liaWxpdHkgQ2FsZW5kYXIgc2hvd3MgdGhlIGR1ZSBkYXRlcyBvZiByZXNwb25zaWJpbGl0aWVzIGluIGEgY2FsZW5kYXIgZm9ybWF0LiBUaGUgcmVzcG9uc2liaWxpdGllcyBhcmUgY29sb3IgY29kZWQgdG8gcmVmbGVjdCB0aGUgc3RhdHVzIG9mIHRoZSByZXNwb25zaWJpbGl0aWVzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yZXNwb25zaWJpbGl0eS1jYWxlbmRlci5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVzcG9uc2liaWxpdHkgQ2VudGVyIE92ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ3Jlc3BvbnNpYmlsaXR5X2NlbnRlcl9vdmVydmlld19mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgT3ZlcnZpZXcgc2hvd3MgdGhlIHBlcmZvcm1hbmNlIG9mIHJlc3BvbnNpYmlsaXRpZXMgYW5kIFJlc3BvbnNpYmlsaXR5IENlbnRlcnMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc3BvbnNpYmlsaXR5LWNlbnRlci1vdmVydmlldy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgICAgaWQ6ICdteV9yZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IHlvdSBhcmUgcmVxdWlyZWQgdG8gY29tcGxldGUsIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgeW91IGFyZSByZXZpZXdpbmcgYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgeW91IGFyZSBvdmVyc2VlaW5nLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9teS1yZXNwb25zaWJpbGl0aWVzLnBuZycsXHJcbiAgICAgICAgdGFiT3B0aW9uOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ015IFJlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgICAgICBpZDogJ215X3Jlc3BvbnNpYmlsaXR5X2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnSeKAmW0gUmV2aWV3aW5nJyxcclxuICAgICAgICAgICAgaWQ6ICdyZXZpZXdlcl9yZXNwb25zaWJpbGl0eV9mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0nigJltIE92ZXJzZWVpbmcnLFxyXG4gICAgICAgICAgICBpZDogJ2NjX3Jlc3BvbnNpYmlsaXR5X2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0tleSBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICBpZDogJ2tleV9yZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBwZXJmb3JtYW5jZSBvZiBrZXkgcmVzcG9uc2liaWxpdGllcyB0aGF0IHlvdSBhcmUgcmVxdWlyZWQgdG8gY29tcGxldGUsIHRoYXQgeW91IGFyZSByZXZpZXdpbmcsIHRoYXQgeW91IGFyZSBvdmVyc2VlaW5nIGFuZCB0aGF0IHlvdSBoYXZlIGFzc2lnbmVkIHRvIGFub3RoZXIgcGVyc29uLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9rZXktcmVzcG9uc2liaWxpdGllcy5wbmcnLFxyXG4gICAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdPdmVydmlldycsXHJcbiAgICAgICAgICAgIGlkOiAna2V5X3Jlc3BvbnNpYmlsaXRpZXNfb3ZlcnZpZXdfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdNeSBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICAgICAgaWQ6ICdrZXlfbXlfcmVzcG9uc2liaWxpdGllc19mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0nigJltIFJldmlld2luZycsXHJcbiAgICAgICAgICAgIGlkOiAna2V5X2lfYW1fcmV2aWV3aW5nX2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnSeKAmW0gT3ZlcnNlZWluZycsXHJcbiAgICAgICAgICAgIGlkOiAna2V5X2lfYW1fb3ZlcnNlZWluZ19mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdUcmVuZCBBbmFseXNpcycsXHJcbiAgICAgICAgaWQ6ICd0cmVuZF9hbmFseXNpc19mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBUcmVuZCBBbmFseXNpcyBpcyBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGVyZm9ybWFuY2Ugb2YgcmVzcG9uc2liaWxpdGllcyBvdmVyIGEgcGVyaW9kLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy90cmVuZC1hbmFseXNpcy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnV29ya3Jvb20gVXBkYXRlcycsXHJcbiAgICAgICAgaWQ6ICd3b3Jrcm9vbV9hbGVydF9mbGFnJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBSZXNwb25zaWJpbGl0eSBXb3Jrcm9vbSBzaG93cyB1cGRhdGVzIGZyb20gdGhlIFJlc3BvbnNpYmlsaXR5IFdvcmtyb29tcy4gQSBSZXNwb25zaWJpbGl0eSBXb3Jrcm9vbSBleGlzdHMgZm9yIGFsbCByZXNwb25zaWJpbGl0aWVzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy93b3Jrcm9vbS11cGRhdGVzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZWNlbnQgQWN0aXZpdGllcycsXHJcbiAgICAgICAgaWQ6ICdyZWNlbnRfYWN0aXZpdHlfZmxhZycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIGEgY2hyb25vbG9naWNhbCB2aWV3IG9mIHRoZSByZWNlbnQgdXBkYXRlcyBvZiByZXNwb25zaWJpbGl0aWVzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yZWNlbnQtYWN0aXZpdGllcy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnRXhjZXB0aW9uIFN1bW1hcnknLFxyXG4gICAgICAgIGlkOiAnZXhjZXB0aW9uX3N1bW1hcnlfZmxhZycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdFeGNlcHRpb25zIFN1bW1hcnkgc2hvdyB0aGUgbnVtYmVyIG9mIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgZWl0aGVyIG5vdCBhY2NlcHRlZCwgbm90IGNvbXBsZXRlZCBvciBkZWxldGVkLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9leGNlcHRpb24tc3VtbWFyeS5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfVxyXG4gICAgXSxcclxuICAgIFJJU0s6IFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmlzayBPdmVydmlldycsXHJcbiAgICAgICAgaWQ6ICdyaXNrX292ZXJ2aWV3JyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBudW1iZXIgYW5kIHBlcmNlbnRhZ2Ugb2Ygcmlza3Mgd2l0aGluIGVhY2ggcmlzayByZXNwb25zZSBzdHJhdGVneS4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1vdmVydmlldy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmlzayBNZXRyaWNzJyxcclxuICAgICAgICBpZDogJ3Jpc2tfbWV0cmljcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHJpc2sgYXBwZXRpdGUsIHRoZSBudW1iZXIgb2Ygcmlza3MgdGhhdCBleGNlZWQgdGhlIHJpc2sgYXBwZXRpdGUsIHRoZSBudW1iZXIgb2Ygcmlza3MgdGhhdCBleGNlZWQgdGhlIHJpc2sgdG9sZXJhbmNlLCB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHJpc2sgcmF0aW5nLCBhbmQgdGhlIG51bWJlciBvZiByaXNrcyB0aGF0IGRvIG5vdCBoYXZlIGFueSBsaW5rZWQgY29udHJvbHMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2FwcGV0aXRlLXRvbGVyYW5jZS5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1Jpc2sgQXBwZXRpdGUgJiBUb2xlcmFuY2UnLFxyXG4gICAgICAgICAgICBpZDogJ3Jpc2tfYXBwZXRpdGVfdG9sZXJhbmNlJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1Jpc2sgUmF0aW5ncycsXHJcbiAgICAgICAgICAgIGlkOiAncmlza19yYXRpbmdzJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1Jpc2tzIFdpdGhvdXQgQ29udHJvbHMnLFxyXG4gICAgICAgICAgICBpZDogJ3Jpc2tzX3dpdGhvdXRfY29udHJvbHMnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnRXhjZWVkcyBSaXNrIFRvbGVyYW5jZScsXHJcbiAgICAgICAgICAgIGlkOiAnZXhjZWVkc19yaXNrX3RvbGVyYW5jZScsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdJbmhlcmVudCBSaXNrIFJhdGluZyBieSBSZXNwb25zaWJpbGl0eSBDZW50ZXJzICcsXHJcbiAgICAgICAgaWQ6ICdpbmhlcmVudF9yaXNrX3JhdGluZ19ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggaW5oZXJlbnQgcmlzayByYXRpbmcsIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZcKgUmVzcG9uc2liaWxpdHkgQ2VudGVywqBleHBvc2VkIHRvIHRoZSByaXNrLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9pbmhlcmVudC1SQy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycyAnLFxyXG4gICAgICAgIGlkOiAncmVzaWR1YWxfcmlza19yYXRpbmdfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHJlc2lkdWFsIHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGXCoFJlc3BvbnNpYmlsaXR5IENlbnRlcsKgZXhwb3NlZCB0byB0aGUgcmlzay4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzaWR1YWwtUkMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgQ2F0ZWdvcnkgT3ZlcnZpZXcnLFxyXG4gICAgICAgIGlkOiAncmlza19jYXRlZ29yeV9vdmVydmlldycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldHMgc2hvd3MgdGhlwqBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggc3RhdHVzLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmlzayBDYXRlZ29yeSB0aGUgcmlzayBpcyBhc3NpZ25lZCB0by4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1jYXRlZ29yeS1vdmVydmlldy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmlzayBIZWF0bWFwJyxcclxuICAgICAgICBpZDogJ3Jpc2tfaGVhdG1hcCcsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGXCoFJpc2sgSGVhdG1hcCBkaXNwbGF5cyB0aGUgcmlzayBtYXRyaXggZm9yIGFueSB0d28gcmlzayBmYWN0b3JzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yaXNrLWhlYXRtYXAucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0luaGVyZW50IFJpc2sgUmF0aW5nIGJ5IENhdGVnb3JpZXMnLFxyXG4gICAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfY2F0ZWdvcmllcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIGluaGVyZW50IHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmlzayBDYXRlZ29yecKgdGhhdMKgdGhlIHJpc2sgaXMgYXNzaWduZWQgdG8uJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL2luaGVyZW50LWNhdGVnb3JpZXMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNpZHVhbCBSaXNrIFJhdGluZyBieSBDYXRlZ29yaWVzJyxcclxuICAgICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX2J5X2NhdGVnb3JpZXMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByZXNpZHVhbCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlIFJpc2sgQ2F0ZWdvcnnCoHRoYXTCoHRoZSByaXNrIGlzIGFzc2lnbmVkIHRvLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yZXNpZHVhbC1jYXRlZ29yaWVzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdJbmhlcmVudCBSaXNrIFJhdGluZyBUcmVuZCBieSBSZXNwb25zaWJpbGl0eSBDZW50ZXJzJyxcclxuICAgICAgICBpZDogJ2luaGVyZW50X3Jpc2tfcmF0aW5nX3RyZW5kX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgaXMgYSBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCBpbmhlcmVudCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlIFJlc3BvbnNpYmlsaXR5IENlbnRlciBleHBvc2VkIHRvIHRoZSByaXNrLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9pbmhlcmVudC10cmVuZC5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgVHJlbmQgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycycsXHJcbiAgICAgICAgaWQ6ICdyZXNpZHVhbF9yaXNrX3JhdGluZ190cmVuZF9ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IGlzIGEgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggcmVzaWR1YWwgcmlzayByYXRpbmcsIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgZXhwb3NlZCB0byB0aGUgcmlzay4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzaWR1YWwtdHJlbmQucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgUmF0aW5nIFRyZW5kIGJ5IENhdGVnb3JpZXMnLFxyXG4gICAgICAgIGlkOiAncmlza19yYXRpbmdfdHJlbmRfYnlfY2F0ZWdvcmllcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldHMgaXMgYSB0cmVuZCBjaGFydCB0aGF0IHNob3dzIHRoZSBpbmhlcmVudCBhbmQgcmVzaWR1YWwgcmlzayByYXRpbmcgdHJlbmQgYWNyb3NzIHRoZSBkaWZmZXJlbnQgUmlzayBDYXRlZ29yaWVzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yaXNrLXRyZW5kLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdUb3AgNSBSaXNrIFJhdGluZ3MnLFxyXG4gICAgICAgIGlkOiAndG9wXzVfcmVzaWR1YWxfcmlza19yYXRpbmdzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0cyBzaG93cyB0aHMgdG9wIGZpdmUgcmlza3Mgd2l0aCB0aGUgaGlnaGVzdCByaXNrIHJhdGluZy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvNS1yaXNrLXJhdGluZ3MucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9XHJcblxyXG4gIHNlbGVjdFdpZGdldChldmVudDogYW55LCBtb2R1bGU6ICdDT01QTElBTkNFJyB8ICdSSVNLJywgd2lkZ2V0SWQ6IHN0cmluZywgc3ViV2lkZ2V0SWQ/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHdpZGdldEluZGV4ID0gdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5pZCA9PSB3aWRnZXRJZCk7XHJcbiAgICBjb25zdCBpc1N1YldpZGdldEFkZGFibGUgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maW5kSW5kZXgoKCB3aWRnZXQ6IGFueSkgPT4gd2lkZ2V0LmlkID09PSB3aWRnZXRJZCApXHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmxlbmd0aCA+PSAxMCAmJiAhKHN1YldpZGdldElkICYmIGlzU3ViV2lkZ2V0QWRkYWJsZSA+PSAwKSkge1xyXG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnWW91IGNhbm5vdCBhZGQgbW9yZSB0aGFuIDEwIHdpZGdldHMuJywnYWxlcnQnKTtcclxuICAgICAgICB0aGlzLnNob3dXaWRnZXRzID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3dXaWRnZXRzID0gdHJ1ZTtcclxuICAgICAgICB9LCAxMCk7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmICghc3ViV2lkZ2V0SWQpIHtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5mb3JFYWNoKGVsZSA9PiBlbGUudmFsdWUgPSB0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc3ViV2lkZ2V0SW5kZXggPSB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09IHN1YldpZGdldElkKTtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0c1tzdWJXaWRnZXRJbmRleF0udmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKCFzdWJXaWRnZXRJZCkge1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZvckVhY2goKGVsZTogYW55KSA9PiBlbGUudmFsdWUgPSBmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHN1YldpZGdldEluZGV4ID0gdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5pZCA9PSBzdWJXaWRnZXRJZCk7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHNbc3ViV2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgY29uc3QgaXNBbGxXaWRnZXRzUmVtb3ZlZCA9IHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5ldmVyeSgoZWxlOiBhbnkpID0+IGVsZS52YWx1ZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoaXNBbGxXaWRnZXRzUmVtb3ZlZCkge1xyXG4gICAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTZWxlY3RlZFdpZGdldHMoKTtcclxuXHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkV2lkZ2V0cygpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gW11cclxuICAgIHRoaXMud2lkZ2V0c0xpc3QuQ09NUExJQU5DRS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMucHVzaChlbGUpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZS52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnB1c2goZWxlKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlV2lkZ2V0KHdpZGdldDogd2lkZ2V0Q29uZmlnKSB7XHJcbiAgICBjb25zdCB3aWRnZXRJbmRleCA9IHRoaXMud2lkZ2V0c0xpc3Rbd2lkZ2V0Lm1vZHVsZV0uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09IHdpZGdldC5pZCk7XHJcbiAgICB0aGlzLndpZGdldHNMaXN0W3dpZGdldC5tb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0c0xpc3Rbd2lkZ2V0Lm1vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndpZGdldHNMaXN0W3dpZGdldC5tb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZvckVhY2goKGVsZTogYW55KSA9PiBlbGUudmFsdWUgPSBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkV2lkZ2V0cygpXHJcbiAgfVxyXG5cclxuICBvbk5leHRDbGljaygpIHtcclxuICAgIHRoaXMud2lkZ2V0c0RhdGFNb2RpZmllZC5lbWl0KHRoaXMuc2VsZWN0ZWRXaWRnZXRzKTtcclxuICB9XHJcblxyXG4gIGNsb3NlQ29uZmlndXJlRGFzaGJvYXJkKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSBbXTtcclxuICAgIHRoaXMuZGlhbG9nLmNsb3NlKCk7XHJcbiAgICB0aGlzLmNsb3NlQ29uZmlndXJlV2lkZ2V0cy5lbWl0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNldFdpZGdldHNWaXNpYmlsaXR5VG9GYWxzZSgpe1xyXG4gICAgdGhpcy53aWRnZXRzTGlzdC5DT01QTElBTkNFLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgZWxlLnZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZWxlLnN1YldpZGdldHMubGVuZ3RoID4gMCkgeyAgICAgICAgXHJcbiAgICAgICAgICBlbGUuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJFbGVtZW50OiBhbnkpID0+IHsgICAgICAgIFxyXG4gICAgICAgICAgICBzdWJFbGVtZW50LnZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBlbGUudmlzaWJpbGl0eSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChlbGUuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBlbGUuc3ViV2lkZ2V0cy5mb3JFYWNoKChzdWJFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgc3ViRWxlbWVudC52aXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHNcIiAqbmdJZj1cInNob3dXaWRnZXRzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtaGVhZFwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLXRpdGxlXCI+Q29uZmlndXJlIFdpZGdldHM8L2gzPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy1iYWNrXCIgKGNsaWNrKT1cImNsb3NlQ29uZmlndXJlRGFzaGJvYXJkKClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWQ7PC9pPiBCYWNrXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLXRhYlwiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgW2NsYXNzLmFjdGl2ZV09XCJtb2R1bGUgPT09ICdDT01QTElBTkNFJ1wiICpuZ0lmPVwic2hvd0NvbXBsaWFuY2VcIiAoY2xpY2spPVwibW9kdWxlPSdDT01QTElBTkNFJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24+Q29tcGxpYW5jZTxzcGFuPnt7Y29tcGxpYW5jZVdpZGdldHNEaXNwbGF5Q291bnR9fTwvc3Bhbj48L2J1dHRvbj48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwibW9kdWxlID09PSAnUklTSydcIiAqbmdJZj1cInNob3dSaXNrXCI+PGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kdWxlPSdSSVNLJ1wiPlJpc2tzPHNwYW4+e3tyaXNrV2lkZ2V0c0Rpc3BsYXlDb3VudH19PC9zcGFuPjwvYnV0dG9uPjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTNcIj4mI3hlOTBiOzwvaT5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggd2lkZ2V0c1wiIFsobmdNb2RlbCldPVwic2VhcmNoXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLWxpc3RcIiAqbmdJZj1cIih3aWRnZXRzTGlzdFttb2R1bGVdIHwgc2VhcmNoOnNlYXJjaCkubGVuZ3RoICE9PSAwXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzTGlzdFttb2R1bGVdIHwgc2VhcmNoOnNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLWl0ZW1cIiAqbmdJZj1cIndpZGdldD8udmlzaWJpbGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJ3aWRnZXQudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RXaWRnZXQoJGV2ZW50LnRhcmdldC5jaGVja2VkLG1vZHVsZSx3aWRnZXQuaWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVjay1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVjay1jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrLWNpcmNsZVwiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtaXRlbS1oZWFkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy1pdGVtLXRpdGxlXCIgW2lubmVySFRNTF09XCJ3aWRnZXQ/LnRpdGxlXCI+PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtaXRlbS1kZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwid2lkZ2V0Py5kZXNjcmlwdGlvblwiPjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhd2lkZ2V0LnZhbHVlXCIgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy1pdGVtLWJ1dHRvbiBhZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RXaWRnZXQodHJ1ZSxtb2R1bGUsd2lkZ2V0LmlkKSBcIj4rIEFERDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIndpZGdldC52YWx1ZVwiIGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtaXRlbS1idXR0b24gcmVtb3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0V2lkZ2V0KGZhbHNlLG1vZHVsZSx3aWRnZXQuaWQpIFwiPi0gUmVtb3ZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtaXRlbS1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2Utd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ3aWRnZXQ/LndpZGdldEltYWdlXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdGluZy1vcHRpb24gdngtZC1mbGV4XCIgKm5nSWY9XCJ3aWRnZXQ/LnN1YldpZGdldHM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViV2lkZ2V0IG9mIHdpZGdldC5zdWJXaWRnZXRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94ICpuZ0lmPVwic3ViV2lkZ2V0LnZpc2liaWxpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RXaWRnZXQoJGV2ZW50LCBtb2R1bGUsd2lkZ2V0LmlkLHN1YldpZGdldC5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJzdWJXaWRnZXQudmFsdWVcIj57e3N1YldpZGdldC50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTm8gRGF0YSBJbWFnZSAtLT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGFwcC1uby1kYXRhICpuZ0lmPVwiKHdpZGdldHNMaXN0W21vZHVsZV0gfCBzZWFyY2g6c2VhcmNoKS5sZW5ndGggPT09IDAgXCJcclxuICAgICAgICAgICAgW25vRGF0YUltYWdlXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9jb25maWd1cmUtd2lkZ2V0LnN2ZydcIlxyXG4gICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiPlxyXG4gICAgICAgIDwvYXBwLW5vLWRhdGE+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZmxvYXRpbmctYmFyIChzdWJtaXRFdmVudCk9XCJvbk5leHRDbGljaygpXCIgKGNhbmNlbEV2ZW50KT1cImNsb3NlQ29uZmlndXJlRGFzaGJvYXJkKClcIlxyXG4gICAgICAgIFtzZWxlY3RlZERhdGFdPVwic2VsZWN0ZWRXaWRnZXRzXCIgKGRlbGV0ZUV2ZW50KT1cInJlbW92ZVdpZGdldCgkZXZlbnQpXCI+PC9mbG9hdGluZy1iYXI+XHJcbjwvZGl2PiJdfQ==
|
|
537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzL2NvbmZpZ3VyZS13aWRnZXRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9jb25maWd1cmUtd2lkZ2V0cy9jb25maWd1cmUtd2lkZ2V0cy9jb25maWd1cmUtd2lkZ2V0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFZMUYsTUFBTSxPQUFPLHlCQUF5QjtJQXlCcEMsWUFDVSxNQUFpQixFQUNsQix1QkFBZ0QsRUFDL0MsUUFBeUI7UUFGekIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNsQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBMUJ6Qix3QkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1RCwwQkFBcUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4RSxXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLGlCQUFZLEdBQTZDLEVBQUUsQ0FBQztRQUM1RCxvQkFBZSxHQUEyQixFQUFFLENBQUM7UUFFN0MsV0FBTSxHQUEwQixZQUFZLENBQUM7UUFDcEMsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUMzQixhQUFRLEdBQUcs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VSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzdDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM3QixHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFO29CQUN6QyxVQUFVLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDdkMsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7b0JBQ3pDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOztzSEExZ0JVLHlCQUF5QjswR0FBekIseUJBQXlCLCtWQ2J0Qyw4NUlBc0VNOzJGRHpETyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCO29LQU12QixtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQU9FLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlndXJlLXdpZGdldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgd2lkZ2V0RGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93aWRnZXQtZGF0YS1tb2RlbCc7XHJcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9kaWFsb2cvZGlhbG9nLXJlZic7XHJcbmltcG9ydCB7IHdpZGdldENvbmZpZyB9IGZyb20gJy4vd2lkZ2V0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29uZmlndXJlLXdpZGdldHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmUtd2lkZ2V0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlndXJlLXdpZGdldHMuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlndXJlV2lkZ2V0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQE91dHB1dCgpIHdpZGdldHNEYXRhTW9kaWZpZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUNvbmZpZ3VyZVdpZGdldHM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNoZWNrYm94U3RhdHVzITogYW55O1xyXG4gIHNlYXJjaDogc3RyaW5nID0gJyc7XHJcbiAgY2hlY2tlZEFycmF5OiBBcnJheTx7IGluZGV4OiBudW1iZXIsIHN0YXR1czogbnVtYmVyIH0+ID0gW107XHJcbiAgc2VsZWN0ZWRXaWRnZXRzOiBBcnJheTx3aWRnZXREYXRhTW9kZWw+ID0gW107XHJcblxyXG4gIG1vZHVsZTogXCJDT01QTElBTkNFXCIgfCBcIlJJU0tcIiA9ICdDT01QTElBTkNFJztcclxuICBASW5wdXQoKSBzZWxlY3RlZFdpZGdldHNEYXRhOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBkaXNwbGF5ZWRXaWRnZXRzOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBzaG93UmlzayA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dDb21wbGlhbmNlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnXHJcbiAgbm9EYXRhVGV4dCA9ICdZb3UgaGF2ZSBub3QgY29uZmlndXJlZCBhbnkgd2lkZ2V0cy4gQ2xpY2sgb24gdGhlIDxzdHJvbmc+Q29uZmlndXJlIFdpZGdldHM8L3N0cm9uZz4gYnV0dG9uIHRvIGJlZ2luLic7XHJcblxyXG4gIHNlbGVjdGVkV2lkZ2V0SWRzOiBhbnkgPSBbXTtcclxuICBzdWJSZXNwb25zaWJpbGl0aWVzU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHN1YktleVJlc3BvbnNpYmlsaXRpZXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgc2hvd1dpZGdldHMgPSB0cnVlO1xyXG4gIGNvbXBsaWFuY2VXaWRnZXRzRGlzcGxheUNvdW50ID0gOTtcclxuICByaXNrV2lkZ2V0c0Rpc3BsYXlDb3VudCA9IDk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBEaWFsb2dSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlndXJlV2lkZ2V0c1NlcnZpY2U6IENvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICB0aGlzLnNldFdpZGdldHNWaXNpYmlsaXR5VG9GYWxzZSgpXHJcbiAgICAgIHRoaXMucmlza1dpZGdldHNEaXNwbGF5Q291bnQgPSAwO1xyXG4gICAgICB0aGlzLmNvbXBsaWFuY2VXaWRnZXRzRGlzcGxheUNvdW50ID0gMDtcclxuICAgICAgY29uc3QgZmluYWxEYXRhID0gWy4uLm5ldyBTZXQodGhpcy5kaXNwbGF5ZWRXaWRnZXRzKV07XHJcbiAgICAgIGZpbmFsRGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLndpZGdldHNMaXN0LkNPTVBMSUFOQ0UuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGUuaWQgPT0gZWxlbWVudC53aWRnZXRfY29kZSkge1xyXG4gICAgICAgICAgICBlbGUudmlzaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChlbGUuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGF0YTogYW55ID0gW11cclxuICAgICAgICAgICAgICBlbGVtZW50LnN1Yl93aWRnZXRzLmZpbHRlcigoc3Vid2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyRGF0YS5wdXNoKHN1YndpZGdldC53aWRnZXRfY29kZSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55LCBzdWJJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRGF0YS5pbmNsdWRlcyhzdWJFbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmlzaWJpbGl0eSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmlzaWJpbGl0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY29tcGxpYW5jZVdpZGdldHNEaXNwbGF5Q291bnQrK1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy53aWRnZXRzTGlzdC5SSVNLLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlLmlkID09IGVsZW1lbnQud2lkZ2V0X2NvZGUpIHtcclxuICAgICAgICAgICAgZWxlLnZpc2liaWxpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoZWxlLnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpbHRlckRhdGE6IGFueSA9IFtdXHJcbiAgICAgICAgICAgICAgZWxlbWVudC5zdWJfd2lkZ2V0cy5maWx0ZXIoKHN1YndpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlckRhdGEucHVzaChzdWJ3aWRnZXQud2lkZ2V0X2NvZGUpO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzLmZvckVhY2goKHN1YkVsZW1lbnQ6IGFueSwgc3ViSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGEuaW5jbHVkZXMoc3ViRWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgZWxlLnN1YldpZGdldHNbc3ViSW5kZXhdLnZpc2liaWxpdHkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZWxlLnN1YldpZGdldHNbc3ViSW5kZXhdLnZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yaXNrV2lkZ2V0c0Rpc3BsYXlDb3VudCsrXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhID0gWy4uLm5ldyBTZXQodGhpcy5zZWxlY3RlZFdpZGdldHNEYXRhKV07XHJcbiAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLndpZGdldHNMaXN0LkNPTVBMSUFOQ0UuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZWxlLmlkID09IGVsZW1lbnQud2lkZ2V0X2NvZGUgJiYgZWxlbWVudC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgZWxlLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIGlmIChlbGUuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckRhdGE6IGFueSA9IFtdXHJcbiAgICAgICAgICAgIGVsZW1lbnQuc3ViX3dpZGdldHMuZmlsdGVyKChzdWJ3aWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChzdWJ3aWRnZXQuc3RhdGUgPT0gJ0FDVElWRScpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlckRhdGEucHVzaChzdWJ3aWRnZXQud2lkZ2V0X2NvZGUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzLmZvckVhY2goKHN1YkVsZW1lbnQ6IGFueSwgc3ViSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRhLmluY2x1ZGVzKHN1YkVsZW1lbnQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnB1c2goZWxlKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLndpZGdldHNMaXN0LlJJU0suZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZWxlLmlkID09IGVsZW1lbnQud2lkZ2V0X2NvZGUgJiYgZWxlbWVudC5zdGF0ZSA9PSAnQUNUSVZFJykge1xyXG4gICAgICAgICAgZWxlLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgIGlmIChlbGUuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckRhdGE6IGFueSA9IFtdXHJcbiAgICAgICAgICAgIGVsZW1lbnQuc3ViX3dpZGdldHMuZmlsdGVyKChzdWJ3aWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChzdWJ3aWRnZXQuc3RhdGUgPT0gJ0FDVElWRScpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlckRhdGEucHVzaChzdWJ3aWRnZXQud2lkZ2V0X2NvZGUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGVsZS5zdWJXaWRnZXRzLmZvckVhY2goKHN1YkVsZW1lbnQ6IGFueSwgc3ViSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRhLmluY2x1ZGVzKHN1YkVsZW1lbnQuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGUuc3ViV2lkZ2V0c1tzdWJJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnB1c2goZWxlKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5tb2R1bGUgPSAodGhpcy5zaG93Q29tcGxpYW5jZSkgPyAnQ09NUExJQU5DRScgOiAnUklTSyc7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkV2lkZ2V0cygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHdpZGdldHNMaXN0ID0ge1xyXG4gICAgQ09NUExJQU5DRTogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdPdmVydmlldycsXHJcbiAgICAgICAgaWQ6ICdvdmVydmlldycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdPdmVydmlldyBzaG93cyB0aGUgcGVyZm9ybWFuY2Ugb2YgcmVzcG9uc2liaWxpdGllcyBhbmQgUHJvZ3JhbXMuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL292ZXJ2aWV3LnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSZXNwb25zaWJpbGl0eSBDYWxlbmRhcicsXHJcbiAgICAgICAgaWQ6ICdjb21wbGlhbmNlX2NhbGVuZGFyX2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFJlc3BvbnNpYmlsaXR5IENhbGVuZGFyIHNob3dzIHRoZSBkdWUgZGF0ZXMgb2YgcmVzcG9uc2liaWxpdGllcyBpbiBhIGNhbGVuZGFyIGZvcm1hdC4gVGhlIHJlc3BvbnNpYmlsaXRpZXMgYXJlIGNvbG9yIGNvZGVkIHRvIHJlZmxlY3QgdGhlIHN0YXR1cyBvZiB0aGUgcmVzcG9uc2liaWxpdGllcy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzcG9uc2liaWxpdHktY2FsZW5kZXIucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc3BvbnNpYmlsaXR5IENlbnRlciBPdmVydmlldycsXHJcbiAgICAgICAgaWQ6ICdyZXNwb25zaWJpbGl0eV9jZW50ZXJfb3ZlcnZpZXdfZmxhZycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIE92ZXJ2aWV3IHNob3dzIHRoZSBwZXJmb3JtYW5jZSBvZiByZXNwb25zaWJpbGl0aWVzIGFuZCBSZXNwb25zaWJpbGl0eSBDZW50ZXJzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9yZXNwb25zaWJpbGl0eS1jZW50ZXItb3ZlcnZpZXcucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc3BvbnNpYmlsaXRpZXMnLFxyXG4gICAgICAgIGlkOiAnbXlfcmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCB5b3UgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlLCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IHlvdSBhcmUgcmV2aWV3aW5nIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IHlvdSBhcmUgb3ZlcnNlZWluZy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvbXktcmVzcG9uc2liaWxpdGllcy5wbmcnLFxyXG4gICAgICAgIHRhYk9wdGlvbjogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdNeSBSZXNwb25zaWJpbGl0aWVzJyxcclxuICAgICAgICAgICAgaWQ6ICdteV9yZXNwb25zaWJpbGl0eV9mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0nigJltIFJldmlld2luZycsXHJcbiAgICAgICAgICAgIGlkOiAncmV2aWV3ZXJfcmVzcG9uc2liaWxpdHlfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdJ4oCZbSBPdmVyc2VlaW5nJyxcclxuICAgICAgICAgICAgaWQ6ICdjY19yZXNwb25zaWJpbGl0eV9mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdLZXkgUmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgICAgaWQ6ICdrZXlfcmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgcGVyZm9ybWFuY2Ugb2Yga2V5IHJlc3BvbnNpYmlsaXRpZXMgdGhhdCB5b3UgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlLCB0aGF0IHlvdSBhcmUgcmV2aWV3aW5nLCB0aGF0IHlvdSBhcmUgb3ZlcnNlZWluZyBhbmQgdGhhdCB5b3UgaGF2ZSBhc3NpZ25lZCB0byBhbm90aGVyIHBlcnNvbi4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMva2V5LXJlc3BvbnNpYmlsaXRpZXMucG5nJyxcclxuICAgICAgICB0YWJPcHRpb246IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdDT01QTElBTkNFJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnT3ZlcnZpZXcnLFxyXG4gICAgICAgICAgICBpZDogJ2tleV9yZXNwb25zaWJpbGl0aWVzX292ZXJ2aWV3X2ZsYWcnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnTXkgUmVzcG9uc2liaWxpdGllcycsXHJcbiAgICAgICAgICAgIGlkOiAna2V5X215X3Jlc3BvbnNpYmlsaXRpZXNfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdJ4oCZbSBSZXZpZXdpbmcnLFxyXG4gICAgICAgICAgICBpZDogJ2tleV9pX2FtX3Jldmlld2luZ19mbGFnJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0nigJltIE92ZXJzZWVpbmcnLFxyXG4gICAgICAgICAgICBpZDogJ2tleV9pX2FtX292ZXJzZWVpbmdfZmxhZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnVHJlbmQgQW5hbHlzaXMnLFxyXG4gICAgICAgIGlkOiAndHJlbmRfYW5hbHlzaXNfZmxhZycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgVHJlbmQgQW5hbHlzaXMgaXMgYSBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBlcmZvcm1hbmNlIG9mIHJlc3BvbnNpYmlsaXRpZXMgb3ZlciBhIHBlcmlvZC4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvdHJlbmQtYW5hbHlzaXMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1dvcmtyb29tIFVwZGF0ZXMnLFxyXG4gICAgICAgIGlkOiAnd29ya3Jvb21fYWxlcnRfZmxhZycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgUmVzcG9uc2liaWxpdHkgV29ya3Jvb20gc2hvd3MgdXBkYXRlcyBmcm9tIHRoZSBSZXNwb25zaWJpbGl0eSBXb3Jrcm9vbXMuIEEgUmVzcG9uc2liaWxpdHkgV29ya3Jvb20gZXhpc3RzIGZvciBhbGwgcmVzcG9uc2liaWxpdGllcy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvd29ya3Jvb20tdXBkYXRlcy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnQ09NUExJQU5DRScsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVjZW50IEFjdGl2aXRpZXMnLFxyXG4gICAgICAgIGlkOiAncmVjZW50X2FjdGl2aXR5X2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyBhIGNocm9ub2xvZ2ljYWwgdmlldyBvZiB0aGUgcmVjZW50IHVwZGF0ZXMgb2YgcmVzcG9uc2liaWxpdGllcy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVjZW50LWFjdGl2aXRpZXMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ0V4Y2VwdGlvbiBTdW1tYXJ5JyxcclxuICAgICAgICBpZDogJ2V4Y2VwdGlvbl9zdW1tYXJ5X2ZsYWcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnRXhjZXB0aW9ucyBTdW1tYXJ5IHNob3cgdGhlIG51bWJlciBvZiByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGVpdGhlciBub3QgYWNjZXB0ZWQsIG5vdCBjb21wbGV0ZWQgb3IgZGVsZXRlZC4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvZXhjZXB0aW9uLXN1bW1hcnkucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ0NPTVBMSUFOQ0UnLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH1cclxuICAgIF0sXHJcbiAgICBSSVNLOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgT3ZlcnZpZXcnLFxyXG4gICAgICAgIGlkOiAncmlza19vdmVydmlldycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgbnVtYmVyIGFuZCBwZXJjZW50YWdlIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHJpc2sgcmVzcG9uc2Ugc3RyYXRlZ3kuJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jpc2stb3ZlcnZpZXcucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgTWV0cmljcycsXHJcbiAgICAgICAgaWQ6ICdyaXNrX21ldHJpY3MnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByaXNrIGFwcGV0aXRlLCB0aGUgbnVtYmVyIG9mIHJpc2tzIHRoYXQgZXhjZWVkIHRoZSByaXNrIGFwcGV0aXRlLCB0aGUgbnVtYmVyIG9mIHJpc2tzIHRoYXQgZXhjZWVkIHRoZSByaXNrIHRvbGVyYW5jZSwgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByaXNrIHJhdGluZywgYW5kIHRoZSBudW1iZXIgb2Ygcmlza3MgdGhhdCBkbyBub3QgaGF2ZSBhbnkgbGlua2VkIGNvbnRyb2xzLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9hcHBldGl0ZS10b2xlcmFuY2UucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdSaXNrIEFwcGV0aXRlICYgVG9sZXJhbmNlJyxcclxuICAgICAgICAgICAgaWQ6ICdyaXNrX2FwcGV0aXRlX3RvbGVyYW5jZScsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdSaXNrIFJhdGluZ3MnLFxyXG4gICAgICAgICAgICBpZDogJ3Jpc2tfcmF0aW5ncycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdSaXNrcyBXaXRob3V0IENvbnRyb2xzJyxcclxuICAgICAgICAgICAgaWQ6ICdyaXNrc193aXRob3V0X2NvbnRyb2xzJyxcclxuICAgICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLy8ge1xyXG4gICAgICAgICAgLy8gICB0aXRsZTogJ0V4Y2VlZHMgUmlzayBUb2xlcmFuY2UnLFxyXG4gICAgICAgICAgLy8gICBpZDogJ2V4Y2VlZHNfcmlza190b2xlcmFuY2UnLFxyXG4gICAgICAgICAgLy8gICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAvLyAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG5cclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnSW5oZXJlbnQgUmlzayBSYXRpbmcgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycyAnLFxyXG4gICAgICAgIGlkOiAnaW5oZXJlbnRfcmlza19yYXRpbmdfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBzaG93cyB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIGluaGVyZW50IHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGXCoFJlc3BvbnNpYmlsaXR5IENlbnRlcsKgZXhwb3NlZCB0byB0aGUgcmlzay4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvaW5oZXJlbnQtUkMucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jlc2lkdWFsIFJpc2sgUmF0aW5nIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMgJyxcclxuICAgICAgICBpZDogJ3Jlc2lkdWFsX3Jpc2tfcmF0aW5nX2J5X3Jlc3BvbnNpYmlsaXR5X2NlbnRlcnMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCByZXNpZHVhbCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlwqBSZXNwb25zaWJpbGl0eSBDZW50ZXLCoGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLVJDLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdSaXNrIENhdGVnb3J5IE92ZXJ2aWV3JyxcclxuICAgICAgICBpZDogJ3Jpc2tfY2F0ZWdvcnlfb3ZlcnZpZXcnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXRzIHNob3dzIHRoZcKgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHN0YXR1cywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlIFJpc2sgQ2F0ZWdvcnkgdGhlIHJpc2sgaXMgYXNzaWduZWQgdG8uJyxcclxuICAgICAgICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jpc2stY2F0ZWdvcnktb3ZlcnZpZXcucG5nJyxcclxuICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJ1Jpc2sgSGVhdG1hcCcsXHJcbiAgICAgICAgaWQ6ICdyaXNrX2hlYXRtYXAnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlwqBSaXNrIEhlYXRtYXAgZGlzcGxheXMgdGhlIHJpc2sgbWF0cml4IGZvciBhbnkgdHdvIHJpc2sgZmFjdG9ycy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay1oZWF0bWFwLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6ICdJbmhlcmVudCBSaXNrIFJhdGluZyBieSBDYXRlZ29yaWVzJyxcclxuICAgICAgICBpZDogJ2luaGVyZW50X3Jpc2tfcmF0aW5nX2J5X2NhdGVnb3JpZXMnLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXQgc2hvd3MgdGhlIG51bWJlciBvZiByaXNrcyB3aXRoaW4gZWFjaCBpbmhlcmVudCByaXNrIHJhdGluZywgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlIFJpc2sgQ2F0ZWdvcnnCoHRoYXTCoHRoZSByaXNrIGlzIGFzc2lnbmVkIHRvLicsXHJcbiAgICAgICAgd2lkZ2V0SW1hZ2U6ICdodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL2NvbmZpZ3VyZS13aWRnZXQvYXNzZXRzL2ltYWdlcy9pbmhlcmVudC1jYXRlZ29yaWVzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9LFxyXG5cclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnUmVzaWR1YWwgUmlzayBSYXRpbmcgYnkgQ2F0ZWdvcmllcycsXHJcbiAgICAgICAgaWQ6ICdyZXNpZHVhbF9yaXNrX3JhdGluZ19ieV9jYXRlZ29yaWVzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IHNob3dzIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggcmVzaWR1YWwgcmlzayByYXRpbmcsIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZSBSaXNrIENhdGVnb3J5wqB0aGF0wqB0aGUgcmlzayBpcyBhc3NpZ25lZCB0by4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmVzaWR1YWwtY2F0ZWdvcmllcy5wbmcnLFxyXG4gICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgfSxcclxuICAgICAgLy8ge1xyXG4gICAgICAvLyAgIHRpdGxlOiAnSW5oZXJlbnQgUmlzayBSYXRpbmcgVHJlbmQgYnkgUmVzcG9uc2liaWxpdHkgQ2VudGVycycsXHJcbiAgICAgIC8vICAgaWQ6ICdpbmhlcmVudF9yaXNrX3JhdGluZ190cmVuZF9ieV9yZXNwb25zaWJpbGl0eV9jZW50ZXJzJyxcclxuICAgICAgLy8gICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0IGlzIGEgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgb2Ygcmlza3Mgd2l0aGluIGVhY2ggaW5oZXJlbnQgcmlzayByYXRpbmcsIGdyb3VwZWQgYWNjb3JkaW5nIHRvIHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgZXhwb3NlZCB0byB0aGUgcmlzay4nLFxyXG4gICAgICAvLyAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvaW5oZXJlbnQtdHJlbmQucG5nJyxcclxuICAgICAgLy8gICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgIC8vICAgdmlzaWJpbGl0eTp0cnVlLFxyXG4gICAgICAvLyAgIG1vZHVsZTogJ1JJU0snLFxyXG4gICAgICAvLyAgIHN1YldpZGdldHM6IFtdXHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIC8vIHtcclxuICAgICAgLy8gICB0aXRsZTogJ1Jlc2lkdWFsIFJpc2sgUmF0aW5nIFRyZW5kIGJ5IFJlc3BvbnNpYmlsaXR5IENlbnRlcnMnLFxyXG4gICAgICAvLyAgIGlkOiAncmVzaWR1YWxfcmlza19yYXRpbmdfdHJlbmRfYnlfcmVzcG9uc2liaWxpdHlfY2VudGVycycsXHJcbiAgICAgIC8vICAgZGVzY3JpcHRpb246ICdUaGlzIHdpZGdldCBpcyBhIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHJpc2tzIHdpdGhpbiBlYWNoIHJlc2lkdWFsIHJpc2sgcmF0aW5nLCBncm91cGVkIGFjY29yZGluZyB0byB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyIGV4cG9zZWQgdG8gdGhlIHJpc2suJyxcclxuICAgICAgLy8gICB3aWRnZXRJbWFnZTogJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvY29uZmlndXJlLXdpZGdldC9hc3NldHMvaW1hZ2VzL3Jlc2lkdWFsLXRyZW5kLnBuZycsXHJcbiAgICAgIC8vICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAvLyAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgLy8gICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgLy8gICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICAvLyB9LFxyXG4gICAgICAvLyB7XHJcbiAgICAgIC8vICAgdGl0bGU6ICdSaXNrIFJhdGluZyBUcmVuZCBieSBDYXRlZ29yaWVzJyxcclxuICAgICAgLy8gICBpZDogJ3Jpc2tfcmF0aW5nX3RyZW5kX2J5X2NhdGVnb3JpZXMnLFxyXG4gICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnVGhpcyB3aWRnZXRzIGlzIGEgdHJlbmQgY2hhcnQgdGhhdCBzaG93cyB0aGUgaW5oZXJlbnQgYW5kIHJlc2lkdWFsIHJpc2sgcmF0aW5nIHRyZW5kIGFjcm9zcyB0aGUgZGlmZmVyZW50IFJpc2sgQ2F0ZWdvcmllcy4nLFxyXG4gICAgICAvLyAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvcmlzay10cmVuZC5wbmcnLFxyXG4gICAgICAvLyAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgLy8gICB2aXNpYmlsaXR5OnRydWUsXHJcbiAgICAgIC8vICAgbW9kdWxlOiAnUklTSycsXHJcbiAgICAgIC8vICAgc3ViV2lkZ2V0czogW11cclxuICAgICAgLy8gfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnVG9wIDEwIFJpc2sgUmF0aW5ncycsXHJcbiAgICAgICAgaWQ6ICd0b3BfMTBfcmVzaWR1YWxfcmlza19yYXRpbmdzJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgd2lkZ2V0cyBzaG93cyB0aHMgdG9wIGZpdmUgcmlza3Mgd2l0aCB0aGUgaGlnaGVzdCByaXNrIHJhdGluZy4nLFxyXG4gICAgICAgIHdpZGdldEltYWdlOiAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvMTAtcmlzay1yYXRpbmdzLnBuZycsXHJcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6dHJ1ZSxcclxuICAgICAgICBtb2R1bGU6ICdSSVNLJyxcclxuICAgICAgICBzdWJXaWRnZXRzOiBbXVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBzZWxlY3RXaWRnZXQoZXZlbnQ6IGFueSwgbW9kdWxlOiAnQ09NUExJQU5DRScgfCAnUklTSycsIHdpZGdldElkOiBzdHJpbmcsIHN1YldpZGdldElkPzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB3aWRnZXRJbmRleCA9IHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXS5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuaWQgPT0gd2lkZ2V0SWQpO1xyXG4gICAgY29uc3QgaXNTdWJXaWRnZXRBZGRhYmxlID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmluZEluZGV4KCggd2lkZ2V0OiBhbnkpID0+IHdpZGdldC5pZCA9PT0gd2lkZ2V0SWQgKVxyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkV2lkZ2V0cy5sZW5ndGggPj0gMTAgJiYgIShzdWJXaWRnZXRJZCAmJiBpc1N1YldpZGdldEFkZGFibGUgPj0gMCkpIHtcclxuICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ1lvdSBjYW5ub3QgYWRkIG1vcmUgdGhhbiAxMCB3aWRnZXRzLicsJ2FsZXJ0Jyk7XHJcbiAgICAgICAgdGhpcy5zaG93V2lkZ2V0cyA9IGZhbHNlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93V2lkZ2V0cyA9IHRydWU7XHJcbiAgICAgICAgfSwgMTApO1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0udmFsdWUgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoIXN1YldpZGdldElkKSB7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMuZm9yRWFjaChlbGUgPT4gZWxlLnZhbHVlID0gdHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHN1YldpZGdldEluZGV4ID0gdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5pZCA9PSBzdWJXaWRnZXRJZCk7XHJcbiAgICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHNbc3ViV2lkZ2V0SW5kZXhdLnZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmICghc3ViV2lkZ2V0SWQpIHtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5mb3JFYWNoKChlbGU6IGFueSkgPT4gZWxlLnZhbHVlID0gZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBzdWJXaWRnZXRJbmRleCA9IHRoaXMud2lkZ2V0c0xpc3RbbW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUuaWQgPT0gc3ViV2lkZ2V0SWQpO1xyXG4gICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzW3N1YldpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGlzQWxsV2lkZ2V0c1JlbW92ZWQgPSB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnN1YldpZGdldHMuZXZlcnkoKGVsZTogYW55KSA9PiBlbGUudmFsdWUgPT0gZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKGlzQWxsV2lkZ2V0c1JlbW92ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy53aWRnZXRzTGlzdFttb2R1bGVdW3dpZGdldEluZGV4XS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLndpZGdldHNMaXN0W21vZHVsZV1bd2lkZ2V0SW5kZXhdLnZhbHVlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRXaWRnZXRzKCk7XHJcblxyXG4gIH1cclxuICBzZXRTZWxlY3RlZFdpZGdldHMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IFtdXHJcbiAgICB0aGlzLndpZGdldHNMaXN0LkNPTVBMSUFOQ0UuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZS52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnB1c2goZWxlKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy53aWRnZXRzTGlzdC5SSVNLLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGUudmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5wdXNoKGVsZSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlbW92ZVdpZGdldCh3aWRnZXQ6IHdpZGdldENvbmZpZykge1xyXG4gICAgY29uc3Qgd2lkZ2V0SW5kZXggPSB0aGlzLndpZGdldHNMaXN0W3dpZGdldC5tb2R1bGVdLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5pZCA9PSB3aWRnZXQuaWQpO1xyXG4gICAgdGhpcy53aWRnZXRzTGlzdFt3aWRnZXQubW9kdWxlXVt3aWRnZXRJbmRleF0udmFsdWUgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLndpZGdldHNMaXN0W3dpZGdldC5tb2R1bGVdW3dpZGdldEluZGV4XS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53aWRnZXRzTGlzdFt3aWRnZXQubW9kdWxlXVt3aWRnZXRJbmRleF0uc3ViV2lkZ2V0cy5mb3JFYWNoKChlbGU6IGFueSkgPT4gZWxlLnZhbHVlID0gZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTZWxlY3RlZFdpZGdldHMoKVxyXG4gIH1cclxuXHJcbiAgb25OZXh0Q2xpY2soKSB7XHJcbiAgICB0aGlzLndpZGdldHNEYXRhTW9kaWZpZWQuZW1pdCh0aGlzLnNlbGVjdGVkV2lkZ2V0cyk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNvbmZpZ3VyZURhc2hib2FyZCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gW107XHJcbiAgICB0aGlzLmRpYWxvZy5jbG9zZSgpO1xyXG4gICAgdGhpcy5jbG9zZUNvbmZpZ3VyZVdpZGdldHMuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBzZXRXaWRnZXRzVmlzaWJpbGl0eVRvRmFsc2UoKXtcclxuICAgIHRoaXMud2lkZ2V0c0xpc3QuQ09NUExJQU5DRS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGVsZS52aXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGVsZS5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHsgICAgICAgIFxyXG4gICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55KSA9PiB7ICAgICAgICBcclxuICAgICAgICAgICAgc3ViRWxlbWVudC52aXNpYmlsaXR5ID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy53aWRnZXRzTGlzdC5SSVNLLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgZWxlLnZpc2liaWxpdHkgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZWxlLnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZWxlLnN1YldpZGdldHMuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHN1YkVsZW1lbnQudmlzaWJpbGl0eSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzXCIgKm5nSWY9XCJzaG93V2lkZ2V0c1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLWhlYWRcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy10aXRsZVwiPkNvbmZpZ3VyZSBXaWRnZXRzPC9oMz5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtYmFja1wiIChjbGljayk9XCJjbG9zZUNvbmZpZ3VyZURhc2hib2FyZCgpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFkOzwvaT4gQmFja1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy10YWJcIj5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwibW9kdWxlID09PSAnQ09NUExJQU5DRSdcIiAqbmdJZj1cInNob3dDb21wbGlhbmNlXCIgKGNsaWNrKT1cIm1vZHVsZT0nQ09NUExJQU5DRSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uPkNvbXBsaWFuY2U8c3Bhbj57e2NvbXBsaWFuY2VXaWRnZXRzRGlzcGxheUNvdW50fX08L3NwYW4+PC9idXR0b24+PC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cIm1vZHVsZSA9PT0gJ1JJU0snXCIgKm5nSWY9XCJzaG93Umlza1wiPjxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZHVsZT0nUklTSydcIj5SaXNrczxzcGFuPnt7cmlza1dpZGdldHNEaXNwbGF5Q291bnR9fTwvc3Bhbj48L2J1dHRvbj48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy1zZWFyY2hcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0zXCI+JiN4ZTkwYjs8L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHdpZGdldHNcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy1saXN0XCIgKm5nSWY9XCIod2lkZ2V0c0xpc3RbbW9kdWxlXSB8IHNlYXJjaDpzZWFyY2gpLmxlbmd0aCAhPT0gMFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB3aWRnZXQgb2Ygd2lkZ2V0c0xpc3RbbW9kdWxlXSB8IHNlYXJjaDpzZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtd2lkZ2V0cy1pdGVtXCIgKm5nSWY9XCJ3aWRnZXQ/LnZpc2liaWxpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwid2lkZ2V0LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0V2lkZ2V0KCRldmVudC50YXJnZXQuY2hlY2tlZCxtb2R1bGUsd2lkZ2V0LmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2staWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2stY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVjay1jaXJjbGVcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLWl0ZW0taGVhZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtaXRlbS10aXRsZVwiIFtpbm5lckhUTUxdPVwid2lkZ2V0Py50aXRsZVwiPjwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLWl0ZW0tZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cIndpZGdldD8uZGVzY3JpcHRpb25cIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXdpZGdldC52YWx1ZVwiIGNsYXNzPVwiY29uZmlndXJlLXdpZGdldHMtaXRlbS1idXR0b24gYWRkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0V2lkZ2V0KHRydWUsbW9kdWxlLHdpZGdldC5pZCkgXCI+KyBBREQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ3aWRnZXQudmFsdWVcIiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLWl0ZW0tYnV0dG9uIHJlbW92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFdpZGdldChmYWxzZSxtb2R1bGUsd2lkZ2V0LmlkKSBcIj4tIFJlbW92ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS13aWRnZXRzLWl0ZW0tYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwid2lkZ2V0Py53aWRnZXRJbWFnZVwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvYXRpbmctb3B0aW9uIHZ4LWQtZmxleFwiICpuZ0lmPVwid2lkZ2V0Py5zdWJXaWRnZXRzPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YldpZGdldCBvZiB3aWRnZXQuc3ViV2lkZ2V0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCAqbmdJZj1cInN1YldpZGdldC52aXNpYmlsaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0V2lkZ2V0KCRldmVudCwgbW9kdWxlLHdpZGdldC5pZCxzdWJXaWRnZXQuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwic3ViV2lkZ2V0LnZhbHVlXCI+e3tzdWJXaWRnZXQudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE5vIERhdGEgSW1hZ2UgLS0+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhcHAtbm8tZGF0YSAqbmdJZj1cIih3aWRnZXRzTGlzdFttb2R1bGVdIHwgc2VhcmNoOnNlYXJjaCkubGVuZ3RoID09PSAwIFwiXHJcbiAgICAgICAgICAgIFtub0RhdGFJbWFnZV09XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy9jb25maWd1cmUtd2lkZ2V0L2Fzc2V0cy9pbWFnZXMvY29uZmlndXJlLXdpZGdldC5zdmcnXCJcclxuICAgICAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIj5cclxuICAgICAgICA8L2FwcC1uby1kYXRhPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGZsb2F0aW5nLWJhciAoc3VibWl0RXZlbnQpPVwib25OZXh0Q2xpY2soKVwiIChjYW5jZWxFdmVudCk9XCJjbG9zZUNvbmZpZ3VyZURhc2hib2FyZCgpXCJcclxuICAgICAgICBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkV2lkZ2V0c1wiIChkZWxldGVFdmVudCk9XCJyZW1vdmVXaWRnZXQoJGV2ZW50KVwiPjwvZmxvYXRpbmctYmFyPlxyXG48L2Rpdj4iXX0=
|