@mediusinc/mng-commons-data-api 6.0.0-rc.5 → 6.0.0-rc.6

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.
@@ -1,6 +1,6 @@
1
1
  {{>licenseInfo}}
2
2
 
3
- /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type */
4
4
 
5
5
  import {Injectable} from '@angular/core';
6
6
  import {HttpParams, HttpResponse} from '@angular/common/http';
@@ -1,6 +1,6 @@
1
1
  {{>licenseInfo}}
2
2
 
3
- /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type */
4
4
 
5
5
  import { Observable } from 'rxjs';
6
6
 
@@ -105,8 +105,7 @@ export class {{configurationClassName}} {
105
105
  * @return True if the given MIME is JSON, false otherwise.
106
106
  */
107
107
  public isJsonMime(mime: string): boolean {
108
- // eslint-disable-next-line no-control-regex
109
- const jsonMime = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
108
+ const jsonMime = new RegExp('^(application/json|[^;/\\s]+/[^;/\\s]+[+]json)\\s*(;.*)?$', 'i');
110
109
  return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
111
110
  }
112
111
 
@@ -1,4 +1,4 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types */
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
 
3
3
  export interface {{classname}}{{#allParents}}{{#-first}} extends {{/-first}}{{{.}}}{{^-last}}, {{/-last}}{{/allParents}} { {{>modelGenericAdditionalProperties}}
4
4
  {{#vars}}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons-data-api",
3
- "version": "6.0.0-rc.5",
3
+ "version": "6.0.0-rc.6",
4
4
  "peerDependencies": {
5
- "@angular/core": "^17.3.0 || ^18.0.0",
6
- "@mediusinc/mng-commons": "~6.0.0-rc.5"
5
+ "@angular/core": "^19.0.0",
6
+ "@mediusinc/mng-commons": "~6.0.0-rc.6"
7
7
  },
8
8
  "dependencies": {
9
9
  "tslib": "^2.8.1"
@@ -20,14 +20,10 @@
20
20
  },
21
21
  ".": {
22
22
  "types": "./index.d.ts",
23
- "esm2022": "./esm2022/mediusinc-mng-commons-data-api.mjs",
24
- "esm": "./esm2022/mediusinc-mng-commons-data-api.mjs",
25
23
  "default": "./fesm2022/mediusinc-mng-commons-data-api.mjs"
26
24
  },
27
25
  "./tableview": {
28
26
  "types": "./tableview/index.d.ts",
29
- "esm2022": "./esm2022/tableview/mediusinc-mng-commons-data-api-tableview.mjs",
30
- "esm": "./esm2022/tableview/mediusinc-mng-commons-data-api-tableview.mjs",
31
27
  "default": "./fesm2022/mediusinc-mng-commons-data-api-tableview.mjs"
32
28
  }
33
29
  }
package/version-info.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons-data-api",
3
- "version": "6.0.0-rc.5",
3
+ "version": "6.0.0-rc.6",
4
4
  "tag": null,
5
5
  "distance": null,
6
- "hash": "7bc3839",
6
+ "hash": "65c2b24",
7
7
  "dirty": true,
8
8
  "semver": null,
9
9
  "buildTimestamp": null,
10
- "raw": "6.0.0-rc.5-7bc3839-dirty"
10
+ "raw": "6.0.0-rc.6-65c2b24-dirty"
11
11
  }
package/esm2022/index.mjs DELETED
@@ -1,9 +0,0 @@
1
- // helpers
2
- export * from './lib/helpers/get-all-params';
3
- // models
4
- export * from './lib/models/api-version.model';
5
- export * from './lib/models/request-params.model';
6
- export * from './lib/models/schema.model';
7
- // types
8
- export * from './lib/types/extract-get-all-types.type';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsU0FBUztBQUNULGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLFFBQVE7QUFDUixjQUFjLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVscGVycy9nZXQtYWxsLXBhcmFtcyc7XG5cbi8vIG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2FwaS12ZXJzaW9uLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9yZXF1ZXN0LXBhcmFtcy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvc2NoZW1hLm1vZGVsJztcblxuLy8gdHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzL2V4dHJhY3QtZ2V0LWFsbC10eXBlcy50eXBlJztcbiJdfQ==
@@ -1,226 +0,0 @@
1
- import { CommonsInternalError, FilterMatchMode, dataListParamsFilterToUrlQuery, dataListParamsFiltersToUrlQuery, dataListParamsSortToUrlQuery, mapToDataList } from '@mediusinc/mng-commons/core';
2
- /**
3
- * Converts a filter match mode to its corresponding enum value.
4
- *
5
- * @param {string} matchMode - The filter match mode from data list filter to convert.
6
- * @returns {GetAllParamsFilterMatchType} - The converted enum value.
7
- * @throws {CommonsInternalError} - If the filter match mode is not supported.
8
- */
9
- export function toGetAllParamsFilterMatchMode(matchMode) {
10
- switch (matchMode) {
11
- case FilterMatchMode.Equals:
12
- return 'EQUALS';
13
- case FilterMatchMode.NotEquals:
14
- return 'NOT_EQUALS';
15
- case FilterMatchMode.Contains:
16
- return 'CONTAINS';
17
- case FilterMatchMode.NotContains:
18
- return 'NOT_CONTAINS';
19
- case FilterMatchMode.In:
20
- return 'IN';
21
- case FilterMatchMode.NotIn:
22
- return 'NOT_IN';
23
- case FilterMatchMode.StartsWith:
24
- return 'STARTS_WITH';
25
- case FilterMatchMode.EndsWith:
26
- return 'ENDS_WITH';
27
- case FilterMatchMode.LessThan:
28
- return 'LESS_THAN';
29
- case FilterMatchMode.LessThanOrEqualTo:
30
- return 'LESS_THAN_OR_EQUAL_TO';
31
- case FilterMatchMode.GreaterThan:
32
- return 'GREATER_THAN';
33
- case FilterMatchMode.GreaterThanOrEqualTo:
34
- return 'GREATER_THAN_OR_EQUAL_TO';
35
- case FilterMatchMode.Between:
36
- return 'BETWEEN';
37
- case FilterMatchMode.Exists:
38
- return 'EXISTS';
39
- case FilterMatchMode.DoesNotExist:
40
- return 'DOES_NOT_EXIST';
41
- default:
42
- throw new CommonsInternalError(`Filter match type '${matchMode}' not supported.`);
43
- }
44
- }
45
- function toGetAllParamsAsUrlQueryCommon(params) {
46
- const res = {};
47
- if (params.offset != null) {
48
- res.offset = params.offset;
49
- }
50
- if (params.limit != null) {
51
- res.limit = params.limit;
52
- }
53
- if (params.search != null && params.search !== '') {
54
- let caseSensitivityOption = 'ci';
55
- if (params.filters?.['global']?.caseSensitive === true) {
56
- caseSensitivityOption = 'cs';
57
- }
58
- res.globalFilter = `${caseSensitivityOption}:${params.search}`;
59
- }
60
- if (Array.isArray(params.sort) && params.sort.length > 0) {
61
- res.sort = dataListParamsSortToUrlQuery(params);
62
- }
63
- return res;
64
- }
65
- /**
66
- * Converts given parameters of a DataListParams object into a get all request param object with values as URL query string representation.
67
- *
68
- * @param {DataListParams} params - The parameters to convert.
69
- * @typeparam Sorts - The type of the sorting options for the data list.
70
- * @typeparam Filters - The type of the filters for the data list.
71
- * @returns {GetAllParamsUrlQueryType<Filters>} - Get all request param object with values as URL query string representation.
72
- */
73
- export function toGetAllParamsAsUrlQuery(params) {
74
- const res = toGetAllParamsAsUrlQueryCommon(params);
75
- if (params.filters) {
76
- Object.keys(params.filters).forEach(key => {
77
- res[key] = dataListParamsFiltersToUrlQuery(params, key);
78
- });
79
- }
80
- return res;
81
- }
82
- /**
83
- * Converts given parameters of a DataListParams object into a get all request param object with values as URL query string representation.
84
- *
85
- * @param {DataListParams} params - The parameters to convert.
86
- * @param {FilterKey} filterKey - Property key for filter object.
87
- * @typeparam Sorts - The type of the sorting options for the data list.
88
- * @typeparam Filters - The type of the filters for the data list.
89
- * @typeparam FilterKey - The type representing property key where filters will be put to.
90
- * @returns {GetAllParamsUrlQueryWithFiltersInKeyType<FilterKey, Filters>} - Get all request param object with values as URL query string representation.
91
- */
92
- export function toGetAllParamsAsUrlQueryWithFiltersInProperty(params, filterKey = 'filters') {
93
- const res = toGetAllParamsAsUrlQueryCommon(params);
94
- if (params.filters && Object.keys(params.filters).length > 0) {
95
- res[filterKey] = {};
96
- Object.keys(params.filters).forEach(key => {
97
- res[filterKey][key] = dataListParamsFiltersToUrlQuery(params, key);
98
- });
99
- }
100
- return res;
101
- }
102
- /**
103
- * Converts given parameters of a DataListParams object into a get all request param object with values as objects for POST requests.
104
- *
105
- * @param {DataListParams} params - The parameters to convert.
106
- * @typeparam Sorts - The type of the sorting options for the data list.
107
- * @typeparam Filters - The type of the filters for the data list.
108
- * @returns {GetAllParamsType<Sorts, Filters>} - Get all request param object with values as objects for POST requests.
109
- */
110
- export function toGetAllParams(params) {
111
- const res = {};
112
- if (params.offset != null) {
113
- res.offset = params.offset;
114
- }
115
- if (params.limit != null) {
116
- res.limit = params.limit;
117
- }
118
- if (params.search != null) {
119
- res.globalFilter = {
120
- value: params.search
121
- };
122
- }
123
- if (Array.isArray(params.sort) && params.sort.length > 0) {
124
- res.sort = params.sort.map(s => ({
125
- property: s.property,
126
- direction: s.ascending === true || s.ascending == null ? 'ASCENDING' : 'DESCENDING'
127
- }));
128
- }
129
- if (params.filters) {
130
- Object.keys(params.filters).forEach(key => {
131
- const paramsFilter = params.filters[key];
132
- if (!paramsFilter.matchMode) {
133
- return;
134
- }
135
- let value = Array.isArray(paramsFilter.value) ? undefined : paramsFilter.value;
136
- let values = Array.isArray(paramsFilter.value) ? paramsFilter.value : undefined;
137
- if (paramsFilter.matchMode === FilterMatchMode.Exists || paramsFilter.matchMode === FilterMatchMode.DoesNotExist) {
138
- value = undefined;
139
- values = undefined;
140
- }
141
- else if (paramsFilter.matchMode === FilterMatchMode.In || paramsFilter.matchMode === FilterMatchMode.NotIn) {
142
- if (values == null || values.length === 0) {
143
- throw new CommonsInternalError(`Filter with mode ${paramsFilter.matchMode} must have values in array, but has ${values}`);
144
- }
145
- }
146
- else if (paramsFilter.matchMode === FilterMatchMode.Between) {
147
- if (values == null || values.length !== 2) {
148
- throw new CommonsInternalError(`Filter with mode ${paramsFilter.matchMode} must have 2 values in array, but has ${values}`);
149
- }
150
- }
151
- else if (paramsFilter.value == null) {
152
- return;
153
- }
154
- const caseSensitivity = paramsFilter.caseSensitive ? 'CASE_SENSITIVE' : paramsFilter.caseSensitive === false ? 'CASE_INSENSITIVE' : undefined;
155
- const filter = {
156
- filterMatchType: toGetAllParamsFilterMatchMode(paramsFilter.matchMode)
157
- };
158
- if (value != null) {
159
- filter.value = value;
160
- }
161
- if (values != null && Array.isArray(values) && values.length > 0) {
162
- filter.values = values;
163
- }
164
- if (caseSensitivity != null) {
165
- filter.caseSensitivity = caseSensitivity;
166
- }
167
- res[key] = filter;
168
- });
169
- }
170
- return res;
171
- }
172
- /**
173
- * Converts DataListParams to sort query URL representation.
174
- *
175
- * @param {DataListParams} params - The params object with sort property to convert.
176
- * @returns {string | undefined} - The formatted sort query URL param or undefined.
177
- */
178
- export function toGetAllSortAsQueryUrl(params) {
179
- return dataListParamsSortToUrlQuery(params);
180
- }
181
- /**
182
- * Converts a DataListFilter object to a query URL string.
183
- *
184
- * @param {DataListFilter} filter - The filter object from params to convert.
185
- * @returns {string|undefined} - The formatted filter query URL param or undefined.
186
- */
187
- export function toGetAllFilterAsQueryUrl(filter) {
188
- return dataListParamsFilterToUrlQuery(filter);
189
- }
190
- /**
191
- * Executes the "getAll" on API service with request parameters.
192
- * Get all is expected to be executed via GET method using params as URL queries.
193
- *
194
- * @param {Service} service - The API service instance.
195
- * @param {Function} getAllFn - The "getAll" function on provided service instance.
196
- * @param {Object} params - The data list params.
197
- * @returns {Observable<<DataListResult<Item>>>} An observable with data list result.
198
- */
199
- export function executeGetAll(service, getAllFn, params) {
200
- return getAllFn.bind(service)(toGetAllParamsAsUrlQuery(params)).pipe(mapToDataList());
201
- }
202
- /**
203
- * Executes the "getAll" on API service with request parameters.
204
- * Get all is expected to be executed via GET method using params as URL queries.
205
- *
206
- * @param {Service} service - The API service instance.
207
- * @param {Function} getAllFn - The "getAll" function on provided service.
208
- * @param {Object} params - The data list params.
209
- * @returns {Observable<<DataListResult<Item>>>} An observable with data list result.
210
- */
211
- export function apiServiceGetAll(service, fn, params) {
212
- return service[fn](toGetAllParamsAsUrlQuery(params)).pipe(mapToDataList());
213
- }
214
- /**
215
- * Executes the "getAll" on API service with request parameters.
216
- * Get all is expected to be executed via POST method using params as object in body of request.
217
- *
218
- * @param {Service} service - The API service instance.
219
- * @param {Function} getAllFn - The "getAll" function on provided service instance.
220
- * @param {Object} params - The data list params.
221
- * @returns {Observable<<DataListResult<Item>>>} An observable with data list result.
222
- */
223
- export function executeGetAllAsPost(service, getAllFn, params) {
224
- return getAllFn.bind(service)(toGetAllParams(params)).pipe(mapToDataList());
225
- }
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFsbC1wYXJhbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2hlbHBlcnMvZ2V0LWFsbC1wYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUVILG9CQUFvQixFQUlwQixlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsYUFBYSxFQUNoQixNQUFNLDZCQUE2QixDQUFDO0FBVXJDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSw2QkFBNkIsQ0FBQyxTQUFpQjtJQUMzRCxRQUFRLFNBQVMsRUFBRSxDQUFDO1FBQ2hCLEtBQUssZUFBZSxDQUFDLE1BQU07WUFDdkIsT0FBTyxRQUFRLENBQUM7UUFDcEIsS0FBSyxlQUFlLENBQUMsU0FBUztZQUMxQixPQUFPLFlBQVksQ0FBQztRQUN4QixLQUFLLGVBQWUsQ0FBQyxRQUFRO1lBQ3pCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLEtBQUssZUFBZSxDQUFDLFdBQVc7WUFDNUIsT0FBTyxjQUFjLENBQUM7UUFDMUIsS0FBSyxlQUFlLENBQUMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQztRQUNoQixLQUFLLGVBQWUsQ0FBQyxLQUFLO1lBQ3RCLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLEtBQUssZUFBZSxDQUFDLFVBQVU7WUFDM0IsT0FBTyxhQUFhLENBQUM7UUFDekIsS0FBSyxlQUFlLENBQUMsUUFBUTtZQUN6QixPQUFPLFdBQVcsQ0FBQztRQUN2QixLQUFLLGVBQWUsQ0FBQyxRQUFRO1lBQ3pCLE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLEtBQUssZUFBZSxDQUFDLGlCQUFpQjtZQUNsQyxPQUFPLHVCQUF1QixDQUFDO1FBQ25DLEtBQUssZUFBZSxDQUFDLFdBQVc7WUFDNUIsT0FBTyxjQUFjLENBQUM7UUFDMUIsS0FBSyxlQUFlLENBQUMsb0JBQW9CO1lBQ3JDLE9BQU8sMEJBQTBCLENBQUM7UUFDdEMsS0FB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QVUsd0JBQXdCLENBQUMsTUFBdUI7SUFDNUQsT0FBTyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUN6QixPQUFnQixFQUNoQixRQUFvSCxFQUNwSCxNQUFzQztJQUV0QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFRLENBQUMsQ0FBQztBQUNoRyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzVCLE9BQWdCLEVBQ2hCLEVBQXlJLEVBQ3pJLE1BQXNDO0lBRXRDLE9BQVEsT0FBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBUSxDQUFDLENBQUM7QUFDOUYsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUMvQixPQUFnQixFQUNoQixRQUFtSCxFQUNuSCxNQUFzQztJQUV0QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBUSxDQUFDLENBQUM7QUFDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlLFxuICAgIENvbW1vbnNJbnRlcm5hbEVycm9yLFxuICAgIERhdGFMaXN0RmlsdGVyLFxuICAgIERhdGFMaXN0UGFyYW1zLFxuICAgIERhdGFMaXN0UmVzdWx0LFxuICAgIEZpbHRlck1hdGNoTW9kZSxcbiAgICBkYXRhTGlzdFBhcmFtc0ZpbHRlclRvVXJsUXVlcnksXG4gICAgZGF0YUxpc3RQYXJhbXNGaWx0ZXJzVG9VcmxRdWVyeSxcbiAgICBkYXRhTGlzdFBhcmFtc1NvcnRUb1VybFF1ZXJ5LFxuICAgIG1hcFRvRGF0YUxpc3Rcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBHZXRBbGxQYXJhbXNGaWx0ZXJNYXRjaFR5cGUsXG4gICAgR2V0QWxsUGFyYW1zRmlsdGVyVHlwZSxcbiAgICBHZXRBbGxQYXJhbXNUeXBlLFxuICAgIEdldEFsbFBhcmFtc1VybFF1ZXJ5VHlwZSxcbiAgICBHZXRBbGxQYXJhbXNVcmxRdWVyeVdpdGhGaWx0ZXJzSW5LZXlUeXBlXG59IGZyb20gJy4uL21vZGVscy9yZXF1ZXN0LXBhcmFtcy5tb2RlbCc7XG5cbi8qKlxuICogQ29udmVydHMgYSBmaWx0ZXIgbWF0Y2ggbW9kZSB0byBpdHMgY29ycmVzcG9uZGluZyBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaE1vZGUgLSBUaGUgZmlsdGVyIG1hdGNoIG1vZGUgZnJvbSBkYXRhIGxpc3QgZmlsdGVyIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7R2V0QWxsUGFyYW1zRmlsdGVyTWF0Y2hUeXBlfSAtIFRoZSBjb252ZXJ0ZWQgZW51bSB2YWx1ZS5cbiAqIEB0aHJvd3Mge0NvbW1vbnNJbnRlcm5hbEVycm9yfSAtIElmIHRoZSBmaWx0ZXIgbWF0Y2ggbW9kZSBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9HZXRBbGxQYXJhbXNGaWx0ZXJNYXRjaE1vZGUobWF0Y2hNb2RlOiBzdHJpbmcpOiBHZXRBbGxQYXJhbXNGaWx0ZXJNYXRjaFR5cGUge1xuICAgIHN3aXRjaCAobWF0Y2hNb2RlKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkVxdWFsczpcbiAgICAgICAgICAgIHJldHVybiAnRVFVQUxTJztcbiAgICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzOlxuICAgICAgICAgICAgcmV0dXJuICdOT1RfRVFVQUxTJztcbiAgICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuQ29udGFpbnM6XG4gICAgICAgICAgICByZXR1cm4gJ0NPTlRBSU5TJztcbiAgICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuTm90Q29udGFpbnM6XG4gICAgICAgICAgICByZXR1cm4gJ05PVF9DT05UQUlOUyc7XG4gICAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkluOlxuICAgICAgICAgICAgcmV0dXJuICdJTic7XG4gICAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLk5vdEluOlxuICAgICAgICAgICAgcmV0dXJuICdOT1RfSU4nO1xuICAgICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5TdGFydHNXaXRoOlxuICAgICAgICAgICAgcmV0dXJuICdTVEFSVFNfV0lUSCc7XG4gICAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkVuZHNXaXRoOlxuICAgICAgICAgICAgcmV0dXJuICdFTkRTX1dJVEgnO1xuICAgICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5MZXNzVGhhbjpcbiAgICAgICAgICAgIHJldHVybiAnTEVTU19USEFOJztcbiAgICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG86XG4gICAgICAgICAgICByZXR1cm4gJ0xFU1NfVEhBTl9PUl9FUVVBTF9UTyc7XG4gICAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkdyZWF0ZXJUaGFuOlxuICAgICAgICAgICAgcmV0dXJuICdHUkVBVEVSX1RIQU4nO1xuICAgICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbzpcbiAgICAgICAgICAgIHJldHVybiAnR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPJztcbiAgICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbjpcbiAgICAgICAgICAgIHJldHVybiAnQkVUV0VFTic7XG4gICAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkV4aXN0czpcbiAgICAgICAgICAgIHJldHVybiAnRVhJU1RTJztcbiAgICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0OlxuICAgICAgICAgICAgcmV0dXJuICdET0VTX05PVF9FWElTVCc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciBtYXRjaCB0eXBlICcke21hdGNoTW9kZX0nIG5vdCBzdXBwb3J0ZWQuYCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0b0dldEFsbFBhcmFtc0FzVXJsUXVlcnlDb21tb248U29ydHMsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+KHBhcmFtczogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+KTogR2V0QWxsUGFyYW1zVXJsUXVlcnlUeXBlPEZpbHRlcnM+IHtcbiAgICBjb25zdCByZXMgPSB7fSBhcyBHZXRBbGxQYXJhbXNVcmxRdWVyeVR5cGU8RmlsdGVycz47XG5cbiAgICBpZiAocGFyYW1zLm9mZnNldCAhPSBudWxsKSB7XG4gICAgICAgIHJlcy5vZmZzZXQgPSBwYXJhbXMub2Zmc2V0O1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxpbWl0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzLmxpbWl0ID0gcGFyYW1zLmxpbWl0O1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuc2VhcmNoICE9IG51bGwgJiYgcGFyYW1zLnNlYXJjaCAhPT0gJycpIHtcbiAgICAgICAgbGV0IGNhc2VTZW5zaXRpdml0eU9wdGlvbiA9ICdjaSc7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5maWx0ZXJzPy5bJ2dsb2JhbCcgYXMgRmlsdGVyc10/LmNhc2VTZW5zaXRpdmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNhc2VTZW5zaXRpdml0eU9wdGlvbiA9ICdjcyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXMuZ2xvYmFsRmlsdGVyID0gYCR7Y2FzZVNlbnNpdGl2aXR5T3B0aW9ufToke3BhcmFtcy5zZWFyY2h9YDtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMuc29ydCkgJiYgcGFyYW1zLnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgICByZXMuc29ydCA9IGRhdGFMaXN0UGFyYW1zU29ydFRvVXJsUXVlcnkocGFyYW1zIGFzIERhdGFMaXN0UGFyYW1zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGdpdmVuIHBhcmFtZXRlcnMgb2YgYSBEYXRhTGlzdFBhcmFtcyBvYmplY3QgaW50byBhIGdldCBhbGwgcmVxdWVzdCBwYXJhbSBvYmplY3Qgd2l0aCB2YWx1ZXMgYXMgVVJMIHF1ZXJ5IHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBjb252ZXJ0LlxuICogQHR5cGVwYXJhbSBTb3J0cyAtIFRoZSB0eXBlIG9mIHRoZSBzb3J0aW5nIG9wdGlvbnMgZm9yIHRoZSBkYXRhIGxpc3QuXG4gKiBAdHlwZXBhcmFtIEZpbHRlcnMgLSBUaGUgdHlwZSBvZiB0aGUgZmlsdGVycyBmb3IgdGhlIGRhdGEgbGlzdC5cbiAqIEByZXR1cm5zIHtHZXRBbGxQYXJhbXNVcmxRdWVyeVR5cGU8RmlsdGVycz59IC0gR2V0IGFsbCByZXF1ZXN0IHBhcmFtIG9iamVjdCB3aXRoIHZhbHVlcyBhcyBVUkwgcXVlcnkgc3RyaW5nIHJlcHJlc2VudGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9HZXRBbGxQYXJhbXNBc1VybFF1ZXJ5PFNvcnRzLCBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55PihwYXJhbXM6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPik6IEdldEFsbFBhcmFtc1VybFF1ZXJ5VHlwZTxGaWx0ZXJzPiB7XG4gICAgY29uc3QgcmVzID0gdG9HZXRBbGxQYXJhbXNBc1VybFF1ZXJ5Q29tbW9uKHBhcmFtcyk7XG5cbiAgICBpZiAocGFyYW1zLmZpbHRlcnMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zLmZpbHRlcnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHJlc1trZXkgYXMgRmlsdGVyc10gPSBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5KHBhcmFtcywga2V5IGFzIEZpbHRlcnMpIGFzIGFueTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBnaXZlbiBwYXJhbWV0ZXJzIG9mIGEgRGF0YUxpc3RQYXJhbXMgb2JqZWN0IGludG8gYSBnZXQgYWxsIHJlcXVlc3QgcGFyYW0gb2JqZWN0IHdpdGggdmFsdWVzIGFzIFVSTCBxdWVyeSBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gY29udmVydC5cbiAqIEBwYXJhbSB7RmlsdGVyS2V5fSBmaWx0ZXJLZXkgLSBQcm9wZXJ0eSBrZXkgZm9yIGZpbHRlciBvYmplY3QuXG4gKiBAdHlwZXBhcmFtIFNvcnRzIC0gVGhlIHR5cGUgb2YgdGhlIHNvcnRpbmcgb3B0aW9ucyBmb3IgdGhlIGRhdGEgbGlzdC5cbiAqIEB0eXBlcGFyYW0gRmlsdGVycyAtIFRoZSB0eXBlIG9mIHRoZSBmaWx0ZXJzIGZvciB0aGUgZGF0YSBsaXN0LlxuICogQHR5cGVwYXJhbSBGaWx0ZXJLZXkgLSBUaGUgdHlwZSByZXByZXNlbnRpbmcgcHJvcGVydHkga2V5IHdoZXJlIGZpbHRlcnMgd2lsbCBiZSBwdXQgdG8uXG4gKiBAcmV0dXJucyB7R2V0QWxsUGFyYW1zVXJsUXVlcnlXaXRoRmlsdGVyc0luS2V5VHlwZTxGaWx0ZXJLZXksIEZpbHRlcnM+fSAtIEdldCBhbGwgcmVxdWVzdCBwYXJhbSBvYmplY3Qgd2l0aCB2YWx1ZXMgYXMgVVJMIHF1ZXJ5IHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvR2V0QWxsUGFyYW1zQXNVcmxRdWVyeVdpdGhGaWx0ZXJzSW5Qcm9wZXJ0eTxTb3J0cywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSwgRmlsdGVyS2V5IGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sID0gJ2ZpbHRlcnMnPihcbiAgICBwYXJhbXM6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPixcbiAgICBmaWx0ZXJLZXk6IEZpbHRlcktleSA9ICdmaWx0ZXJzJyBhcyBGaWx0ZXJLZXlcbik6IEdldEFsbFBhcmFtc1VybFF1ZXJ5V2l0aEZpbHRlcnNJbktleVR5cGU8RmlsdGVyS2V5LCBGaWx0ZXJzPiB7XG4gICAgY29uc3QgcmVzID0gdG9HZXRBbGxQYXJhbXNBc1VybFF1ZXJ5Q29tbW9uKHBhcmFtcykgYXMgR2V0QWxsUGFyYW1zVXJsUXVlcnlXaXRoRmlsdGVyc0luS2V5VHlwZTxGaWx0ZXJLZXksIEZpbHRlcnM+O1xuXG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzICYmIE9iamVjdC5rZXlzKHBhcmFtcy5maWx0ZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIChyZXMgYXMgYW55KVtmaWx0ZXJLZXldID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcy5maWx0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAocmVzIGFzIGFueSlbZmlsdGVyS2V5XVtrZXkgYXMgRmlsdGVyc10gPSBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5KHBhcmFtcywga2V5IGFzIEZpbHRlcnMpIGFzIGFueTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBnaXZlbiBwYXJhbWV0ZXJzIG9mIGEgRGF0YUxpc3RQYXJhbXMgb2JqZWN0IGludG8gYSBnZXQgYWxsIHJlcXVlc3QgcGFyYW0gb2JqZWN0IHdpdGggdmFsdWVzIGFzIG9iamVjdHMgZm9yIFBPU1QgcmVxdWVzdHMuXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc30gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gY29udmVydC5cbiAqIEB0eXBlcGFyYW0gU29ydHMgLSBUaGUgdHlwZSBvZiB0aGUgc29ydGluZyBvcHRpb25zIGZvciB0aGUgZGF0YSBsaXN0LlxuICogQHR5cGVwYXJhbSBGaWx0ZXJzIC0gVGhlIHR5cGUgb2YgdGhlIGZpbHRlcnMgZm9yIHRoZSBkYXRhIGxpc3QuXG4gKiBAcmV0dXJucyB7R2V0QWxsUGFyYW1zVHlwZTxTb3J0cywgRmlsdGVycz59IC0gR2V0IGFsbCByZXF1ZXN0IHBhcmFtIG9iamVjdCB3aXRoIHZhbHVlcyBhcyBvYmplY3RzIGZvciBQT1NUIHJlcXVlc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9HZXRBbGxQYXJhbXM8U29ydHMsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+KHBhcmFtczogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+KTogR2V0QWxsUGFyYW1zVHlwZTxTb3J0cywgRmlsdGVycz4ge1xuICAgIGNvbnN0IHJlcyA9IHt9IGFzIEdldEFsbFBhcmFtc1R5cGU8U29ydHMsIEZpbHRlcnM+O1xuXG4gICAgaWYgKHBhcmFtcy5vZmZzZXQgIT0gbnVsbCkge1xuICAgICAgICByZXMub2Zmc2V0ID0gcGFyYW1zLm9mZnNldDtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5saW1pdCAhPSBudWxsKSB7XG4gICAgICAgIHJlcy5saW1pdCA9IHBhcmFtcy5saW1pdDtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnNlYXJjaCAhPSBudWxsKSB7XG4gICAgICAgIHJlcy5nbG9iYWxGaWx0ZXIgPSB7XG4gICAgICAgICAgICB2YWx1ZTogcGFyYW1zLnNlYXJjaFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtcy5zb3J0KSAmJiBwYXJhbXMuc29ydC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlcy5zb3J0ID0gcGFyYW1zLnNvcnQubWFwKHMgPT4gKHtcbiAgICAgICAgICAgIHByb3BlcnR5OiBzLnByb3BlcnR5LFxuICAgICAgICAgICAgZGlyZWN0aW9uOiBzLmFzY2VuZGluZyA9PT0gdHJ1ZSB8fCBzLmFzY2VuZGluZyA9PSBudWxsID8gJ0FTQ0VORElORycgOiAnREVTQ0VORElORydcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuZmlsdGVycykge1xuICAgICAgICBPYmplY3Qua2V5cyhwYXJhbXMuZmlsdGVycykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zRmlsdGVyID0gcGFyYW1zLmZpbHRlcnMhW2tleSBhcyBGaWx0ZXJzXSE7XG4gICAgICAgICAgICBpZiAoIXBhcmFtc0ZpbHRlci5tYXRjaE1vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IEFycmF5LmlzQXJyYXkocGFyYW1zRmlsdGVyLnZhbHVlKSA/IHVuZGVmaW5lZCA6IHBhcmFtc0ZpbHRlci52YWx1ZTtcbiAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHBhcmFtc0ZpbHRlci52YWx1ZSkgPyBwYXJhbXNGaWx0ZXIudmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmIChwYXJhbXNGaWx0ZXIubWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzIHx8IHBhcmFtc0ZpbHRlci5tYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5Eb2VzTm90RXhpc3QpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB2YWx1ZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtc0ZpbHRlci5tYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5JbiB8fCBwYXJhbXNGaWx0ZXIubWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuTm90SW4pIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVzID09IG51bGwgfHwgdmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciB3aXRoIG1vZGUgJHtwYXJhbXNGaWx0ZXIubWF0Y2hNb2RlfSBtdXN0IGhhdmUgdmFsdWVzIGluIGFycmF5LCBidXQgaGFzICR7dmFsdWVzfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1zRmlsdGVyLm1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVzID09IG51bGwgfHwgdmFsdWVzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciB3aXRoIG1vZGUgJHtwYXJhbXNGaWx0ZXIubWF0Y2hNb2RlfSBtdXN0IGhhdmUgMiB2YWx1ZXMgaW4gYXJyYXksIGJ1dCBoYXMgJHt2YWx1ZXN9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXNGaWx0ZXIudmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2FzZVNlbnNpdGl2aXR5ID0gcGFyYW1zRmlsdGVyLmNhc2VTZW5zaXRpdmUgPyAnQ0FTRV9TRU5TSVRJVkUnIDogcGFyYW1zRmlsdGVyLmNhc2VTZW5zaXRpdmUgPT09IGZhbHNlID8gJ0NBU0VfSU5TRU5TSVRJVkUnIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gPEdldEFsbFBhcmFtc0ZpbHRlclR5cGU8YW55Pj57XG4gICAgICAgICAgICAgICAgZmlsdGVyTWF0Y2hUeXBlOiB0b0dldEFsbFBhcmFtc0ZpbHRlck1hdGNoTW9kZShwYXJhbXNGaWx0ZXIubWF0Y2hNb2RlKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWx1ZXMgIT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHZhbHVlcykgJiYgdmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhc2VTZW5zaXRpdml0eSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNhc2VTZW5zaXRpdml0eSA9IGNhc2VTZW5zaXRpdml0eTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgKHJlcyBhcyBhbnkpW2tleSBhcyBGaWx0ZXJzXSA9IGZpbHRlcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBEYXRhTGlzdFBhcmFtcyB0byBzb3J0IHF1ZXJ5IFVSTCByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1zIG9iamVjdCB3aXRoIHNvcnQgcHJvcGVydHkgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIGZvcm1hdHRlZCBzb3J0IHF1ZXJ5IFVSTCBwYXJhbSBvciB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0dldEFsbFNvcnRBc1F1ZXJ5VXJsKHBhcmFtcz86IERhdGFMaXN0UGFyYW1zPGFueSwgYW55Pik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGRhdGFMaXN0UGFyYW1zU29ydFRvVXJsUXVlcnkocGFyYW1zKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIERhdGFMaXN0RmlsdGVyIG9iamVjdCB0byBhIHF1ZXJ5IFVSTCBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdEZpbHRlcn0gZmlsdGVyIC0gVGhlIGZpbHRlciBvYmplY3QgZnJvbSBwYXJhbXMgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSAtIFRoZSBmb3JtYXR0ZWQgZmlsdGVyIHF1ZXJ5IFVSTCBwYXJhbSBvciB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0dldEFsbEZpbHRlckFzUXVlcnlVcmwoZmlsdGVyPzogRGF0YUxpc3RGaWx0ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBkYXRhTGlzdFBhcmFtc0ZpbHRlclRvVXJsUXVlcnkoZmlsdGVyKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyB0aGUgXCJnZXRBbGxcIiBvbiBBUEkgc2VydmljZSB3aXRoIHJlcXVlc3QgcGFyYW1ldGVycy5cbiAqIEdldCBhbGwgaXMgZXhwZWN0ZWQgdG8gYmUgZXhlY3V0ZWQgdmlhIEdFVCBtZXRob2QgdXNpbmcgcGFyYW1zIGFzIFVSTCBxdWVyaWVzLlxuICpcbiAqIEBwYXJhbSB7U2VydmljZX0gc2VydmljZSAtIFRoZSBBUEkgc2VydmljZSBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdldEFsbEZuIC0gVGhlIFwiZ2V0QWxsXCIgZnVuY3Rpb24gb24gcHJvdmlkZWQgc2VydmljZSBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBUaGUgZGF0YSBsaXN0IHBhcmFtcy5cbiAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPDxEYXRhTGlzdFJlc3VsdDxJdGVtPj4+fSBBbiBvYnNlcnZhYmxlIHdpdGggZGF0YSBsaXN0IHJlc3VsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVHZXRBbGw8U2VydmljZSwgSXRlbSwgU29ydHMsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+KFxuICAgIHNlcnZpY2U6IFNlcnZpY2UsXG4gICAgZ2V0QWxsRm46IChyZXF1ZXN0UGFyYW1ldGVyczogR2V0QWxsUGFyYW1zVXJsUXVlcnlUeXBlPEZpbHRlcnM+KSA9PiBPYnNlcnZhYmxlPHtkYXRhPzogSXRlbVtdOyB0b3RhbENvdW50PzogbnVtYmVyfT4sXG4gICAgcGFyYW1zOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz5cbik6IE9ic2VydmFibGU8RGF0YUxpc3RSZXN1bHQ8SXRlbT4+IHtcbiAgICByZXR1cm4gZ2V0QWxsRm4uYmluZChzZXJ2aWNlKSh0b0dldEFsbFBhcmFtc0FzVXJsUXVlcnkocGFyYW1zKSkucGlwZShtYXBUb0RhdGFMaXN0PEl0ZW0+KCkpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIHRoZSBcImdldEFsbFwiIG9uIEFQSSBzZXJ2aWNlIHdpdGggcmVxdWVzdCBwYXJhbWV0ZXJzLlxuICogR2V0IGFsbCBpcyBleHBlY3RlZCB0byBiZSBleGVjdXRlZCB2aWEgR0VUIG1ldGhvZCB1c2luZyBwYXJhbXMgYXMgVVJMIHF1ZXJpZXMuXG4gKlxuICogQHBhcmFtIHtTZXJ2aWNlfSBzZXJ2aWNlIC0gVGhlIEFQSSBzZXJ2aWNlIGluc3RhbmNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZ2V0QWxsRm4gLSBUaGUgXCJnZXRBbGxcIiBmdW5jdGlvbiBvbiBwcm92aWRlZCBzZXJ2aWNlLlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFRoZSBkYXRhIGxpc3QgcGFyYW1zLlxuICogQHJldHVybnMge09ic2VydmFibGU8PERhdGFMaXN0UmVzdWx0PEl0ZW0+Pj59IEFuIG9ic2VydmFibGUgd2l0aCBkYXRhIGxpc3QgcmVzdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBpU2VydmljZUdldEFsbDxTZXJ2aWNlLCBJdGVtLCBTb3J0cywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueT4oXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBmbjogQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIEdldEFsbFBhcmFtc1VybFF1ZXJ5VHlwZTxGaWx0ZXJzPiwgT2JzZXJ2YWJsZTx7ZGF0YT86IEl0ZW1bXTsgdG90YWxDb3VudD86IG51bWJlcn0+PixcbiAgICBwYXJhbXM6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPlxuKTogT2JzZXJ2YWJsZTxEYXRhTGlzdFJlc3VsdDxJdGVtPj4ge1xuICAgIHJldHVybiAoc2VydmljZSBhcyBhbnkpW2ZuXSh0b0dldEFsbFBhcmFtc0FzVXJsUXVlcnkocGFyYW1zKSkucGlwZShtYXBUb0RhdGFMaXN0PEl0ZW0+KCkpO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIHRoZSBcImdldEFsbFwiIG9uIEFQSSBzZXJ2aWNlIHdpdGggcmVxdWVzdCBwYXJhbWV0ZXJzLlxuICogR2V0IGFsbCBpcyBleHBlY3RlZCB0byBiZSBleGVjdXRlZCB2aWEgUE9TVCBtZXRob2QgdXNpbmcgcGFyYW1zIGFzIG9iamVjdCBpbiBib2R5IG9mIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHtTZXJ2aWNlfSBzZXJ2aWNlIC0gVGhlIEFQSSBzZXJ2aWNlIGluc3RhbmNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZ2V0QWxsRm4gLSBUaGUgXCJnZXRBbGxcIiBmdW5jdGlvbiBvbiBwcm92aWRlZCBzZXJ2aWNlIGluc3RhbmNlLlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIFRoZSBkYXRhIGxpc3QgcGFyYW1zLlxuICogQHJldHVybnMge09ic2VydmFibGU8PERhdGFMaXN0UmVzdWx0PEl0ZW0+Pj59IEFuIG9ic2VydmFibGUgd2l0aCBkYXRhIGxpc3QgcmVzdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZUdldEFsbEFzUG9zdDxTZXJ2aWNlLCBJdGVtLCBTb3J0cywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueT4oXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBnZXRBbGxGbjogKHJlcXVlc3RQYXJhbWV0ZXJzOiBHZXRBbGxQYXJhbXNUeXBlPFNvcnRzLCBGaWx0ZXJzPikgPT4gT2JzZXJ2YWJsZTx7ZGF0YT86IEl0ZW1bXTsgdG90YWxDb3VudD86IG51bWJlcn0+LFxuICAgIHBhcmFtczogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+XG4pOiBPYnNlcnZhYmxlPERhdGFMaXN0UmVzdWx0PEl0ZW0+PiB7XG4gICAgcmV0dXJuIGdldEFsbEZuLmJpbmQoc2VydmljZSkodG9HZXRBbGxQYXJhbXMocGFyYW1zKSkucGlwZShtYXBUb0RhdGFMaXN0PEl0ZW0+KCkpO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXZlcnNpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVscy9hcGktdmVyc2lvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBcGlWZXJzaW9uIHtcbiAgICBhcHBOYW1lPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gICAgaW5mb0VtYWlsPzogc3RyaW5nO1xuICAgIGluZm9Vcmw/OiBzdHJpbmc7XG4gICAgbGljZW5zZUluZm8/OiBzdHJpbmc7XG4gICAgbGljZW5zZVVybD86IHN0cmluZztcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1wYXJhbXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVscy9yZXF1ZXN0LXBhcmFtcy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZWZhdWx0IChleHBlY3RlZCkgdHlwZSB3aXRob3V0IGZpbHRlcnMsIHdoaWNoIGFyZSBcImR5bmFtaWNcIiBrZXlzLlxuICovXG5leHBvcnQgdHlwZSBHZXRBbGxQYXJhbXNEZWZhdWx0V29GaWx0ZXJzVHlwZTxTb3J0ID0gR2V0QWxsUGFyYW1zU29ydFR5cGVbXSB8IHN0cmluZywgR2xvYmFsRmlsdGVyID0gR2V0QWxsUGFyYW1zR2xvYmFsRmlsdGVyVHlwZSB8IHN0cmluZz4gPSB7XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIGdsb2JhbEZpbHRlcj86IEdsb2JhbEZpbHRlcjtcbiAgICBzb3J0PzogU29ydDtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc29ydCBkaXJlY3Rpb24gdHlwZSBmb3IgYSBnZXQgYWxsIHJlcXVlc3QgcGFyYW1zIChhc2NlbmRpbmcgb3IgZGVzY2VuZGluZykuXG4gKi9cbmV4cG9ydCB0eXBlIEdldEFsbFBhcmFtc1NvcnREaXJlY3Rpb25UeXBlID0gJ0FTQ0VORElORycgfCAnREVTQ0VORElORyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc29ydCB0eXBlIGZvciBhIGdldCBhbGwgcmVxdWVzdCBwYXJhbXMuXG4gKlxuICogQHR5cGVwYXJhbSBQcm9wZXJ0eSBUaGUgdHlwZSBvZiB0aGUgcHJvcGVydHkgdG8gc29ydCBieS5cbiAqIEB0eXBlcGFyYW0gRGlyZWN0aW9uIFRoZSB0eXBlIG9mIHRoZSBzb3J0IGRpcmVjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0QWxsUGFyYW1zU29ydFR5cGU8UHJvcGVydHkgPSBzdHJpbmcsIERpcmVjdGlvbiA9IEdldEFsbFBhcmFtc1NvcnREaXJlY3Rpb25UeXBlPiA9IHtcbiAgICBwcm9wZXJ0eTogUHJvcGVydHk7XG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHBvc3NpYmxlIG1hdGNoIHR5cGVzIGZvciBmaWx0ZXJzIGluIGdldCBhbGwgcmVxdWVzdCBwYXJhbXMuXG4gKi9cbmV4cG9ydCB0eXBlIEdldEFsbFBhcmFtc0ZpbHRlck1hdGNoVHlwZSA9XG4gICAgfCAnRVFVQUxTJ1xuICAgIHwgJ05PVF9FUVVBTFMnXG4gICAgfCAnQkVUV0VFTidcbiAgICB8ICdDT05UQUlOUydcbiAgICB8ICdOT1RfQ09OVEFJTlMnXG4gICAgfCAnU1RBUlRTX1dJVEgnXG4gICAgfCAnRU5EU19XSVRIJ1xuICAgIHwgJ0lOJ1xuICAgIHwgJ05PVF9JTidcbiAgICB8ICdMRVNTX1RIQU4nXG4gICAgfCAnTEVTU19USEFOX09SX0VRVUFMX1RPJ1xuICAgIHwgJ0dSRUFURVJfVEhBTidcbiAgICB8ICdHUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE8nXG4gICAgfCAnRVhJU1RTJ1xuICAgIHwgJ0RPRVNfTk9UX0VYSVNUJztcblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIHBvc3NpYmxlIGNhc2Ugc2Vuc2l0aXZpdHkgZm9yIGZpbHRlciBpbiBnZXQgYWxsIHJlcXVlc3QgcGFyYW1zLlxuICovXG5leHBvcnQgdHlwZSBHZXRBbGxQYXJhbXNGaWx0ZXJDYXNlU2Vuc2l0aXZpdHlUeXBlID0gJ0NBU0VfU0VOU0lUSVZFJyB8ICdDQVNFX0lOU0VOU0lUSVZFJztcblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGdsb2JhbCBmaWx0ZXIgKHNlYXJjaCkgaW4gZ2V0IGFsbCByZXF1ZXN0IHBhcmFtcy5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0QWxsUGFyYW1zR2xvYmFsRmlsdGVyVHlwZTxDYXNlU2Vuc2l0aXZpdHkgPSBHZXRBbGxQYXJhbXNGaWx0ZXJDYXNlU2Vuc2l0aXZpdHlUeXBlPiA9IHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGNhc2VTZW5zaXRpdml0eT86IENhc2VTZW5zaXRpdml0eTtcbn07XG5cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBmaWx0ZXJzIGluIGdldCBhbGwgcmVxdWVzdCBwYXJhbXMuXG4gKi9cbmV4cG9ydCB0eXBlIEdldEFsbFBhcmFtc0ZpbHRlcnNUeXBlPEZpbHRlclR5cGUsIEZpbHRlclByb3BlcnRpZXMgZXh0ZW5kcyBrZXlvZiBhbnk+ID0ge1xuICAgIFtQIGluIEZpbHRlclByb3BlcnRpZXNdPzogRmlsdGVyVHlwZTtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZpbHRlciB0eXBlIGZvciBnZXQgYWxsIHJlcXVlc3QgcGFyYW1zLlxuICovXG5leHBvcnQgdHlwZSBHZXRBbGxQYXJhbXNGaWx0ZXJUeXBlPFZhbHVlLCBDYXNlU2Vuc2l0aXZpdHkgPSBHZXRBbGxQYXJhbXNGaWx0ZXJDYXNlU2Vuc2l0aXZpdHlUeXBlLCBNYXRjaFR5cGUgPSBHZXRBbGxQYXJhbXNGaWx0ZXJNYXRjaFR5cGU+ID0ge1xuICAgIHZhbHVlPzogVmFsdWU7XG4gICAgdmFsdWVzPzogQXJyYXk8VmFsdWU+O1xuICAgIGNhc2VTZW5zaXRpdml0eT86IENhc2VTZW5zaXRpdml0eTtcbiAgICBmaWx0ZXJNYXRjaFR5cGU6IE1hdGNoVHlwZTtcbn07XG5cbi8qKlxuICogRGVzY3JpYmVzIGdldCBhbGwgcGFyYW1zIHdpdGggdmFsdWVzIGFzIG9iamVjdHMgKGZvciBQT1NUIHJlcXVlc3RzKS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0QWxsUGFyYW1zVHlwZTxTb3J0cyA9IHN0cmluZywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IHN0cmluZz4gPSBHZXRBbGxQYXJhbXNEZWZhdWx0V29GaWx0ZXJzVHlwZTxHZXRBbGxQYXJhbXNTb3J0VHlwZTxTb3J0cz5bXSwgR2V0QWxsUGFyYW1zR2xvYmFsRmlsdGVyVHlwZT4gJlxuICAgIEdldEFsbFBhcmFtc0ZpbHRlcnNUeXBlPEdldEFsbFBhcmFtc0ZpbHRlclR5cGU8YW55PiwgRmlsdGVycz47XG5cbi8qKlxuICogRGVzY3JpYmVzIGdldCBhbGwgcGFyYW1zIHdpdGggdmFsdWVzIGFzIFVSTCBxdWVyaWVzIChmb3IgR0VUIHJlcXVlc3RzKS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0QWxsUGFyYW1zVXJsUXVlcnlUeXBlPEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gR2V0QWxsUGFyYW1zRGVmYXVsdFdvRmlsdGVyc1R5cGU8c3RyaW5nLCBzdHJpbmc+ICYgR2V0QWxsUGFyYW1zRmlsdGVyc1R5cGU8c3RyaW5nLCBGaWx0ZXJzPjtcblxuLyoqXG4gKiBEZXNjcmliZXMgZ2V0IGFsbCBwYXJhbXMgd2l0aCB2YWx1ZXMgYXMgVVJMIHF1ZXJpZXMgKGZvciBHRVQgcmVxdWVzdHMpIHdoZXJlIGZpbHRlcnMgYXJlIHBsYWNlcyBhcyBvYmplY3QgdW5kZXIgcm9vdCB7RmlsdGVyS2V5fSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IHR5cGUgR2V0QWxsUGFyYW1zVXJsUXVlcnlXaXRoRmlsdGVyc0luS2V5VHlwZTxGaWx0ZXJLZXkgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gR2V0QWxsUGFyYW1zRGVmYXVsdFdvRmlsdGVyc1R5cGU8c3RyaW5nLCBzdHJpbmc+ICYge1xuICAgIFtrZXkgaW4gRmlsdGVyS2V5XT86IEdldEFsbFBhcmFtc0ZpbHRlcnNUeXBlPHN0cmluZywgRmlsdGVycz47XG59O1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvc2NoZW1hLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNjaGVtYU1vZGVsPE1vZGVsID0gYW55PiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByb3BlcnRpZXM6IFJlY29yZDxrZXlvZiBNb2RlbCwgU2NoZW1hUHJvcGVydHk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYUVudW08RW51bVR5cGU+IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWVzOiBFbnVtVHlwZVtdO1xuICAgIGNvbnN0YW50czogc3RyaW5nW107XG4gICAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYVByb3BlcnR5IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgb2JqZWN0VHlwZT86IHN0cmluZztcbiAgICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgaXNOdWxsYWJsZT86IGJvb2xlYW47XG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcbiAgICBtaW5pbXVtPzogbnVtYmVyO1xuICAgIG1heGltdW0/OiBudW1iZXI7XG4gICAgZXhjbHVzaXZlTWluaW11bT86IGJvb2xlYW47XG4gICAgZXhjbHVzaXZlTWF4aW11bT86IGJvb2xlYW47XG4gICAgaXNJbnRlZ2VyPzogYm9vbGVhbjtcbiAgICBwYXR0ZXJuPzogc3RyaW5nO1xuICAgIG1heEl0ZW1zPzogbnVtYmVyO1xuICAgIG1pbkl0ZW1zPzogbnVtYmVyO1xuICAgIGVudW1Nb2RlbD86IGFueTtcbiAgICBlbnVtTmFtZT86IHN0cmluZztcbiAgICBpc0VtYWlsPzogYm9vbGVhbjtcbiAgICBpc1Bhc3N3b3JkPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1nZXQtYWxsLXR5cGVzLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3R5cGVzL2V4dHJhY3QtZ2V0LWFsbC10eXBlcy50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0NsYXNzRnVuY3Rpb25LZXlzV2l0aEFueUFyZ3NBbmRSZXR1cm5UeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0dldEFsbFBhcmFtc0RlZmF1bHRXb0ZpbHRlcnNUeXBlLCBHZXRBbGxQYXJhbXNTb3J0VHlwZX0gZnJvbSAnLi4vbW9kZWxzL3JlcXVlc3QtcGFyYW1zLm1vZGVsJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBgR2V0QWxsUGFyYW1zRGVmYXVsdFdvRmlsdGVyc1R5cGVgIGNsYXNzIC0gZXhjbHVkZXMgb2Zmc2V0LCBsaW1pdCwgc2VhcmNoIGFuZCBzb3J0IHByb3BlcnRpZXMuXG4gKiBBbGwgb3RoZXIgcHJvcGVydGllcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZmlsdGVycy5cbiAqXG4gKiBAdHlwZXBhcmFtIFJlcXVlc3QgLSBUaGUgdHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBleHRlbmRlZCBHZXRBbGxQYXJhbXNEZWZhdWx0V29GaWx0ZXJzVHlwZSBvYmplY3QuXG4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3RHZXRBbGxQYXJhbXNGaWx0ZXJUeXBlPFJlcXVlc3QgZXh0ZW5kcyBHZXRBbGxQYXJhbXNEZWZhdWx0V29GaWx0ZXJzVHlwZT4gPSBSZXF1ZXN0IGV4dGVuZHMgR2V0QWxsUGFyYW1zRGVmYXVsdFdvRmlsdGVyc1R5cGVcbiAgICA/IGtleW9mIE9taXQ8UmVxdWVzdCwgJ29mZnNldCcgfCAnbGltaXQnIHwgJ2dsb2JhbEZpbHRlcicgfCAnc29ydCc+XG4gICAgOiBuZXZlcjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBgR2V0QWxsUGFyYW1zRGVmYXVsdFdvRmlsdGVyc1R5cGVgIGNsYXNzIC0gZXh0cmFjdHMgYWxsb3dlZCBzb3J0IHByb3BlcnRpZXMgKHVzdWFsbHkgYW4gZW51bSkgb24gcHJvcGVydHkga2V5IHdpdGhpbiBhcnJheSB0eXBlLlxuICpcbiAqIEB0eXBlcGFyYW0gUmVxdWVzdCAtIFRoZSB0eXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGV4dGVuZGVkIEdldEFsbFBhcmFtc0RlZmF1bHRXb0ZpbHRlcnNUeXBlIG9iamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgRXh0cmFjdEdldEFsbFBhcmFtc1NvcnRUeXBlPFJlcXVlc3QgZXh0ZW5kcyBHZXRBbGxQYXJhbXNEZWZhdWx0V29GaWx0ZXJzVHlwZTxHZXRBbGxQYXJhbXNTb3J0VHlwZTxhbnksIGFueT5bXSB8IHN0cmluZywgYW55Pj4gPVxuICAgIE5vbk51bGxhYmxlPFJlcXVlc3RbJ3NvcnQnXT4gZXh0ZW5kcyBBcnJheTxpbmZlciBVPiB8IHN0cmluZyA/ICgncHJvcGVydHknIGV4dGVuZHMga2V5b2YgVSA/IE5vbk51bGxhYmxlPFVbJ3Byb3BlcnR5J10+IDogbmV2ZXIpIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEdldEFsbEh0dHBSZXNwb25zZVR5cGU8TW9kZWw+ID0ge2RhdGE/OiBBcnJheTxNb2RlbD47IHRvdGFsQ291bnQ/OiBudW1iZXJ9IHwgSHR0cFJlc3BvbnNlPHtkYXRhPzogQXJyYXk8TW9kZWw+OyB0b3RhbENvdW50PzogbnVtYmVyfT47XG5cbmV4cG9ydCB0eXBlIEFwaVNlcnZpY2VHZXRBbGxGaWx0ZXJUeXBlPFxuICAgIFNlcnZpY2UsXG4gICAgTW9kZWwsXG4gICAgRm4gZXh0ZW5kcyBDbGFzc0Z1bmN0aW9uS2V5c1dpdGhBbnlBcmdzQW5kUmV0dXJuVHlwZTxTZXJ2aWNlLCBPYnNlcnZhYmxlPEdldEFsbEh0dHBSZXNwb25zZVR5cGU8TW9kZWw+Pj5cbj4gPSBTZXJ2aWNlW0ZuXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gTm9uTnVsbGFibGU8UGFyYW1ldGVyczxTZXJ2aWNlW0ZuXT5bMF0+IDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RTZXJ2aWNlR2V0QWxsRGF0YVR5cGU8U2VydmljZSwgRm4gZXh0ZW5kcyBrZXlvZiBTZXJ2aWNlPiA9IFNlcnZpY2VbRm5dIGV4dGVuZHMgKFxuICAgIC4uLmFyZ3M6IGFueVtdXG4pID0+IE9ic2VydmFibGU8e2RhdGE/OiBBcnJheTxpbmZlciBNb2RlbD59IHwgSHR0cFJlc3BvbnNlPHtkYXRhPzogQXJyYXk8aW5mZXIgTW9kZWw+fT4+XG4gICAgPyBNb2RlbFxuICAgIDogbmV2ZXI7XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLWRhdGEtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lZGl1c2luYy1tbmctY29tbW9ucy1kYXRhLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,127 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { toObservable, valueToDefined } from '@mediusinc/mng-commons/core';
3
- import { FilterTypeEnum } from '@mediusinc/mng-commons/filter';
4
- import { lookupDataProvider } from '@mediusinc/mng-commons/form/api';
5
- /**
6
- * Maps a property type to its corresponding filter type enum and applies default
7
- * filter options if no custom options are provided. If the property type is not recognized,
8
- * it returns a filter type value of null.
9
- *
10
- * @param propertyType - The property type to convert.
11
- * @param [opts] - The custom options to use for conversion.
12
- */
13
- export function convertPropertyTypeToFilterType(propertyType, opts) {
14
- let filterType;
15
- let returnOpts;
16
- switch (propertyType?.toLowerCase()) {
17
- case 'date':
18
- filterType = FilterTypeEnum.Date;
19
- returnOpts = opts?.dateOpts
20
- ? opts.dateOpts
21
- : {
22
- displayFormat: 'dd.MM.YYYY',
23
- applyFromDisplayFormat: true
24
- };
25
- break;
26
- case 'datetime':
27
- case 'date_time':
28
- case 'date-time':
29
- filterType = FilterTypeEnum.Date;
30
- returnOpts = opts?.dateOpts ? opts.dateOpts : { displayFormat: 'dd.MM.YYYY HH:mm', applyFromDisplayFormat: true };
31
- break;
32
- case 'string':
33
- case 'text':
34
- filterType = FilterTypeEnum.String;
35
- break;
36
- case 'enum':
37
- filterType = FilterTypeEnum.LookupEnum;
38
- break;
39
- case 'boolean':
40
- case 'bool':
41
- filterType = FilterTypeEnum.Boolean;
42
- break;
43
- case 'float':
44
- case 'double':
45
- case 'decimal':
46
- filterType = FilterTypeEnum.Number;
47
- returnOpts = opts?.numberOpts ? opts.numberOpts : { displayFormat: '1.1-30' };
48
- break;
49
- case 'integer':
50
- case 'int':
51
- case 'long':
52
- filterType = FilterTypeEnum.Number;
53
- returnOpts = opts?.numberOpts;
54
- break;
55
- default:
56
- filterType = null;
57
- }
58
- return { filterType, opts: returnOpts };
59
- }
60
- /**
61
- * Converts an object of properties and types into an array of filterable properties with the corresponding filter types and options.
62
- * @param properties - The object containing the properties.
63
- * @param [opts] - Custom filter options.
64
- */
65
- export function convertPropertyToFilterGenericProperties(properties, opts) {
66
- return Object.keys(properties).reduce((filterableProperties, key) => {
67
- const { filterType, opts: filterOpts } = convertPropertyTypeToFilterType(properties[key], opts);
68
- if (filterType !== null) {
69
- filterableProperties.push({
70
- property: key,
71
- type: filterType,
72
- opts: filterOpts
73
- });
74
- }
75
- return filterableProperties;
76
- }, []);
77
- }
78
- /**
79
- * Maps an Observable of properties to filter generic properties.
80
- */
81
- export function mapToFilterGenericProperties(opts) {
82
- return function (source) {
83
- return new Observable(subscriber => {
84
- return source.subscribe({
85
- next(value) {
86
- subscriber.next(convertPropertyToFilterGenericProperties(value, opts));
87
- },
88
- error: err => {
89
- subscriber.error(err);
90
- }
91
- });
92
- });
93
- };
94
- }
95
- /**
96
- * Creates a data provider for generic filter properties that can be used with the TableDescriptor's generic filter functionality.
97
- *
98
- * @param serviceType - The service to fetch the properties from.
99
- * @param lookupFn - The name of the service function to call for properties or function impl returning properties.
100
- * @param [opts] - Optional custom options for filter descriptors, such as date and number formatting.
101
- */
102
- export function filterPropertyLookupProvider(serviceType, lookupFn, opts) {
103
- if (typeof lookupFn === 'function') {
104
- return lookupDataProvider({ service: serviceType }).withLookup((_, service) => toObservable(lookupFn(service)).pipe(mapToFilterGenericProperties(opts)));
105
- }
106
- else {
107
- return lookupDataProvider({ service: serviceType }).withLookup((_, service) => service[lookupFn]().pipe(mapToFilterGenericProperties(opts)));
108
- }
109
- }
110
- /**
111
- * Creates a data provider for generic filter value suggestions that can be used with the TableDescriptor's generic filter functionality.
112
- *
113
- * @param service - The service to use for suggesting filter values.
114
- * @param lookupFn - The function name of the service to call for suggestion or function impl returning suggestions.
115
- */
116
- export function filterValueSuggestionLookupProvider(service, lookupFn) {
117
- if (typeof lookupFn === 'function') {
118
- return lookupDataProvider({ service }).withLookup((params, service, search) => lookupFn(service, valueToDefined(params?.filters?.['field']?.value), search));
119
- }
120
- else {
121
- return lookupDataProvider({ service }).withLookup((params, service, search) => service[lookupFn]({
122
- field: valueToDefined(params?.filters?.['field']?.value).toString(),
123
- text: search
124
- }));
125
- }
126
- }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGFibGV2aWV3L3NyYy9maWx0ZXIvZ2VuZXJpYy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxVQUFVLEVBQW1CLE1BQU0sTUFBTSxDQUFDO0FBRWxELE9BQU8sRUFBNkYsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JLLE9BQU8sRUFBa0UsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDOUgsT0FBTyxFQUF5QixrQkFBa0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBTzNGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQzNDLFlBQXFCLEVBQ3JCLElBQW9DO0lBRXBDLElBQUksVUFBaUMsQ0FBQztJQUN0QyxJQUFJLFVBQWlFLENBQUM7SUFFdEUsUUFBUSxZQUFZLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxLQUFLLE1BQU07WUFDUCxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNqQyxVQUFVLEdBQUcsSUFBSSxFQUFFLFFBQVE7Z0JBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZixDQUFDLENBQUM7b0JBQ0ksYUFBYSxFQUFFLFlBQVk7b0JBQzNCLHNCQUFzQixFQUFFLElBQUk7aUJBQy9CLENBQUM7WUFDUixNQUFNO1FBQ1YsS0FBSyxVQUFVLENBQUM7UUFDaEIsS0FBSyxXQUFXLENBQUM7UUFDakIsS0FBSyxXQUFXO1lBQ1osVUFBVSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDakMsVUFBVSxHQUFHLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBQyxDQUFDO1lB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eXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBPcGVyYXRvckZ1bmN0aW9ufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtDbGFzc0Z1bmN0aW9uS2V5c1dpdGhQYXJhbUFuZFJldHVyblR5cGUsIENsYXNzRnVuY3Rpb25LZXlzV2l0aFJldHVyblR5cGUsIEl0ZW1Pck9ic2VydmFibGUsIHRvT2JzZXJ2YWJsZSwgdmFsdWVUb0RlZmluZWR9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRhdGVPcHRzVHlwZSwgRmlsdGVyR2VuZXJpY1Byb3BlcnR5LCBGaWx0ZXJOdW1iZXJPcHRzVHlwZSwgRmlsdGVyVHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZmlsdGVyJztcbmltcG9ydCB7TG9va3VwRGF0YVByb3ZpZGVySW5zdCwgbG9va3VwRGF0YVByb3ZpZGVyfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHZW5lcmljUHJvcGVydHlPcHRzVHlwZSB7XG4gICAgbnVtYmVyT3B0cz86IEZpbHRlck51bWJlck9wdHNUeXBlO1xuICAgIGRhdGVPcHRzPzogRmlsdGVyRGF0ZU9wdHNUeXBlO1xufVxuXG4vKipcbiAqIE1hcHMgYSBwcm9wZXJ0eSB0eXBlIHRvIGl0cyBjb3JyZXNwb25kaW5nIGZpbHRlciB0eXBlIGVudW0gYW5kIGFwcGxpZXMgZGVmYXVsdFxuICogZmlsdGVyIG9wdGlvbnMgaWYgbm8gY3VzdG9tIG9wdGlvbnMgYXJlIHByb3ZpZGVkLiBJZiB0aGUgcHJvcGVydHkgdHlwZSBpcyBub3QgcmVjb2duaXplZCxcbiAqIGl0IHJldHVybnMgYSBmaWx0ZXIgdHlwZSB2YWx1ZSBvZiBudWxsLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eVR5cGUgLSBUaGUgcHJvcGVydHkgdHlwZSB0byBjb252ZXJ0LlxuICogQHBhcmFtIFtvcHRzXSAtIFRoZSBjdXN0b20gb3B0aW9ucyB0byB1c2UgZm9yIGNvbnZlcnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UHJvcGVydHlUeXBlVG9GaWx0ZXJUeXBlKFxuICAgIHByb3BlcnR5VHlwZT86IHN0cmluZyxcbiAgICBvcHRzPzogRmlsdGVyR2VuZXJpY1Byb3BlcnR5T3B0c1R5cGVcbik6IHtmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlRW51bSB8IG51bGw7IG9wdHM/OiBGaWx0ZXJEYXRlT3B0c1R5cGUgfCBGaWx0ZXJOdW1iZXJPcHRzVHlwZX0ge1xuICAgIGxldCBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlRW51bSB8IG51bGw7XG4gICAgbGV0IHJldHVybk9wdHM6IEZpbHRlckRhdGVPcHRzVHlwZSB8IEZpbHRlck51bWJlck9wdHNUeXBlIHwgdW5kZWZpbmVkO1xuXG4gICAgc3dpdGNoIChwcm9wZXJ0eVR5cGU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uRGF0ZTtcbiAgICAgICAgICAgIHJldHVybk9wdHMgPSBvcHRzPy5kYXRlT3B0c1xuICAgICAgICAgICAgICAgID8gb3B0cy5kYXRlT3B0c1xuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ6ICdkZC5NTS5ZWVlZJyxcbiAgICAgICAgICAgICAgICAgICAgICBhcHBseUZyb21EaXNwbGF5Rm9ybWF0OiB0cnVlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgY2FzZSAnZGF0ZV90aW1lJzpcbiAgICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5EYXRlO1xuICAgICAgICAgICAgcmV0dXJuT3B0cyA9IG9wdHM/LmRhdGVPcHRzID8gb3B0cy5kYXRlT3B0cyA6IHtkaXNwbGF5Rm9ybWF0OiAnZGQuTU0uWVlZWSBISDptbScsIGFwcGx5RnJvbURpc3BsYXlGb3JtYXQ6IHRydWV9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLlN0cmluZztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5Mb29rdXBFbnVtO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBjYXNlICdib29sJzpcbiAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Zsb2F0JzpcbiAgICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgY2FzZSAnZGVjaW1hbCc6XG4gICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICAgICAgcmV0dXJuT3B0cyA9IG9wdHM/Lm51bWJlck9wdHMgPyBvcHRzLm51bWJlck9wdHMgOiB7ZGlzcGxheUZvcm1hdDogJzEuMS0zMCd9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICBjYXNlICdpbnQnOlxuICAgICAgICBjYXNlICdsb25nJzpcbiAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgICAgICByZXR1cm5PcHRzID0gb3B0cz8ubnVtYmVyT3B0cztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZmlsdGVyVHlwZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtmaWx0ZXJUeXBlLCBvcHRzOiByZXR1cm5PcHRzfTtcbn1cblxudHlwZSBGaWx0ZXJHZW5lcmljUHJvcGVydGllc01ldGFkYXRhVHlwZSA9IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWR9O1xuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiBwcm9wZXJ0aWVzIGFuZCB0eXBlcyBpbnRvIGFuIGFycmF5IG9mIGZpbHRlcmFibGUgcHJvcGVydGllcyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGZpbHRlciB0eXBlcyBhbmQgb3B0aW9ucy5cbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIFtvcHRzXSAtIEN1c3RvbSBmaWx0ZXIgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRQcm9wZXJ0eVRvRmlsdGVyR2VuZXJpY1Byb3BlcnRpZXMocHJvcGVydGllczogRmlsdGVyR2VuZXJpY1Byb3BlcnRpZXNNZXRhZGF0YVR5cGUsIG9wdHM/OiBGaWx0ZXJHZW5lcmljUHJvcGVydHlPcHRzVHlwZSk6IEZpbHRlckdlbmVyaWNQcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcGVydGllcykucmVkdWNlPEFycmF5PEZpbHRlckdlbmVyaWNQcm9wZXJ0eT4+KChmaWx0ZXJhYmxlUHJvcGVydGllcywga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHtmaWx0ZXJUeXBlLCBvcHRzOiBmaWx0ZXJPcHRzfSA9IGNvbnZlcnRQcm9wZXJ0eVR5cGVUb0ZpbHRlclR5cGUocHJvcGVydGllc1trZXldLCBvcHRzKTtcbiAgICAgICAgaWYgKGZpbHRlclR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGZpbHRlcmFibGVQcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHByb3BlcnR5OiBrZXksXG4gICAgICAgICAgICAgICAgdHlwZTogZmlsdGVyVHlwZSxcbiAgICAgICAgICAgICAgICBvcHRzOiBmaWx0ZXJPcHRzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyYWJsZVByb3BlcnRpZXM7XG4gICAgfSwgW10pO1xufVxuXG4vKipcbiAqIE1hcHMgYW4gT2JzZXJ2YWJsZSBvZiBwcm9wZXJ0aWVzIHRvIGZpbHRlciBnZW5lcmljIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0ZpbHRlckdlbmVyaWNQcm9wZXJ0aWVzKG9wdHM/OiBGaWx0ZXJHZW5lcmljUHJvcGVydHlPcHRzVHlwZSk6IE9wZXJhdG9yRnVuY3Rpb248RmlsdGVyR2VuZXJpY1Byb3BlcnRpZXNNZXRhZGF0YVR5cGUsIEZpbHRlckdlbmVyaWNQcm9wZXJ0eVtdPiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzb3VyY2U6IE9ic2VydmFibGU8RmlsdGVyR2VuZXJpY1Byb3BlcnRpZXNNZXRhZGF0YVR5cGU+KTogT2JzZXJ2YWJsZTxGaWx0ZXJHZW5lcmljUHJvcGVydHlbXT4ge1xuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3Vic2NyaWJlciA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoY29udmVydFByb3BlcnR5VG9GaWx0ZXJHZW5lcmljUHJvcGVydGllcyh2YWx1ZSwgb3B0cykpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cblxudHlwZSBGaWx0ZXJQcm9wZXJ0eUxvb2t1cEZuVHlwZTxTZXJ2aWNlPiA9IChzZXJ2aWNlOiBTZXJ2aWNlKSA9PiBJdGVtT3JPYnNlcnZhYmxlPEZpbHRlckdlbmVyaWNQcm9wZXJ0aWVzTWV0YWRhdGFUeXBlPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGF0YSBwcm92aWRlciBmb3IgZ2VuZXJpYyBmaWx0ZXIgcHJvcGVydGllcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggdGhlIFRhYmxlRGVzY3JpcHRvcidzIGdlbmVyaWMgZmlsdGVyIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQHBhcmFtIHNlcnZpY2VUeXBlIC0gVGhlIHNlcnZpY2UgdG8gZmV0Y2ggdGhlIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBsb29rdXBGbiAtIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIHByb3BlcnRpZXMgb3IgZnVuY3Rpb24gaW1wbCByZXR1cm5pbmcgcHJvcGVydGllcy5cbiAqIEBwYXJhbSBbb3B0c10gLSBPcHRpb25hbCBjdXN0b20gb3B0aW9ucyBmb3IgZmlsdGVyIGRlc2NyaXB0b3JzLCBzdWNoIGFzIGRhdGUgYW5kIG51bWJlciBmb3JtYXR0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUHJvcGVydHlMb29rdXBQcm92aWRlcjxTZXJ2aWNlPihcbiAgICBzZXJ2aWNlVHlwZTogVHlwZTxTZXJ2aWNlPixcbiAgICBsb29rdXBGbjogRmlsdGVyUHJvcGVydHlMb29rdXBGblR5cGU8U2VydmljZT4gfCBDbGFzc0Z1bmN0aW9uS2V5c1dpdGhSZXR1cm5UeXBlPFNlcnZpY2UsIE9ic2VydmFibGU8RmlsdGVyR2VuZXJpY1Byb3BlcnRpZXNNZXRhZGF0YVR5cGU+PixcbiAgICBvcHRzPzogRmlsdGVyR2VuZXJpY1Byb3BlcnR5T3B0c1R5cGVcbikge1xuICAgIGlmICh0eXBlb2YgbG9va3VwRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGxvb2t1cERhdGFQcm92aWRlcjxGaWx0ZXJHZW5lcmljUHJvcGVydHksIFNlcnZpY2U+KHtzZXJ2aWNlOiBzZXJ2aWNlVHlwZX0pLndpdGhMb29rdXAoKF8sIHNlcnZpY2UpID0+XG4gICAgICAgICAgICB0b09ic2VydmFibGUobG9va3VwRm4oc2VydmljZSkpLnBpcGUobWFwVG9GaWx0ZXJHZW5lcmljUHJvcGVydGllcyhvcHRzKSlcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbG9va3VwRGF0YVByb3ZpZGVyPEZpbHRlckdlbmVyaWNQcm9wZXJ0eSwgU2VydmljZT4oe3NlcnZpY2U6IHNlcnZpY2VUeXBlfSkud2l0aExvb2t1cCgoXywgc2VydmljZSkgPT5cbiAgICAgICAgICAgIChzZXJ2aWNlIGFzIGFueSlbbG9va3VwRm5dKCkucGlwZShtYXBUb0ZpbHRlckdlbmVyaWNQcm9wZXJ0aWVzKG9wdHMpKVxuICAgICAgICApO1xuICAgIH1cbn1cblxudHlwZSBGaWx0ZXJWYWx1ZVN1Z2dlc3Rpb25Mb29rdXBGblR5cGU8U2VydmljZT4gPSAoc2VydmljZTogU2VydmljZSwgZmllbGQ6IHN0cmluZywgc2VhcmNoPzogc3RyaW5nKSA9PiBJdGVtT3JPYnNlcnZhYmxlPHN0cmluZ1tdPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGF0YSBwcm92aWRlciBmb3IgZ2VuZXJpYyBmaWx0ZXIgdmFsdWUgc3VnZ2VzdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBUYWJsZURlc2NyaXB0b3IncyBnZW5lcmljIGZpbHRlciBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIHNlcnZpY2UgdG8gdXNlIGZvciBzdWdnZXN0aW5nIGZpbHRlciB2YWx1ZXMuXG4gKiBAcGFyYW0gbG9va3VwRm4gLSBUaGUgZnVuY3Rpb24gbmFtZSBvZiB0aGUgc2VydmljZSB0byBjYWxsIGZvciBzdWdnZXN0aW9uIG9yIGZ1bmN0aW9uIGltcGwgcmV0dXJuaW5nIHN1Z2dlc3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyVmFsdWVTdWdnZXN0aW9uTG9va3VwUHJvdmlkZXI8U2VydmljZT4oXG4gICAgc2VydmljZTogVHlwZTxTZXJ2aWNlPixcbiAgICBsb29rdXBGbjogRmlsdGVyVmFsdWVTdWdnZXN0aW9uTG9va3VwRm5UeXBlPFNlcnZpY2U+IHwgQ2xhc3NGdW5jdGlvbktleXNXaXRoUGFyYW1BbmRSZXR1cm5UeXBlPFNlcnZpY2UsIHtmaWVsZDogc3RyaW5nOyB0ZXh0Pzogc3RyaW5nfSwgT2JzZXJ2YWJsZTxzdHJpbmdbXT4+XG4pOiBMb29rdXBEYXRhUHJvdmlkZXJJbnN0PHN0cmluZywgU2VydmljZSwgc3RyaW5nLCAnZmllbGQnPiB7XG4gICAgaWYgKHR5cGVvZiBsb29rdXBGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbG9va3VwRGF0YVByb3ZpZGVyPHN0cmluZywgU2VydmljZSwgc3RyaW5nLCAnZmllbGQnPih7c2VydmljZX0pLndpdGhMb29rdXAoKHBhcmFtcywgc2VydmljZSwgc2VhcmNoPykgPT5cbiAgICAgICAgICAgIGxvb2t1cEZuKHNlcnZpY2UsIHZhbHVlVG9EZWZpbmVkKHBhcmFtcz8uZmlsdGVycz8uWydmaWVsZCddPy52YWx1ZSkgYXMgc3RyaW5nLCBzZWFyY2gpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGxvb2t1cERhdGFQcm92aWRlcjxzdHJpbmcsIFNlcnZpY2UsIHN0cmluZywgJ2ZpZWxkJz4oe3NlcnZpY2V9KS53aXRoTG9va3VwKChwYXJhbXMsIHNlcnZpY2UsIHNlYXJjaD8pID0+XG4gICAgICAgICAgICAoc2VydmljZSBhcyBhbnkpW2xvb2t1cEZuXSh7XG4gICAgICAgICAgICAgICAgZmllbGQ6IHZhbHVlVG9EZWZpbmVkKHBhcmFtcz8uZmlsdGVycz8uWydmaWVsZCddPy52YWx1ZSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBzZWFyY2hcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19