nuxeo-development-framework 6.1.1 → 6.1.3
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/bundles/nuxeo-development-framework.umd.js +893 -674
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +1 -1
- package/esm2015/lib/components/ndf-filters/components/aggregation-date-list/aggregation-date-list.component.js +76 -23
- package/esm2015/lib/components/ndf-filters/models/field-options/date-list-options.js +1 -1
- package/esm2015/lib/components/ndf-filters/models/filter-option.model.js +1 -1
- package/esm2015/lib/components/ndf-filters/services/aggregation-field.service.js +23 -12
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +32 -16
- package/esm2015/lib/components/reports/ndf-reports/models/common.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/pipes/check-condition.pipe.js +4 -4
- package/esm2015/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.js +26 -31
- package/esm2015/lib/components/reports/ndf-reports/services/ndf-reports.service.js +16 -21
- package/esm2015/lib/components/reports/ndf-reports/services/reports-hooks.service.js +34 -1
- package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +116 -102
- package/esm2015/lib/components/tables/dynamic-table/public-api.js +3 -2
- package/esm2015/lib/components/tables/dynamic-table/services/table-hooks.service.js +56 -0
- package/esm2015/lib/shared/services/base/base.service.js +9 -10
- package/fesm2015/nuxeo-development-framework.js +613 -446
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/ndf-filters/components/aggregation-date-list/aggregation-date-list.component.d.ts +7 -0
- package/lib/components/ndf-filters/models/field-options/date-list-options.d.ts +2 -1
- package/lib/components/ndf-filters/models/filter-option.model.d.ts +6 -0
- package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts +1 -1
- package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +9 -3
- package/lib/components/reports/ndf-reports/models/common.d.ts +9 -1
- package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts +4 -5
- package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +1 -0
- package/lib/components/reports/ndf-reports/pipes/check-condition.pipe.d.ts +2 -2
- package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +4 -2
- package/lib/components/reports/ndf-reports/services/ndf-reports.service.d.ts +6 -6
- package/lib/components/reports/ndf-reports/services/reports-hooks.service.d.ts +15 -3
- package/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.d.ts +23 -9
- package/lib/components/tables/dynamic-table/public-api.d.ts +2 -1
- package/lib/components/tables/dynamic-table/services/table-hooks.service.d.ts +13 -0
- package/lib/shared/services/base/base.service.d.ts +4 -2
- package/package.json +1 -1
package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation, } from '@angular/core';
|
|
2
3
|
import _ from 'lodash';
|
|
3
|
-
import { catchError, map, startWith } from 'rxjs/operators';
|
|
4
|
+
import { catchError, map, startWith, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { DestroySubject } from '../../../../shared';
|
|
4
6
|
import { EMPTY_TEMPLATE } from '../directives/empty-state.directive';
|
|
5
|
-
import { Evaluator } from '../../../../shared';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "../../../../core/adapters/adapter.service";
|
|
8
9
|
import * as i2 from "../../../../core/services/callApi/call-api.service";
|
|
9
10
|
import * as i3 from "../../../../core/services/nuxeo/nuxeo.service";
|
|
10
11
|
import * as i4 from "../services/dynamic-table.service";
|
|
11
|
-
import * as i5 from "
|
|
12
|
-
import * as i6 from "
|
|
13
|
-
import * as i7 from "
|
|
14
|
-
import * as i8 from "../../table/
|
|
15
|
-
import * as i9 from "
|
|
16
|
-
import * as i10 from "
|
|
17
|
-
import * as i11 from "
|
|
18
|
-
import * as i12 from "@
|
|
12
|
+
import * as i5 from "../services/table-hooks.service";
|
|
13
|
+
import * as i6 from "../../../../shared/components/spinner/spinner.component";
|
|
14
|
+
import * as i7 from "../../../pagination/pagination/pagination.component";
|
|
15
|
+
import * as i8 from "../../table/page-sizes-list/page-sizes-list.component";
|
|
16
|
+
import * as i9 from "../../table/table/table.component";
|
|
17
|
+
import * as i10 from "@angular/material/progress-spinner";
|
|
18
|
+
import * as i11 from "../../../skeleton/skeleton.component";
|
|
19
|
+
import * as i12 from "@angular/common";
|
|
20
|
+
import * as i13 from "@ngx-translate/core";
|
|
19
21
|
/**
|
|
20
22
|
* this component is an additional layer that uses [Table Component]{@link TableComponent} internally,
|
|
21
23
|
* you can use this component to configure a page provider listing out of the box easily,
|
|
@@ -43,13 +45,15 @@ import * as i12 from "@ngx-translate/core";
|
|
|
43
45
|
* (actionOnRow)="performAction($event)">
|
|
44
46
|
* </cts-dynamic-table>
|
|
45
47
|
*/
|
|
46
|
-
export class DynamicTableComponent {
|
|
47
|
-
constructor(adapter, callApi, nuxeoService, dynamicTableService, cdr) {
|
|
48
|
+
export class DynamicTableComponent extends DestroySubject {
|
|
49
|
+
constructor(adapter, callApi, nuxeoService, dynamicTableService, cdr, _tableHooksService) {
|
|
50
|
+
super();
|
|
48
51
|
this.adapter = adapter;
|
|
49
52
|
this.callApi = callApi;
|
|
50
53
|
this.nuxeoService = nuxeoService;
|
|
51
54
|
this.dynamicTableService = dynamicTableService;
|
|
52
55
|
this.cdr = cdr;
|
|
56
|
+
this._tableHooksService = _tableHooksService;
|
|
53
57
|
/** event to emit when selecting single row */
|
|
54
58
|
this.onRowSelected = new EventEmitter();
|
|
55
59
|
/** event to emit when selecting single row to catch index*/
|
|
@@ -111,7 +115,9 @@ export class DynamicTableComponent {
|
|
|
111
115
|
return this._pageNumber;
|
|
112
116
|
}
|
|
113
117
|
ngOnInit() {
|
|
114
|
-
this.
|
|
118
|
+
this.dynamicTableService.refreshData
|
|
119
|
+
.pipe(startWith(null), takeUntil(this.destroy$))
|
|
120
|
+
.subscribe((filterData) => {
|
|
115
121
|
if (filterData) {
|
|
116
122
|
this.filterParams = Object.assign({}, filterData);
|
|
117
123
|
// reset page number when start new filtering
|
|
@@ -120,9 +126,6 @@ export class DynamicTableComponent {
|
|
|
120
126
|
this.getData();
|
|
121
127
|
});
|
|
122
128
|
}
|
|
123
|
-
ngOnDestroy() {
|
|
124
|
-
this.myDataSubscription ? this.myDataSubscription.unsubscribe() : '';
|
|
125
|
-
}
|
|
126
129
|
ngOnChanges(changes) {
|
|
127
130
|
const isFirstChange = Object.values(changes).some((c) => c.isFirstChange());
|
|
128
131
|
if (isFirstChange) {
|
|
@@ -149,91 +152,100 @@ export class DynamicTableComponent {
|
|
|
149
152
|
this.onPage.emit({
|
|
150
153
|
pageIndex: this._pageNumber,
|
|
151
154
|
pageSize: this.pageSize,
|
|
152
|
-
length: this.totalRecords
|
|
155
|
+
length: this.totalRecords,
|
|
153
156
|
});
|
|
154
157
|
}
|
|
155
158
|
getData(payload = {}, headers = {}) {
|
|
156
|
-
var _a, _b, _c, _d, _e, _f, _g, _h
|
|
157
|
-
this
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
? {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
: {})), { currentPageIndex: +this.pageNum - 1 }), (this.pageSize ? { pageSize: this.pageSize } : {})), { offset: 0 }), payload);
|
|
165
|
-
// don't refresh all table in case of sorting only
|
|
166
|
-
if (!this.sorting && this.isLegacyMode) {
|
|
167
|
-
// used to not refreshing all table in case of sorting since table lose sorting state when refresh all table
|
|
168
|
-
this.rows = []; // used to refresh table to feel changes in actions when perform action and need to refresh actions
|
|
169
|
-
}
|
|
170
|
-
this.sorting = false; // reset sorting status to false and for next sorting func sorting set it to true again
|
|
171
|
-
const _headers = Object.assign(Object.assign({}, this.headers), headers);
|
|
172
|
-
let _providerPayload = {
|
|
173
|
-
query: Object.assign({ pageProvider: this.pageProvider }, params),
|
|
174
|
-
options: {
|
|
175
|
-
headers: _headers
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
let _customPayload = {
|
|
179
|
-
params: Object.assign(Object.assign({}, params), (((_c = this.customFilters) === null || _c === void 0 ? void 0 : _c.params) || {})),
|
|
180
|
-
headers: _headers,
|
|
181
|
-
payload: _.merge({}, ((_d = this.customUrl) === null || _d === void 0 ? void 0 : _d.payload) || {}, ((_e = this.customFilters) === null || _e === void 0 ? void 0 : _e.payload) || {})
|
|
182
|
-
};
|
|
183
|
-
if (((_f = this.requestActions) === null || _f === void 0 ? void 0 : _f.beforeSubmit) && typeof ((_g = this.requestActions) === null || _g === void 0 ? void 0 : _g.beforeSubmit) === 'string') {
|
|
184
|
-
try {
|
|
185
|
-
if (this.customUrl) {
|
|
186
|
-
_customPayload = Evaluator.evaluate((_h = this.requestActions) === null || _h === void 0 ? void 0 : _h.beforeSubmit, { criteria: _customPayload }, 'payload');
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
_providerPayload = Evaluator.evaluate((_j = this.requestActions) === null || _j === void 0 ? void 0 : _j.beforeSubmit, { criteria: _providerPayload }, 'payload');
|
|
159
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
this.loading = true; // internal loading
|
|
162
|
+
this.onLoading.emit(true); // external loading
|
|
163
|
+
let params = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (this.range ? { dublincore_created_agg: this.range } : {})), this.filterParams), this.queryParam), this.quickFilter), (Object.keys(this.sortingBy || {}).length
|
|
164
|
+
? {
|
|
165
|
+
sortBy: (_a = this.sortingBy) === null || _a === void 0 ? void 0 : _a.sortBy,
|
|
166
|
+
sortOrder: (_b = this.sortingBy) === null || _b === void 0 ? void 0 : _b.sortOrder,
|
|
190
167
|
}
|
|
168
|
+
: {})), { currentPageIndex: +this.pageNum - 1 }), (this.pageSize ? { pageSize: this.pageSize } : {})), { offset: 0 }), payload);
|
|
169
|
+
// don't refresh all table in case of sorting only
|
|
170
|
+
if (!this.sorting && this.isLegacyMode) {
|
|
171
|
+
// used to not refreshing all table in case of sorting since table lose sorting state when refresh all table
|
|
172
|
+
this.rows = []; // used to refresh table to feel changes in actions when perform action and need to refresh actions
|
|
191
173
|
}
|
|
192
|
-
|
|
193
|
-
|
|
174
|
+
this.sorting = false; // reset sorting status to false and for next sorting func sorting set it to true again
|
|
175
|
+
const _headers = Object.assign(Object.assign({}, this.headers), headers);
|
|
176
|
+
let _providerPayload = {
|
|
177
|
+
query: Object.assign(Object.assign({ pageProvider: this.pageProvider }, params), (((_c = this.customFilters) === null || _c === void 0 ? void 0 : _c.params) || {})),
|
|
178
|
+
options: {
|
|
179
|
+
headers: _headers,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
let _customPayload = {
|
|
183
|
+
url: (_d = this.customUrl) === null || _d === void 0 ? void 0 : _d.url,
|
|
184
|
+
params: Object.assign(Object.assign({}, params), (((_e = this.customFilters) === null || _e === void 0 ? void 0 : _e.params) || {})),
|
|
185
|
+
headers: _headers,
|
|
186
|
+
payload: _.merge({}, ((_f = this.customUrl) === null || _f === void 0 ? void 0 : _f.payload) || {}, ((_g = this.customFilters) === null || _g === void 0 ? void 0 : _g.payload) || {}),
|
|
187
|
+
};
|
|
188
|
+
let requestData = this.customUrl
|
|
189
|
+
? _customPayload
|
|
190
|
+
: _providerPayload;
|
|
191
|
+
const beforeSubmitString = (_h = this.requestActions) === null || _h === void 0 ? void 0 : _h.beforeSubmit;
|
|
192
|
+
if (typeof beforeSubmitString === 'string') {
|
|
193
|
+
requestData = yield this._tableHooksService.evaluate(beforeSubmitString, requestData);
|
|
194
194
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}), catchError((err) => {
|
|
204
|
-
throw err;
|
|
205
|
-
}))
|
|
206
|
-
.subscribe((res) => {
|
|
207
|
-
this.loading = false;
|
|
208
|
-
this.onLoading.emit(false);
|
|
209
|
-
this.onLoad.emit(res);
|
|
210
|
-
if (!this.initialized) {
|
|
211
|
-
this.onInitialize.emit(res);
|
|
212
|
-
this.initialized = true;
|
|
195
|
+
requestData = yield this._tableHooksService.executeBeforeSubmit(requestData);
|
|
196
|
+
let query$;
|
|
197
|
+
if (this.customUrl) {
|
|
198
|
+
const _request = requestData;
|
|
199
|
+
query$ = this.callApi.customQuery({
|
|
200
|
+
url: _request.url,
|
|
201
|
+
method: this.customUrl.method,
|
|
202
|
+
}, _request.params, _request.headers, _request.payload);
|
|
213
203
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
204
|
+
else {
|
|
205
|
+
const _request = requestData;
|
|
206
|
+
query$ = this.callApi.query(_request.query, _request.options);
|
|
207
|
+
}
|
|
208
|
+
query$
|
|
209
|
+
.pipe(map((data) => {
|
|
210
|
+
data.entries.map((item) => this.adapter.adaptIn(item, this.fields));
|
|
211
|
+
return data;
|
|
212
|
+
}), catchError((err) => {
|
|
213
|
+
throw err;
|
|
214
|
+
}), takeUntil(this.destroy$))
|
|
215
|
+
.subscribe((res) => {
|
|
216
|
+
this.loading = false;
|
|
217
|
+
this.onLoading.emit(false);
|
|
218
|
+
this.onLoad.emit(res);
|
|
219
|
+
if (!this.initialized) {
|
|
220
|
+
this.onInitialize.emit(res);
|
|
221
|
+
this.initialized = true;
|
|
225
222
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
223
|
+
res.entries.forEach((element) => {
|
|
224
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
225
|
+
if (element.properties &&
|
|
226
|
+
((_a = element.properties) === null || _a === void 0 ? void 0 : _a.creator) &&
|
|
227
|
+
((_b = element.properties.creator) === null || _b === void 0 ? void 0 : _b.properties)) {
|
|
228
|
+
element.properties['creatorFullObject'] = Object.assign({}, element.properties.creator);
|
|
229
|
+
element.properties.creator =
|
|
230
|
+
((_d = (_c = element.properties.creator) === null || _c === void 0 ? void 0 : _c.properties) === null || _d === void 0 ? void 0 : _d.firstName) +
|
|
231
|
+
' ' +
|
|
232
|
+
((_f = (_e = element.properties.creator) === null || _e === void 0 ? void 0 : _e.properties) === null || _f === void 0 ? void 0 : _f.lastName);
|
|
233
|
+
}
|
|
234
|
+
if (element.properties && ((_g = element.properties) === null || _g === void 0 ? void 0 : _g.assignee)) {
|
|
235
|
+
element.properties.assignee = (_h = element.properties) === null || _h === void 0 ? void 0 : _h.assignee.fullName;
|
|
236
|
+
}
|
|
237
|
+
// if(this.higlightUnread){
|
|
238
|
+
// this.cechkIfReadOrNot(element.properties);
|
|
239
|
+
// }
|
|
240
|
+
});
|
|
241
|
+
this.totalRecords = res.resultsCount;
|
|
242
|
+
this.rows = res.entries;
|
|
243
|
+
this.cdr.detectChanges();
|
|
244
|
+
// emit data to outside in case of search page for the first time only to prevent refreshing aggregation with every page change
|
|
245
|
+
// and for any other page type emit data directly in all page numbers
|
|
246
|
+
if ((this.isSearchPage && this.pageNum === 1) || !this.isSearchPage)
|
|
247
|
+
this.onGettingData.emit(res);
|
|
229
248
|
});
|
|
230
|
-
this.totalRecords = res.resultsCount;
|
|
231
|
-
this.rows = res.entries;
|
|
232
|
-
this.cdr.detectChanges();
|
|
233
|
-
// emit data to outside in case of search page for the first time only to prevent refreshing aggregation with every page change
|
|
234
|
-
// and for any other page type emit data directly in all page numbers
|
|
235
|
-
if ((this.isSearchPage && this.pageNum === 1) || !this.isSearchPage)
|
|
236
|
-
this.onGettingData.emit(res);
|
|
237
249
|
});
|
|
238
250
|
}
|
|
239
251
|
// function to be executed when clicking on single row
|
|
@@ -263,7 +275,7 @@ export class DynamicTableComponent {
|
|
|
263
275
|
this.onPage.emit({
|
|
264
276
|
pageIndex: this._pageNumber,
|
|
265
277
|
pageSize: this.pageSize,
|
|
266
|
-
length: this.totalRecords
|
|
278
|
+
length: this.totalRecords,
|
|
267
279
|
});
|
|
268
280
|
this.getData({}, this.skipAggregation === 'onPageChange' ? { skipAggregates: 'true' } : {});
|
|
269
281
|
}
|
|
@@ -276,8 +288,10 @@ export class DynamicTableComponent {
|
|
|
276
288
|
// check if loged in user is in viewers array or not
|
|
277
289
|
if (element['viewers:users'] && element['viewers:users'].length) {
|
|
278
290
|
element.isReaded = false;
|
|
279
|
-
element['viewers:users'].map(user => {
|
|
280
|
-
if (user.username ===
|
|
291
|
+
element['viewers:users'].map((user) => {
|
|
292
|
+
if (user.username ===
|
|
293
|
+
this.nuxeoService.nuxeoClient.user.properties.username &&
|
|
294
|
+
user.state === 'read') {
|
|
281
295
|
element.isReaded = true;
|
|
282
296
|
}
|
|
283
297
|
});
|
|
@@ -287,8 +301,8 @@ export class DynamicTableComponent {
|
|
|
287
301
|
}
|
|
288
302
|
}
|
|
289
303
|
}
|
|
290
|
-
DynamicTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTableComponent, deps: [{ token: i1.AdapterService }, { token: i2.CallApiService }, { token: i3.NuxeoService }, { token: i4.DynamicTableService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
-
DynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicTableComponent, selector: "cts-dynamic-table", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", higlightUnread: "higlightUnread", isLegacyMode: "isLegacyMode", showTotalRecord: "showTotalRecord", pageNumber: "pageNumber", sortingBy: "sortingBy", queryParam: "queryParam", customFilters: "customFilters", quickFilter: "quickFilter", report: "report", rowCursor: "rowCursor", fullWidth: "fullWidth", tableMode: "tableMode", componentName: "componentName", tableActions: "tableActions", defultSort: "defultSort", range: "range", isSearchPage: "isSearchPage", multiSelectRows: "multiSelectRows", customFirstRow: "customFirstRow", highlightSelectedCard: "highlightSelectedCard", showActionsAsMenu: "showActionsAsMenu", filterParams: "filterParams", skipAggregation: "skipAggregation", customUrl: "customUrl", format: "format", requestActions: "requestActions", pageSizes: "pageSizes" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", sortChanged: "sortChanged", onPageChange: "onPageChange", onPage: "onPage", onLoad: "onLoad", onInitialize: "onInitialize" }, host: { properties: { "class.loading-results": "loading", "class.no-data": "rows.length <= 0" } }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EMPTY_TEMPLATE, descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"wrapping table-wrapping\">\r\n\t<ng-container *ngIf=\"isLegacyMode\">\r\n\t\t<div class=\"table-reposition\">\r\n\t\t\t<ng-container *ngIf=\"rows.length\" [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"loading\">\r\n\t\t\t<cts-spinner></cts-spinner>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<div class=\"table-reposition\" *ngIf=\"!isLegacyMode\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t<ng-container\r\n\t\t\t*ngIf=\"!initialized\"\r\n\t\t\t[ngTemplateOutlet]=\"skeleton\"\r\n\t\t\t[ngTemplateOutletContext]=\"{ $implicit: 10 }\"\r\n\t\t></ng-container>\r\n\t</div>\r\n\r\n\t<div\r\n\t\tclass=\"pagination-iner-wraper my-3\"\r\n\t\t[ngClass]=\"{ relative: pageSizes?.length }\"\r\n\t\t*ngIf=\"rows.length \"\r\n\t>\r\n\t\t<cts-pagination\r\n *ngIf=\"totalRecords > pageSize\"\r\n\t\t\t[page]=\"pageNum\"\r\n\t\t\t(change)=\"paginationChange($event)\"\r\n\t\t\t[size]=\"pageSize\"\r\n\t\t\t[count]=\"totalRecords\"\r\n\t\t></cts-pagination>\r\n\t\t<div class=\"absolute ndfPageSizes flex gap-x-3 items-center mt-2\">\r\n\t\t\t<ndf-page-sizes-list\r\n\t\t\t\t*ngIf=\"pageSizes?.length\"\r\n\t\t\t\t[pageSizes]=\"pageSizes\"\r\n\t\t\t\t[selectedPageSize]=\"pageSize\"\r\n\t\t\t\t(onChangePageSize)=\"onChangePageSize($event)\"\r\n\t\t\t>\r\n\t\t\t</ndf-page-sizes-list>\r\n\r\n\t\t\t<span *ngIf=\"showTotalRecord\">{{ 'TABLE.totalRecords' | translate: { count: totalRecords } }}</span>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || legacyDefaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"!isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || defaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n</div>\r\n\r\n<ng-template #table>\r\n\t<cts-table\r\n\t\t[rows]=\"rows\"\r\n\t\t[columns]=\"columns\"\r\n\t\t[responsiveColumns]=\"responsiveColumns\"\r\n\t\t[rowCursor]=\"rowCursor\"\r\n\t\t[fullWidth]=\"fullWidth\"\r\n\t\t[entityType]=\"entityType\"\r\n\t\t[prefix]=\"prefix\"\r\n\t\t[totalRecords]=\"totalRecords\"\r\n\t\t[tableMode]=\"tableMode\"\r\n\t\t[higlightUnread]=\"higlightUnread\"\r\n\t\t[componentName]=\"componentName\"\r\n\t\t[multiSelectRows]=\"multiSelectRows\"\r\n\t\t[tableActions]=\"tableActions\"\r\n\t\t[showActionsAsMenu]=\"showActionsAsMenu\"\r\n\t\t[defultSort]=\"defultSort\"\r\n\t\t[format]=\"format\"\r\n\t\t[highlightSelectedCard]=\"highlightSelectedCard\"\r\n\t\t[customFirstRow]=\"customFirstRow\"\r\n\t\t(onRowSelected)=\"rowDetails($event)\"\r\n\t\t(onRowIndexSelected)=\"indexDetails($event)\"\r\n\t\t(onMultiRowSelected)=\"onMultiRowSelectValue($event)\"\r\n\t\t(actionOnRow)=\"performAction($event)\"\r\n\t\t(onSorting)=\"onSort($event)\"\r\n\t></cts-table>\r\n</ng-template>\r\n\r\n<ng-template #legacyDefaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"empty-state\" *ngIf=\"loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'gettingData' : 'gettingData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div *ngIf=\"loading && initialized\" class=\"loading-content\">\r\n\t\t<mat-spinner [diameter]=\"100\"></mat-spinner>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #skeleton let-rows>\r\n\t<table class=\"w-full\">\r\n\t\t<thead *ngIf=\"false\">\r\n\t\t\t<tr class=\"border-b border-green-900\">\r\n\t\t\t\t<th *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 60px\">\r\n\t\t\t\t\t<app-skeleton width=\"60px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t\t<th *ngFor=\"let num of [].constructor(columns?.length || 4); let i = index\" class=\"px-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.7rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t</tr>\r\n\t\t</thead>\r\n\t\t<tbody>\r\n\t\t\t<tr *ngFor=\"let row of [].constructor(rows || 10); let index = index\" class=\"border-b border-gray-200\">\r\n\t\t\t\t<td *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 50px\">\r\n\t\t\t\t\t<app-skeleton width=\"50px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td *ngFor=\"let col of [].constructor(columns?.length || 4); let i = index\" class=\"p-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t</tbody>\r\n\t</table>\r\n</ng-template>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.wrapping{position:relative}.wrapping .table-reposition{overflow-y:var(--table-reposition-overflow-y, hidden);scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-x:hidden}.empty-state{padding:200px;display:flex;justify-content:center;align-items:center;font-size:20px;font-weight:bold}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#b4bac6}.dark-scroll::-webkit-scrollbar-thumb{background:#8f98aa}.ndfPageSizes{right:0;left:unset}.rtl .ndfPageSizes{right:unset;left:0}.loading-content{position:var(--loading-content-position, absolute);inset:0;display:grid;place-items:center;background:var(--loading-content-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-content-backdrop-filter, blur(3px));backdrop-filter:var(--loading-content-backdrop-filter, blur(3px))}.pagination-iner-wraper{display:var(--pagination-inner-display, flex);justify-content:var(--pagination-inner-justify, center);align-items:var(--pagination-inner-align, center)}\n"], components: [{ type: i5.SpinnerComponent, selector: "cts-spinner" }, { type: i6.PaginationComponent, selector: "cts-pagination", inputs: ["size", "count", "page"], outputs: ["change"] }, { type: i7.PageSizesListComponent, selector: "ndf-page-sizes-list", inputs: ["pageSizes", "selectedPageSize"], outputs: ["onChangePageSize"] }, { type: i8.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "higlightUnread", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }, { type: i9.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i10.SkeletonComponent, selector: "app-skeleton", inputs: ["styleClass", "style", "shape", "animation", "radius", "size", "width", "height", "randomWidth"] }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i12.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
304
|
+
DynamicTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTableComponent, deps: [{ token: i1.AdapterService }, { token: i2.CallApiService }, { token: i3.NuxeoService }, { token: i4.DynamicTableService }, { token: i0.ChangeDetectorRef }, { token: i5.TableHooksService }], target: i0.ɵɵFactoryTarget.Component });
|
|
305
|
+
DynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicTableComponent, selector: "cts-dynamic-table", inputs: { columns: "columns", responsiveColumns: "responsiveColumns", entityType: "entityType", prefix: "prefix", headers: "headers", fields: "fields", pageProvider: "pageProvider", pageSize: "pageSize", higlightUnread: "higlightUnread", isLegacyMode: "isLegacyMode", showTotalRecord: "showTotalRecord", pageNumber: "pageNumber", sortingBy: "sortingBy", queryParam: "queryParam", customFilters: "customFilters", quickFilter: "quickFilter", report: "report", rowCursor: "rowCursor", fullWidth: "fullWidth", tableMode: "tableMode", componentName: "componentName", tableActions: "tableActions", defultSort: "defultSort", range: "range", isSearchPage: "isSearchPage", multiSelectRows: "multiSelectRows", customFirstRow: "customFirstRow", highlightSelectedCard: "highlightSelectedCard", showActionsAsMenu: "showActionsAsMenu", filterParams: "filterParams", skipAggregation: "skipAggregation", customUrl: "customUrl", format: "format", requestActions: "requestActions", pageSizes: "pageSizes" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", sortChanged: "sortChanged", onPageChange: "onPageChange", onPage: "onPage", onLoad: "onLoad", onInitialize: "onInitialize" }, host: { properties: { "class.loading-results": "loading", "class.no-data": "rows.length <= 0" } }, queries: [{ propertyName: "emptyTemplate", first: true, predicate: EMPTY_TEMPLATE, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"wrapping table-wrapping\">\r\n\t<ng-container *ngIf=\"isLegacyMode\">\r\n\t\t<div class=\"table-reposition\">\r\n\t\t\t<ng-container *ngIf=\"rows.length\" [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"loading\">\r\n\t\t\t<cts-spinner></cts-spinner>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\r\n\t<div class=\"table-reposition\" *ngIf=\"!isLegacyMode\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"table\"></ng-container>\r\n\t\t<ng-container\r\n\t\t\t*ngIf=\"!initialized\"\r\n\t\t\t[ngTemplateOutlet]=\"skeleton\"\r\n\t\t\t[ngTemplateOutletContext]=\"{ $implicit: 10 }\"\r\n\t\t></ng-container>\r\n\t</div>\r\n\r\n\t<div\r\n\t\tclass=\"pagination-iner-wraper my-3\"\r\n\t\t[ngClass]=\"{ relative: pageSizes?.length }\"\r\n\t\t*ngIf=\"rows.length \"\r\n\t>\r\n\t\t<cts-pagination\r\n *ngIf=\"totalRecords > pageSize\"\r\n\t\t\t[page]=\"pageNum\"\r\n\t\t\t(change)=\"paginationChange($event)\"\r\n\t\t\t[size]=\"pageSize\"\r\n\t\t\t[count]=\"totalRecords\"\r\n\t\t></cts-pagination>\r\n\t\t<div class=\"absolute ndfPageSizes flex gap-x-3 items-center mt-2\">\r\n\t\t\t<ndf-page-sizes-list\r\n\t\t\t\t*ngIf=\"pageSizes?.length\"\r\n\t\t\t\t[pageSizes]=\"pageSizes\"\r\n\t\t\t\t[selectedPageSize]=\"pageSize\"\r\n\t\t\t\t(onChangePageSize)=\"onChangePageSize($event)\"\r\n\t\t\t>\r\n\t\t\t</ndf-page-sizes-list>\r\n\r\n\t\t\t<span *ngIf=\"showTotalRecord\">{{ 'TABLE.totalRecords' | translate: { count: totalRecords } }}</span>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || legacyDefaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n\r\n\t<ng-container\r\n\t\t*ngIf=\"!isLegacyMode\"\r\n\t\t[ngTemplateOutlet]=\"emptyTemplate || defaultEmptyState\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: loading, rows: rows, initialized: initialized }\"\r\n\t></ng-container>\r\n</div>\r\n\r\n<ng-template #table>\r\n\t<cts-table\r\n\t\t[rows]=\"rows\"\r\n\t\t[columns]=\"columns\"\r\n\t\t[responsiveColumns]=\"responsiveColumns\"\r\n\t\t[rowCursor]=\"rowCursor\"\r\n\t\t[fullWidth]=\"fullWidth\"\r\n\t\t[entityType]=\"entityType\"\r\n\t\t[prefix]=\"prefix\"\r\n\t\t[totalRecords]=\"totalRecords\"\r\n\t\t[tableMode]=\"tableMode\"\r\n\t\t[higlightUnread]=\"higlightUnread\"\r\n\t\t[componentName]=\"componentName\"\r\n\t\t[multiSelectRows]=\"multiSelectRows\"\r\n\t\t[tableActions]=\"tableActions\"\r\n\t\t[showActionsAsMenu]=\"showActionsAsMenu\"\r\n\t\t[defultSort]=\"defultSort\"\r\n\t\t[format]=\"format\"\r\n\t\t[highlightSelectedCard]=\"highlightSelectedCard\"\r\n\t\t[customFirstRow]=\"customFirstRow\"\r\n\t\t(onRowSelected)=\"rowDetails($event)\"\r\n\t\t(onRowIndexSelected)=\"indexDetails($event)\"\r\n\t\t(onMultiRowSelected)=\"onMultiRowSelectValue($event)\"\r\n\t\t(actionOnRow)=\"performAction($event)\"\r\n\t\t(onSorting)=\"onSort($event)\"\r\n\t></cts-table>\r\n</ng-template>\r\n\r\n<ng-template #legacyDefaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"empty-state\" *ngIf=\"loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'gettingData' : 'gettingData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEmptyState>\r\n\t<div class=\"empty-state\" *ngIf=\"!loading && rows.length === 0\">\r\n\t\t<div class=\"text\">\r\n\t\t\t{{ (prefix ? prefix + 'noData' : 'noData') | translate }}\r\n\t\t</div>\r\n\t</div>\r\n\t<div *ngIf=\"loading && initialized\" class=\"loading-content\">\r\n\t\t<mat-spinner [diameter]=\"100\"></mat-spinner>\r\n\t</div>\r\n</ng-template>\r\n\r\n<ng-template #skeleton let-rows>\r\n\t<table class=\"w-full\">\r\n\t\t<thead *ngIf=\"false\">\r\n\t\t\t<tr class=\"border-b border-green-900\">\r\n\t\t\t\t<th *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 60px\">\r\n\t\t\t\t\t<app-skeleton width=\"60px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t\t<th *ngFor=\"let num of [].constructor(columns?.length || 4); let i = index\" class=\"px-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.7rem\"></app-skeleton>\r\n\t\t\t\t</th>\r\n\t\t\t</tr>\r\n\t\t</thead>\r\n\t\t<tbody>\r\n\t\t\t<tr *ngFor=\"let row of [].constructor(rows || 10); let index = index\" class=\"border-b border-gray-200\">\r\n\t\t\t\t<td *ngIf=\"multiSelectRows\" class=\"p-3 py-4\" style=\"width: 50px\">\r\n\t\t\t\t\t<app-skeleton width=\"50px\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t\t<td *ngFor=\"let col of [].constructor(columns?.length || 4); let i = index\" class=\"p-3 py-4\">\r\n\t\t\t\t\t<app-skeleton [randomWidth]=\"true\" height=\"1.3rem\"></app-skeleton>\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t</tbody>\r\n\t</table>\r\n</ng-template>\r\n", styles: [".bi{margin:0!important}.memo-sorting-wrapper{width:265px;margin:0 10px;height:100%;display:flex}.memo-sorting-wrapper .sorting-direction{width:65px;height:40px;background-color:#465573;color:#fff;font-size:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.memo-sorting-wrapper .memo-sorting-trigger{width:calc(100% - 65px);height:100%;background-color:transparent;border:1px solid lightgrey;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:14px}.memo-sorting-wrapper .memo-sorting-trigger i{font-size:16px;color:gray}.memo-sorting-menu{width:200px}.my-button{border:1px solid #465573;color:#465573;border-radius:5px;background-color:transparent;font-weight:bold;min-width:80px;height:40px}.my-button.reset{border:none}.my-button:hover{color:#fff;background-color:#465573}.my-button:hover.reset{color:#465573;border:1px solid #465573;background-color:#fff}.app-property-value .app-input-wrapper label{color:#646f85;font-size:13px;margin-bottom:5px}.app-property-value .app-input-wrapper label .text-danger{font-size:16px;line-height:14px;margin:0 5px!important}.app-property-value .app-input-wrapper .form-control{border:1px solid #ccc;border-radius:5px;background-color:#8f98aa1a;height:40px}.app-property-value .app-input-wrapper .form-control:disabled{background-color:#e9ecef!important}.app-property-value .app-input-wrapper .form-control:focus{border:1px solid #1a96c6;box-shadow:0 0 4px #79c3c26b!important}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers{list-style:none;padding:0;margin:0;font-size:14px}.app-property-value .app-input-wrapper .app-textitem-editable-error .error-containers .error{margin-top:5px}.autocomplete-container .input-container input:focus,hijri-gregorian-datepicker .form-group .input-group .form-control:focus,.ng-select.ng-select-focused .ng-select-container{border:1px solid #1a96c6!important;box-shadow:0 0 4px #79c3c26b!important}input::placeholder{font-size:12px}.form-control:focus{box-shadow:none!important}.mat-stepper-horizontal{margin-top:-25px}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header.cdk-program-focused{background-color:transparent}.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-icon-selected{background-color:transparent;color:#fff;background-image:linear-gradient(to right,#0dbab5,#1a96c6)}@media only screen and (max-width: 576px){.mat-stepper-horizontal .mat-horizontal-stepper-header-container .mat-step-header .mat-step-label .mat-step-text-label{white-space:pre-wrap;overflow:visible}}.mat-stepper-horizontal .mat-horizontal-content-container{overflow:visible}@media only screen and (max-width: 768px){.mat-stepper-horizontal .mat-horizontal-content-container{padding:0 0 24px}}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:after,.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:before{display:none}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:first-child:before{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);left:0}.mat-stepper-horizontal.rtl .mat-horizontal-stepper-header:last-child:after{border-top-width:1px;border-top-style:solid;content:\"\";display:inline-block;height:0;position:absolute;width:calc(50% - 20px);right:0}.form-wrapper{padding:30px 15px;border:1px solid #dde0e2}.form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.form-wrapper .buttons-wrapper button:hover{opacity:.7}.form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.form-wrapper .upload-wrapper button span{margin:0 10px}.renameFileComponent .form-wrapper{padding:30px 15px;border:none!important}.renameFileComponent .form-wrapper .buttons-wrapper{display:flex;justify-content:space-between}.renameFileComponent .form-wrapper .buttons-wrapper .action-buttons-wrapper{display:flex}.renameFileComponent .form-wrapper .buttons-wrapper button{background-image:linear-gradient(to right,#0dbab5,#1a96c6);height:40px;color:#fff;border:none;width:125px;margin-top:20px;border-radius:5px}.renameFileComponent .form-wrapper .buttons-wrapper button:disabled{opacity:.4;cursor:not-allowed}.renameFileComponent .form-wrapper .buttons-wrapper button:hover{opacity:.7}.renameFileComponent .form-wrapper .upload-wrapper{display:flex;flex-direction:column;justify-content:flex-end}.renameFileComponent .form-wrapper .upload-wrapper label{color:#8f98aa;font-size:14px}.renameFileComponent .form-wrapper .upload-wrapper button{padding:10px;border:1px solid lightgray}.renameFileComponent .form-wrapper .upload-wrapper button span{margin:0 10px}.my-dynamic-viewer{display:flex;align-items:center;font-size:12px;min-height:30px}.my-dynamic-viewer .my-label{font-size:12px;font-weight:500;width:150px;word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-label{width:50%}}.my-dynamic-viewer .my-value{width:calc(100% - 150px);word-break:break-word}@media (max-width: 992px){.my-dynamic-viewer .my-value{width:50%}}.my-dynamic-viewer .direction-img{font-size:14px}.my-dynamic-viewer .direction-img .incoming{display:none}.my-dynamic-viewer .direction-img .outgoing{display:none}.my-dynamic-viewer .direction-img .internal{display:none}.my-dynamic-viewer.draft .my-value{color:#596973}.my-dynamic-viewer.inProgress .my-value{color:#3c3cf0}.my-dynamic-viewer.registered .my-value{color:#4f008c}.my-dynamic-viewer.archived .my-value{color:#fbb62c}.my-dynamic-viewer.closed .my-value{color:#00dca5}.my-dynamic-viewer.approved .my-value{color:#06a57e}.my-dynamic-viewer.assigned .my-value{color:#fd6670}.my-dynamic-viewer.sent .my-value{color:#3c3cf0}.my-dynamic-viewer.published .my-value{color:#00dca5}.my-dynamic-viewer.Outgoing .my-value{display:flex}.my-dynamic-viewer.Outgoing .my-value .direction-img .outgoing{color:#fbb62c;margin:1px 5px;display:flex}.my-dynamic-viewer.Outgoing .my-value .text{margin:0 5px}.my-dynamic-viewer.Internal .my-value{display:flex}.my-dynamic-viewer.Internal .my-value .direction-img .internal{color:#3c3cf0;margin:1px 5px;display:flex}.my-dynamic-viewer.Internal .my-value .text{margin:0 5px}.my-dynamic-viewer.Incoming .my-value{display:flex}.my-dynamic-viewer.Incoming .my-value .direction-img .incoming{color:#00dca5;display:flex}.my-dynamic-viewer.Incoming .my-value .text{margin:-3px 5px 0}.my-dynamic-viewer.vertical{display:block}.my-dynamic-viewer.vertical .my-label{width:auto}.my-dynamic-viewer.vertical .my-value{width:auto}.my-dynamic-viewer.with-out-label{width:100%!important}.wrapping{position:relative}.wrapping .table-reposition{overflow-y:var(--table-reposition-overflow-y, hidden);scrollbar-color:#b4bac6 transparent!important;scrollbar-width:thin!important;overflow-x:hidden}.empty-state{padding:200px;display:flex;justify-content:center;align-items:center;font-size:20px;font-weight:bold}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#b4bac6}.dark-scroll::-webkit-scrollbar-thumb{background:#8f98aa}.ndfPageSizes{right:0;left:unset}.rtl .ndfPageSizes{right:unset;left:0}.loading-content{position:var(--loading-content-position, absolute);inset:0;display:grid;place-items:center;background:var(--loading-content-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-content-backdrop-filter, blur(3px));backdrop-filter:var(--loading-content-backdrop-filter, blur(3px))}.pagination-iner-wraper{display:var(--pagination-inner-display, flex);justify-content:var(--pagination-inner-justify, center);align-items:var(--pagination-inner-align, center)}\n"], components: [{ type: i6.SpinnerComponent, selector: "cts-spinner" }, { type: i7.PaginationComponent, selector: "cts-pagination", inputs: ["size", "count", "page"], outputs: ["change"] }, { type: i8.PageSizesListComponent, selector: "ndf-page-sizes-list", inputs: ["pageSizes", "selectedPageSize"], outputs: ["onChangePageSize"] }, { type: i9.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "higlightUnread", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }, { type: i10.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i11.SkeletonComponent, selector: "app-skeleton", inputs: ["styleClass", "style", "shape", "animation", "radius", "size", "width", "height", "randomWidth"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i12.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i13.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
|
292
306
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTableComponent, decorators: [{
|
|
293
307
|
type: Component,
|
|
294
308
|
args: [{
|
|
@@ -298,10 +312,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
298
312
|
encapsulation: ViewEncapsulation.None,
|
|
299
313
|
host: {
|
|
300
314
|
'[class.loading-results]': 'loading',
|
|
301
|
-
'[class.no-data]': 'rows.length <= 0'
|
|
302
|
-
}
|
|
315
|
+
'[class.no-data]': 'rows.length <= 0',
|
|
316
|
+
},
|
|
303
317
|
}]
|
|
304
|
-
}], ctorParameters: function () { return [{ type: i1.AdapterService }, { type: i2.CallApiService }, { type: i3.NuxeoService }, { type: i4.DynamicTableService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onRowSelected: [{
|
|
318
|
+
}], ctorParameters: function () { return [{ type: i1.AdapterService }, { type: i2.CallApiService }, { type: i3.NuxeoService }, { type: i4.DynamicTableService }, { type: i0.ChangeDetectorRef }, { type: i5.TableHooksService }]; }, propDecorators: { onRowSelected: [{
|
|
305
319
|
type: Output
|
|
306
320
|
}], onRowIndexSelected: [{
|
|
307
321
|
type: Output
|
|
@@ -397,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
397
411
|
}], pageSizes: [{
|
|
398
412
|
type: Input
|
|
399
413
|
}] } });
|
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUV2QixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHckUsT0FBTyxFQUFtQixTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFFaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBV0gsTUFBTSxPQUFPLHFCQUFxQjtJQStHakMsWUFDUyxPQUF1QixFQUN2QixPQUF1QixFQUN2QixZQUEyQixFQUMzQixtQkFBd0MsRUFDeEMsR0FBc0I7UUFKdEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFDM0Is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QixLQUFLO2dCQVNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG5cdENvbXBvbmVudCxcclxuXHRDb250ZW50Q2hpbGQsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE9uRGVzdHJveSxcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFNpbXBsZUNoYW5nZXMsXHJcblx0VGVtcGxhdGVSZWYsXHJcblx0Vmlld0VuY2Fwc3VsYXRpb25cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvYWRhcHRlcnMvYWRhcHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FsbEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2NhbGxBcGkvY2FsbC1hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVNUFRZX1RFTVBMQVRFIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9lbXB0eS1zdGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEeW5hbWljVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZHluYW1pYy10YWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IEV2YWx1YXRlZFN0cmluZywgRXZhbHVhdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJ1xyXG4vKipcclxuICogdGhpcyBjb21wb25lbnQgaXMgYW4gYWRkaXRpb25hbCBsYXllciB0aGF0IHVzZXMgW1RhYmxlIENvbXBvbmVudF17QGxpbmsgVGFibGVDb21wb25lbnR9IGludGVybmFsbHksXHJcbiAqIHlvdSBjYW4gdXNlIHRoaXMgY29tcG9uZW50IHRvIGNvbmZpZ3VyZSBhIHBhZ2UgcHJvdmlkZXIgbGlzdGluZyBvdXQgb2YgdGhlIGJveCBlYXNpbHksXHJcbiAqIGFuZCBpdCB3aWxsIGhhbmRsZSBhbGwgb2YgdGhlIGJhc2ljIGZlYXR1cmVzIHN1Y2ggYXMgZ2V0dGluZyBkYXRhIGZyb20gQVBJLCBMaXN0aW5nLCBQYWdpbmF0aW9uLCBzb3J0aW5nIGFuZCBmaWx0ZXJpbmdcclxuICogIVtTY3JlZW5zaG90LTFdKC4uL3NjcmVlbnNob3RzL2R5bmFtaWNUYWJsZS5wbmcpXHJcbiAqIEB0aXRsZVxyXG4gKiBEeW5hbWljIFRhYmxlXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIDxjdHMtZHluYW1pYy10YWJsZVxyXG4gKiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICogICAgW3Jlc3BvbnNpdmVDb2x1bW5zXT1cInJlc3BvbnNpdmVDb2x1bW5zXCJcclxuICogICAgW2Z1bGxXaWR0aF09XCJmdWxsV2lkdGhcIlxyXG4gKiAgICBbcGFnZVNpemVdPVwiUGFnZVNpemVcIlxyXG4gKiAgICBbcGFnZVByb3ZpZGVyXT1cInBhZ2VQcm92aWRlclwiXHJcbiAqICAgIFtxdWlja0ZpbHRlcl09XCJmaWx0ZXJcIlxyXG4gKiAgICBbc29ydGluZ0J5XT1cInNvcnRpbmdCeVwiXHJcbiAqICAgIFtlbnRpdHlUeXBlXT1cIidhbGwnXCJcclxuICogICAgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gKiAgICBbcHJlZml4XT1cInByZWZpeFwiXHJcbiAqICAgIFtyb3dDdXJzb3JdPVwidHJ1ZVwiXHJcbiAqICAgIFtxdWVyeVBhcmFtXT1cInF1ZXJ5UGFyYW1cIlxyXG4gKiAgICBbaGVhZGVyc109XCJoZWFkZXJzXCJcclxuICogICAgKG9uUm93U2VsZWN0ZWQpPVwib3BlblZpZXdlcigkZXZlbnQpXCJcclxuICogICAgKGFjdGlvbk9uUm93KT1cInBlcmZvcm1BY3Rpb24oJGV2ZW50KVwiPlxyXG4gKiA8L2N0cy1keW5hbWljLXRhYmxlPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjdHMtZHluYW1pYy10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuXHRlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG5cdGhvc3Q6IHtcclxuXHRcdCdbY2xhc3MubG9hZGluZy1yZXN1bHRzXSc6ICdsb2FkaW5nJyxcclxuXHRcdCdbY2xhc3Mubm8tZGF0YV0nOiAncm93cy5sZW5ndGggPD0gMCdcclxuXHR9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBzZWxlY3Rpbmcgc2luZ2xlIHJvdyAgKi9cclxuXHRAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdG8gZW1pdCB3aGVuIHNlbGVjdGluZyBzaW5nbGUgcm93IHRvIGNhdGNoIGluZGV4Ki9cclxuXHRAT3V0cHV0KCkgb25Sb3dJbmRleFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdC8qKiBldmVudCB0byBlbWl0IHdoZW4gcGVyZm9ybSBhY3Rpb24gb24gcm93IChkZWx0ZSwgZWRpdCwgLi4uICkgKi9cclxuXHRAT3V0cHV0KCkgYWN0aW9uT25Sb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHRvIGVtaXQgdG8gdGhlIGhpZ2hlciBsZXZlbCAgd2hlbiBnZXR0aW5nIGRhdGEgZnJvbSBhcGkgaXMgZmluaXNoZWQgKi9cclxuXHRAT3V0cHV0KCkgb25HZXR0aW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogZXZlbnQgdCBlbWl0IHdoZW4gc2VsZWN0aW5nIG11bHRpcGxlIHJvdyAqL1xyXG5cdEBPdXRwdXQoKSBvbk11bHRpUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0LyoqIGV2ZW50IHQgZW1pdCB3aGVuIHN0YXJ0IGdldHRpbmcgZGF0YSBhbmQgd2hlbiBmaW5pc2ggKi9cclxuXHRAT3V0cHV0KCkgb25Mb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHRAT3V0cHV0KCkgc29ydENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgc29ydEJ5OiBzdHJpbmc7IHNvcnRPcmRlcjogc3RyaW5nIH0+KCk7XHJcblx0LyoqXHJcblx0ICogQGRlcHJlY2F0ZWQgVXNlIGBvblBhZ2VgIGluc3RlYWQuXHJcblx0ICogQHNlZSBvblBhZ2VcclxuXHQgKi9cclxuXHRAT3V0cHV0KCkgb25QYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHRAT3V0cHV0KCkgb25QYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcblxyXG5cdEBPdXRwdXQoKSBvbkxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uSW5pdGlhbGl6ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHQvKiogQXJyYXkgb2YgY29sdW1ucyAqL1xyXG5cdEBJbnB1dCgpIGNvbHVtbnM7XHJcblx0LyoqIEFycmF5IG9mIGNvbHVtbnMgb24gc21hbGxlciBzY3JlZW5zICovXHJcblx0QElucHV0KCkgcmVzcG9uc2l2ZUNvbHVtbnM/O1xyXG5cdC8qKiBEZWZpbmVzIHRoZSBwYWdlIGluIHdoaWNoIHRhYmxlIGlzIGJlaW5nIHVzZWQgKi9cclxuXHRASW5wdXQoKSBlbnRpdHlUeXBlOiBzdHJpbmc7XHJcblx0LyoqIFRyYW5zbGF0aW9ucyBwcmVmaXggKi9cclxuXHRASW5wdXQoKSBwcmVmaXggPSAnJztcclxuXHQvKiogSGVhZGVycyB0byBiZSBzZW50IHdpdGggQVBJIFJlcXVlc3QgKi9cclxuXHRASW5wdXQoKSBoZWFkZXJzO1xyXG5cdC8qKiBGaWVsZHMga2V5bWFwIHRvIGJlIG1hcHBlZCBpbiB0aGUgYWRhcHRlciAqL1xyXG5cdEBJbnB1dCgpIGZpZWxkcztcclxuXHQvKiogUGFnZSBQcm92aWRlciBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJldHJpZXZlIGRhdGEgKi9cclxuXHRASW5wdXQoKSBwYWdlUHJvdmlkZXI7XHJcblx0LyoqIENvbnRyb2xzIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBpbiB0YWJsZSAqL1xyXG5cdEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XHJcblx0LyoqIENvbnRyb2xzIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZSBpbiB0YWJsZSAqL1xyXG5cdEBJbnB1dCgpIGhpZ2xpZ2h0VW5yZWFkID0gZmFsc2U7XHJcblx0QElucHV0KCkgaXNMZWdhY3lNb2RlID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBzaG93VG90YWxSZWNvcmQgPSBmYWxzZTtcclxuXHJcblx0QENvbnRlbnRDaGlsZChFTVBUWV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXHJcblx0ZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcclxuXHJcblx0cHJpdmF0ZSBfcGFnZU51bWJlciA9IDE7XHJcblx0QElucHV0KCkgc2V0IHBhZ2VOdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xyXG5cdFx0dGhpcy5fcGFnZU51bWJlciA9IGlzTmFOKCt2YWx1ZSkgPyAxIDogK3ZhbHVlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHBhZ2VOdW0oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcGFnZU51bWJlcjtcclxuXHR9XHJcblxyXG5cdC8qKiBTb3J0aW5nIGNvbHVtbiAqL1xyXG5cdEBJbnB1dCgpIHNvcnRpbmdCeToge1xyXG5cdFx0c29ydEJ5Pzogc3RyaW5nO1xyXG5cdFx0c29ydE9yZGVyPzogc3RyaW5nO1xyXG5cdH0gPSB7fTtcclxuXHRASW5wdXQoKSBxdWVyeVBhcmFtPyA9IHt9O1xyXG5cclxuXHRASW5wdXQoKSBjdXN0b21GaWx0ZXJzOiB7XHJcblx0XHRwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0cGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIGFueT47XHJcblx0fSA9IHt9O1xyXG5cclxuXHRASW5wdXQoKSBxdWlja0ZpbHRlcj87XHJcblx0LyoqIENvbnRyb2xzIGlmIGl0IHJlcG9ydCBwYWdlICovXHJcblx0QElucHV0KCkgcmVwb3J0O1xyXG5cdC8qKiB0byBtYWtlIGN1cnNvciB3aGVuIGhvdmVyIG9uIHJvdyBvciBub3QgKi9cclxuXHRASW5wdXQoKSByb3dDdXJzb3I/O1xyXG5cdEBJbnB1dCgpIGZ1bGxXaWR0aD8gPSAnYXV0byc7XHJcblx0LyoqICdsaXN0JyBmb3Igbm9yYW1sIHRhYmxlICdjYXJkJyBmb3IgY2FyZHMgbW9kZSBsaWtlIGluIG1lbW9zICovXHJcblx0QElucHV0KCkgdGFibGVNb2RlID0gJ2xpc3QnO1xyXG5cclxuXHRASW5wdXQoKSBjb21wb25lbnROYW1lOiBzdHJpbmc7XHJcblx0LyoqIGFjdGlvbiB0byBiZSB1c2VkIGluIGNhc2Ugb2YgY2FyZCBtb2RlICovXHJcblx0QElucHV0KCkgdGFibGVBY3Rpb25zO1xyXG5cdEBJbnB1dCgpIGRlZnVsdFNvcnQ6IGFueSA9IHsgbmFtZTogJ3Byb3BlcnRpZXMuY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfTtcclxuXHRASW5wdXQoKSByYW5nZTtcclxuXHRASW5wdXQoKSBpc1NlYXJjaFBhZ2UgPSBmYWxzZTtcclxuXHQvKiogYWxsb3cgbXVsdGlzZWxlY3Qgcm93cyB3aXRoIGNoZWNrYm94ICovXHJcblx0QElucHV0KCkgbXVsdGlTZWxlY3RSb3dzID0gZmFsc2U7XHJcblx0LyoqIHRvIHNob3cgMXN0IHJvdyB3aXRoIGN1c3RvbSB0ZW1wbGF0ZSBpbiB0aGUgdGFibGUqL1xyXG5cdEBJbnB1dCgpIGN1c3RvbUZpcnN0Um93ID0gZmFsc2U7XHJcblx0QElucHV0KCkgaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkID0gZmFsc2U7XHJcblx0QElucHV0KCkgc2hvd0FjdGlvbnNBc01lbnUgPSBmYWxzZTsgLy8gZmxhZ2UgdG8gc2hvdyBhY3Rpb24gaW4gbWVudSBvciBzaWRlIGJ5IHNpZGVcclxuXHRASW5wdXQoKVxyXG5cdGZpbHRlclBhcmFtcyA9IHt9O1xyXG5cclxuXHRASW5wdXQoKSBza2lwQWdncmVnYXRpb246ICduZXZlcicgfCAnb25QYWdlQ2hhbmdlJyA9ICdvblBhZ2VDaGFuZ2UnO1xyXG5cdEBJbnB1dCgpIGN1c3RvbVVybDogeyB1cmw6IHN0cmluZzsgbWV0aG9kOiAnUE9TVCcgfCAnR0VUJzsgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIGFueT4gfTtcclxuXHRASW5wdXQoKSBmb3JtYXQgPSAnTU1NTSBkLCB5JztcclxuXHJcblx0QElucHV0KCkgcmVxdWVzdEFjdGlvbnM/OiB7XHJcblx0XHRiZWZvcmVTdWJtaXQ/OiBFdmFsdWF0ZWRTdHJpbmc8J3BheWxvYWQnPjtcclxuXHR9O1xyXG5cclxuXHRyb3dzID0gW107XHJcblx0dG90YWxSZWNvcmRzID0gMDtcclxuXHRteURhdGFTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHRsb2FkaW5nO1xyXG5cdHNvcnRpbmcgPSBmYWxzZTtcclxuXHRASW5wdXQoKSBwYWdlU2l6ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgc2l6ZTogbnVtYmVyIH0+ID0gW107XHJcblxyXG5cdGluaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBhZGFwdGVyOiBBZGFwdGVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgY2FsbEFwaTogQ2FsbEFwaVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIG51eGVvU2VydmljZSA6IE51eGVvU2VydmljZSxcclxuXHRcdHByaXZhdGUgZHluYW1pY1RhYmxlU2VydmljZTogRHluYW1pY1RhYmxlU2VydmljZSxcclxuXHRcdHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG5cdCkge31cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLm15RGF0YVN1YnNjcmlwdGlvbiA9IHRoaXMuZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YS5waXBlKHN0YXJ0V2l0aChudWxsKSkuc3Vic2NyaWJlKChmaWx0ZXJEYXRhKSA9PiB7XHJcblx0XHRcdGlmIChmaWx0ZXJEYXRhKSB7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJQYXJhbXMgPSB7IC4uLmZpbHRlckRhdGEgfTtcclxuXHRcdFx0XHQvLyByZXNldCBwYWdlIG51bWJlciB3aGVuIHN0YXJ0IG5ldyBmaWx0ZXJpbmdcclxuXHRcdFx0XHR0aGlzLl9yZXNldFBhZ2VOdW1iZXIoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLm15RGF0YVN1YnNjcmlwdGlvbiA/IHRoaXMubXlEYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHRcdGNvbnN0IGlzRmlyc3RDaGFuZ2UgPSBPYmplY3QudmFsdWVzKGNoYW5nZXMpLnNvbWUoKGMpID0+IGMuaXNGaXJzdENoYW5nZSgpKTtcclxuXHRcdGlmIChpc0ZpcnN0Q2hhbmdlKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBoYXNDaGFuZ2VkID0gKGl0ZW1zOiBzdHJpbmdbXSkgPT5cclxuXHRcdFx0aXRlbXMuc29tZSgoa2V5KSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgaXNFcXVhbCA9IF8uaXNFcXVhbChjaGFuZ2VzW2tleV0/LnByZXZpb3VzVmFsdWUgfHwgbnVsbCwgY2hhbmdlc1trZXldPy5jdXJyZW50VmFsdWUgfHwgbnVsbCk7XHJcblx0XHRcdFx0cmV0dXJuICFpc0VxdWFsO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRpZiAoaGFzQ2hhbmdlZChbJ3F1ZXJ5UGFyYW0nLCAncXVpY2tGaWx0ZXInLCAnY3VzdG9tRmlsdGVycyddKSkge1xyXG5cdFx0XHRpZiAodGhpcy5pbml0aWFsaXplZCkge1xyXG5cdFx0XHRcdHRoaXMuX3Jlc2V0UGFnZU51bWJlcigpOyAvLyBSZXNldCBwYWdlIG51bWJlciBiZWZvcmUgcmVjYWxsaW5nIEFQSSB3aXRoIGZpbHRlcnNcclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaGFzQ2hhbmdlZChbJ3NvcnRpbmdCeSddKSkge1xyXG5cdFx0XHR0aGlzLmdldERhdGEoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX3Jlc2V0UGFnZU51bWJlcigpIHtcclxuXHRcdHRoaXMuX3BhZ2VOdW1iZXIgPSAxO1xyXG5cdFx0dGhpcy5vblBhZ2VDaGFuZ2UuZW1pdCh0aGlzLl9wYWdlTnVtYmVyKTtcclxuXHRcdHRoaXMub25QYWdlLmVtaXQoe1xyXG5cdFx0XHRwYWdlSW5kZXg6IHRoaXMuX3BhZ2VOdW1iZXIsXHJcblx0XHRcdHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG5cdFx0XHRsZW5ndGg6IHRoaXMudG90YWxSZWNvcmRzXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGdldERhdGEocGF5bG9hZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcclxuXHRcdHRoaXMubG9hZGluZyA9IHRydWU7IC8vIGludGVybmFsIGxvYWRpbmdcclxuXHRcdHRoaXMub25Mb2FkaW5nLmVtaXQodHJ1ZSk7IC8vIGV4dGVybmFsIGxvYWRpbmdcclxuXHRcdGxldCBwYXJhbXMgPSB7XHJcblx0XHRcdC4uLih0aGlzLnJhbmdlID8geyBkdWJsaW5jb3JlX2NyZWF0ZWRfYWdnOiB0aGlzLnJhbmdlIH0gOiB7fSksXHJcblx0XHRcdC4uLnRoaXMuZmlsdGVyUGFyYW1zLCAvLyB1c2VkIHRvIGdldCBmaWx0ZXIgZGF0YSBhbmQgc2V0IGl0IGluIG91ciBwYXJhbXNcclxuXHRcdFx0Li4udGhpcy5xdWVyeVBhcmFtLCAvLyB1c2VkIHRvIGdldCBwYXJhbXMgZnJvbSBvdXIgY29uZmlnXHJcblx0XHRcdC4uLnRoaXMucXVpY2tGaWx0ZXIsXHJcblx0XHRcdC4uLihPYmplY3Qua2V5cyh0aGlzLnNvcnRpbmdCeSB8fCB7fSkubGVuZ3RoXHJcblx0XHRcdFx0PyB7XHJcblx0XHRcdFx0XHRcdHNvcnRCeTogdGhpcy5zb3J0aW5nQnk/LnNvcnRCeSxcclxuXHRcdFx0XHRcdFx0c29ydE9yZGVyOiB0aGlzLnNvcnRpbmdCeT8uc29ydE9yZGVyXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0OiB7fSksXHJcblx0XHRcdGN1cnJlbnRQYWdlSW5kZXg6ICt0aGlzLnBhZ2VOdW0gLSAxLFxyXG5cdFx0XHQuLi4odGhpcy5wYWdlU2l6ZSA/IHsgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSA6IHt9KSxcclxuXHRcdFx0b2Zmc2V0OiAwLFxyXG5cdFx0XHQuLi5wYXlsb2FkXHJcblx0XHR9O1xyXG5cclxuXHRcdC8vIGRvbid0IHJlZnJlc2ggYWxsIHRhYmxlIGluIGNhc2Ugb2Ygc29ydGluZyBvbmx5XHJcblx0XHRpZiAoIXRoaXMuc29ydGluZyAmJiB0aGlzLmlzTGVnYWN5TW9kZSkge1xyXG5cdFx0XHQvLyB1c2VkIHRvIG5vdCByZWZyZXNoaW5nIGFsbCB0YWJsZSBpbiBjYXNlIG9mIHNvcnRpbmcgc2luY2UgdGFibGUgbG9zZSBzb3J0aW5nIHN0YXRlIHdoZW4gcmVmcmVzaCBhbGwgdGFibGVcclxuXHRcdFx0dGhpcy5yb3dzID0gW107IC8vIHVzZWQgdG8gcmVmcmVzaCB0YWJsZSB0byBmZWVsIGNoYW5nZXMgaW4gYWN0aW9ucyB3aGVuIHBlcmZvcm0gYWN0aW9uIGFuZCBuZWVkIHRvIHJlZnJlc2ggYWN0aW9uc1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5zb3J0aW5nID0gZmFsc2U7IC8vIHJlc2V0IHNvcnRpbmcgc3RhdHVzIHRvIGZhbHNlIGFuZCBmb3IgbmV4dCBzb3J0aW5nIGZ1bmMgc29ydGluZyBzZXQgaXQgdG8gdHJ1ZSBhZ2FpblxyXG5cclxuXHRcdGNvbnN0IF9oZWFkZXJzID0ge1xyXG5cdFx0XHQuLi50aGlzLmhlYWRlcnMsXHJcblx0XHRcdC4uLmhlYWRlcnNcclxuXHRcdH07XHJcblxyXG5cdFx0bGV0IF9wcm92aWRlclBheWxvYWQgPSB7XHJcblx0XHRcdHF1ZXJ5OiB7XHJcblx0XHRcdFx0cGFnZVByb3ZpZGVyOiB0aGlzLnBhZ2VQcm92aWRlcixcclxuXHRcdFx0XHQuLi5wYXJhbXNcclxuXHRcdFx0fSxcclxuXHRcdFx0b3B0aW9uczoge1xyXG5cdFx0XHRcdGhlYWRlcnM6IF9oZWFkZXJzXHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0bGV0IF9jdXN0b21QYXlsb2FkID0ge1xyXG5cdFx0XHRwYXJhbXM6IHtcclxuXHRcdFx0XHQuLi5wYXJhbXMsXHJcblx0XHRcdFx0Li4uKHRoaXMuY3VzdG9tRmlsdGVycz8ucGFyYW1zIHx8IHt9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoZWFkZXJzOiBfaGVhZGVycyxcclxuXHRcdFx0cGF5bG9hZDogXy5tZXJnZSh7fSwgdGhpcy5jdXN0b21Vcmw/LnBheWxvYWQgfHwge30sIHRoaXMuY3VzdG9tRmlsdGVycz8ucGF5bG9hZCB8fCB7fSlcclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKHRoaXMucmVxdWVzdEFjdGlvbnM/LmJlZm9yZVN1Ym1pdCAmJiB0eXBlb2YgdGhpcy5yZXF1ZXN0QWN0aW9ucz8uYmVmb3JlU3VibWl0ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmN1c3RvbVVybCkge1xyXG5cdFx0XHRcdFx0X2N1c3RvbVBheWxvYWQgPSBFdmFsdWF0b3IuZXZhbHVhdGUoXHJcblx0XHRcdFx0XHRcdHRoaXMucmVxdWVzdEFjdGlvbnM/LmJlZm9yZVN1Ym1pdCxcclxuXHRcdFx0XHRcdFx0eyBjcml0ZXJpYTogX2N1c3RvbVBheWxvYWQgfSxcclxuXHRcdFx0XHRcdFx0J3BheWxvYWQnXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRfcHJvdmlkZXJQYXlsb2FkID0gRXZhbHVhdG9yLmV2YWx1YXRlKFxyXG5cdFx0XHRcdFx0XHR0aGlzLnJlcXVlc3RBY3Rpb25zPy5iZWZvcmVTdWJtaXQsXHJcblx0XHRcdFx0XHRcdHsgY3JpdGVyaWE6IF9wcm92aWRlclBheWxvYWQgfSxcclxuXHRcdFx0XHRcdFx0J3BheWxvYWQnXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBxdWVyeSQgPSB0aGlzLmN1c3RvbVVybFxyXG5cdFx0XHQ/IHRoaXMuY2FsbEFwaS5jdXN0b21RdWVyeSh0aGlzLmN1c3RvbVVybCwgX2N1c3RvbVBheWxvYWQucGFyYW1zLCBfY3VzdG9tUGF5bG9hZC5oZWFkZXJzLCBfY3VzdG9tUGF5bG9hZC5wYXlsb2FkKVxyXG5cdFx0XHQ6IHRoaXMuY2FsbEFwaS5xdWVyeShfcHJvdmlkZXJQYXlsb2FkLnF1ZXJ5LCBfcHJvdmlkZXJQYXlsb2FkLm9wdGlvbnMpO1xyXG5cclxuXHRcdHF1ZXJ5JFxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0ZGF0YS5lbnRyaWVzLm1hcCgoaXRlbSkgPT4gdGhpcy5hZGFwdGVyLmFkYXB0SW4oaXRlbSwgdGhpcy5maWVsZHMpKTtcclxuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0dGhyb3cgZXJyO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0dGhpcy5vbkxvYWRpbmcuZW1pdChmYWxzZSk7XHJcblx0XHRcdFx0dGhpcy5vbkxvYWQuZW1pdChyZXMpO1xyXG5cdFx0XHRcdGlmICghdGhpcy5pbml0aWFsaXplZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5vbkluaXRpYWxpemUuZW1pdChyZXMpO1xyXG5cdFx0XHRcdFx0dGhpcy5pbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJlcy5lbnRyaWVzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHRcdGlmIChlbGVtZW50LnByb3BlcnRpZXMgJiYgZWxlbWVudC5wcm9wZXJ0aWVzPy5jcmVhdG9yICYmIGVsZW1lbnQucHJvcGVydGllcy5jcmVhdG9yPy5wcm9wZXJ0aWVzKSB7XHJcblx0XHRcdFx0XHRcdGVsZW1lbnQucHJvcGVydGllc1snY3JlYXRvckZ1bGxPYmplY3QnXSA9IHsgLi4uZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3IgfTtcclxuXHRcdFx0XHRcdFx0ZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3IgPVxyXG5cdFx0XHRcdFx0XHRcdGVsZW1lbnQucHJvcGVydGllcy5jcmVhdG9yPy5wcm9wZXJ0aWVzPy5maXJzdE5hbWUgK1xyXG5cdFx0XHRcdFx0XHRcdCcgJyArXHJcblx0XHRcdFx0XHRcdFx0ZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3I/LnByb3BlcnRpZXM/Lmxhc3ROYW1lO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQucHJvcGVydGllcyAmJiBlbGVtZW50LnByb3BlcnRpZXM/LmFzc2lnbmVlKSB7XHJcblx0XHRcdFx0XHRcdGVsZW1lbnQucHJvcGVydGllcy5hc3NpZ25lZSA9IGVsZW1lbnQucHJvcGVydGllcz8uYXNzaWduZWUuZnVsbE5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQvLyBpZih0aGlzLmhpZ2xpZ2h0VW5yZWFkKXtcclxuXHRcdFx0XHRcdC8vIFx0dGhpcy5jZWNoa0lmUmVhZE9yTm90KGVsZW1lbnQucHJvcGVydGllcyk7XHJcblx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50b3RhbFJlY29yZHMgPSByZXMucmVzdWx0c0NvdW50O1xyXG5cdFx0XHRcdHRoaXMucm93cyA9IHJlcy5lbnRyaWVzO1xyXG5cdFx0XHRcdHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHQvLyBlbWl0IGRhdGEgdG8gb3V0c2lkZSBpbiBjYXNlIG9mIHNlYXJjaCBwYWdlIGZvciB0aGUgZmlyc3QgdGltZSBvbmx5IHRvIHByZXZlbnQgcmVmcmVzaGluZyBhZ2dyZWdhdGlvbiB3aXRoIGV2ZXJ5IHBhZ2UgY2hhbmdlXHJcblx0XHRcdFx0Ly8gYW5kIGZvciBhbnkgb3RoZXIgcGFnZSB0eXBlIGVtaXQgZGF0YSBkaXJlY3RseSBpbiBhbGwgcGFnZSBudW1iZXJzXHJcblx0XHRcdFx0aWYgKCh0aGlzLmlzU2VhcmNoUGFnZSAmJiB0aGlzLnBhZ2VOdW0gPT09IDEpIHx8ICF0aGlzLmlzU2VhcmNoUGFnZSkgdGhpcy5vbkdldHRpbmdEYXRhLmVtaXQocmVzKTtcclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCB3aGVuIGNsaWNraW5nIG9uIHNpbmdsZSByb3dcclxuXHRyb3dEZXRhaWxzKGV2ZW50KSB7XHJcblx0XHR0aGlzLm9uUm93U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHRpbmRleERldGFpbHMoZXZlbnQpIHtcclxuXHRcdHRoaXMub25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoZXZlbnQpO1xyXG5cdH1cclxuXHJcblx0Ly9mdW5jdGlvbiB0byBoYW5kbGUgYWxsIG9wZXJhdGlvbnMgb24gc2luZ2xlIHJvdyAoZGVsZXRlICwgZWRpdCAsIC4uLilcclxuXHRwZXJmb3JtQWN0aW9uKGFjdGlvbikge1xyXG5cdFx0dGhpcy5hY3Rpb25PblJvdy5lbWl0KGFjdGlvbik7XHJcblx0fVxyXG5cclxuXHQvLyBoYW5kbGUgc29ydGluZyBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0YWJsZVxyXG5cdG9uU29ydChzb3J0T2JqZWN0KSB7XHJcblx0XHR0aGlzLnNvcnRDaGFuZ2VkLmVtaXQoc29ydE9iamVjdCk7XHJcblx0XHR0aGlzLnNvcnRpbmdCeSA9IHNvcnRPYmplY3Q7XHJcblx0XHR0aGlzLnNvcnRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5nZXREYXRhKHt9LCB0aGlzLnNraXBBZ2dyZWdhdGlvbiA9PT0gJ29uUGFnZUNoYW5nZScgPyB7IHNraXBBZ2dyZWdhdGVzOiAndHJ1ZScgfSA6IHt9KTtcclxuXHR9XHJcblxyXG5cdG9uTXVsdGlSb3dTZWxlY3RWYWx1ZShldmVudCkge1xyXG5cdFx0dGhpcy5vbk11bHRpUm93U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgcGFnaW5hdGlvbkNoYW5nZShldmVudCkge1xyXG5cdFx0dGhpcy5fcGFnZU51bWJlciA9IGV2ZW50O1xyXG5cdFx0dGhpcy5vblBhZ2VDaGFuZ2UuZW1pdChldmVudCk7XHJcblx0XHR0aGlzLm9uUGFnZS5lbWl0KHtcclxuXHRcdFx0cGFnZUluZGV4OiB0aGlzLl9wYWdlTnVtYmVyLFxyXG5cdFx0XHRwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcclxuXHRcdFx0bGVuZ3RoOiB0aGlzLnRvdGFsUmVjb3Jkc1xyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmdldERhdGEoe30sIHRoaXMuc2tpcEFnZ3JlZ2F0aW9uID09PSAnb25QYWdlQ2hhbmdlJyA/IHsgc2tpcEFnZ3JlZ2F0ZXM6ICd0cnVlJyB9IDoge30pO1xyXG5cdH1cclxuXHJcblx0b25DaGFuZ2VQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcblx0XHR0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcblx0XHR0aGlzLl9yZXNldFBhZ2VOdW1iZXIoKTtcclxuXHRcdHRoaXMuZ2V0RGF0YSh7fSwgdGhpcy5za2lwQWdncmVnYXRpb24gPT09ICdvblBhZ2VDaGFuZ2UnID8geyBza2lwQWdncmVnYXRlczogJ3RydWUnIH0gOiB7fSk7XHJcblx0fVxyXG5cclxuXHRjZWNoa0lmUmVhZE9yTm90KGVsZW1lbnQpe1xyXG5cdFx0Ly8gY2hlY2sgaWYgbG9nZWQgaW4gdXNlciBpcyBpbiB2aWV3ZXJzIGFycmF5IG9yIG5vdFxyXG5cdFx0aWYoZWxlbWVudFsndmlld2Vyczp1c2VycyddICYmIGVsZW1lbnRbJ3ZpZXdlcnM6dXNlcnMnXS5sZW5ndGgpe1xyXG5cdFx0XHRlbGVtZW50LmlzUmVhZGVkID0gZmFsc2U7XHJcblx0XHRcdGVsZW1lbnRbJ3ZpZXdlcnM6dXNlcnMnXS5tYXAodXNlciA9PiB7XHJcblx0XHRcdFx0aWYodXNlci51c2VybmFtZSA9PT0gdGhpcy5udXhlb1NlcnZpY2UubnV4ZW9DbGllbnQudXNlci5wcm9wZXJ0aWVzLnVzZXJuYW1lICYmIHVzZXIuc3RhdGUgPT09IFwicmVhZFwiKXtcclxuXHRcdFx0XHRcdGVsZW1lbnQuaXNSZWFkZWQgPSB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdH1lbHNle1xyXG5cdFx0XHRlbGVtZW50LmlzUmVhZGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ3cmFwcGluZyB0YWJsZS13cmFwcGluZ1wiPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xlZ2FjeU1vZGVcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXBvc2l0aW9uXCI+XHJcblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dzLmxlbmd0aFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcblx0XHRcdDxjdHMtc3Bpbm5lcj48L2N0cy1zcGlubmVyPlxyXG5cdFx0PC9uZy1jb250YWluZXI+XHJcblx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXBvc2l0aW9uXCIgKm5nSWY9XCIhaXNMZWdhY3lNb2RlXCI+XHJcblx0XHQ8bmctY29udGFpbmVyICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVwiPjwvbmctY29udGFpbmVyPlxyXG5cdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHQqbmdJZj1cIiFpbml0aWFsaXplZFwiXHJcblx0XHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNrZWxldG9uXCJcclxuXHRcdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiAxMCB9XCJcclxuXHRcdD48L25nLWNvbnRhaW5lcj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdlxyXG5cdFx0Y2xhc3M9XCJwYWdpbmF0aW9uLWluZXItd3JhcGVyIG15LTNcIlxyXG5cdFx0W25nQ2xhc3NdPVwieyByZWxhdGl2ZTogcGFnZVNpemVzPy5sZW5ndGggfVwiXHJcblx0XHQqbmdJZj1cInJvd3MubGVuZ3RoIFwiXHJcblx0PlxyXG5cdFx0PGN0cy1wYWdpbmF0aW9uXHJcbiAgICAgICpuZ0lmPVwidG90YWxSZWNvcmRzID4gcGFnZVNpemVcIlxyXG5cdFx0XHRbcGFnZV09XCJwYWdlTnVtXCJcclxuXHRcdFx0KGNoYW5nZSk9XCJwYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG5cdFx0XHRbc2l6ZV09XCJwYWdlU2l6ZVwiXHJcblx0XHRcdFtjb3VudF09XCJ0b3RhbFJlY29yZHNcIlxyXG5cdFx0PjwvY3RzLXBhZ2luYXRpb24+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgbmRmUGFnZVNpemVzIGZsZXggZ2FwLXgtMyBpdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG5cdFx0XHQ8bmRmLXBhZ2Utc2l6ZXMtbGlzdFxyXG5cdFx0XHRcdCpuZ0lmPVwicGFnZVNpemVzPy5sZW5ndGhcIlxyXG5cdFx0XHRcdFtwYWdlU2l6ZXNdPVwicGFnZVNpemVzXCJcclxuXHRcdFx0XHRbc2VsZWN0ZWRQYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcblx0XHRcdFx0KG9uQ2hhbmdlUGFnZVNpemUpPVwib25DaGFuZ2VQYWdlU2l6ZSgkZXZlbnQpXCJcclxuXHRcdFx0PlxyXG5cdFx0XHQ8L25kZi1wYWdlLXNpemVzLWxpc3Q+XHJcblxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cInNob3dUb3RhbFJlY29yZFwiPnt7ICdUQUJMRS50b3RhbFJlY29yZHMnIHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMgfSB9fTwvc3Bhbj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8bmctY29udGFpbmVyXHJcblx0XHQqbmdJZj1cImlzTGVnYWN5TW9kZVwiXHJcblx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlIHx8IGxlZ2FjeURlZmF1bHRFbXB0eVN0YXRlXCJcclxuXHRcdFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbG9hZGluZywgcm93czogcm93cywgaW5pdGlhbGl6ZWQ6IGluaXRpYWxpemVkIH1cIlxyXG5cdD48L25nLWNvbnRhaW5lcj5cclxuXHJcblx0PG5nLWNvbnRhaW5lclxyXG5cdFx0Km5nSWY9XCIhaXNMZWdhY3lNb2RlXCJcclxuXHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5VGVtcGxhdGUgfHwgZGVmYXVsdEVtcHR5U3RhdGVcIlxyXG5cdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBsb2FkaW5nLCByb3dzOiByb3dzLCBpbml0aWFsaXplZDogaW5pdGlhbGl6ZWQgfVwiXHJcblx0PjwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFibGU+XHJcblx0PGN0cy10YWJsZVxyXG5cdFx0W3Jvd3NdPVwicm93c1wiXHJcblx0XHRbY29sdW1uc109XCJjb2x1bW5zXCJcclxuXHRcdFtyZXNwb25zaXZlQ29sdW1uc109XCJyZXNwb25zaXZlQ29sdW1uc1wiXHJcblx0XHRbcm93Q3Vyc29yXT1cInJvd0N1cnNvclwiXHJcblx0XHRbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXHJcblx0XHRbZW50aXR5VHlwZV09XCJlbnRpdHlUeXBlXCJcclxuXHRcdFtwcmVmaXhdPVwicHJlZml4XCJcclxuXHRcdFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuXHRcdFt0YWJsZU1vZGVdPVwidGFibGVNb2RlXCJcclxuXHRcdFtoaWdsaWdodFVucmVhZF09XCJoaWdsaWdodFVucmVhZFwiXHJcblx0XHRbY29tcG9uZW50TmFtZV09XCJjb21wb25lbnROYW1lXCJcclxuXHRcdFttdWx0aVNlbGVjdFJvd3NdPVwibXVsdGlTZWxlY3RSb3dzXCJcclxuXHRcdFt0YWJsZUFjdGlvbnNdPVwidGFibGVBY3Rpb25zXCJcclxuXHRcdFtzaG93QWN0aW9uc0FzTWVudV09XCJzaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRbZGVmdWx0U29ydF09XCJkZWZ1bHRTb3J0XCJcclxuXHRcdFtmb3JtYXRdPVwiZm9ybWF0XCJcclxuXHRcdFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwiaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuXHRcdFtjdXN0b21GaXJzdFJvd109XCJjdXN0b21GaXJzdFJvd1wiXHJcblx0XHQob25Sb3dTZWxlY3RlZCk9XCJyb3dEZXRhaWxzKCRldmVudClcIlxyXG5cdFx0KG9uUm93SW5kZXhTZWxlY3RlZCk9XCJpbmRleERldGFpbHMoJGV2ZW50KVwiXHJcblx0XHQob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RWYWx1ZSgkZXZlbnQpXCJcclxuXHRcdChhY3Rpb25PblJvdyk9XCJwZXJmb3JtQWN0aW9uKCRldmVudClcIlxyXG5cdFx0KG9uU29ydGluZyk9XCJvblNvcnQoJGV2ZW50KVwiXHJcblx0PjwvY3RzLXRhYmxlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsZWdhY3lEZWZhdWx0RW1wdHlTdGF0ZT5cclxuXHQ8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIiAqbmdJZj1cIiFsb2FkaW5nICYmIHJvd3MubGVuZ3RoID09PSAwXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiPlxyXG5cdFx0XHR7eyAocHJlZml4ID8gcHJlZml4ICsgJ25vRGF0YScgOiAnbm9EYXRhJykgfCB0cmFuc2xhdGUgfX1cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwibG9hZGluZyAmJiByb3dzLmxlbmd0aCA9PT0gMFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRleHRcIj5cclxuXHRcdFx0e3sgKHByZWZpeCA/IHByZWZpeCArICdnZXR0aW5nRGF0YScgOiAnZ2V0dGluZ0RhdGEnKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eVN0YXRlPlxyXG5cdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgcm93cy5sZW5ndGggPT09IDBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcblx0XHRcdHt7IChwcmVmaXggPyBwcmVmaXggKyAnbm9EYXRhJyA6ICdub0RhdGEnKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGRpdiAqbmdJZj1cImxvYWRpbmcgJiYgaW5pdGlhbGl6ZWRcIiBjbGFzcz1cImxvYWRpbmctY29udGVudFwiPlxyXG5cdFx0PG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIxMDBcIj48L21hdC1zcGlubmVyPlxyXG5cdDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNza2VsZXRvbiBsZXQtcm93cz5cclxuXHQ8dGFibGUgY2xhc3M9XCJ3LWZ1bGxcIj5cclxuXHRcdDx0aGVhZCAqbmdJZj1cImZhbHNlXCI+XHJcblx0XHRcdDx0ciBjbGFzcz1cImJvcmRlci1iIGJvcmRlci1ncmVlbi05MDBcIj5cclxuXHRcdFx0XHQ8dGggKm5nSWY9XCJtdWx0aVNlbGVjdFJvd3NcIiBjbGFzcz1cInAtMyBweS00XCIgc3R5bGU9XCJ3aWR0aDogNjBweFwiPlxyXG5cdFx0XHRcdFx0PGFwcC1za2VsZXRvbiB3aWR0aD1cIjYwcHhcIiBoZWlnaHQ9XCIxLjNyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdDx0aCAqbmdGb3I9XCJsZXQgbnVtIG9mIFtdLmNvbnN0cnVjdG9yKGNvbHVtbnM/Lmxlbmd0aCB8fCA0KTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicHgtMyBweS00XCI+XHJcblx0XHRcdFx0XHQ8YXBwLXNrZWxldG9uIFtyYW5kb21XaWR0aF09XCJ0cnVlXCIgaGVpZ2h0PVwiMS43cmVtXCI+PC9hcHAtc2tlbGV0b24+XHJcblx0XHRcdFx0PC90aD5cclxuXHRcdFx0PC90cj5cclxuXHRcdDwvdGhlYWQ+XHJcblx0XHQ8dGJvZHk+XHJcblx0XHRcdDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIFtdLmNvbnN0cnVjdG9yKHJvd3MgfHwgMTApOyBsZXQgaW5kZXggPSBpbmRleFwiIGNsYXNzPVwiYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwXCI+XHJcblx0XHRcdFx0PHRkICpuZ0lmPVwibXVsdGlTZWxlY3RSb3dzXCIgY2xhc3M9XCJwLTMgcHktNFwiIHN0eWxlPVwid2lkdGg6IDUwcHhcIj5cclxuXHRcdFx0XHRcdDxhcHAtc2tlbGV0b24gd2lkdGg9XCI1MHB4XCIgaGVpZ2h0PVwiMS4zcmVtXCI+PC9hcHAtc2tlbGV0b24+XHJcblx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHQ8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBbXS5jb25zdHJ1Y3Rvcihjb2x1bW5zPy5sZW5ndGggfHwgNCk7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInAtMyBweS00XCI+XHJcblx0XHRcdFx0XHQ8YXBwLXNrZWxldG9uIFtyYW5kb21XaWR0aF09XCJ0cnVlXCIgaGVpZ2h0PVwiMS4zcmVtXCI+PC9hcHAtc2tlbGV0b24+XHJcblx0XHRcdFx0PC90ZD5cclxuXHRcdFx0PC90cj5cclxuXHRcdDwvdGJvZHk+XHJcblx0PC90YWJsZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXZFLE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFnQnJFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQVdILE1BQU0sT0FBTyxxQkFDWCxTQUFRLGNBQWM7SUF3SHRCLFlBQ1UsT0FBdUIsRUFDdkIsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3hDLEdBQXNCLEVBQ3RCLGtCQUFxQztRQUU3QyxLQUFLLEVBQUUsQ0FBQztRQVBBLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZC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QWU7c0JBQXZCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVOLFlBQVk7c0JBRFgsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBU0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25EZXN0cm95LFxyXG5cdE9uSW5pdCxcclxuXHRPdXRwdXQsXHJcblx0U2ltcGxlQ2hhbmdlcyxcclxuXHRUZW1wbGF0ZVJlZixcclxuXHRWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yL3BhZ2luYXRvcic7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2FkYXB0ZXJzL2FkYXB0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENhbGxBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9jYWxsQXBpL2NhbGwtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCwgRXZhbHVhdGVkU3RyaW5nIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuaW1wb3J0IHsgRU1QVFlfVEVNUExBVEUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2VtcHR5LXN0YXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9keW5hbWljLXRhYmxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZUhvb2tzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLWhvb2tzLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVQcm92aWRlclJlcXVlc3QgPSB7XHJcbiAgcXVlcnk6IHsgcGFnZVByb3ZpZGVyOiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG4gIG9wdGlvbnM6IHsgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9O1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVDdXN0b21SZXF1ZXN0ID0ge1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG4gIHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbn07XHJcblxyXG4vKipcclxuICogdGhpcyBjb21wb25lbnQgaXMgYW4gYWRkaXRpb25hbCBsYXllciB0aGF0IHVzZXMgW1RhYmxlIENvbXBvbmVudF17QGxpbmsgVGFibGVDb21wb25lbnR9IGludGVybmFsbHksXHJcbiAqIHlvdSBjYW4gdXNlIHRoaXMgY29tcG9uZW50IHRvIGNvbmZpZ3VyZSBhIHBhZ2UgcHJvdmlkZXIgbGlzdGluZyBvdXQgb2YgdGhlIGJveCBlYXNpbHksXHJcbiAqIGFuZCBpdCB3aWxsIGhhbmRsZSBhbGwgb2YgdGhlIGJhc2ljIGZlYXR1cmVzIHN1Y2ggYXMgZ2V0dGluZyBkYXRhIGZyb20gQVBJLCBMaXN0aW5nLCBQYWdpbmF0aW9uLCBzb3J0aW5nIGFuZCBmaWx0ZXJpbmdcclxuICogIVtTY3JlZW5zaG90LTFdKC4uL3NjcmVlbnNob3RzL2R5bmFtaWNUYWJsZS5wbmcpXHJcbiAqIEB0aXRsZVxyXG4gKiBEeW5hbWljIFRhYmxlXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIDxjdHMtZHluYW1pYy10YWJsZVxyXG4gKiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICogICAgW3Jlc3BvbnNpdmVDb2x1bW5zXT1cInJlc3BvbnNpdmVDb2x1bW5zXCJcclxuICogICAgW2Z1bGxXaWR0aF09XCJmdWxsV2lkdGhcIlxyXG4gKiAgICBbcGFnZVNpemVdPVwiUGFnZVNpemVcIlxyXG4gKiAgICBbcGFnZVByb3ZpZGVyXT1cInBhZ2VQcm92aWRlclwiXHJcbiAqICAgIFtxdWlja0ZpbHRlcl09XCJmaWx0ZXJcIlxyXG4gKiAgICBbc29ydGluZ0J5XT1cInNvcnRpbmdCeVwiXHJcbiAqICAgIFtlbnRpdHlUeXBlXT1cIidhbGwnXCJcclxuICogICAgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gKiAgICBbcHJlZml4XT1cInByZWZpeFwiXHJcbiAqICAgIFtyb3dDdXJzb3JdPVwidHJ1ZVwiXHJcbiAqICAgIFtxdWVyeVBhcmFtXT1cInF1ZXJ5UGFyYW1cIlxyXG4gKiAgICBbaGVhZGVyc109XCJoZWFkZXJzXCJcclxuICogICAgKG9uUm93U2VsZWN0ZWQpPVwib3BlblZpZXdlcigkZXZlbnQpXCJcclxuICogICAgKGFjdGlvbk9uUm93KT1cInBlcmZvcm1BY3Rpb24oJGV2ZW50KVwiPlxyXG4gKiA8L2N0cy1keW5hbWljLXRhYmxlPlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjdHMtZHluYW1pYy10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbY2xhc3MubG9hZGluZy1yZXN1bHRzXSc6ICdsb2FkaW5nJyxcclxuICAgICdbY2xhc3Mubm8tZGF0YV0nOiAncm93cy5sZW5ndGggPD0gMCcsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNUYWJsZUNvbXBvbmVudFxyXG4gIGV4dGVuZHMgRGVzdHJveVN1YmplY3RcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAvKiogZXZlbnQgdG8gZW1pdCB3aGVuIHNlbGVjdGluZyBzaW5nbGUgcm93ICAqL1xyXG4gIEBPdXRwdXQoKSBvblJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBldmVudCB0byBlbWl0IHdoZW4gc2VsZWN0aW5nIHNpbmdsZSByb3cgdG8gY2F0Y2ggaW5kZXgqL1xyXG4gIEBPdXRwdXQoKSBvblJvd0luZGV4U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoqIGV2ZW50IHRvIGVtaXQgd2hlbiBwZXJmb3JtIGFjdGlvbiBvbiByb3cgKGRlbHRlLCBlZGl0LCAuLi4gKSAqL1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvKiogZXZlbnQgdG8gZW1pdCB0byB0aGUgaGlnaGVyIGxldmVsICB3aGVuIGdldHRpbmcgZGF0YSBmcm9tIGFwaSBpcyBmaW5pc2hlZCAqL1xyXG4gIEBPdXRwdXQoKSBvbkdldHRpbmdEYXRhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8qKiBldmVudCB0IGVtaXQgd2hlbiBzZWxlY3RpbmcgbXVsdGlwbGUgcm93ICovXHJcbiAgQE91dHB1dCgpIG9uTXVsdGlSb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAvKiogZXZlbnQgdCBlbWl0IHdoZW4gc3RhcnQgZ2V0dGluZyBkYXRhIGFuZCB3aGVuIGZpbmlzaCAqL1xyXG4gIEBPdXRwdXQoKSBvbkxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgc29ydEJ5OiBzdHJpbmc7XHJcbiAgICBzb3J0T3JkZXI6IHN0cmluZztcclxuICB9PigpO1xyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgb25QYWdlYCBpbnN0ZWFkLlxyXG4gICAqIEBzZWUgb25QYWdlXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIG9uUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25Mb2FkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkluaXRpYWxpemUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLyoqIEFycmF5IG9mIGNvbHVtbnMgKi9cclxuICBASW5wdXQoKSBjb2x1bW5zO1xyXG4gIC8qKiBBcnJheSBvZiBjb2x1bW5zIG9uIHNtYWxsZXIgc2NyZWVucyAqL1xyXG4gIEBJbnB1dCgpIHJlc3BvbnNpdmVDb2x1bW5zPztcclxuICAvKiogRGVmaW5lcyB0aGUgcGFnZSBpbiB3aGljaCB0YWJsZSBpcyBiZWluZyB1c2VkICovXHJcbiAgQElucHV0KCkgZW50aXR5VHlwZTogc3RyaW5nO1xyXG4gIC8qKiBUcmFuc2xhdGlvbnMgcHJlZml4ICovXHJcbiAgQElucHV0KCkgcHJlZml4ID0gJyc7XHJcbiAgLyoqIEhlYWRlcnMgdG8gYmUgc2VudCB3aXRoIEFQSSBSZXF1ZXN0ICovXHJcbiAgQElucHV0KCkgaGVhZGVycztcclxuICAvKiogRmllbGRzIGtleW1hcCB0byBiZSBtYXBwZWQgaW4gdGhlIGFkYXB0ZXIgKi9cclxuICBASW5wdXQoKSBmaWVsZHM7XHJcbiAgLyoqIFBhZ2UgUHJvdmlkZXIgbmFtZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZXRyaWV2ZSBkYXRhICovXHJcbiAgQElucHV0KCkgcGFnZVByb3ZpZGVyO1xyXG4gIC8qKiBDb250cm9scyBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGFibGUgKi9cclxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDEwO1xyXG4gIC8qKiBDb250cm9scyBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UgaW4gdGFibGUgKi9cclxuICBASW5wdXQoKSBoaWdsaWdodFVucmVhZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzTGVnYWN5TW9kZSA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd1RvdGFsUmVjb3JkID0gZmFsc2U7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoRU1QVFlfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgX3BhZ2VOdW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHNldCBwYWdlTnVtYmVyKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgIHRoaXMuX3BhZ2VOdW1iZXIgPSBpc05hTigrdmFsdWUpID8gMSA6ICt2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBwYWdlTnVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VOdW1iZXI7XHJcbiAgfVxyXG5cclxuICAvKiogU29ydGluZyBjb2x1bW4gKi9cclxuICBASW5wdXQoKSBzb3J0aW5nQnk6IHtcclxuICAgIHNvcnRCeT86IHN0cmluZztcclxuICAgIHNvcnRPcmRlcj86IHN0cmluZztcclxuICB9ID0ge307XHJcbiAgQElucHV0KCkgcXVlcnlQYXJhbT8gPSB7fTtcclxuXHJcbiAgQElucHV0KCkgY3VzdG9tRmlsdGVyczoge1xyXG4gICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgIHBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIH0gPSB7fTtcclxuXHJcbiAgQElucHV0KCkgcXVpY2tGaWx0ZXI/O1xyXG4gIC8qKiBDb250cm9scyBpZiBpdCByZXBvcnQgcGFnZSAqL1xyXG4gIEBJbnB1dCgpIHJlcG9ydDtcclxuICAvKiogdG8gbWFrZSBjdXJzb3Igd2hlbiBob3ZlciBvbiByb3cgb3Igbm90ICovXHJcbiAgQElucHV0KCkgcm93Q3Vyc29yPztcclxuICBASW5wdXQoKSBmdWxsV2lkdGg/ID0gJ2F1dG8nO1xyXG4gIC8qKiAnbGlzdCcgZm9yIG5vcmFtbCB0YWJsZSAnY2FyZCcgZm9yIGNhcmRzIG1vZGUgbGlrZSBpbiBtZW1vcyAqL1xyXG4gIEBJbnB1dCgpIHRhYmxlTW9kZSA9ICdsaXN0JztcclxuXHJcbiAgQElucHV0KCkgY29tcG9uZW50TmFtZTogc3RyaW5nO1xyXG4gIC8qKiBhY3Rpb24gdG8gYmUgdXNlZCBpbiBjYXNlIG9mIGNhcmQgbW9kZSAqL1xyXG4gIEBJbnB1dCgpIHRhYmxlQWN0aW9ucztcclxuICBASW5wdXQoKSBkZWZ1bHRTb3J0OiBhbnkgPSB7IG5hbWU6ICdwcm9wZXJ0aWVzLmNyZWF0ZWRBdCcsIGRpcjogJ2Rlc2MnIH07XHJcbiAgQElucHV0KCkgcmFuZ2U7XHJcbiAgQElucHV0KCkgaXNTZWFyY2hQYWdlID0gZmFsc2U7XHJcbiAgLyoqIGFsbG93IG11bHRpc2VsZWN0IHJvd3Mgd2l0aCBjaGVja2JveCAqL1xyXG4gIEBJbnB1dCgpIG11bHRpU2VsZWN0Um93cyA9IGZhbHNlO1xyXG4gIC8qKiB0byBzaG93IDFzdCByb3cgd2l0aCBjdXN0b20gdGVtcGxhdGUgaW4gdGhlIHRhYmxlKi9cclxuICBASW5wdXQoKSBjdXN0b21GaXJzdFJvdyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhpZ2hsaWdodFNlbGVjdGVkQ2FyZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dBY3Rpb25zQXNNZW51ID0gZmFsc2U7IC8vIGZsYWdlIHRvIHNob3cgYWN0aW9uIGluIG1lbnUgb3Igc2lkZSBieSBzaWRlXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJQYXJhbXMgPSB7fTtcclxuXHJcbiAgQElucHV0KCkgc2tpcEFnZ3JlZ2F0aW9uOiAnbmV2ZXInIHwgJ29uUGFnZUNoYW5nZScgPSAnb25QYWdlQ2hhbmdlJztcclxuICBASW5wdXQoKSBjdXN0b21Vcmw6IHtcclxuICAgIHVybDogc3RyaW5nO1xyXG4gICAgbWV0aG9kOiAnUE9TVCcgfCAnR0VUJztcclxuICAgIHBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gIH07XHJcbiAgQElucHV0KCkgZm9ybWF0ID0gJ01NTU0gZCwgeSc7XHJcblxyXG4gIEBJbnB1dCgpIHJlcXVlc3RBY3Rpb25zPzoge1xyXG4gICAgYmVmb3JlU3VibWl0PzogRXZhbHVhdGVkU3RyaW5nPCdwYXlsb2FkJz47XHJcbiAgfTtcclxuXHJcbiAgcm93cyA9IFtdO1xyXG4gIHRvdGFsUmVjb3JkcyA9IDA7XHJcblxyXG4gIGxvYWRpbmc7XHJcbiAgc29ydGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyBzaXplOiBudW1iZXIgfT4gPSBbXTtcclxuXHJcbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFkYXB0ZXI6IEFkYXB0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWxsQXBpOiBDYWxsQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgbnV4ZW9TZXJ2aWNlOiBOdXhlb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGR5bmFtaWNUYWJsZVNlcnZpY2U6IER5bmFtaWNUYWJsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIF90YWJsZUhvb2tzU2VydmljZTogVGFibGVIb29rc1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZHluYW1pY1RhYmxlU2VydmljZS5yZWZyZXNoRGF0YVxyXG4gICAgICAucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZmlsdGVyRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJEYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IHsgLi4uZmlsdGVyRGF0YSB9O1xyXG4gICAgICAgICAgLy8gcmVzZXQgcGFnZSBudW1iZXIgd2hlbiBzdGFydCBuZXcgZmlsdGVyaW5nXHJcbiAgICAgICAgICB0aGlzLl9yZXNldFBhZ2VOdW1iZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgaXNGaXJzdENoYW5nZSA9IE9iamVjdC52YWx1ZXMoY2hhbmdlcykuc29tZSgoYykgPT4gYy5pc0ZpcnN0Q2hhbmdlKCkpO1xyXG4gICAgaWYgKGlzRmlyc3RDaGFuZ2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhhc0NoYW5nZWQgPSAoaXRlbXM6IHN0cmluZ1tdKSA9PlxyXG4gICAgICBpdGVtcy5zb21lKChrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBpc0VxdWFsID0gXy5pc0VxdWFsKFxyXG4gICAgICAgICAgY2hhbmdlc1trZXldPy5wcmV2aW91c1ZhbHVlIHx8IG51bGwsXHJcbiAgICAgICAgICBjaGFuZ2VzW2tleV0/LmN1cnJlbnRWYWx1ZSB8fCBudWxsXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gIWlzRXF1YWw7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChoYXNDaGFuZ2VkKFsncXVlcnlQYXJhbScsICdxdWlja0ZpbHRlcicsICdjdXN0b21GaWx0ZXJzJ10pKSB7XHJcbiAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgdGhpcy5fcmVzZXRQYWdlTnVtYmVyKCk7IC8vIFJlc2V0IHBhZ2UgbnVtYmVyIGJlZm9yZSByZWNhbGxpbmcgQVBJIHdpdGggZmlsdGVyc1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChoYXNDaGFuZ2VkKFsnc29ydGluZ0J5J10pKSB7XHJcbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRQYWdlTnVtYmVyKCkge1xyXG4gICAgdGhpcy5fcGFnZU51bWJlciA9IDE7XHJcbiAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMuX3BhZ2VOdW1iZXIpO1xyXG4gICAgdGhpcy5vblBhZ2UuZW1pdCh7XHJcbiAgICAgIHBhZ2VJbmRleDogdGhpcy5fcGFnZU51bWJlcixcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIGxlbmd0aDogdGhpcy50b3RhbFJlY29yZHMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldERhdGEoXHJcbiAgICBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXHJcbiAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cclxuICApIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7IC8vIGludGVybmFsIGxvYWRpbmdcclxuICAgIHRoaXMub25Mb2FkaW5nLmVtaXQodHJ1ZSk7IC8vIGV4dGVybmFsIGxvYWRpbmdcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIC4uLih0aGlzLnJhbmdlID8geyBkdWJsaW5jb3JlX2NyZWF0ZWRfYWdnOiB0aGlzLnJhbmdlIH0gOiB7fSksXHJcbiAgICAgIC4uLnRoaXMuZmlsdGVyUGFyYW1zLCAvLyB1c2VkIHRvIGdldCBmaWx0ZXIgZGF0YSBhbmQgc2V0IGl0IGluIG91ciBwYXJhbXNcclxuICAgICAgLi4udGhpcy5xdWVyeVBhcmFtLCAvLyB1c2VkIHRvIGdldCBwYXJhbXMgZnJvbSBvdXIgY29uZmlnXHJcbiAgICAgIC4uLnRoaXMucXVpY2tGaWx0ZXIsXHJcbiAgICAgIC4uLihPYmplY3Qua2V5cyh0aGlzLnNvcnRpbmdCeSB8fCB7fSkubGVuZ3RoXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIHNvcnRCeTogdGhpcy5zb3J0aW5nQnk/LnNvcnRCeSxcclxuICAgICAgICAgICAgc29ydE9yZGVyOiB0aGlzLnNvcnRpbmdCeT8uc29ydE9yZGVyLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDoge30pLFxyXG4gICAgICBjdXJyZW50UGFnZUluZGV4OiArdGhpcy5wYWdlTnVtIC0gMSxcclxuICAgICAgLi4uKHRoaXMucGFnZVNpemUgPyB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH0gOiB7fSksXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgLi4ucGF5bG9hZCxcclxuICAgIH07XHJcblxyXG4gICAgLy8gZG9uJ3QgcmVmcmVzaCBhbGwgdGFibGUgaW4gY2FzZSBvZiBzb3J0aW5nIG9ubHlcclxuICAgIGlmICghdGhpcy5zb3J0aW5nICYmIHRoaXMuaXNMZWdhY3lNb2RlKSB7XHJcbiAgICAgIC8vIHVzZWQgdG8gbm90IHJlZnJlc2hpbmcgYWxsIHRhYmxlIGluIGNhc2Ugb2Ygc29ydGluZyBzaW5jZSB0YWJsZSBsb3NlIHNvcnRpbmcgc3RhdGUgd2hlbiByZWZyZXNoIGFsbCB0YWJsZVxyXG4gICAgICB0aGlzLnJvd3MgPSBbXTsgLy8gdXNlZCB0byByZWZyZXNoIHRhYmxlIHRvIGZlZWwgY2hhbmdlcyBpbiBhY3Rpb25zIHdoZW4gcGVyZm9ybSBhY3Rpb24gYW5kIG5lZWQgdG8gcmVmcmVzaCBhY3Rpb25zXHJcbiAgICB9XHJcbiAgICB0aGlzLnNvcnRpbmcgPSBmYWxzZTsgLy8gcmVzZXQgc29ydGluZyBzdGF0dXMgdG8gZmFsc2UgYW5kIGZvciBuZXh0IHNvcnRpbmcgZnVuYyBzb3J0aW5nIHNldCBpdCB0byB0cnVlIGFnYWluXHJcblxyXG4gICAgY29uc3QgX2hlYWRlcnMgPSB7XHJcbiAgICAgIC4uLnRoaXMuaGVhZGVycyxcclxuICAgICAgLi4uaGVhZGVycyxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IF9wcm92aWRlclBheWxvYWQ6IFRhYmxlUHJvdmlkZXJSZXF1ZXN0ID0ge1xyXG4gICAgICBxdWVyeToge1xyXG4gICAgICAgIHBhZ2VQcm92aWRlcjogdGhpcy5wYWdlUHJvdmlkZXIsXHJcbiAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgIC4uLih0aGlzLmN1c3RvbUZpbHRlcnM/LnBhcmFtcyB8fCB7fSksXHJcbiAgICAgIH0sXHJcbiAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICBoZWFkZXJzOiBfaGVhZGVycyxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IF9jdXN0b21QYXlsb2FkOiBUYWJsZUN1c3RvbVJlcXVlc3QgPSB7XHJcbiAgICAgIHVybDogdGhpcy5jdXN0b21Vcmw/LnVybCxcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgIC4uLih0aGlzLmN1c3RvbUZpbHRlcnM/LnBhcmFtcyB8fCB7fSksXHJcbiAgICAgIH0sXHJcbiAgICAgIGhlYWRlcnM6IF9oZWFkZXJzLFxyXG4gICAgICBwYXlsb2FkOiBfLm1lcmdlKFxyXG4gICAgICAgIHt9LFxyXG4gICAgICAgIHRoaXMuY3VzdG9tVXJsPy5wYXlsb2FkIHx8IHt9LFxyXG4gICAgICAgIHRoaXMuY3VzdG9tRmlsdGVycz8ucGF5bG9hZCB8fCB7fVxyXG4gICAgICApLFxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgcmVxdWVzdERhdGE6IFRhYmxlUHJvdmlkZXJSZXF1ZXN0IHwgVGFibGVDdXN0b21SZXF1ZXN0ID0gdGhpcy5jdXN0b21VcmxcclxuICAgICAgPyBfY3VzdG9tUGF5bG9hZFxyXG4gICAgICA6IF9wcm92aWRlclBheWxvYWQ7XHJcblxyXG4gICAgY29uc3QgYmVmb3JlU3VibWl0U3RyaW5nID0gdGhpcy5yZXF1ZXN0QWN0aW9ucz8uYmVmb3JlU3VibWl0O1xyXG4gICAgaWYgKHR5cGVvZiBiZWZvcmVTdWJtaXRTdHJpbmcgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJlcXVlc3REYXRhID0gYXdhaXQgdGhpcy5fdGFibGVIb29rc1NlcnZpY2UuZXZhbHVhdGUoXHJcbiAgICAgICAgYmVmb3JlU3VibWl0U3RyaW5nLFxyXG4gICAgICAgIHJlcXVlc3REYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdERhdGEgPSBhd2FpdCB0aGlzLl90YWJsZUhvb2tzU2VydmljZS5leGVjdXRlQmVmb3JlU3VibWl0KFxyXG4gICAgICByZXF1ZXN0RGF0YVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcXVlcnkkOiBPYnNlcnZhYmxlPHVua25vd24+O1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tVXJsKSB7XHJcbiAgICAgIGNvbnN0IF9yZXF1ZXN0ID0gcmVxdWVzdERhdGEgYXMgVGFibGVDdXN0b21SZXF1ZXN0O1xyXG5cclxuICAgICAgcXVlcnkkID0gdGhpcy5jYWxsQXBpLmN1c3RvbVF1ZXJ5KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVybDogX3JlcXVlc3QudXJsLFxyXG4gICAgICAgICAgbWV0aG9kOiB0aGlzLmN1c3RvbVVybC5tZXRob2QsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfcmVxdWVzdC5wYXJhbXMsXHJcbiAgICAgICAgX3JlcXVlc3QuaGVhZGVycyxcclxuICAgICAgICBfcmVxdWVzdC5wYXlsb2FkXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBfcmVxdWVzdCA9IHJlcXVlc3REYXRhIGFzIFRhYmxlUHJvdmlkZXJSZXF1ZXN0O1xyXG4gICAgICBxdWVyeSQgPSB0aGlzLmNhbGxBcGkucXVlcnkoX3JlcXVlc3QucXVlcnksIF9yZXF1ZXN0Lm9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHF1ZXJ5JFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGF0YS5lbnRyaWVzLm1hcCgoaXRlbSkgPT4gdGhpcy5hZGFwdGVyLmFkYXB0SW4oaXRlbSwgdGhpcy5maWVsZHMpKTtcclxuICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Mb2FkaW5nLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMub25Mb2FkLmVtaXQocmVzKTtcclxuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgIHRoaXMub25Jbml0aWFsaXplLmVtaXQocmVzKTtcclxuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXMuZW50cmllcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVsZW1lbnQucHJvcGVydGllcyAmJlxyXG4gICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXM/LmNyZWF0b3IgJiZcclxuICAgICAgICAgICAgZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3I/LnByb3BlcnRpZXNcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXNbJ2NyZWF0b3JGdWxsT2JqZWN0J10gPSB7XHJcbiAgICAgICAgICAgICAgLi4uZWxlbWVudC5wcm9wZXJ0aWVzLmNyZWF0b3IsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGVsZW1lbnQucHJvcGVydGllcy5jcmVhdG9yID1cclxuICAgICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXMuY3JlYXRvcj8ucHJvcGVydGllcz8uZmlyc3ROYW1lICtcclxuICAgICAgICAgICAgICAnICcgK1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQucHJvcGVydGllcy5jcmVhdG9yPy5wcm9wZXJ0aWVzPy5sYXN0TmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50LnByb3BlcnRpZXMgJiYgZWxlbWVudC5wcm9wZXJ0aWVzPy5hc3NpZ25lZSkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnByb3BlcnRpZXMuYXNzaWduZWUgPSBlbGVtZW50LnByb3BlcnRpZXM/LmFzc2lnbmVlLmZ1bGxOYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gaWYodGhpcy5oaWdsaWdodFVucmVhZCl7XHJcbiAgICAgICAgICAvLyBcdHRoaXMuY2VjaGtJZlJlYWRPck5vdChlbGVtZW50LnByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudG90YWxSZWNvcmRzID0gcmVzLnJlc3VsdHNDb3VudDtcclxuICAgICAgICB0aGlzLnJvd3MgPSByZXMuZW50cmllcztcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgLy8gZW1pdCBkYXRhIHRvIG91dHNpZGUgaW4gY2FzZSBvZiBzZWFyY2ggcGFnZSBmb3IgdGhlIGZpcnN0IHRpbWUgb25seSB0byBwcmV2ZW50IHJlZnJlc2hpbmcgYWdncmVnYXRpb24gd2l0aCBldmVyeSBwYWdlIGNoYW5nZVxyXG4gICAgICAgIC8vIGFuZCBmb3IgYW55IG90aGVyIHBhZ2UgdHlwZSBlbWl0IGRhdGEgZGlyZWN0bHkgaW4gYWxsIHBhZ2UgbnVtYmVyc1xyXG4gICAgICAgIGlmICgodGhpcy5pc1NlYXJjaFBhZ2UgJiYgdGhpcy5wYWdlTnVtID09PSAxKSB8fCAhdGhpcy5pc1NlYXJjaFBhZ2UpXHJcbiAgICAgICAgICB0aGlzLm9uR2V0dGluZ0RhdGEuZW1pdChyZXMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIHdoZW4gY2xpY2tpbmcgb24gc2luZ2xlIHJvd1xyXG4gIHJvd0RldGFpbHMoZXZlbnQpIHtcclxuICAgIHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGluZGV4RGV0YWlscyhldmVudCkge1xyXG4gICAgdGhpcy5vblJvd0luZGV4U2VsZWN0ZWQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICAvL2Z1bmN0aW9uIHRvIGhhbmRsZSBhbGwgb3BlcmF0aW9ucyBvbiBzaW5nbGUgcm93IChkZWxldGUgLCBlZGl0ICwgLi4uKVxyXG4gIHBlcmZvcm1BY3Rpb24oYWN0aW9uKSB7XHJcbiAgICB0aGlzLmFjdGlvbk9uUm93LmVtaXQoYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIC8vIGhhbmRsZSBzb3J0aW5nIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRhYmxlXHJcbiAgb25Tb3J0KHNvcnRPYmplY3QpIHtcclxuICAgIHRoaXMuc29ydENoYW5nZWQuZW1pdChzb3J0T2JqZWN0KTtcclxuICAgIHRoaXMuc29ydGluZ0J5ID0gc29ydE9iamVjdDtcclxuICAgIHRoaXMuc29ydGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmdldERhdGEoXHJcbiAgICAgIHt9LFxyXG4gICAgICB0aGlzLnNraXBBZ2dyZWdhdGlvbiA9PT0gJ29uUGFnZUNoYW5nZScgPyB7IHNraXBBZ2dyZWdhdGVzOiAndHJ1ZScgfSA6IHt9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25NdWx0aVJvd1NlbGVjdFZhbHVlKGV2ZW50KSB7XHJcbiAgICB0aGlzLm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdpbmF0aW9uQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICB0aGlzLl9wYWdlTnVtYmVyID0gZXZlbnQ7XHJcbiAgICB0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMub25QYWdlLmVtaXQoe1xyXG4gICAgICBwYWdlSW5kZXg6IHRoaXMuX3BhZ2VOdW1iZXIsXHJcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBsZW5ndGg6IHRoaXMudG90YWxSZWNvcmRzLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmdldERhdGEoXHJcbiAgICAgIHt9LFxyXG4gICAgICB0aGlzLnNraXBBZ2dyZWdhdGlvbiA9PT0gJ29uUGFnZUNoYW5nZScgPyB7IHNraXBBZ2dyZWdhdGVzOiAndHJ1ZScgfSA6IHt9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VQYWdlU2l6ZShwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICB0aGlzLl9yZXNldFBhZ2VOdW1iZXIoKTtcclxuICAgIHRoaXMuZ2V0RGF0YShcclxuICAgICAge30sXHJcbiAgICAgIHRoaXMuc2tpcEFnZ3JlZ2F0aW9uID09PSAnb25QYWdlQ2hhbmdlJyA/IHsgc2tpcEFnZ3JlZ2F0ZXM6ICd0cnVlJyB9IDoge31cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjZWNoa0lmUmVhZE9yTm90KGVsZW1lbnQpIHtcclxuICAgIC8vIGNoZWNrIGlmIGxvZ2VkIGluIHVzZXIgaXMgaW4gdmlld2VycyBhcnJheSBvciBub3RcclxuICAgIGlmIChlbGVtZW50Wyd2aWV3ZXJzOnVzZXJzJ10gJiYgZWxlbWVudFsndmlld2Vyczp1c2VycyddLmxlbmd0aCkge1xyXG4gICAgICBlbGVtZW50LmlzUmVhZGVkID0gZmFsc2U7XHJcbiAgICAgIGVsZW1lbnRbJ3ZpZXdlcnM6dXNlcnMnXS5tYXAoKHVzZXIpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB1c2VyLnVzZXJuYW1lID09PVxyXG4gICAgICAgICAgICB0aGlzLm51eGVvU2VydmljZS5udXhlb0NsaWVudC51c2VyLnByb3BlcnRpZXMudXNlcm5hbWUgJiZcclxuICAgICAgICAgIHVzZXIuc3RhdGUgPT09ICdyZWFkJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZWxlbWVudC5pc1JlYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVsZW1lbnQuaXNSZWFkZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndyYXBwaW5nIHRhYmxlLXdyYXBwaW5nXCI+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGVnYWN5TW9kZVwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRhYmxlLXJlcG9zaXRpb25cIj5cclxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd3MubGVuZ3RoXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFibGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cclxuXHRcdFx0PGN0cy1zcGlubmVyPjwvY3RzLXNwaW5uZXI+XHJcblx0XHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcblx0PGRpdiBjbGFzcz1cInRhYmxlLXJlcG9zaXRpb25cIiAqbmdJZj1cIiFpc0xlZ2FjeU1vZGVcIj5cclxuXHRcdDxuZy1jb250YWluZXIgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlXCI+PC9uZy1jb250YWluZXI+XHJcblx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdCpuZ0lmPVwiIWluaXRpYWxpemVkXCJcclxuXHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwic2tlbGV0b25cIlxyXG5cdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IDEwIH1cIlxyXG5cdFx0PjwvbmctY29udGFpbmVyPlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2XHJcblx0XHRjbGFzcz1cInBhZ2luYXRpb24taW5lci13cmFwZXIgbXktM1wiXHJcblx0XHRbbmdDbGFzc109XCJ7IHJlbGF0aXZlOiBwYWdlU2l6ZXM/Lmxlbmd0aCB9XCJcclxuXHRcdCpuZ0lmPVwicm93cy5sZW5ndGggXCJcclxuXHQ+XHJcblx0XHQ8Y3RzLXBhZ2luYXRpb25cclxuICAgICAgKm5nSWY9XCJ0b3RhbFJlY29yZHMgPiBwYWdlU2l6ZVwiXHJcblx0XHRcdFtwYWdlXT1cInBhZ2VOdW1cIlxyXG5cdFx0XHQoY2hhbmdlKT1cInBhZ2luYXRpb25DaGFuZ2UoJGV2ZW50KVwiXHJcblx0XHRcdFtzaXplXT1cInBhZ2VTaXplXCJcclxuXHRcdFx0W2NvdW50XT1cInRvdGFsUmVjb3Jkc1wiXHJcblx0XHQ+PC9jdHMtcGFnaW5hdGlvbj5cclxuXHRcdDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBuZGZQYWdlU2l6ZXMgZmxleCBnYXAteC0zIGl0ZW1zLWNlbnRlciBtdC0yXCI+XHJcblx0XHRcdDxuZGYtcGFnZS1zaXplcy1saXN0XHJcblx0XHRcdFx0Km5nSWY9XCJwYWdlU2l6ZXM/Lmxlbmd0aFwiXHJcblx0XHRcdFx0W3BhZ2VTaXplc109XCJwYWdlU2l6ZXNcIlxyXG5cdFx0XHRcdFtzZWxlY3RlZFBhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuXHRcdFx0XHQob25DaGFuZ2VQYWdlU2l6ZSk9XCJvbkNoYW5nZVBhZ2VTaXplKCRldmVudClcIlxyXG5cdFx0XHQ+XHJcblx0XHRcdDwvbmRmLXBhZ2Utc2l6ZXMtbGlzdD5cclxuXHJcblx0XHRcdDxzcGFuICpuZ0lmPVwic2hvd1RvdGFsUmVjb3JkXCI+e3sgJ1RBQkxFLnRvdGFsUmVjb3JkcycgfCB0cmFuc2xhdGU6IHsgY291bnQ6IHRvdGFsUmVjb3JkcyB9IH19PC9zcGFuPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblxyXG5cdDxuZy1jb250YWluZXJcclxuXHRcdCpuZ0lmPVwiaXNMZWdhY3lNb2RlXCJcclxuXHRcdFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVtcHR5VGVtcGxhdGUgfHwgbGVnYWN5RGVmYXVsdEVtcHR5U3RhdGVcIlxyXG5cdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBsb2FkaW5nLCByb3dzOiByb3dzLCBpbml0aWFsaXplZDogaW5pdGlhbGl6ZWQgfVwiXHJcblx0PjwvbmctY29udGFpbmVyPlxyXG5cclxuXHQ8bmctY29udGFpbmVyXHJcblx0XHQqbmdJZj1cIiFpc0xlZ2FjeU1vZGVcIlxyXG5cdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZSB8fCBkZWZhdWx0RW1wdHlTdGF0ZVwiXHJcblx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGxvYWRpbmcsIHJvd3M6IHJvd3MsIGluaXRpYWxpemVkOiBpbml0aWFsaXplZCB9XCJcclxuXHQ+PC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICN0YWJsZT5cclxuXHQ8Y3RzLXRhYmxlXHJcblx0XHRbcm93c109XCJyb3dzXCJcclxuXHRcdFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG5cdFx0W3Jlc3BvbnNpdmVDb2x1bW5zXT1cInJlc3BvbnNpdmVDb2x1bW5zXCJcclxuXHRcdFtyb3dDdXJzb3JdPVwicm93Q3Vyc29yXCJcclxuXHRcdFtmdWxsV2lkdGhdPVwiZnVsbFdpZHRoXCJcclxuXHRcdFtlbnRpdHlUeXBlXT1cImVudGl0eVR5cGVcIlxyXG5cdFx0W3ByZWZpeF09XCJwcmVmaXhcIlxyXG5cdFx0W3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxyXG5cdFx0W3RhYmxlTW9kZV09XCJ0YWJsZU1vZGVcIlxyXG5cdFx0W2hpZ2xpZ2h0VW5yZWFkXT1cImhpZ2xpZ2h0VW5yZWFkXCJcclxuXHRcdFtjb21wb25lbnROYW1lXT1cImNvbXBvbmVudE5hbWVcIlxyXG5cdFx0W211bHRpU2VsZWN0Um93c109XCJtdWx0aVNlbGVjdFJvd3NcIlxyXG5cdFx0W3RhYmxlQWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxyXG5cdFx0W3Nob3dBY3Rpb25zQXNNZW51XT1cInNob3dBY3Rpb25zQXNNZW51XCJcclxuXHRcdFtkZWZ1bHRTb3J0XT1cImRlZnVsdFNvcnRcIlxyXG5cdFx0W2Zvcm1hdF09XCJmb3JtYXRcIlxyXG5cdFx0W2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJoaWdobGlnaHRTZWxlY3RlZENhcmRcIlxyXG5cdFx0W2N1c3RvbUZpcnN0Um93XT1cImN1c3RvbUZpcnN0Um93XCJcclxuXHRcdChvblJvd1NlbGVjdGVkKT1cInJvd0RldGFpbHMoJGV2ZW50KVwiXHJcblx0XHQob25Sb3dJbmRleFNlbGVjdGVkKT1cImluZGV4RGV0YWlscygkZXZlbnQpXCJcclxuXHRcdChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdFZhbHVlKCRldmVudClcIlxyXG5cdFx0KGFjdGlvbk9uUm93KT1cInBlcmZvcm1BY3Rpb24oJGV2ZW50KVwiXHJcblx0XHQob25Tb3J0aW5nKT1cIm9uU29ydCgkZXZlbnQpXCJcclxuXHQ+PC9jdHMtdGFibGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xlZ2FjeURlZmF1bHRFbXB0eVN0YXRlPlxyXG5cdDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgcm93cy5sZW5ndGggPT09IDBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XHJcblx0XHRcdHt7IChwcmVmaXggPyBwcmVmaXggKyAnbm9EYXRhJyA6ICdub0RhdGEnKSB8IHRyYW5zbGF0ZSB9fVxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCIgKm5nSWY9XCJsb2FkaW5nICYmIHJvd3MubGVuZ3RoID09PSAwXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwidGV4dFwiPlxyXG5cdFx0XHR7eyAocHJlZml4ID8gcHJlZml4ICsgJ2dldHRpbmdEYXRhJyA6ICdnZXR0aW5nRGF0YScpIHwgdHJhbnNsYXRlIH19XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5U3RhdGU+XHJcblx0PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCIgKm5nSWY9XCIhbG9hZGluZyAmJiByb3dzLmxlbmd0aCA9PT0gMFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cInRleHRcIj5cclxuXHRcdFx0e3sgKHByZWZpeCA/IHByZWZpeCArICdub0RhdGEnIDogJ25vRGF0YScpIHwgdHJhbnNsYXRlIH19XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2ICpuZ0lmPVwibG9hZGluZyAmJiBpbml0aWFsaXplZFwiIGNsYXNzPVwibG9hZGluZy1jb250ZW50XCI+XHJcblx0XHQ8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjEwMFwiPjwvbWF0LXNwaW5uZXI+XHJcblx0PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NrZWxldG9uIGxldC1yb3dzPlxyXG5cdDx0YWJsZSBjbGFzcz1cInctZnVsbFwiPlxyXG5cdFx0PHRoZWFkICpuZ0lmPVwiZmFsc2VcIj5cclxuXHRcdFx0PHRyIGNsYXNzPVwiYm9yZGVyLWIgYm9yZGVyLWdyZWVuLTkwMFwiPlxyXG5cdFx0XHRcdDx0aCAqbmdJZj1cIm11bHRpU2VsZWN0Um93c1wiIGNsYXNzPVwicC0zIHB5LTRcIiBzdHlsZT1cIndpZHRoOiA2MHB4XCI+XHJcblx0XHRcdFx0XHQ8YXBwLXNrZWxldG9uIHdpZHRoPVwiNjBweFwiIGhlaWdodD1cIjEuM3JlbVwiPjwvYXBwLXNrZWxldG9uPlxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0PHRoICpuZ0Zvcj1cImxldCBudW0gb2YgW10uY29uc3RydWN0b3IoY29sdW1ucz8ubGVuZ3RoIHx8IDQpOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJweC0zIHB5LTRcIj5cclxuXHRcdFx0XHRcdDxhcHAtc2tlbGV0b24gW3JhbmRvbVdpZHRoXT1cInRydWVcIiBoZWlnaHQ9XCIxLjdyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0PC90aGVhZD5cclxuXHRcdDx0Ym9keT5cclxuXHRcdFx0PHRyICpuZ0Zvcj1cImxldCByb3cgb2YgW10uY29uc3RydWN0b3Iocm93cyB8fCAxMCk7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXItYiBib3JkZXItZ3JheS0yMDBcIj5cclxuXHRcdFx0XHQ8dGQgKm5nSWY9XCJtdWx0aVNlbGVjdFJvd3NcIiBjbGFzcz1cInAtMyBweS00XCIgc3R5bGU9XCJ3aWR0aDogNTBweFwiPlxyXG5cdFx0XHRcdFx0PGFwcC1za2VsZXRvbiB3aWR0aD1cIjUwcHhcIiBoZWlnaHQ9XCIxLjNyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdDx0ZCAqbmdGb3I9XCJsZXQgY29sIG9mIFtdLmNvbnN0cnVjdG9yKGNvbHVtbnM/Lmxlbmd0aCB8fCA0KTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicC0zIHB5LTRcIj5cclxuXHRcdFx0XHRcdDxhcHAtc2tlbGV0b24gW3JhbmRvbVdpZHRoXT1cInRydWVcIiBoZWlnaHQ9XCIxLjNyZW1cIj48L2FwcC1za2VsZXRvbj5cclxuXHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHQ8L3RyPlxyXG5cdFx0PC90Ym9keT5cclxuXHQ8L3RhYmxlPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export * from './services/dynamic-table.service';
|
|
2
1
|
export * from './directives/empty-state.directive';
|
|
3
2
|
export * from './dynamic-table.module';
|
|
4
3
|
export * from './dynamic-table/dynamic-table.component';
|
|
5
|
-
|
|
4
|
+
export * from './services/dynamic-table.service';
|
|
5
|
+
export * from './services/table-hooks.service';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2R5bmFtaWMtdGFibGUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZW1wdHktc3RhdGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLXRhYmxlLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy10YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZHluYW1pYy10YWJsZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90YWJsZS1ob29rcy5zZXJ2aWNlJztcclxuIl19
|