vcomply-workflow-engine 6.2.3 → 6.2.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/esm2022/lib/sharedComponents/policy-category-list/category-list/category-list.component.mjs +33 -98
- package/esm2022/lib/sharedComponents/policy-category-list/constants/stubs.mjs +66 -1
- package/esm2022/lib/sharedComponents/policy-category-list/services/policy-list-api.service.mjs +3 -3
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +25 -23
- package/fesm2022/vcomply-workflow-engine.mjs +58 -186
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/sharedComponents/policy-category-list/category-list/category-list.component.d.ts +10 -18
- package/lib/sharedComponents/policy-category-list/constants/stubs.d.ts +20 -0
- package/lib/sharedComponents/policy-category-list/services/policy-list-api.service.d.ts +1 -1
- package/lib/workflow-policy/workflow-policy.component.d.ts +2 -0
- package/package.json +1 -1
package/esm2022/lib/sharedComponents/policy-category-list/category-list/category-list.component.mjs
CHANGED
|
@@ -4,7 +4,6 @@ import { POLICY_CATEGORY_TABLE_HEADERS, POLICY_NO_DATA, } from '../constants/pol
|
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
6
6
|
import { ASSETS } from '../../../constants/assets.constants';
|
|
7
|
-
import { POLICY_CATEGORY_LIST_STUBS } from '../constants/stubs';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
import * as i1 from "../../program-list/services/list-utils.service";
|
|
10
9
|
import * as i2 from "../services/policy-list-api.service";
|
|
@@ -49,6 +48,13 @@ export class PolicyCategoryListComponent {
|
|
|
49
48
|
this.ASSETS = ASSETS;
|
|
50
49
|
this.programCategoryList = {};
|
|
51
50
|
this.policyCategoryList = [];
|
|
51
|
+
this.selectedCategory = [];
|
|
52
|
+
this.searchConfig = {
|
|
53
|
+
'POLICY CATEGORY': { term: '', placeholder: 'Search Policy Category' },
|
|
54
|
+
'POLICY SUB CATEGORIES': { term: '', placeholder: 'Search Sub Categories' },
|
|
55
|
+
};
|
|
56
|
+
this.filteredCategories = []; // after applying category search
|
|
57
|
+
this.filteredSubcategories = []; // after applying subcategory search
|
|
52
58
|
/** Subject for handling debounced search */
|
|
53
59
|
this.searchSubject = new Subject();
|
|
54
60
|
/** Subject for cleanup subscriptions */
|
|
@@ -63,7 +69,7 @@ export class PolicyCategoryListComponent {
|
|
|
63
69
|
/** Initialize component by fetching program list */
|
|
64
70
|
ngOnInit() {
|
|
65
71
|
console.log('PolicyCategoryListComponent', this.items);
|
|
66
|
-
this.
|
|
72
|
+
this.getPolicyCategoryList();
|
|
67
73
|
}
|
|
68
74
|
/** Handle changes to inputs */
|
|
69
75
|
ngOnChanges(changes) {
|
|
@@ -72,19 +78,14 @@ export class PolicyCategoryListComponent {
|
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
80
|
/** Fetch program list from API */
|
|
75
|
-
|
|
81
|
+
getPolicyCategoryList() {
|
|
76
82
|
this.loaderState.programList = true;
|
|
77
|
-
this.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// this.programListApiService.getProgramList(this.url.programList).subscribe((res: any) => {
|
|
84
|
-
// this.items = res?.data?.programs;
|
|
85
|
-
// this.loadData(this.items);
|
|
86
|
-
// this.loaderState.programList = false;
|
|
87
|
-
// });
|
|
83
|
+
this.policyListApiService.getPolicyCategoryList().subscribe((res) => {
|
|
84
|
+
this.items = this.prepareCategoryList(res?.data?.policyCategories);
|
|
85
|
+
this.viewCategory(this.items[0]);
|
|
86
|
+
this.loadData(this.items);
|
|
87
|
+
this.loaderState.programList = false;
|
|
88
|
+
});
|
|
88
89
|
}
|
|
89
90
|
/**
|
|
90
91
|
* Load data and initialize pagination
|
|
@@ -97,20 +98,11 @@ export class PolicyCategoryListComponent {
|
|
|
97
98
|
const map = new Map();
|
|
98
99
|
categories.forEach((cat) => map.set(cat.id, cat));
|
|
99
100
|
// Check if category is a root
|
|
100
|
-
const isRoot = (cat) =>
|
|
101
|
-
(!map.has(cat.parent) && !map.has(cat.origin));
|
|
101
|
+
const isRoot = (cat) => cat.parent === null || !map.has(cat.parent);
|
|
102
102
|
return categories.filter(isRoot).map((root) => ({
|
|
103
103
|
id: root.id,
|
|
104
104
|
name: root.name,
|
|
105
|
-
children: [
|
|
106
|
-
{
|
|
107
|
-
id: root.id,
|
|
108
|
-
name: root.name,
|
|
109
|
-
children: [],
|
|
110
|
-
display_name: '',
|
|
111
|
-
},
|
|
112
|
-
...this.buildChildren(root, categories, map),
|
|
113
|
-
],
|
|
105
|
+
children: [...this.buildChildren(root, categories, map)],
|
|
114
106
|
}));
|
|
115
107
|
}
|
|
116
108
|
buildPath(categories, map) {
|
|
@@ -126,7 +118,7 @@ export class PolicyCategoryListComponent {
|
|
|
126
118
|
break;
|
|
127
119
|
}
|
|
128
120
|
}
|
|
129
|
-
return names.join(
|
|
121
|
+
return names.join(' < ');
|
|
130
122
|
}
|
|
131
123
|
buildChildren(root, categories, map) {
|
|
132
124
|
return categories
|
|
@@ -136,6 +128,8 @@ export class PolicyCategoryListComponent {
|
|
|
136
128
|
name: child.name,
|
|
137
129
|
children: [],
|
|
138
130
|
display_name: this.buildPath(child, map),
|
|
131
|
+
origin: child.origin,
|
|
132
|
+
parent: child.parent,
|
|
139
133
|
}));
|
|
140
134
|
}
|
|
141
135
|
/**
|
|
@@ -144,17 +138,9 @@ export class PolicyCategoryListComponent {
|
|
|
144
138
|
* @param item Item being selected/deselected
|
|
145
139
|
*/
|
|
146
140
|
selectItem(event, item) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
this.selectedItems[selectedObject] = [];
|
|
151
|
-
}
|
|
152
|
-
this.selectedItems[selectedObject].push(item);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
this.selectedItems[selectedObject] = this.selectedItems[this.activeProgram.id].filter((selected) => selected.id !== item.id);
|
|
156
|
-
}
|
|
157
|
-
this.itemsSelectedChange.emit(this.selectedItems);
|
|
141
|
+
this.selectedCategory = item;
|
|
142
|
+
this.itemsSelectedChange.emit(this.selectedCategory);
|
|
143
|
+
this.selectedItems = item;
|
|
158
144
|
}
|
|
159
145
|
/**
|
|
160
146
|
* Deselect a specific item
|
|
@@ -205,10 +191,6 @@ export class PolicyCategoryListComponent {
|
|
|
205
191
|
this.loaderState.categoryList = true;
|
|
206
192
|
this.policyCategoryList = this.items.find((category) => category.id === item.id)?.children;
|
|
207
193
|
this.loaderState.categoryList = false;
|
|
208
|
-
console.log(this.activeProgram, this.policyCategoryList, 'activeProgram');
|
|
209
|
-
// if (!item || this.categoryList[item.id]) return;
|
|
210
|
-
// this.loaderState.categoryList = true;
|
|
211
|
-
// this.checkProgramCategoryExists(item?.id);
|
|
212
194
|
}
|
|
213
195
|
checkProgramCategoryExists(id) {
|
|
214
196
|
if (this.programCategoryList[id]) {
|
|
@@ -216,23 +198,7 @@ export class PolicyCategoryListComponent {
|
|
|
216
198
|
this.loaderState.categoryList = false;
|
|
217
199
|
return;
|
|
218
200
|
}
|
|
219
|
-
this.fetchProgramCategoryList(id);
|
|
220
201
|
}
|
|
221
|
-
fetchProgramCategoryList(id) {
|
|
222
|
-
const URL = `${this.url.categoryList}&id=${id}`;
|
|
223
|
-
this.policyListApiService
|
|
224
|
-
.getPolicyCategoryList(URL)
|
|
225
|
-
.subscribe((res) => {
|
|
226
|
-
this.programCategoryList[id] = res?.data?.categories ?? [];
|
|
227
|
-
this.categoryList[id] = this.addParentTreeToCategories(this.programCategoryList[id]);
|
|
228
|
-
this.loaderState.categoryList = false;
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Add parent tree information to categories
|
|
233
|
-
* @param categories Array of categories
|
|
234
|
-
* @returns Categories with parent tree information
|
|
235
|
-
*/
|
|
236
202
|
addParentTreeToCategories(categories) {
|
|
237
203
|
if (!categories?.length)
|
|
238
204
|
return [];
|
|
@@ -254,35 +220,6 @@ export class PolicyCategoryListComponent {
|
|
|
254
220
|
parentTree: getParentTree(category),
|
|
255
221
|
}));
|
|
256
222
|
}
|
|
257
|
-
/**
|
|
258
|
-
* Handle program type filter selection
|
|
259
|
-
* @param event Selection event
|
|
260
|
-
* @param item Program type being selected/deselected
|
|
261
|
-
*/
|
|
262
|
-
selectFilter(event, item) {
|
|
263
|
-
if (event) {
|
|
264
|
-
this.selectedProgramType.push(item.id);
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
this.selectedProgramType = this.selectedProgramType.filter((selected) => selected !== item.id);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
/** Reset all applied filters */
|
|
271
|
-
resetFilter() {
|
|
272
|
-
this.selectedProgramType = [];
|
|
273
|
-
}
|
|
274
|
-
/** Apply selected filters to the program list */
|
|
275
|
-
onFilterChange() {
|
|
276
|
-
if (this.selectedProgramType.length > 0) {
|
|
277
|
-
const filteredItems = this.items.filter((item) => this.selectedProgramType.includes(item.type));
|
|
278
|
-
this.paginatedItems = [...filteredItems];
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
this.paginatedItems = this.items;
|
|
282
|
-
}
|
|
283
|
-
this.appliedProgramType = this.programTypeList.filter((item) => this.selectedProgramType.includes(item.id));
|
|
284
|
-
this.checkCategoryAvailbility();
|
|
285
|
-
}
|
|
286
223
|
checkCategoryAvailbility() {
|
|
287
224
|
const isSelectedProgramAvailable = this.paginatedItems.some((item) => item?.id === this.activeProgram?.id);
|
|
288
225
|
if (!isSelectedProgramAvailable) {
|
|
@@ -292,13 +229,16 @@ export class PolicyCategoryListComponent {
|
|
|
292
229
|
}
|
|
293
230
|
/** Trigger debounced search */
|
|
294
231
|
search(header) {
|
|
232
|
+
const term = this.searchConfig[header].term.toLowerCase();
|
|
295
233
|
if (header.toLowerCase() === 'policy category') {
|
|
296
|
-
this.
|
|
297
|
-
this.
|
|
234
|
+
this.paginatedItems = this.items.filter((item) => item?.name?.toLowerCase().includes(term));
|
|
235
|
+
this.checkCategoryAvailbility();
|
|
298
236
|
}
|
|
299
237
|
else if (header.toLowerCase() === 'policy sub categories') {
|
|
300
|
-
this.
|
|
301
|
-
|
|
238
|
+
this.policyCategoryList =
|
|
239
|
+
this.items
|
|
240
|
+
.find((category) => category.id === this.activeProgram?.id)
|
|
241
|
+
?.children.filter((sub) => sub?.name?.toLowerCase().includes(term)) || [];
|
|
302
242
|
}
|
|
303
243
|
}
|
|
304
244
|
/** Perform search on items */
|
|
@@ -312,17 +252,12 @@ export class PolicyCategoryListComponent {
|
|
|
312
252
|
this.destroy$.next();
|
|
313
253
|
this.destroy$.complete();
|
|
314
254
|
}
|
|
315
|
-
closePopover(event) {
|
|
316
|
-
if (event) {
|
|
317
|
-
this.selectedProgramType = this.appliedProgramType.map((item) => item?.id);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PolicyCategoryListComponent, deps: [{ token: i1.ListUtilsService }, { token: i2.PolicyListApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
321
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PolicyCategoryListComponent, selector: "app-policy-category-list", inputs: { items: "items", selectedItems: "selectedItems", url: "url" }, outputs: { itemSelected: "itemSelected", itemDeselected: "itemDeselected", itemsSelectedChange: "itemsSelectedChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dynamic-list-container\">\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"\n paginatedItems?.length > 0 ||\n loaderState.programList ||\n loaderState.categoryList;\n else defaultTemplate\n \"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-100 vx-justify-between\">\n <div class=\"vx-d-flex vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n <div class=\"search-block\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n placeholder=\"Search..\"\n (keyup)=\"search(header)\"\n />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList; else programListLoader\">\n <div\n *ngFor=\"\n let item of paginatedItems | search : searchTerm : 'name';\n let i = index\n \"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"selectedItems[item.id]?.length > 0\"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ selectedItems[item.id].length }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n {{\n selectedItems[item.id].length > 1 ? \"CATEGORIES\" : \"CATEGORY\"\n }}\n SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container\n *ngIf=\"\n !loaderState.categoryList && !loaderState.programList;\n else categoryListLoader\n \"\n >\n <ng-container\n *ngIf=\"\n policyCategoryList?.length > 0;\n else defaultSubCategoryTemplate\n \"\n >\n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let data of policyCategoryList; let i = index\"\n >\n <app-cs-radio\n [value]=\"data?.id\"\n [checked]=\"data.id\"\n (checkedEvent)=\"selectItem($event, data)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ data?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div\n *ngIf=\"data?.display_name\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"data?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ data?.display_name }}\n </div>\n </div>\n </span>\n </app-cs-radio>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"POLICY_NO_DATA.policySubCategoryList\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"\n searchTerm ? POLICY_NO_DATA.search : POLICY_NO_DATA.programList\n \"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.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/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\";::ng-deep .dynamic-list-container{height:calc(100% - 3rem)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:24px;line-height:1.5rem;padding:4px 4px 4px 24px;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:11px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:8px;top:8px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-container .list-no-data-container{height:calc(100% - 2.5rem)}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .search-box{width:50%}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "component", type: i6.NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: i7.TableLoaderComponent, selector: "app-table-loader", inputs: ["listSize"] }, { kind: "pipe", type: i8.SearchPipe, name: "search" }] }); }
|
|
256
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PolicyCategoryListComponent, selector: "app-policy-category-list", inputs: { items: "items", selectedItems: "selectedItems", url: "url" }, outputs: { itemSelected: "itemSelected", itemDeselected: "itemDeselected", itemsSelectedChange: "itemsSelectedChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"dynamic-list-container\">\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"\n items?.length > 0 || loaderState.programList || loaderState.categoryList;\n else defaultTemplate\n \"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-100 vx-justify-between\">\n <div class=\"vx-d-flex vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n <div class=\"search-block\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchConfig[header].term\"\n [placeholder]=\"searchConfig[header].placeholder\"\n (keyup)=\"search(header)\"\n />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList; else programListLoader\">\n <!-- Show items when they exist -->\n <ng-container\n *ngIf=\"\n (\n paginatedItems\n | search : searchConfig['POLICY CATEGORY'].term : 'name'\n )?.length > 0\n \"\n >\n <div\n *ngFor=\"\n let item of paginatedItems\n | search\n : searchConfig['POLICY CATEGORY'].term\n : 'name' as filteredParentCategories;\n let i = index\n \"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"\n selectedItems[0]?.origin === item.id ||\n selectedItems[0]?.id === item.id\n \"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ 1 }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n CATEGORY SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n\n <!-- Show no-data when search returns no results -->\n <ng-container\n *ngIf=\"\n searchConfig['POLICY CATEGORY'].term &&\n (\n paginatedItems\n | search : searchConfig['POLICY CATEGORY'].term : 'name'\n )?.length === 0\n \"\n >\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"POLICY_NO_DATA.search\"\n ></app-no-data>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container\n *ngIf=\"\n !loaderState.categoryList && !loaderState.programList;\n else categoryListLoader\n \"\n >\n <ng-container\n *ngIf=\"\n (\n paginatedItems\n | search : searchConfig['POLICY CATEGORY'].term : 'name'\n )?.length > 0 && policyCategoryList?.length > 0;\n else defaultSubCategoryTemplate\n \"\n >\n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let data of policyCategoryList; let i = index\"\n >\n <app-cs-radio\n [value]=\"data?.id\"\n [checked]=\"selectedItems[0]?.id === data?.id\"\n (checkedEvent)=\"selectItem($event, data)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ data?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div\n *ngIf=\"data?.display_name\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"data?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ data?.display_name }}\n </div>\n </div>\n </span>\n </app-cs-radio>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"POLICY_NO_DATA.policySubCategoryList\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"\n searchTerm ? POLICY_NO_DATA.search : POLICY_NO_DATA.programList\n \"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.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/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\";::ng-deep .dynamic-list-container{height:calc(100% - 3rem)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:24px;line-height:1.5rem;padding:4px 4px 4px 24px;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:11px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:8px;top:8px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-container .list-no-data-container{height:calc(100% - 2.5rem)}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .search-box{width:50%}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "component", type: i6.NoDataComponentUI, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: i7.TableLoaderComponent, selector: "app-table-loader", inputs: ["listSize"] }, { kind: "pipe", type: i8.SearchPipe, name: "search" }] }); }
|
|
322
257
|
}
|
|
323
258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PolicyCategoryListComponent, decorators: [{
|
|
324
259
|
type: Component,
|
|
325
|
-
args: [{ selector: 'app-policy-category-list', template: "<div class=\"dynamic-list-container\">\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"\n paginatedItems?.length > 0 ||\n loaderState.programList ||\n loaderState.categoryList;\n else defaultTemplate\n \"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-100 vx-justify-between\">\n <div class=\"vx-d-flex vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n <div class=\"search-block\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchTerm\"\n placeholder=\"Search..\"\n (keyup)=\"search(header)\"\n />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList; else programListLoader\">\n <div\n *ngFor=\"\n let item of paginatedItems | search : searchTerm : 'name';\n let i = index\n \"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"selectedItems[item.id]?.length > 0\"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ selectedItems[item.id].length }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n {{\n selectedItems[item.id].length > 1 ? \"CATEGORIES\" : \"CATEGORY\"\n }}\n SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container\n *ngIf=\"\n !loaderState.categoryList && !loaderState.programList;\n else categoryListLoader\n \"\n >\n <ng-container\n *ngIf=\"\n policyCategoryList?.length > 0;\n else defaultSubCategoryTemplate\n \"\n >\n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let data of policyCategoryList; let i = index\"\n >\n <app-cs-radio\n [value]=\"data?.id\"\n [checked]=\"data.id\"\n (checkedEvent)=\"selectItem($event, data)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ data?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div\n *ngIf=\"data?.display_name\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"data?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ data?.display_name }}\n </div>\n </div>\n </span>\n </app-cs-radio>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"POLICY_NO_DATA.policySubCategoryList\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"\n searchTerm ? POLICY_NO_DATA.search : POLICY_NO_DATA.programList\n \"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.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/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\";::ng-deep .dynamic-list-container{height:calc(100% - 3rem)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:24px;line-height:1.5rem;padding:4px 4px 4px 24px;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:11px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:8px;top:8px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-container .list-no-data-container{height:calc(100% - 2.5rem)}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .search-box{width:50%}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
260
|
+
args: [{ selector: 'app-policy-category-list', template: "<div class=\"dynamic-list-container\">\n <div\n class=\"dynamic-list-table\"\n *ngIf=\"\n items?.length > 0 || loaderState.programList || loaderState.categoryList;\n else defaultTemplate\n \"\n >\n <div class=\"dynamic-list-header vx-d-flex\">\n <ng-container *ngFor=\"let header of tableHeaders\">\n <div class=\"vx-d-flex vx-w-100 vx-justify-between\">\n <div class=\"vx-d-flex vx-pl-1\">\n <div\n class=\"serialNo vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center vx-justify-center\"\n >\n #\n </div>\n <div\n class=\"headerText vx-fs-11 vx-fw-500 vx-tt-uppercase vx-d-flex vx-align-center\"\n >\n {{ header }}\n </div>\n </div>\n <div class=\"search-block\">\n <i class=\"icons\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"searchConfig[header].term\"\n [placeholder]=\"searchConfig[header].placeholder\"\n (keyup)=\"search(header)\"\n />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"dynamic-list-body vx-d-flex\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"!loaderState.programList; else programListLoader\">\n <!-- Show items when they exist -->\n <ng-container\n *ngIf=\"\n (\n paginatedItems\n | search : searchConfig['POLICY CATEGORY'].term : 'name'\n )?.length > 0\n \"\n >\n <div\n *ngFor=\"\n let item of paginatedItems\n | search\n : searchConfig['POLICY CATEGORY'].term\n : 'name' as filteredParentCategories;\n let i = index\n \"\n class=\"list-row\"\n [class.selected]=\"activeProgram?.id === item.id\"\n (click)=\"viewCategory(item)\"\n >\n <div class=\"list-column serial\">\n <div class=\"srNo\">{{ i + 1 }}</div>\n </div>\n <div\n class=\"list-column name\"\n [class.with-count]=\"selectedItems[item.id]?.length > 0\"\n >\n <div class=\"name-inner vx-fs-13 vx-pr-2\">{{ item.name }}</div>\n </div>\n <div\n class=\"list-column count\"\n *ngIf=\"\n selectedItems[0]?.origin === item.id ||\n selectedItems[0]?.id === item.id\n \"\n >\n <div\n class=\"count-box vx-fs-9 vx-fw-600 vx-lh-4 vx-d-flex vx-align-center vx-justify-center\"\n >\n {{ 1 }}\n </div>\n <div\n class=\"count-text vx-fs-11 vx-fw-500 vx-tt-uppercase vx-lh-4 vx-ml-2\"\n >\n CATEGORY SELECTED\n </div>\n </div>\n <div class=\"list-column action\">\n <button\n class=\"arrow vx-fs-12 vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\n >\n <i class=\"icons\">  </i>\n </button>\n </div>\n </div>\n </ng-container>\n\n <!-- Show no-data when search returns no results -->\n <ng-container\n *ngIf=\"\n searchConfig['POLICY CATEGORY'].term &&\n (\n paginatedItems\n | search : searchConfig['POLICY CATEGORY'].term : 'name'\n )?.length === 0\n \"\n >\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"POLICY_NO_DATA.search\"\n ></app-no-data>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #programListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n <div class=\"right-column\">\n <ng-container\n *ngIf=\"\n !loaderState.categoryList && !loaderState.programList;\n else categoryListLoader\n \"\n >\n <ng-container\n *ngIf=\"\n (\n paginatedItems\n | search : searchConfig['POLICY CATEGORY'].term : 'name'\n )?.length > 0 && policyCategoryList?.length > 0;\n else defaultSubCategoryTemplate\n \"\n >\n <div\n class=\"list-row vx-pl-2 vx-pr-2\"\n *ngFor=\"let data of policyCategoryList; let i = index\"\n >\n <app-cs-radio\n [value]=\"data?.id\"\n [checked]=\"selectedItems[0]?.id === data?.id\"\n (checkedEvent)=\"selectItem($event, data)\"\n >\n <span class=\"value-inner\">\n <div class=\"item-name vx-fs-13\">{{ data?.name }}</div>\n <div class=\"within-part vx-d-flex vx-align-center vx-pr-3\">\n <div\n *ngIf=\"data?.display_name\"\n class=\"within-box vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\n >\n Within\n </div>\n <div\n class=\"within-value vx-fs-11 vx-paragraph-txt\"\n [appTooltip]=\"data?.parentTree?.join(' > ')\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ data?.display_name }}\n </div>\n </div>\n </span>\n </app-cs-radio>\n </div>\n </ng-container>\n <ng-template #defaultSubCategoryTemplate>\n <div class=\"sub-no-data\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"POLICY_NO_DATA.policySubCategoryList\"\n ></app-no-data>\n </div>\n </ng-template>\n </ng-container>\n <ng-template #categoryListLoader>\n <app-table-loader></app-table-loader>\n </ng-template>\n </div>\n </div>\n </div>\n <ng-template #defaultTemplate>\n <div class=\"list-no-data-container\">\n <app-no-data\n [noDataImage]=\"ASSETS.search_data\"\n [noDataText]=\"\n searchTerm ? POLICY_NO_DATA.search : POLICY_NO_DATA.programList\n \"\n ></app-no-data>\n </div>\n </ng-template>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.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/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\";::ng-deep .dynamic-list-container{height:calc(100% - 3rem)}::ng-deep .dynamic-list-container.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .dynamic-list-container .search-block{position:relative}::ng-deep .dynamic-list-container .search-block input{height:24px;line-height:1.5rem;padding:4px 4px 4px 24px;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:11px;color:#747576}::ng-deep .dynamic-list-container .search-block input::placeholder{font-weight:400}::ng-deep .dynamic-list-container .search-block input:focus{border-color:#1e5dd3}::ng-deep .dynamic-list-container .search-block i{position:absolute;left:8px;top:8px;pointer-events:none;color:#e3e3e9;font-size:12px}::ng-deep .dynamic-list-container .list-no-data-container{height:calc(100% - 2.5rem)}::ng-deep .dynamic-list-filter{position:relative;min-width:240px;height:2.5rem;border:1px solid #cdced6;border-radius:.25rem;margin-left:6px;color:#a9aab6;font-size:13px;padding:0 .75rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between}::ng-deep .dynamic-list-filter .filter-icon{color:#787a8c;font-size:12px}::ng-deep .dynamic-list-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .dynamic-list-head button.back-btn{background:transparent;border-radius:0;border:none;position:relative;top:.125rem}::ng-deep .dynamic-list-header .search-box{width:50%}::ng-deep .dynamic-list-header .serialNo{color:#787a8c;min-width:2rem;height:2rem}::ng-deep .dynamic-list-header .headerText{color:#787a8c;min-width:calc(100% - 2rem);height:2rem}::ng-deep .dynamic-list-table{width:100%;border-collapse:collapse;height:calc(100% - 3rem)}::ng-deep .dynamic-list-body{height:calc(100% - 2rem);width:calc(100% + .75rem);position:relative}::ng-deep .dynamic-list-body .left-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .left-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .left-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .left-column .list-row.selected{background-color:#f2f2f5}::ng-deep .dynamic-list-body .left-column .list-row.selected:before{background:#1e5dd3;border-radius:.125rem .125rem 0 0;content:\"\";position:absolute;left:0;top:-1px;width:100%;height:.125rem;z-index:1}::ng-deep .dynamic-list-body .left-column .list-row.selected .list-column.serial .srNo{background:#e3e3e9;color:#565a6f}::ng-deep .dynamic-list-body .left-column .list-row .list-column{color:#000;font-size:11px;height:3rem;position:relative;display:flex;align-items:center;padding:0 .25rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial{width:2rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.serial .srNo{background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;height:46px;display:flex;justify-content:center;transition:all .2s ease-in-out;position:relative}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name{width:calc(100% - 4.5rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name .name-inner{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .left-column .list-row .list-column.name.with-count{width:calc(100% - 16rem)}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count{width:11.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-box{background:#1e5dd3;border-radius:1.25rem;color:#fff;padding:0 .125rem;min-width:1rem;height:1rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.count .count-text{color:#787a8c}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action{width:2.5rem;justify-content:center}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow{background:transparent;border-radius:.25rem;border:none;color:#565a6f;min-width:1.5rem;height:1.5rem}::ng-deep .dynamic-list-body .left-column .list-row .list-column.action button.arrow:hover{background:#e3e3e9}::ng-deep .dynamic-list-body .right-column{width:calc(50% + .5rem);padding-right:.5rem;position:relative;overflow-y:auto;scrollbar-width:thin}::ng-deep .dynamic-list-body .right-column .list-row{background-color:#fff;border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;display:flex;align-items:center;margin-bottom:.25rem;position:relative;transition:all .2s ease-in-out;width:100%;height:3rem}::ng-deep .dynamic-list-body .right-column .list-row:hover{background:#f8f8f8}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox{width:100%;display:flex}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value{width:100%;justify-content:start}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner{width:100%}::ng-deep .dynamic-list-body .right-column .list-row app-cs-checkbox .checkbox-item .value .value-inner .item-name{color:#000;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .dynamic-list-body .right-column .sub-no-data{display:contents}::ng-deep .new-action-list{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;box-shadow:0 4px 8px #1e5dd326;width:240px}::ng-deep .new-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;max-height:220px;overflow:auto}::ng-deep .new-action-list ul.action-item{display:block}::ng-deep .new-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}::ng-deep .new-action-list ul.action-item li:last-child{border-bottom:none}::ng-deep .new-action-list ul.action-item li app-cs-checkbox{display:flex}::ng-deep .new-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}::ng-deep .new-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .new-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .new-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .new-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .new-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .new-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .new-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .new-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .new-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .new-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .new-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .new-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .new-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .new-action-list ul.action-item li .chip-item app-cs-checkbox .checkbox-item .value{color:#000;font-size:11px}::ng-deep .new-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .new-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}::ng-deep .new-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}::ng-deep .new-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .new-action-list .program-type-text{color:#787a8c;border-bottom:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom{border-top:1px solid #f2f2f5}::ng-deep .new-action-list .program-type-bottom button{background:#fff;border-radius:.125rem;margin:0 .125rem!important;transition:all .3s ease-out}::ng-deep .new-action-list .program-type-bottom button.reset-btn{border:1px solid #cdced6;color:#1e5dd3}::ng-deep .new-action-list .program-type-bottom button.reset-btn:hover{background:#f9f9fa}::ng-deep .new-action-list .program-type-bottom button.apply-btn{background:#1e5dd3;border:1px solid #1e5dd3;color:#fff}::ng-deep .new-action-list .program-type-bottom button.apply-btn:hover{background:#1146a8}::ng-deep .new-action-list .program-type-bottom button.apply-btn.disabled{background:#e3e3e9;border-color:#e3e3e9;color:#a9aab6;pointer-events:none}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
326
261
|
}], ctorParameters: function () { return [{ type: i1.ListUtilsService }, { type: i2.PolicyListApiService }]; }, propDecorators: { items: [{
|
|
327
262
|
type: Input
|
|
328
263
|
}], selectedItems: [{
|
|
@@ -336,4 +271,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
336
271
|
}], itemsSelectedChange: [{
|
|
337
272
|
type: Output
|
|
338
273
|
}] } });
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQU1iLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsaUJBQWlCLEdBRWxCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixjQUFjLEdBQ2YsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRzdELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7O0FBMkJoRSxNQUFNLE9BQU8sMkJBQTJCO0lBK0N0QyxZQUNVLFNBQTJCLEVBQzNCLG9CQUEwQztRQUQxQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBOUNwRCxpREFBaUQ7UUFDeEMsVUFBSyxHQUFVLEVB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WUFBWTtzQkFBckIsTUFBTTtnQkFHRyxjQUFjO3NCQUF2QixNQUFNO2dCQUdHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gJy4uLy4uL3Byb2dyYW0tbGlzdC9pbnRlcmZhY2VzL2xpc3QtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUFJPR1JBTV9UQUJMRV9IRUFERVJTLFxuICBQQUdJTkFUSU9OX09QVElPTlMsXG4gIFBST0dSQU1fVFlQRV9MSVNULFxuICBQUk9HUkFNX05PX0RBVEEsXG59IGZyb20gJy4uLy4uL3Byb2dyYW0tbGlzdC9jb25zdGFudCc7XG5pbXBvcnQge1xuICBQT0xJQ1lfQ0FURUdPUllfVEFCTEVfSEVBREVSUyxcbiAgUE9MSUNZX05PX0RBVEEsXG59IGZyb20gJy4uL2NvbnN0YW50cy9wb2xpY3kuY29uc3RhbnRzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgTGlzdFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb2dyYW0tbGlzdC9zZXJ2aWNlcy9saXN0LXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZ3JhbUxpc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvZ3JhbS1saXN0L3NlcnZpY2VzL3Byb2dyYW0tbGlzdC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBQT0xJQ1lfQ0FURUdPUllfTElTVF9TVFVCUyB9IGZyb20gJy4uL2NvbnN0YW50cy9zdHVicyc7XG5pbXBvcnQgeyBQb2xpY3lMaXN0QXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BvbGljeS1saXN0LWFwaS5zZXJ2aWNlJztcbi8qKlxuICogQSByZXVzYWJsZSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW5kIG1hbmFnaW5nIGEgbGlzdCBvZiBwcm9ncmFtcyB3aXRoIGZpbHRlcmluZywgcGFnaW5hdGlvbiwgYW5kIGNhdGVnb3J5IHZpZXdpbmcgY2FwYWJpbGl0aWVzLlxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBQcm9ncmFtIGxpc3Rpbmcgd2l0aCBwYWdpbmF0aW9uXG4gKiAtIFNlYXJjaCBmdW5jdGlvbmFsaXR5IHdpdGggZGVib3VuY2VcbiAqIC0gUHJvZ3JhbSB0eXBlIGZpbHRlcmluZ1xuICogLSBDYXRlZ29yeSB2aWV3aW5nIGZvciBzZWxlY3RlZCBwcm9ncmFtc1xuICogLSBNdWx0aS1zZWxlY3QgY2FwYWJpbGl0eVxuICpcbiAqIEB0ZW1wbGF0ZSBUIEV4dGVuZHMgTGlzdEl0ZW0gaW50ZXJmYWNlIGZvciB0eXBlIHNhZmV0eSBvZiBsaXN0IGl0ZW1zXG4gKi9cblxuaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJlbnQ/OiBzdHJpbmc7XG4gIHBhcmVudFRyZWU/OiBzdHJpbmdbXTtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXBvbGljeS1jYXRlZ29yeS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGVnb3J5LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXRlZ29yeS1saXN0LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBvbGljeUNhdGVnb3J5TGlzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgLyoqIEFycmF5IG9mIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbGlzdCAqL1xuICBASW5wdXQoKSBpdGVtczogYW55W10gPSBbXTtcblxuICAvKiogT2JqZWN0IGNvbnRhaW5pbmcgc2VsZWN0ZWQgaXRlbXMsIGtleWVkIGJ5IHByb2dyYW0gSUQgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55IHwgbnVsbCA9IHt9O1xuXG4gIC8qKiBVUkwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIEFQSSBlbmRwb2ludHMgKi9cbiAgQElucHV0KCkgdXJsOiBhbnkgPSB7fTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQgKi9cbiAgQE91dHB1dCgpIGl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBkZXNlbGVjdGVkICovXG4gIEBPdXRwdXQoKSBpdGVtRGVzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBjaGFuZ2VzICovXG4gIEBPdXRwdXQoKSBpdGVtc1NlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICB0YWJsZUhlYWRlcnMgPSBQT0xJQ1lfQ0FURUdPUllfVEFCTEVfSEVBREVSUztcbiAgY3VycmVudFBhZ2UgPSBQQUdJTkFUSU9OX09QVElPTlMuREVGQVVMVF9DVVJSRU5UX1BBR0U7XG4gIHBhZ2VTaXplID0gUEFHSU5BVElPTl9PUFRJT05TLlBBR0VfU0laRTtcbiAgdG90YWxQYWdlcyA9IDA7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgcGFnaW5hdGVkSXRlbXM6IGFueVtdID0gW107XG4gIGFjdGl2ZVByb2dyYW06IGFueSB8IG51bGwgPSBudWxsO1xuICBjYXRlZ29yeUxpc3Q6IGFueSA9IHt9O1xuICBwcm9ncmFtVHlwZUxpc3Q6IGFueVtdID0gUFJPR1JBTV9UWVBFX0xJU1Q7XG4gIHNlbGVjdGVkUHJvZ3JhbVR5cGU6IGFueVtdID0gW107XG4gIGxvYWRlclN0YXRlOiBhbnkgPSB7XG4gICAgcHJvZ3JhbUxpc3Q6IGZhbHNlLFxuICAgIGNhdGVnb3J5TGlzdDogZmFsc2UsXG4gIH07XG4gIGFwcGxpZWRQcm9ncmFtVHlwZTogYW55W10gPSBbXTtcbiAgUE9MSUNZX05PX0RBVEE6IGFueSA9IFBPTElDWV9OT19EQVRBO1xuICBBU1NFVFM6IGFueSA9IEFTU0VUUztcbiAgcHJvZ3JhbUNhdGVnb3J5TGlzdDogYW55ID0ge307XG4gIHBvbGljeUNhdGVnb3J5TGlzdDogYW55ID0gW107XG5cbiAgLyoqIFN1YmplY3QgZm9yIGhhbmRsaW5nIGRlYm91bmNlZCBzZWFyY2ggKi9cbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIC8qKiBTdWJqZWN0IGZvciBjbGVhbnVwIHN1YnNjcmlwdGlvbnMgKi9cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsaXN0VXRpbHM6IExpc3RVdGlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb2xpY3lMaXN0QXBpU2VydmljZTogUG9saWN5TGlzdEFwaVNlcnZpY2VcbiAgKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBkZWJvdW5jZWQgc2VhcmNoXG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0XG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogSW5pdGlhbGl6ZSBjb21wb25lbnQgYnkgZmV0Y2hpbmcgcHJvZ3JhbSBsaXN0ICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdQb2xpY3lDYXRlZ29yeUxpc3RDb21wb25lbnQnLCB0aGlzLml0ZW1zKTtcbiAgICB0aGlzLmdldFByb2dyYW1MaXN0KCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNoYW5nZXMgdG8gaW5wdXRzICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSB8fCBjaGFuZ2VzWydzZWxlY3RlZEl0ZW1zJ10pIHtcbiAgICAgIHRoaXMucGFnaW5hdGVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICB9XG4gIH1cblxuICAvKiogRmV0Y2ggcHJvZ3JhbSBsaXN0IGZyb20gQVBJICovXG4gIGdldFByb2dyYW1MaXN0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgPSB0cnVlO1xuICAgIHRoaXMuaXRlbXMgPSB0aGlzLnByZXBhcmVDYXRlZ29yeUxpc3QoXG4gICAgICBQT0xJQ1lfQ0FURUdPUllfTElTVF9TVFVCUy5kYXRhLnBvbGljeUNhdGVnb3JpZXNcbiAgICApO1xuICAgIHRoaXMudmlld0NhdGVnb3J5KHRoaXMuaXRlbXNbMF0pO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuaXRlbXMsICdpdGVtcycpO1xuICAgIC8vIHRoaXMuaXRlbXMgPSBQT0xJQ1lfQ0FURUdPUllfTElTVF9TVFVCUy5kYXRhLnBvbGljeUNhdGVnb3JpZXMgYXMgYW55O1xuICAgIHRoaXMubG9hZERhdGEodGhpcy5pdGVtcyk7XG4gICAgdGhpcy5sb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCA9IGZhbHNlO1xuICAgIC8vIHRoaXMucHJvZ3JhbUxpc3RBcGlTZXJ2aWNlLmdldFByb2dyYW1MaXN0KHRoaXMudXJsLnByb2dyYW1MaXN0KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgLy8gICB0aGlzLml0ZW1zID0gcmVzPy5kYXRhPy5wcm9ncmFtcztcbiAgICAvLyAgIHRoaXMubG9hZERhdGEodGhpcy5pdGVtcyk7XG4gICAgLy8gICB0aGlzLmxvYWRlclN0YXRlLnByb2dyYW1MaXN0ID0gZmFsc2U7XG4gICAgLy8gfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBkYXRhIGFuZCBpbml0aWFsaXplIHBhZ2luYXRpb25cbiAgICogQHBhcmFtIGRhdGEgQXJyYXkgb2YgaXRlbXMgdG8gbG9hZFxuICAgKi9cbiAgbG9hZERhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5nb1RvUGFnZSgxLCBkYXRhKTtcbiAgfVxuXG4gIHByZXBhcmVDYXRlZ29yeUxpc3QoY2F0ZWdvcmllczogYW55W10pIHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0KSA9PiBtYXAuc2V0KGNhdC5pZCwgY2F0KSk7XG5cbiAgICAvLyBDaGVjayBpZiBjYXRlZ29yeSBpcyBhIHJvb3RcbiAgICBjb25zdCBpc1Jvb3QgPSAoY2F0OiBhbnkpID0+XG4gICAgICAoY2F0LnBhcmVudCA9PT0gbnVsbCAmJiBjYXQub3JpZ2luID09PSBudWxsKSB8fFxuICAgICAgKCFtYXAuaGFzKGNhdC5wYXJlbnQhKSAmJiAhbWFwLmhhcyhjYXQub3JpZ2luISkpO1xuXG4gICAgcmV0dXJuIGNhdGVnb3JpZXMuZmlsdGVyKGlzUm9vdCkubWFwKChyb290OiBhbnkpID0+ICh7XG4gICAgICBpZDogcm9vdC5pZCxcbiAgICAgIG5hbWU6IHJvb3QubmFtZSxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogcm9vdC5pZCxcbiAgICAgICAgICBuYW1lOiByb290Lm5hbWUsXG4gICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgIGRpc3BsYXlfbmFtZTogJycsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnRoaXMuYnVpbGRDaGlsZHJlbihyb290LCBjYXRlZ29yaWVzLCBtYXApLFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICBidWlsZFBhdGgoY2F0ZWdvcmllczogYW55LCBtYXA6IGFueSkge1xuICAgIGNvbnN0IG5hbWVzOiBzdHJpbmdbXSA9IFtdOyAvLyBzdGFydCB3aXRoIGNoaWxkIG5hbWVcbiAgICBsZXQgY3VycmVudCA9IGNhdGVnb3JpZXM7XG4gIFxuICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBtYXAuZ2V0KGN1cnJlbnQucGFyZW50KTtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgbmFtZXMucHVzaChwYXJlbnQubmFtZSk7XG4gICAgICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIFxuICAgIHJldHVybiBuYW1lcy5qb2luKFwiIDwgXCIpOyBcbiAgfVxuXG4gIGJ1aWxkQ2hpbGRyZW4ocm9vdDogYW55LCBjYXRlZ29yaWVzOiBhbnksIG1hcDogYW55KSB7XG4gICAgcmV0dXJuIGNhdGVnb3JpZXNcbiAgICAgIC5maWx0ZXIoKGM6IGFueSkgPT4gYy5vcmlnaW4gPT09IHJvb3QuaWQgfHwgYy5wYXJlbnQgPT09IHJvb3QuaWQpXG4gICAgICAubWFwKChjaGlsZDogYW55KSA9PiAoe1xuICAgICAgICBpZDogY2hpbGQuaWQsXG4gICAgICAgIG5hbWU6IGNoaWxkLm5hbWUsXG4gICAgICAgIGNoaWxkcmVuOiBbXSwgLy8gZmxhdHRlbiBjaGlsZHJlblxuICAgICAgICBkaXNwbGF5X25hbWU6IHRoaXMuYnVpbGRQYXRoKGNoaWxkLCBtYXApLFxuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBpdGVtIHNlbGVjdGlvbi9kZXNlbGVjdGlvblxuICAgKiBAcGFyYW0gZXZlbnQgU2VsZWN0aW9uIGV2ZW50XG4gICAqIEBwYXJhbSBpdGVtIEl0ZW0gYmVpbmcgc2VsZWN0ZWQvZGVzZWxlY3RlZFxuICAgKi9cbiAgc2VsZWN0SXRlbShldmVudDogYW55LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZE9iamVjdCA9IHRoaXMuYWN0aXZlUHJvZ3JhbS5pZC50b1N0cmluZygpO1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbXNbc2VsZWN0ZWRPYmplY3RdKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1tzZWxlY3RlZE9iamVjdF0gPSBbXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1tzZWxlY3RlZE9iamVjdF0ucHVzaChpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zW3NlbGVjdGVkT2JqZWN0XSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1tcbiAgICAgICAgdGhpcy5hY3RpdmVQcm9ncmFtLmlkXG4gICAgICBdLmZpbHRlcigoc2VsZWN0ZWQ6IGFueSkgPT4gc2VsZWN0ZWQuaWQgIT09IGl0ZW0uaWQpO1xuICAgIH1cbiAgICB0aGlzLml0ZW1zU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0IGEgc3BlY2lmaWMgaXRlbVxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGRlc2VsZWN0XG4gICAqL1xuICBkZXNlbGVjdEl0ZW0oaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLml0ZW1EZXNlbGVjdGVkLmVtaXQoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gaXRlbSBpcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiBpdGVtIGlzIHNlbGVjdGVkXG4gICAqL1xuICBpc1NlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYXZpZ2F0ZSB0byBzcGVjaWZpYyBwYWdlXG4gICAqIEBwYXJhbSBwYWdlIFBhZ2UgbnVtYmVyIHRvIG5hdmlnYXRlIHRvXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gcGFnaW5hdGVcbiAgICovXG4gIGdvVG9QYWdlKHBhZ2U6IG51bWJlciwgZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgdGhpcy5wYWdpbmF0ZUl0ZW1zKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcnJheSBvZiBwYWdlIG51bWJlcnMgZm9yIHBhZ2luYXRpb25cbiAgICogQHJldHVybnMgQXJyYXkgb2YgcGFnZSBudW1iZXJzXG4gICAqL1xuICBnZXRQYWdlTnVtYmVycygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFV0aWxzLmdldFBhZ2VOdW1iZXJzKHRoaXMuaXRlbXMubGVuZ3RoLCB0aGlzLnBhZ2VTaXplKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdpbmF0ZSBpdGVtcyBhbmQgdXBkYXRlIHZpZXdcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBwYWdpbmF0ZVxuICAgKi9cbiAgcGFnaW5hdGVJdGVtcyhkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKTtcbiAgICB0aGlzLnBhZ2luYXRlZEl0ZW1zID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWaWV3IGNhdGVnb3JpZXMgZm9yIGEgc2VsZWN0ZWQgcHJvZ3JhbVxuICAgKiBAcGFyYW0gaXRlbSBQcm9ncmFtIHRvIHZpZXcgY2F0ZWdvcmllcyBmb3JcbiAgICovXG4gIHZpZXdDYXRlZ29yeShpdGVtPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVQcm9ncmFtID0gaXRlbTtcbiAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IHRydWU7XG4gICAgdGhpcy5wb2xpY3lDYXRlZ29yeUxpc3QgPSB0aGlzLml0ZW1zLmZpbmQoXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuaWQgPT09IGl0ZW0uaWRcbiAgICApPy5jaGlsZHJlbjtcbiAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuYWN0aXZlUHJvZ3JhbSwgdGhpcy5wb2xpY3lDYXRlZ29yeUxpc3QsICdhY3RpdmVQcm9ncmFtJyk7XG4gICAgLy8gaWYgKCFpdGVtIHx8IHRoaXMuY2F0ZWdvcnlMaXN0W2l0ZW0uaWRdKSByZXR1cm47XG4gICAgLy8gdGhpcy5sb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3QgPSB0cnVlO1xuICAgIC8vIHRoaXMuY2hlY2tQcm9ncmFtQ2F0ZWdvcnlFeGlzdHMoaXRlbT8uaWQpO1xuICB9XG5cbiAgY2hlY2tQcm9ncmFtQ2F0ZWdvcnlFeGlzdHMoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2dyYW1DYXRlZ29yeUxpc3RbaWRdKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdFtpZF0gPSB0aGlzLmFkZFBhcmVudFRyZWVUb0NhdGVnb3JpZXMoXG4gICAgICAgIHRoaXMucHJvZ3JhbUNhdGVnb3J5TGlzdFtpZF1cbiAgICAgICk7XG4gICAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZldGNoUHJvZ3JhbUNhdGVnb3J5TGlzdChpZCk7XG4gIH1cblxuICBmZXRjaFByb2dyYW1DYXRlZ29yeUxpc3QoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IFVSTCA9IGAke3RoaXMudXJsLmNhdGVnb3J5TGlzdH0maWQ9JHtpZH1gO1xuICAgIHRoaXMucG9saWN5TGlzdEFwaVNlcnZpY2VcbiAgICAgIC5nZXRQb2xpY3lDYXRlZ29yeUxpc3QoVVJMKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5wcm9ncmFtQ2F0ZWdvcnlMaXN0W2lkXSA9IHJlcz8uZGF0YT8uY2F0ZWdvcmllcyA/PyBbXTtcbiAgICAgICAgdGhpcy5jYXRlZ29yeUxpc3RbaWRdID0gdGhpcy5hZGRQYXJlbnRUcmVlVG9DYXRlZ29yaWVzKFxuICAgICAgICAgIHRoaXMucHJvZ3JhbUNhdGVnb3J5TGlzdFtpZF1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5sb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3QgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBwYXJlbnQgdHJlZSBpbmZvcm1hdGlvbiB0byBjYXRlZ29yaWVzXG4gICAqIEBwYXJhbSBjYXRlZ29yaWVzIEFycmF5IG9mIGNhdGVnb3JpZXNcbiAgICogQHJldHVybnMgQ2F0ZWdvcmllcyB3aXRoIHBhcmVudCB0cmVlIGluZm9ybWF0aW9uXG4gICAqL1xuICBhZGRQYXJlbnRUcmVlVG9DYXRlZ29yaWVzKGNhdGVnb3JpZXM6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghY2F0ZWdvcmllcz8ubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBjYXRlZ29yeU1hcCA9IG5ldyBNYXAoXG4gICAgICBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+IFtjYXRlZ29yeS5pZCwgY2F0ZWdvcnldKVxuICAgICk7XG5cbiAgICBjb25zdCBnZXRQYXJlbnRUcmVlID0gKGNhdGVnb3J5OiBDYXRlZ29yeSk6IHN0cmluZ1tdID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudFRyZWU6IHN0cmluZ1tdID0gW107XG4gICAgICBsZXQgY3VycmVudFBhcmVudCA9IGNhdGVnb3J5LnBhcmVudDtcblxuICAgICAgd2hpbGUgKGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q2F0ZWdvcnkgPSBjYXRlZ29yeU1hcC5nZXQoY3VycmVudFBhcmVudCk7XG4gICAgICAgIGlmICghcGFyZW50Q2F0ZWdvcnkpIGJyZWFrO1xuXG4gICAgICAgIHBhcmVudFRyZWUucHVzaChwYXJlbnRDYXRlZ29yeS5uYW1lKTtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IHBhcmVudENhdGVnb3J5LnBhcmVudDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcmVudFRyZWU7XG4gICAgfTtcblxuICAgIHJldHVybiBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+ICh7XG4gICAgICAuLi5jYXRlZ29yeSxcbiAgICAgIHBhcmVudFRyZWU6IGdldFBhcmVudFRyZWUoY2F0ZWdvcnkpLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgcHJvZ3JhbSB0eXBlIGZpbHRlciBzZWxlY3Rpb25cbiAgICogQHBhcmFtIGV2ZW50IFNlbGVjdGlvbiBldmVudFxuICAgKiBAcGFyYW0gaXRlbSBQcm9ncmFtIHR5cGUgYmVpbmcgc2VsZWN0ZWQvZGVzZWxlY3RlZFxuICAgKi9cbiAgc2VsZWN0RmlsdGVyKGV2ZW50OiBhbnksIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLnB1c2goaXRlbS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtVHlwZSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtVHlwZS5maWx0ZXIoXG4gICAgICAgIChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZCAhPT0gaXRlbS5pZFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzZXQgYWxsIGFwcGxpZWQgZmlsdGVycyAqL1xuICByZXNldEZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbVR5cGUgPSBbXTtcbiAgfVxuXG4gIC8qKiBBcHBseSBzZWxlY3RlZCBmaWx0ZXJzIHRvIHRoZSBwcm9ncmFtIGxpc3QgKi9cbiAgb25GaWx0ZXJDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtVHlwZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0udHlwZSlcbiAgICAgICk7XG4gICAgICB0aGlzLnBhZ2luYXRlZEl0ZW1zID0gWy4uLmZpbHRlcmVkSXRlbXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZ2luYXRlZEl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICB9XG5cbiAgICB0aGlzLmFwcGxpZWRQcm9ncmFtVHlwZSA9IHRoaXMucHJvZ3JhbVR5cGVMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0uaWQpXG4gICAgKTtcbiAgICB0aGlzLmNoZWNrQ2F0ZWdvcnlBdmFpbGJpbGl0eSgpO1xuICB9XG5cbiAgY2hlY2tDYXRlZ29yeUF2YWlsYmlsaXR5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWRQcm9ncmFtQXZhaWxhYmxlID0gdGhpcy5wYWdpbmF0ZWRJdGVtcy5zb21lKFxuICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uaWQgPT09IHRoaXMuYWN0aXZlUHJvZ3JhbT8uaWRcbiAgICApO1xuICAgIGlmICghaXNTZWxlY3RlZFByb2dyYW1BdmFpbGFibGUpIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICB0aGlzLmFjdGl2ZVByb2dyYW0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUcmlnZ2VyIGRlYm91bmNlZCBzZWFyY2ggKi9cbiAgc2VhcmNoKGhlYWRlcjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYoaGVhZGVyLnRvTG93ZXJDYXNlKCkgPT09ICdwb2xpY3kgY2F0ZWdvcnknKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB0aGlzLnBhZ2luYXRlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgIGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXJtKVxuICAgICAgICApO1xuICAgIH0gZWxzZSBpZihoZWFkZXIudG9Mb3dlckNhc2UoKSA9PT0gJ3BvbGljeSBzdWIgY2F0ZWdvcmllcycpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gdGhpcy5zZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHRoaXMucGFnaW5hdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFRlcm0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFBlcmZvcm0gc2VhcmNoIG9uIGl0ZW1zICovXG4gIHByaXZhdGUgcGVyZm9ybVNlYXJjaCgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgIGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXJtPy50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gICAgdGhpcy5wYWdpbmF0ZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXM7XG4gICAgdGhpcy5jaGVja0NhdGVnb3J5QXZhaWxiaWxpdHkoKTtcbiAgfVxuXG4gIC8qKiBDbGVhbnVwIHN1YnNjcmlwdGlvbnMgb24gY29tcG9uZW50IGRlc3RydWN0aW9uICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGNsb3NlUG9wb3ZlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbVR5cGUgPSB0aGlzLmFwcGxpZWRQcm9ncmFtVHlwZS5tYXAoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1jb250YWluZXJcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHluYW1pYy1saXN0LXRhYmxlXCJcbiAgICAqbmdJZj1cIlxuICAgICAgcGFnaW5hdGVkSXRlbXM/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgbG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgfHxcbiAgICAgICAgbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0O1xuICAgICAgZWxzZSBkZWZhdWx0VGVtcGxhdGVcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1oZWFkZXIgdngtZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXJzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtdy0xMDAgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1wbC0xXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VyaWFsTm8gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyVGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi5cIlxuICAgICAgICAgICAgICAoa2V5dXApPVwic2VhcmNoKGhlYWRlcilcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1saXN0LWJvZHkgdngtZC1mbGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibGVmdC1jb2x1bW5cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdDsgZWxzZSBwcm9ncmFtTGlzdExvYWRlclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBwYWdpbmF0ZWRJdGVtcyB8IHNlYXJjaCA6IHNlYXJjaFRlcm0gOiAnbmFtZSc7XG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImxpc3Qtcm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJhY3RpdmVQcm9ncmFtPy5pZCA9PT0gaXRlbS5pZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidmlld0NhdGVnb3J5KGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1jb2x1bW4gc2VyaWFsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzck5vXCI+e3sgaSArIDEgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtY29sdW1uIG5hbWVcIlxuICAgICAgICAgICAgICBbY2xhc3Mud2l0aC1jb3VudF09XCJzZWxlY3RlZEl0ZW1zW2l0ZW0uaWRdPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtaW5uZXIgdngtZnMtMTMgdngtcHItMlwiPnt7IGl0ZW0ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1jb2x1bW4gY291bnRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkSXRlbXNbaXRlbS5pZF0/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudC1ib3ggdngtZnMtOSB2eC1mdy02MDAgdngtbGgtNCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkSXRlbXNbaXRlbS5pZF0ubGVuZ3RoIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudC10ZXh0IHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtbGgtNCB2eC1tbC0yXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zW2l0ZW0uaWRdLmxlbmd0aCA+IDEgPyBcIkNBVEVHT1JJRVNcIiA6IFwiQ0FURUdPUllcIlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgU0VMRUNURURcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWNvbHVtbiBhY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJyb3cgdngtZnMtMTIgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4gJiN4ZTk3MDsgPC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwcm9ncmFtTGlzdExvYWRlcj5cbiAgICAgICAgICA8YXBwLXRhYmxlLWxvYWRlcj48L2FwcC10YWJsZS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb2x1bW5cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAhbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ICYmICFsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdDtcbiAgICAgICAgICAgIGVsc2UgY2F0ZWdvcnlMaXN0TG9hZGVyXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHBvbGljeUNhdGVnb3J5TGlzdD8ubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgZWxzZSBkZWZhdWx0U3ViQ2F0ZWdvcnlUZW1wbGF0ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1yb3cgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgcG9saWN5Q2F0ZWdvcnlMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZGF0YS5pZFwiXG4gICAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJzZWxlY3RJdGVtKCRldmVudCwgZGF0YSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZS1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZSB2eC1mcy0xM1wiPnt7IGRhdGE/Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tcGFydCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXByLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uZGlzcGxheV9uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndpdGhpbi1ib3ggdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgV2l0aGluXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tdmFsdWUgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZGF0YT8ucGFyZW50VHJlZT8uam9pbignID4gJylcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhPy5kaXNwbGF5X25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U3ViQ2F0ZWdvcnlUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItbm8tZGF0YVwiPlxuICAgICAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCJQT0xJQ1lfTk9fREFUQS5wb2xpY3lTdWJDYXRlZ29yeUxpc3RcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NhdGVnb3J5TGlzdExvYWRlcj5cbiAgICAgICAgICA8YXBwLXRhYmxlLWxvYWRlcj48L2FwcC10YWJsZS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LW5vLWRhdGEtY29udGFpbmVyXCI+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIlxuICAgICAgICAgIHNlYXJjaFRlcm0gPyBQT0xJQ1lfTk9fREFUQS5zZWFyY2ggOiBQT0xJQ1lfTk9fREFUQS5wcm9ncmFtTGlzdFxuICAgICAgICBcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL3BvbGljeS1jYXRlZ29yeS1saXN0L2NhdGVnb3J5LWxpc3QvY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQU1iLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsaUJBQWlCLEdBRWxCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixjQUFjLEdBQ2YsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0FBaUM3RCxNQUFNLE9BQU8sMkJBQTJCO0lBdUR0QyxZQUNVLFNBQTJCLEVBQzNCLG9CQUEwQztRQUQxQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBdERwRCxpREFBaUQ7UUFDeEMsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUUzQiw0REFBNEQ7UUFDbkQsa0JBQWEsR0FBZSxFQUFFLENB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IElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVGVtcGxhdGVSZWYsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUFJPR1JBTV9UQUJMRV9IRUFERVJTLFxuICBQQUdJTkFUSU9OX09QVElPTlMsXG4gIFBST0dSQU1fVFlQRV9MSVNULFxuICBQUk9HUkFNX05PX0RBVEEsXG59IGZyb20gJy4uLy4uL3Byb2dyYW0tbGlzdC9jb25zdGFudCc7XG5pbXBvcnQge1xuICBQT0xJQ1lfQ0FURUdPUllfVEFCTEVfSEVBREVSUyxcbiAgUE9MSUNZX05PX0RBVEEsXG59IGZyb20gJy4uL2NvbnN0YW50cy9wb2xpY3kuY29uc3RhbnRzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgTGlzdFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb2dyYW0tbGlzdC9zZXJ2aWNlcy9saXN0LXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZ3JhbUxpc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvZ3JhbS1saXN0L3NlcnZpY2VzL3Byb2dyYW0tbGlzdC1hcGkuc2VydmljZSc7XG5pbXBvcnQge1xuICBQT0xJQ1lfQ0FURUdPUllfTElTVF9TVFVCUyxcbiAgUE9MSUNZX0NBVEVHT1JZX0xJU1RfU1RVQlNfMixcbn0gZnJvbSAnLi4vY29uc3RhbnRzL3N0dWJzJztcbmltcG9ydCB7IFBvbGljeUxpc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcG9saWN5LWxpc3QtYXBpLnNlcnZpY2UnO1xuLyoqXG4gKiBBIHJldXNhYmxlIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgYSBsaXN0IG9mIHByb2dyYW1zIHdpdGggZmlsdGVyaW5nLCBwYWdpbmF0aW9uLCBhbmQgY2F0ZWdvcnkgdmlld2luZyBjYXBhYmlsaXRpZXMuXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIFByb2dyYW0gbGlzdGluZyB3aXRoIHBhZ2luYXRpb25cbiAqIC0gU2VhcmNoIGZ1bmN0aW9uYWxpdHkgd2l0aCBkZWJvdW5jZVxuICogLSBQcm9ncmFtIHR5cGUgZmlsdGVyaW5nXG4gKiAtIENhdGVnb3J5IHZpZXdpbmcgZm9yIHNlbGVjdGVkIHByb2dyYW1zXG4gKiAtIE11bHRpLXNlbGVjdCBjYXBhYmlsaXR5XG4gKlxuICogQHRlbXBsYXRlIFQgRXh0ZW5kcyBMaXN0SXRlbSBpbnRlcmZhY2UgZm9yIHR5cGUgc2FmZXR5IG9mIGxpc3QgaXRlbXNcbiAqL1xuXG5pbnRlcmZhY2UgQ2F0ZWdvcnkge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhcmVudD86IHN0cmluZztcbiAgcGFyZW50VHJlZT86IHN0cmluZ1tdO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcG9saWN5LWNhdGVnb3J5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2F0ZWdvcnktbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhdGVnb3J5LWxpc3QuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUG9saWN5Q2F0ZWdvcnlMaXN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICAvKiogQXJyYXkgb2YgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBsaXN0ICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIC8qKiBPYmplY3QgY29udGFpbmluZyBzZWxlY3RlZCBpdGVtcywga2V5ZWQgYnkgcHJvZ3JhbSBJRCAqL1xuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgfCBudWxsID0ge307XG5cbiAgLyoqIFVSTCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgQVBJIGVuZHBvaW50cyAqL1xuICBASW5wdXQoKSB1cmw6IGFueSA9IHt9O1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZCAqL1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIGRlc2VsZWN0ZWQgKi9cbiAgQE91dHB1dCgpIGl0ZW1EZXNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgKi9cbiAgQE91dHB1dCgpIGl0ZW1zU2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIHRhYmxlSGVhZGVycyA9IFBPTElDWV9DQVRFR09SWV9UQUJMRV9IRUFERVJTO1xuICBjdXJyZW50UGFnZSA9IFBBR0lOQVRJT05fT1BUSU9OUy5ERUZBVUxUX0NVUlJFTlRfUEFHRTtcbiAgcGFnZVNpemUgPSBQQUdJTkFUSU9OX09QVElPTlMuUEFHRV9TSVpFO1xuICB0b3RhbFBhZ2VzID0gMDtcbiAgc2VhcmNoVGVybSA9ICcnO1xuICBwYWdpbmF0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgYWN0aXZlUHJvZ3JhbTogYW55IHwgbnVsbCA9IG51bGw7XG4gIGNhdGVnb3J5TGlzdDogYW55ID0ge307XG4gIHByb2dyYW1UeXBlTGlzdDogYW55W10gPSBQUk9HUkFNX1RZUEVfTElTVDtcbiAgc2VsZWN0ZWRQcm9ncmFtVHlwZTogYW55W10gPSBbXTtcbiAgbG9hZGVyU3RhdGU6IGFueSA9IHtcbiAgICBwcm9ncmFtTGlzdDogZmFsc2UsXG4gICAgY2F0ZWdvcnlMaXN0OiBmYWxzZSxcbiAgfTtcbiAgYXBwbGllZFByb2dyYW1UeXBlOiBhbnlbXSA9IFtdO1xuICBQT0xJQ1lfTk9fREFUQTogYW55ID0gUE9MSUNZX05PX0RBVEE7XG4gIEFTU0VUUzogYW55ID0gQVNTRVRTO1xuICBwcm9ncmFtQ2F0ZWdvcnlMaXN0OiBhbnkgPSB7fTtcbiAgcG9saWN5Q2F0ZWdvcnlMaXN0OiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRDYXRlZ29yeTogYW55W10gPSBbXTtcbiAgc2VhcmNoQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IHsgdGVybTogc3RyaW5nOyBwbGFjZWhvbGRlcjogc3RyaW5nIH0gfSA9IHtcbiAgICAnUE9MSUNZIENBVEVHT1JZJzogeyB0ZXJtOiAnJywgcGxhY2Vob2xkZXI6ICdTZWFyY2ggUG9saWN5IENhdGVnb3J5JyB9LFxuICAgICdQT0xJQ1kgU1VCIENBVEVHT1JJRVMnOiB7IHRlcm06ICcnLCBwbGFjZWhvbGRlcjogJ1NlYXJjaCBTdWIgQ2F0ZWdvcmllcycgfSxcbiAgfTtcblxuICBmaWx0ZXJlZENhdGVnb3JpZXM6IGFueVtdID0gW107IC8vIGFmdGVyIGFwcGx5aW5nIGNhdGVnb3J5IHNlYXJjaFxuICBmaWx0ZXJlZFN1YmNhdGVnb3JpZXM6IGFueVtdID0gW107IC8vIGFmdGVyIGFwcGx5aW5nIHN1YmNhdGVnb3J5IHNlYXJjaFxuXG4gIC8qKiBTdWJqZWN0IGZvciBoYW5kbGluZyBkZWJvdW5jZWQgc2VhcmNoICovXG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAvKiogU3ViamVjdCBmb3IgY2xlYW51cCBzdWJzY3JpcHRpb25zICovXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGlzdFV0aWxzOiBMaXN0VXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9saWN5TGlzdEFwaVNlcnZpY2U6IFBvbGljeUxpc3RBcGlTZXJ2aWNlXG4gICkge1xuICAgIC8vIEluaXRpYWxpemUgZGVib3VuY2VkIHNlYXJjaFxuICAgIHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2goKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqIEluaXRpYWxpemUgY29tcG9uZW50IGJ5IGZldGNoaW5nIHByb2dyYW0gbGlzdCAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnUG9saWN5Q2F0ZWdvcnlMaXN0Q29tcG9uZW50JywgdGhpcy5pdGVtcyk7XG4gICAgdGhpcy5nZXRQb2xpY3lDYXRlZ29yeUxpc3QoKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGUgY2hhbmdlcyB0byBpbnB1dHMgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddIHx8IGNoYW5nZXNbJ3NlbGVjdGVkSXRlbXMnXSkge1xuICAgICAgdGhpcy5wYWdpbmF0ZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBGZXRjaCBwcm9ncmFtIGxpc3QgZnJvbSBBUEkgKi9cbiAgZ2V0UG9saWN5Q2F0ZWdvcnlMaXN0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgPSB0cnVlO1xuICAgIHRoaXMucG9saWN5TGlzdEFwaVNlcnZpY2UuZ2V0UG9saWN5Q2F0ZWdvcnlMaXN0KCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMucHJlcGFyZUNhdGVnb3J5TGlzdChyZXM/LmRhdGE/LnBvbGljeUNhdGVnb3JpZXMpO1xuICAgICAgdGhpcy52aWV3Q2F0ZWdvcnkodGhpcy5pdGVtc1swXSk7XG4gICAgICB0aGlzLmxvYWREYXRhKHRoaXMuaXRlbXMpO1xuICAgICAgdGhpcy5sb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZGF0YSBhbmQgaW5pdGlhbGl6ZSBwYWdpbmF0aW9uXG4gICAqIEBwYXJhbSBkYXRhIEFycmF5IG9mIGl0ZW1zIHRvIGxvYWRcbiAgICovXG4gIGxvYWREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZ29Ub1BhZ2UoMSwgZGF0YSk7XG4gIH1cblxuICBwcmVwYXJlQ2F0ZWdvcnlMaXN0KGNhdGVnb3JpZXM6IGFueVtdKSB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcbiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdCkgPT4gbWFwLnNldChjYXQuaWQsIGNhdCkpO1xuXG4gICAgLy8gQ2hlY2sgaWYgY2F0ZWdvcnkgaXMgYSByb290XG4gICAgY29uc3QgaXNSb290ID0gKGNhdDogYW55KSA9PiBjYXQucGFyZW50ID09PSBudWxsIHx8ICFtYXAuaGFzKGNhdC5wYXJlbnQpO1xuXG4gICAgcmV0dXJuIGNhdGVnb3JpZXMuZmlsdGVyKGlzUm9vdCkubWFwKChyb290OiBhbnkpID0+ICh7XG4gICAgICBpZDogcm9vdC5pZCxcbiAgICAgIG5hbWU6IHJvb3QubmFtZSxcbiAgICAgIGNoaWxkcmVuOiBbLi4udGhpcy5idWlsZENoaWxkcmVuKHJvb3QsIGNhdGVnb3JpZXMsIG1hcCldLFxuICAgIH0pKTtcbiAgfVxuXG4gIGJ1aWxkUGF0aChjYXRlZ29yaWVzOiBhbnksIG1hcDogYW55KSB7XG4gICAgY29uc3QgbmFtZXM6IHN0cmluZ1tdID0gW107IC8vIHN0YXJ0IHdpdGggY2hpbGQgbmFtZVxuICAgIGxldCBjdXJyZW50ID0gY2F0ZWdvcmllcztcblxuICAgIHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBtYXAuZ2V0KGN1cnJlbnQucGFyZW50KTtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgbmFtZXMucHVzaChwYXJlbnQubmFtZSk7XG4gICAgICAgIGN1cnJlbnQgPSBwYXJlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZXMuam9pbignIDwgJyk7XG4gIH1cblxuICBidWlsZENoaWxkcmVuKHJvb3Q6IGFueSwgY2F0ZWdvcmllczogYW55LCBtYXA6IGFueSkge1xuICAgIHJldHVybiBjYXRlZ29yaWVzXG4gICAgICAuZmlsdGVyKChjOiBhbnkpID0+IGMub3JpZ2luID09PSByb290LmlkIHx8IGMucGFyZW50ID09PSByb290LmlkKVxuICAgICAgLm1hcCgoY2hpbGQ6IGFueSkgPT4gKHtcbiAgICAgICAgaWQ6IGNoaWxkLmlkLFxuICAgICAgICBuYW1lOiBjaGlsZC5uYW1lLFxuICAgICAgICBjaGlsZHJlbjogW10sIC8vIGZsYXR0ZW4gY2hpbGRyZW5cbiAgICAgICAgZGlzcGxheV9uYW1lOiB0aGlzLmJ1aWxkUGF0aChjaGlsZCwgbWFwKSxcbiAgICAgICAgb3JpZ2luOiBjaGlsZC5vcmlnaW4sXG4gICAgICAgIHBhcmVudDogY2hpbGQucGFyZW50LFxuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBpdGVtIHNlbGVjdGlvbi9kZXNlbGVjdGlvblxuICAgKiBAcGFyYW0gZXZlbnQgU2VsZWN0aW9uIGV2ZW50XG4gICAqIEBwYXJhbSBpdGVtIEl0ZW0gYmVpbmcgc2VsZWN0ZWQvZGVzZWxlY3RlZFxuICAgKi9cbiAgc2VsZWN0SXRlbShldmVudDogYW55LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkgPSBpdGVtO1xuICAgIHRoaXMuaXRlbXNTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gaXRlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdCBhIHNwZWNpZmljIGl0ZW1cbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBkZXNlbGVjdFxuICAgKi9cbiAgZGVzZWxlY3RJdGVtKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5pdGVtRGVzZWxlY3RlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGl0ZW0gaXMgc2VsZWN0ZWRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBjaGVja1xuICAgKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgaXRlbSBpcyBzZWxlY3RlZFxuICAgKi9cbiAgaXNTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gc3BlY2lmaWMgcGFnZVxuICAgKiBAcGFyYW0gcGFnZSBQYWdlIG51bWJlciB0byBuYXZpZ2F0ZSB0b1xuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHBhZ2luYXRlXG4gICAqL1xuICBnb1RvUGFnZShwYWdlOiBudW1iZXIsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMucGFnaW5hdGVJdGVtcyhkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXJyYXkgb2YgcGFnZSBudW1iZXJzIGZvciBwYWdpbmF0aW9uXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHBhZ2UgbnVtYmVyc1xuICAgKi9cbiAgZ2V0UGFnZU51bWJlcnMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLmxpc3RVdGlscy5nZXRQYWdlTnVtYmVycyh0aGlzLml0ZW1zLmxlbmd0aCwgdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogUGFnaW5hdGUgaXRlbXMgYW5kIHVwZGF0ZSB2aWV3XG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gcGFnaW5hdGVcbiAgICovXG4gIHBhZ2luYXRlSXRlbXMoZGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKGRhdGEubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZSk7XG4gICAgdGhpcy5wYWdpbmF0ZWRJdGVtcyA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVmlldyBjYXRlZ29yaWVzIGZvciBhIHNlbGVjdGVkIHByb2dyYW1cbiAgICogQHBhcmFtIGl0ZW0gUHJvZ3JhbSB0byB2aWV3IGNhdGVnb3JpZXMgZm9yXG4gICAqL1xuICB2aWV3Q2F0ZWdvcnkoaXRlbT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlUHJvZ3JhbSA9IGl0ZW07XG4gICAgdGhpcy5sb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3QgPSB0cnVlO1xuICAgIHRoaXMucG9saWN5Q2F0ZWdvcnlMaXN0ID0gdGhpcy5pdGVtcy5maW5kKFxuICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LmlkID09PSBpdGVtLmlkXG4gICAgKT8uY2hpbGRyZW47XG4gICAgdGhpcy5sb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3QgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrUHJvZ3JhbUNhdGVnb3J5RXhpc3RzKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9ncmFtQ2F0ZWdvcnlMaXN0W2lkXSkge1xuICAgICAgdGhpcy5jYXRlZ29yeUxpc3RbaWRdID0gdGhpcy5hZGRQYXJlbnRUcmVlVG9DYXRlZ29yaWVzKFxuICAgICAgICB0aGlzLnByb2dyYW1DYXRlZ29yeUxpc3RbaWRdXG4gICAgICApO1xuICAgICAgdGhpcy5sb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3QgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhZGRQYXJlbnRUcmVlVG9DYXRlZ29yaWVzKGNhdGVnb3JpZXM6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghY2F0ZWdvcmllcz8ubGVuZ3RoKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBjYXRlZ29yeU1hcCA9IG5ldyBNYXAoXG4gICAgICBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+IFtjYXRlZ29yeS5pZCwgY2F0ZWdvcnldKVxuICAgICk7XG5cbiAgICBjb25zdCBnZXRQYXJlbnRUcmVlID0gKGNhdGVnb3J5OiBDYXRlZ29yeSk6IHN0cmluZ1tdID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudFRyZWU6IHN0cmluZ1tdID0gW107XG4gICAgICBsZXQgY3VycmVudFBhcmVudCA9IGNhdGVnb3J5LnBhcmVudDtcblxuICAgICAgd2hpbGUgKGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q2F0ZWdvcnkgPSBjYXRlZ29yeU1hcC5nZXQoY3VycmVudFBhcmVudCk7XG4gICAgICAgIGlmICghcGFyZW50Q2F0ZWdvcnkpIGJyZWFrO1xuXG4gICAgICAgIHBhcmVudFRyZWUucHVzaChwYXJlbnRDYXRlZ29yeS5uYW1lKTtcbiAgICAgICAgY3VycmVudFBhcmVudCA9IHBhcmVudENhdGVnb3J5LnBhcmVudDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcmVudFRyZWU7XG4gICAgfTtcblxuICAgIHJldHVybiBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+ICh7XG4gICAgICAuLi5jYXRlZ29yeSxcbiAgICAgIHBhcmVudFRyZWU6IGdldFBhcmVudFRyZWUoY2F0ZWdvcnkpLFxuICAgIH0pKTtcbiAgfVxuXG4gIGNoZWNrQ2F0ZWdvcnlBdmFpbGJpbGl0eSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkUHJvZ3JhbUF2YWlsYWJsZSA9IHRoaXMucGFnaW5hdGVkSXRlbXMuc29tZShcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSB0aGlzLmFjdGl2ZVByb2dyYW0/LmlkXG4gICAgKTtcbiAgICBpZiAoIWlzU2VsZWN0ZWRQcm9ncmFtQXZhaWxhYmxlKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdCA9IFtdO1xuICAgICAgdGhpcy5hY3RpdmVQcm9ncmFtID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiogVHJpZ2dlciBkZWJvdW5jZWQgc2VhcmNoICovXG4gIHNlYXJjaChoZWFkZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaENvbmZpZ1toZWFkZXJdLnRlcm0udG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChoZWFkZXIudG9Mb3dlckNhc2UoKSA9PT0gJ3BvbGljeSBjYXRlZ29yeScpIHtcbiAgICAgIHRoaXMucGFnaW5hdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICBpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXG4gICAgICApO1xuICAgICAgdGhpcy5jaGVja0NhdGVnb3J5QXZhaWxiaWxpdHkoKTtcbiAgICB9IGVsc2UgaWYgKGhlYWRlci50b0xvd2VyQ2FzZSgpID09PSAncG9saWN5IHN1YiBjYXRlZ29yaWVzJykge1xuICAgICAgdGhpcy5wb2xpY3lDYXRlZ29yeUxpc3QgPVxuICAgICAgICB0aGlzLml0ZW1zXG4gICAgICAgICAgLmZpbmQoKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LmlkID09PSB0aGlzLmFjdGl2ZVByb2dyYW0/LmlkKVxuICAgICAgICAgID8uY2hpbGRyZW4uZmlsdGVyKChzdWI6IGFueSkgPT5cbiAgICAgICAgICAgIHN1Yj8ubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKVxuICAgICAgICAgICkgfHwgW107XG4gICAgfVxuICB9XG5cbiAgLyoqIFBlcmZvcm0gc2VhcmNoIG9uIGl0ZW1zICovXG4gIHByaXZhdGUgcGVyZm9ybVNlYXJjaCgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgIGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXJtPy50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gICAgdGhpcy5wYWdpbmF0ZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXM7XG4gICAgdGhpcy5jaGVja0NhdGVnb3J5QXZhaWxiaWxpdHkoKTtcbiAgfVxuXG4gIC8qKiBDbGVhbnVwIHN1YnNjcmlwdGlvbnMgb24gY29tcG9uZW50IGRlc3RydWN0aW9uICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1jb250YWluZXJcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHluYW1pYy1saXN0LXRhYmxlXCJcbiAgICAqbmdJZj1cIlxuICAgICAgaXRlbXM/Lmxlbmd0aCA+IDAgfHwgbG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgfHwgbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0O1xuICAgICAgZWxzZSBkZWZhdWx0VGVtcGxhdGVcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1oZWFkZXIgdngtZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgdGFibGVIZWFkZXJzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtdy0xMDAgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1wbC0xXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2VyaWFsTm8gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyVGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBoZWFkZXIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoQ29uZmlnW2hlYWRlcl0udGVybVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hDb25maWdbaGVhZGVyXS5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2goaGVhZGVyKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtYm9keSB2eC1kLWZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWNvbHVtblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRlclN0YXRlLnByb2dyYW1MaXN0OyBlbHNlIHByb2dyYW1MaXN0TG9hZGVyXCI+XG4gICAgICAgICAgPCEtLSBTaG93IGl0ZW1zIHdoZW4gdGhleSBleGlzdCAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgcGFnaW5hdGVkSXRlbXNcbiAgICAgICAgICAgICAgICB8IHNlYXJjaCA6IHNlYXJjaENvbmZpZ1snUE9MSUNZIENBVEVHT1JZJ10udGVybSA6ICduYW1lJ1xuICAgICAgICAgICAgICApPy5sZW5ndGggPiAwXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgcGFnaW5hdGVkSXRlbXNcbiAgICAgICAgICAgICAgICAgIHwgc2VhcmNoXG4gICAgICAgICAgICAgICAgICAgIDogc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtXG4gICAgICAgICAgICAgICAgICAgIDogJ25hbWUnIGFzIGZpbHRlcmVkUGFyZW50Q2F0ZWdvcmllcztcbiAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1yb3dcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiYWN0aXZlUHJvZ3JhbT8uaWQgPT09IGl0ZW0uaWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0NhdGVnb3J5KGl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtY29sdW1uIHNlcmlhbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzck5vXCI+e3sgaSArIDEgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxpc3QtY29sdW1uIG5hbWVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy53aXRoLWNvdW50XT1cInNlbGVjdGVkSXRlbXNbaXRlbS5pZF0/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtaW5uZXIgdngtZnMtMTMgdngtcHItMlwiPnt7IGl0ZW0ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1jb2x1bW4gY291bnRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zWzBdPy5vcmlnaW4gPT09IGl0ZW0uaWQgfHxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNbMF0/LmlkID09PSBpdGVtLmlkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnQtYm94IHZ4LWZzLTkgdngtZnctNjAwIHZ4LWxoLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgMSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnQtdGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTQgdngtbWwtMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQ0FURUdPUlkgU0VMRUNURURcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWNvbHVtbiBhY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFycm93IHZ4LWZzLTEyIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiAmI3hlOTcwOyA8L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIFNob3cgbm8tZGF0YSB3aGVuIHNlYXJjaCByZXR1cm5zIG5vIHJlc3VsdHMgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtICYmXG4gICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBwYWdpbmF0ZWRJdGVtc1xuICAgICAgICAgICAgICAgIHwgc2VhcmNoIDogc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtIDogJ25hbWUnXG4gICAgICAgICAgICAgICk/Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1uby1kYXRhLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCJQT0xJQ1lfTk9fREFUQS5zZWFyY2hcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwcm9ncmFtTGlzdExvYWRlcj5cbiAgICAgICAgICA8YXBwLXRhYmxlLWxvYWRlcj48L2FwcC10YWJsZS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb2x1bW5cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAhbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ICYmICFsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdDtcbiAgICAgICAgICAgIGVsc2UgY2F0ZWdvcnlMaXN0TG9hZGVyXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBwYWdpbmF0ZWRJdGVtc1xuICAgICAgICAgICAgICAgIHwgc2VhcmNoIDogc2VhcmNoQ29uZmlnWydQT0xJQ1kgQ0FURUdPUlknXS50ZXJtIDogJ25hbWUnXG4gICAgICAgICAgICAgICk/Lmxlbmd0aCA+IDAgJiYgcG9saWN5Q2F0ZWdvcnlMaXN0Py5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICBlbHNlIGRlZmF1bHRTdWJDYXRlZ29yeVRlbXBsYXRlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJsaXN0LXJvdyB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBwb2xpY3lDYXRlZ29yeUxpc3Q7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGE/LmlkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEl0ZW1zWzBdPy5pZCA9PT0gZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbSgkZXZlbnQsIGRhdGEpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgdngtZnMtMTNcIj57eyBkYXRhPy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2l0aGluLXBhcnQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wci0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGE/LmRpc3BsYXlfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3aXRoaW4tYm94IHZ4LWZzLTkgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbXItMiB2eC1saC0zXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFdpdGhpblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2l0aGluLXZhbHVlIHZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImRhdGE/LnBhcmVudFRyZWU/LmpvaW4oJyA+ICcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZGF0YT8uZGlzcGxheV9uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN1YkNhdGVnb3J5VGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLW5vLWRhdGFcIj5cbiAgICAgICAgICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICAgICAgICAgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiXG4gICAgICAgICAgICAgICAgW25vRGF0YVRleHRdPVwiUE9MSUNZX05PX0RBVEEucG9saWN5U3ViQ2F0ZWdvcnlMaXN0XCJcbiAgICAgICAgICAgICAgPjwvYXBwLW5vLWRhdGE+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjYXRlZ29yeUxpc3RMb2FkZXI+XG4gICAgICAgICAgPGFwcC10YWJsZS1sb2FkZXI+PC9hcHAtdGFibGUtbG9hZGVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwibGlzdC1uby1kYXRhLWNvbnRhaW5lclwiPlxuICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCJcbiAgICAgICAgICBzZWFyY2hUZXJtID8gUE9MSUNZX05PX0RBVEEuc2VhcmNoIDogUE9MSUNZX05PX0RBVEEucHJvZ3JhbUxpc3RcbiAgICAgICAgXCJcbiAgICAgID48L2FwcC1uby1kYXRhPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|