@sumaris-net/ngx-components 18.0.2-alpha1 → 18.0.2-alpha3

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,4 +1,4 @@
1
- import { isNil, isNilOrBlank, isNotEmptyArray, isNotNil, isNotNilOrBlank, isPromise, toBoolean, toNumber } from '../../../shared/functions';
1
+ import { getPropertyByPath, isNil, isNilOrBlank, isNotEmptyArray, isNotNilOrBlank, isPromise, toBoolean, toNumber } from '../../../shared/functions';
2
2
  export class AppPropertiesUtils {
3
3
  /**
4
4
  * Converts an array of `Property` objects into a `PropertiesMap` object.
@@ -16,14 +16,17 @@ export class AppPropertiesUtils {
16
16
  if (!source)
17
17
  return undefined;
18
18
  const key = AppPropertyUtils.key(source);
19
+ if (!key)
20
+ return undefined;
19
21
  const def = definitions?.find((d) => d.key === key);
20
22
  return AppPropertyUtils.asObject(source, def);
21
23
  })
22
24
  // Fill a JSON object
23
25
  .reduce((res, item) => {
24
- if (isNilOrBlank(item.key))
26
+ if (isNilOrBlank(item?.key))
25
27
  return res;
26
- if (isNilOrBlank(item.value) && opts?.omitNilOrBlank !== false)
28
+ // Skip if nil or blank value
29
+ if (opts?.omitNilOrBlank !== false && isNilOrBlank(item.value))
27
30
  return res;
28
31
  res[item.key] = item.value;
29
32
  return res;
@@ -71,24 +74,39 @@ export class AppPropertyUtils {
71
74
  return undefined;
72
75
  return source.key?.key ?? source.key;
73
76
  }
74
- static asObject(source, def) {
77
+ /**
78
+ * Converts the given source to an object that contains a key-value pair.
79
+ *
80
+ * @param {Property<any> | any} source - The source property or any value to be converted.
81
+ * @param {FormFieldDefinition} [def] - The form field definition used for serialization.
82
+ * @param {Object} [opts] - Additional options for serialization.
83
+ * @param {string} [opts.defaultSerializeAttribute='id'] - The attribute to be used for default serialization.
84
+ * @return {{ key: string, value: string } | undefined} An object containing the serialized key-value pair, or undefined if the source is not provided.
85
+ */
86
+ static asObject(source, def, opts) {
75
87
  if (!source)
76
88
  return undefined;
77
89
  // Serialize key (WARNING: can be an object, when using autocomplete field to edit a key - see AppPropertiesForm)
78
90
  const key = AppPropertyUtils.key(source);
79
- const joinAttribute = def?.autocomplete?.filter?.joinAttribute || 'id';
80
- // Serialize the value
81
- let value = source.value;
82
- if (Array.isArray(value)) {
83
- value = value
84
- .map((v) => v?.[joinAttribute] ?? v)
85
- .filter(isNotNil)
86
- .join(',');
91
+ // Prepare a deserialize function
92
+ const serializeAttribute = def.serializeAttribute ?? opts?.defaultSerializeAttribute ?? 'id';
93
+ const serializeFn = def?.serialize ||
94
+ ((value) => {
95
+ const serializeValue = getPropertyByPath(value, serializeAttribute, value /*default value*/);
96
+ if (isNil(serializeValue))
97
+ return serializeValue;
98
+ return JSON.stringify(serializeValue);
99
+ });
100
+ let valueStr;
101
+ // Value is an array
102
+ if (Array.isArray(source.value)) {
103
+ valueStr = source.value.map(serializeFn).filter(isNotNilOrBlank).join(',');
87
104
  }
105
+ // Any other case
88
106
  else {
89
- value = value?.id ?? value;
107
+ valueStr = serializeFn(source.value);
90
108
  }
91
- return { key, value: value?.toString() };
109
+ return { key, value: valueStr };
92
110
  }
93
111
  static fromObject(source, def, opts) {
94
112
  if (!source?.key || isNil(source.value) || !def)
@@ -116,8 +134,8 @@ export class AppPropertyUtils {
116
134
  }
117
135
  break;
118
136
  case 'entity':
119
- // Deserialize unique entity
120
- const valueOrPromise = AppPropertyUtils.valueFromObject(target.value, def, opts);
137
+ // Deserialize entity (e.g. load entity from the id)
138
+ const valueOrPromise = AppPropertyUtils.resolveEntity(target.value, def, opts);
121
139
  if (isPromise(valueOrPromise)) {
122
140
  jobs.push(valueOrPromise.then((value) => {
123
141
  target.value = value;
@@ -141,7 +159,7 @@ export class AppPropertyUtils {
141
159
  let index = 0;
142
160
  for (let subValue of target.value) {
143
161
  // Deserialize sub-value
144
- const subValueOrPromise = AppPropertyUtils.valueFromObject(subValue, def, opts);
162
+ const subValueOrPromise = AppPropertyUtils.resolveEntity(subValue, def, opts);
145
163
  // Add promise to jobs
146
164
  if (isPromise(subValueOrPromise)) {
147
165
  const finalIndex = index;
@@ -162,15 +180,15 @@ export class AppPropertyUtils {
162
180
  return Promise.all(jobs).then(() => target);
163
181
  return target;
164
182
  }
165
- static valueFromObject(value, def, opts) {
183
+ static resolveEntity(value, def, opts) {
166
184
  // Use deserialize function, if any
167
185
  if (def.deserialize) {
168
186
  return def.deserialize(value);
169
187
  }
170
188
  // Or try using suggest function
171
- return this.resolveValueBySuggest(value, def, opts);
189
+ return this.resolveEntityBySuggest(value, def, opts);
172
190
  }
173
- static async resolveValueBySuggest(value, def, opts) {
191
+ static async resolveEntityBySuggest(value, def, opts) {
174
192
  const suggestFn = def.autocomplete?.suggestFn || opts?.defaultSuggestFn;
175
193
  if (!suggestFn) {
176
194
  console.warn(`Missing 'deserialize' or 'autocomplete.suggestFn' in the field definition '${def.key}'. Cannot deserialize value: ${JSON.stringify(value)}`);
@@ -178,9 +196,9 @@ export class AppPropertyUtils {
178
196
  }
179
197
  let searchValue = value;
180
198
  const filter = { ...def.autocomplete?.filter }; // Cope filter
181
- const joinAttribute = filter?.joinAttribute || 'id';
182
- if (joinAttribute === 'id') {
183
- filter.id = +value;
199
+ const serializeAttribute = def.serializeAttribute ?? opts.defaultSerializeAttribute ?? 'id';
200
+ if (serializeAttribute === 'id' || serializeAttribute === 'label') {
201
+ filter[serializeAttribute] = serializeAttribute === 'id' ? +value : value;
184
202
  filter.offset = 0;
185
203
  filter.size = 1;
186
204
  searchValue = '*';
@@ -188,13 +206,13 @@ export class AppPropertyUtils {
188
206
  console.debug(`[properties-utils] Resolving entity where id=${value}...`);
189
207
  }
190
208
  else {
191
- filter.searchAttribute = joinAttribute;
209
+ filter.searchAttribute = serializeAttribute;
192
210
  // DEBUG
193
- console.debug(`[properties-utils] Resolving entity where ${joinAttribute}=${searchValue}...`);
211
+ console.debug(`[properties-utils] Resolving entity where ${serializeAttribute}=${searchValue}...`);
194
212
  }
195
213
  try {
196
214
  // Fetch entity, using the suggest function
197
- const res = await suggestFn(searchValue, filter, joinAttribute, 'asc', {
215
+ const res = await suggestFn(searchValue, filter, serializeAttribute, 'asc', {
198
216
  withTotal: false,
199
217
  ...opts?.defaultSuggestOptions,
200
218
  });
@@ -211,7 +229,7 @@ export class AppPropertyUtils {
211
229
  }
212
230
  // Create the missing result
213
231
  const unresolvedEntity = {
214
- [joinAttribute]: value,
232
+ [serializeAttribute]: value,
215
233
  };
216
234
  // Fill attributes with '??'
217
235
  def.autocomplete?.attributes?.forEach((key) => {
@@ -220,4 +238,4 @@ export class AppPropertyUtils {
220
238
  return unresolvedEntity;
221
239
  }
222
240
  }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVJLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQW9CLEVBQUUsV0FBbUMsRUFBRSxJQUFrQztRQUNoSCxPQUFPLENBQ0wsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2Isc0JBQXNCO2FBQ3JCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sR0FBRyxHQUFHLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDcEQsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztZQUNGLHFCQUFxQjthQUNwQixNQUFNLENBQ0wsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDWixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1lBQ3ZDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJ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QUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkUsV0FBVztRQUNiLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBUTtZQUM1QixDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUs7U0FDdkIsQ0FBQztRQUVGLDRCQUE0QjtRQUM1QixHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnRpZXNNYXAsIFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgaXNQcm9taXNlLCB0b0Jvb2xlYW4sIHRvTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsIFN1Z2dlc3RGbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBBcHBQcm9wZXJ0aWVzVXRpbHMge1xuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgYFByb3BlcnR5YCBvYmplY3RzIGludG8gYSBgUHJvcGVydGllc01hcGAgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5W119IFtzb3VyY2VzXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIHByb3BlcnRpZXMgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb25bXX0gW2RlZmluaXRpb25zXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIGZvcm0gZmllbGQgZGVmaW5pdGlvbnMgdG8gaGVscCB3aXRoIHRoZSBjb252ZXJzaW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMub21pdE5pbE9yQmxhbmtdIC0gSWYgdHJ1ZSwgcHJvcGVydGllcyB3aXRoIG5pbCBvciBibGFuayB2YWx1ZXMgd2lsbCBiZSBvbWl0dGVkLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0aWVzTWFwfSAtIFRoZSByZXN1bHRpbmcgYFByb3BlcnRpZXNNYXBgIG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBhcnJheUFzT2JqZWN0KHNvdXJjZXM/OiBQcm9wZXJ0eVtdLCBkZWZpbml0aW9ucz86IEZvcm1GaWVsZERlZmluaXRpb25bXSwgb3B0cz86IHsgb21pdE5pbE9yQmxhbms6IGJvb2xlYW4gfSk6IFByb3BlcnRpZXNNYXAge1xuICAgIHJldHVybiAoXG4gICAgICAoc291cmNlcyB8fCBbXSlcbiAgICAgICAgLy8gU2VyaWFsaXplIGVhY2ggaXRlbVxuICAgICAgICAubWFwKChzb3VyY2UpID0+IHtcbiAgICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBrZXkgPSBBcHBQcm9wZXJ0eVV0aWxzLmtleShzb3VyY2UpO1xuICAgICAgICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zPy5maW5kKChkKSA9PiBkLmtleSA9PT0ga2V5KTtcbiAgICAgICAgICByZXR1cm4gQXBwUHJvcGVydHlVdGlscy5hc09iamVjdChzb3VyY2UsIGRlZik7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIEZpbGwgYSBKU09OIG9iamVjdFxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChyZXMsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc05pbE9yQmxhbmsoaXRlbS5rZXkpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhpdGVtLnZhbHVlKSAmJiBvcHRzPy5vbWl0TmlsT3JCbGFuayAhPT0gZmFsc2UpIHJldHVybiByZXM7XG4gICAgICAgICAgICByZXNbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8UHJvcGVydGllc01hcD57fVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgcHJvcGVydGllcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QsIG9wdGlvbmFsbHkgYXBwbHlpbmcgZGVmaW5pdGlvbnMgdG8gdGhlIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydGllc01hcH0gW3NvdXJjZXNdIC0gVGhlIHNvdXJjZSBvYmplY3QgZnJvbSB3aGljaCBwcm9wZXJ0aWVzIGFyZSB0byBiZSBleHRyYWN0ZWQuXG4gICAqIEBwYXJhbSB7Rm9ybUZpZWxkRGVmaW5pdGlvbltdfSBbZGVmaW5pdGlvbnNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgZGVmaW5pdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZXh0cmFjdGVkIHByb3BlcnRpZXMuXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5W10gfCBQcm9taXNlPFByb3BlcnR5W10+fSBBbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGdlbmVyYXRlZCBmcm9tIHRoZSBzb3VyY2Ugb2JqZWN0LCBvciBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoYXQgYXJyYXkuXG4gICAqL1xuICBzdGF0aWMgYXJyYXlGcm9tT2JqZWN0KHNvdXJjZXM/OiBQcm9wZXJ0aWVzTWFwIHwgUHJvcGVydHlbXSwgZGVmaW5pdGlvbnM/OiBGb3JtRmllbGREZWZpbml0aW9uW10pOiBQcm9wZXJ0eVtdIHwgUHJvbWlzZTxQcm9wZXJ0eVtdPiB7XG4gICAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoc291cmNlcylcbiAgICAgID8gc291cmNlcy5zbGljZSgpXG4gICAgICA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZXMgfHwge30pLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICB2YWx1ZTogc291cmNlc1trZXldLFxuICAgICAgICB9KSk7XG4gICAgY29uc3Qgam9icyA9IFtdO1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGVmaW5pdGlvbnMpKSB7XG4gICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGFyZ2V0cykge1xuICAgICAgICAvLyBGaW5kIGRlZmluaXRpb25cbiAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnMuZmluZCgoZGVmKSA9PiBkZWYua2V5ID09PSB0YXJnZXQua2V5KTtcblxuICAgICAgICAvLyBEZXNlcmlhbGl6ZSBmcm9tIHN0cmluZ1xuICAgICAgICBsZXQgcHJvcGVydHlPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLmZyb21PYmplY3QodGFyZ2V0LCBkZWYpO1xuICAgICAgICBpZiAoaXNQcm9taXNlKHByb3BlcnR5T3JQcm9taXNlKSkge1xuICAgICAgICAgIGpvYnMucHVzaChwcm9wZXJ0eU9yUHJvbWlzZS50aGVuKChwcm9wZXJ0eSkgPT4gKHRhcmdldC52YWx1ZSA9IHByb3BlcnR5LnZhbHVlKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGFyZ2V0IHZhbHVlXG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gcHJvcGVydHlPclByb21pc2UudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYXMgcHJvbWlzZSwgaWYgbmVlZFxuICAgIGlmIChqb2JzLmxlbmd0aCkgcmV0dXJuIFByb21pc2UuYWxsKGpvYnMpLnRoZW4oKCkgPT4gdGFyZ2V0cyk7XG5cbiAgICByZXR1cm4gdGFyZ2V0cztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwUHJvcGVydHlVdGlscyB7XG4gIHN0YXRpYyBrZXkoc291cmNlOiBQcm9wZXJ0eSB8IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChzb3VyY2Uua2V5IGFzIGFueSk/LmtleSA/PyBzb3VyY2Uua2V5O1xuICB9XG5cbiAgc3RhdGljIGFzT2JqZWN0KHNvdXJjZTogUHJvcGVydHkgfCBhbnksIGRlZj86IEZvcm1GaWVsZERlZmluaXRpb24pOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIC8vIFNlcmlhbGl6ZSBrZXkgKFdBUk5JTkc6IGNhbiBiZSBhbiBvYmplY3QsIHdoZW4gdXNpbmcgYXV0b2NvbXBsZXRlIGZpZWxkIHRvIGVkaXQgYSBrZXkgLSBzZWUgQXBwUHJvcGVydGllc0Zvcm0pXG4gICAgY29uc3Qga2V5ID0gQXBwUHJvcGVydHlVdGlscy5rZXkoc291cmNlKTtcblxuICAgIGNvbnN0IGpvaW5BdHRyaWJ1dGUgPSBkZWY/LmF1dG9jb21wbGV0ZT8uZmlsdGVyPy5qb2luQXR0cmlidXRlIHx8ICdpZCc7XG4gICAgLy8gU2VyaWFsaXplIHRoZSB2YWx1ZVxuICAgIGxldCB2YWx1ZSA9IHNvdXJjZS52YWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgLm1hcCgodikgPT4gdj8uW2pvaW5BdHRyaWJ1dGVdID8/IHYpXG4gICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICAgIC5qb2luKCcsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gKHZhbHVlIGFzIGFueSk/LmlkID8/IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4geyBrZXksIHZhbHVlOiB2YWx1ZT8udG9TdHJpbmcoKSB9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3QoXG4gICAgc291cmNlOiBQcm9wZXJ0eTxzdHJpbmc+LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzogeyBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+IH1cbiAgKTogUHJvcGVydHk8YW55PiB8IFByb21pc2U8UHJvcGVydHk8YW55Pj4ge1xuICAgIGlmICghc291cmNlPy5rZXkgfHwgaXNOaWwoc291cmNlLnZhbHVlKSB8fCAhZGVmKSByZXR1cm4gc291cmNlOyAvLyBTa2lwIGlmIG5vIGtleVxuXG4gICAgLy8gQ0xvbmUgdGhlIHNvdXJjZVxuICAgIGNvbnN0IHRhcmdldDogUHJvcGVydHk8YW55PiA9IHsga2V5OiBzb3VyY2Uua2V5LCB2YWx1ZTogc291cmNlLnZhbHVlIH07XG5cbiAgICBjb25zdCBqb2JzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuICAgIC8vIFJlc29sdmUgdmFsdWVcbiAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdG9Cb29sZWFuKHNvdXJjZS52YWx1ZSwgdG9Cb29sZWFuKGRlZi5kZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2RvdWJsZSc6XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IHRvTnVtYmVyKHNvdXJjZS52YWx1ZSwgdG9OdW1iZXIoZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudW1zJzpcbiAgICAgICAgY29uc3Qga2V5cyA9ICh0YXJnZXQudmFsdWUgfHwgJycpLnRyaW0oKS5zcGxpdCgvW3wsXSsvKTtcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShrZXlzKSkge1xuICAgICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSBrZXlzLm1hcCgoa2V5KSA9PlxuICAgICAgICAgICAgKGRlZi52YWx1ZXMgYXMgKHN0cmluZyB8IFByb3BlcnR5KVtdKT8uZmluZCgoZGVmVmFsdWUpID0+IGRlZlZhbHVlICYmIGtleSA9PT0gKGRlZlZhbHVlWydrZXknXSB8fCBkZWZWYWx1ZSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSBlbnVtVmFsdWVzIHx8IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIC8vIERlc2VyaWFsaXplIHVuaXF1ZSBlbnRpdHlcbiAgICAgICAgY29uc3QgdmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnZhbHVlRnJvbU9iamVjdCh0YXJnZXQudmFsdWUsIGRlZiwgb3B0cyk7XG4gICAgICAgIGlmIChpc1Byb21pc2UodmFsdWVPclByb21pc2UpKSB7XG4gICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgdmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXRpZXMnOlxuICAgICAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGFycmF5XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKVxuICAgICAgICAgID8gc291cmNlLnZhbHVlLnNsaWNlKCkgLy8gQ29weVxuICAgICAgICAgIDogdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gc291cmNlLnZhbHVlXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKCh2KSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsT3JCbGFuaylcbiAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZWFjaCBzdWItdmFsdWVcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgc3ViVmFsdWUgb2YgdGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgICAgLy8gRGVzZXJpYWxpemUgc3ViLXZhbHVlXG4gICAgICAgICAgY29uc3Qgc3ViVmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnZhbHVlRnJvbU9iamVjdChzdWJWYWx1ZSwgZGVmLCBvcHRzKTtcblxuICAgICAgICAgIC8vIEFkZCBwcm9taXNlIHRvIGpvYnNcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKHN1YlZhbHVlT3JQcm9taXNlKSkge1xuICAgICAgICAgICAgY29uc3QgZmluYWxJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgICBzdWJWYWx1ZU9yUHJvbWlzZS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgICAgICB0YXJnZXQudmFsdWVbZmluYWxJbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgIHRhcmdldC52YWx1ZVtpbmRleF0gPSBzdWJWYWx1ZU9yUHJvbWlzZSBhcyBhbnk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAvIVxcIFJldHVybiBhcyBwcm9taXNlIG9ubHkgaWYgbmVlZCAobGV0IGZ1bmN0aW9uIHN5bmMgd2hlbiBwb3NzaWJsZSlcbiAgICBpZiAoam9icy5sZW5ndGgpIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKCgpID0+IHRhcmdldCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsdWVGcm9tT2JqZWN0KFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGVmOiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+O1xuICAgICAgZGVmYXVsdFN1Z2dlc3RPcHRpb25zPzogRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnM7XG4gICAgfVxuICApOiBhbnkgfCBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBkZXNlcmlhbGl6ZSBmdW5jdGlvbiwgaWYgYW55XG4gICAgaWYgKGRlZi5kZXNlcmlhbGl6ZSkge1xuICAgICAgcmV0dXJuIGRlZi5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gT3IgdHJ5IHVzaW5nIHN1Z2dlc3QgZnVuY3Rpb25cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlVmFsdWVCeVN1Z2dlc3QodmFsdWUsIGRlZiwgb3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyByZXNvbHZlVmFsdWVCeVN1Z2dlc3QoXG4gICAgdmFsdWU6IGFueSxcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICB9XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+ID0gZGVmLmF1dG9jb21wbGV0ZT8uc3VnZ2VzdEZuIHx8IG9wdHM/LmRlZmF1bHRTdWdnZXN0Rm47XG4gICAgaWYgKCFzdWdnZXN0Rm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgJ2Rlc2VyaWFsaXplJyBvciAnYXV0b2NvbXBsZXRlLnN1Z2dlc3RGbicgaW4gdGhlIGZpZWxkIGRlZmluaXRpb24gJyR7ZGVmLmtleX0nLiBDYW5ub3QgZGVzZXJpYWxpemUgdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdmFsdWU7IC8vIFNraXBcbiAgICB9XG4gICAgbGV0IHNlYXJjaFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgZmlsdGVyID0geyAuLi5kZWYuYXV0b2NvbXBsZXRlPy5maWx0ZXIgfTsgLy8gQ29wZSBmaWx0ZXJcbiAgICBjb25zdCBqb2luQXR0cmlidXRlID0gZmlsdGVyPy5qb2luQXR0cmlidXRlIHx8ICdpZCc7XG4gICAgaWYgKGpvaW5BdHRyaWJ1dGUgPT09ICdpZCcpIHtcbiAgICAgIGZpbHRlci5pZCA9ICt2YWx1ZTtcbiAgICAgIGZpbHRlci5vZmZzZXQgPSAwO1xuICAgICAgZmlsdGVyLnNpemUgPSAxO1xuICAgICAgc2VhcmNoVmFsdWUgPSAnKic7XG4gICAgICAvLyBERUJVR1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIFJlc29sdmluZyBlbnRpdHkgd2hlcmUgaWQ9JHt2YWx1ZX0uLi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyLnNlYXJjaEF0dHJpYnV0ZSA9IGpvaW5BdHRyaWJ1dGU7XG4gICAgICAvLyBERUJVR1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIFJlc29sdmluZyBlbnRpdHkgd2hlcmUgJHtqb2luQXR0cmlidXRlfT0ke3NlYXJjaFZhbHVlfS4uLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBGZXRjaCBlbnRpdHksIHVzaW5nIHRoZSBzdWdnZXN0IGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBzdWdnZXN0Rm4oc2VhcmNoVmFsdWUsIGZpbHRlciwgam9pbkF0dHJpYnV0ZSwgJ2FzYycsIHtcbiAgICAgICAgd2l0aFRvdGFsOiBmYWxzZSxcbiAgICAgICAgLi4ub3B0cz8uZGVmYXVsdFN1Z2dlc3RPcHRpb25zLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCByZXN1bHQgYXJyYXlcbiAgICAgIGNvbnN0IGRhdGEgPSBBcnJheS5pc0FycmF5KHJlcykgPyByZXMgOiByZXMuZGF0YTtcblxuICAgICAgY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdICR7ZGF0YS5sZW5ndGh9IGVudGl0aWVzIGZvdW5kOiBgLCBkYXRhKTtcblxuICAgICAgLy8gT2ssIHdlIGZpbmQgaXQgPT4gc3RvcCBoZXJlXG4gICAgICBpZiAoZGF0YT8ubGVuZ3RoKSByZXR1cm4gZGF0YVswXTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYENhbm5vdCBmZXRjaCBlbnRpdHkgZnJvbSAke2RlZi5rZXl9PSR7dmFsdWV9YCwgZXJyKTtcbiAgICAgIC8vIENvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBtaXNzaW5nIHJlc3VsdFxuICAgIGNvbnN0IHVucmVzb2x2ZWRFbnRpdHkgPSA8YW55PntcbiAgICAgIFtqb2luQXR0cmlidXRlXTogdmFsdWUsXG4gICAgfTtcblxuICAgIC8vIEZpbGwgYXR0cmlidXRlcyB3aXRoICc/PydcbiAgICBkZWYuYXV0b2NvbXBsZXRlPy5hdHRyaWJ1dGVzPy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHVucmVzb2x2ZWRFbnRpdHlba2V5XSA9IHVucmVzb2x2ZWRFbnRpdHlba2V5XSA/PyAnJztcbiAgICB9KTtcblxuICAgIHJldHVybiB1bnJlc29sdmVkRW50aXR5O1xuICB9XG59XG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJckosTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBb0IsRUFBRSxXQUFtQyxFQUFFLElBQWtDO1FBQ2hILE9BQU8sQ0FDTCxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDYixzQkFBc0I7YUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1lBQ0YscUJBQXFCO2FBQ3BCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFD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Z0JBQzFFLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixHQUFHLElBQUksRUFBRSxxQkFBcUI7YUFDL0IsQ0FBQyxDQUFDO1lBRUgsbUJBQW1CO1lBQ25CLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUVqRCxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsTUFBTSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUxRSw4QkFBOEI7WUFDOUIsSUFBSSxJQUFJLEVBQUUsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkUsV0FBVztRQUNiLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBUTtZQUM1QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSztTQUM1QixDQUFDO1FBRUYsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydGllc01hcCwgUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWxPckJsYW5rLCBpc1Byb21pc2UsIHRvQm9vbGVhbiwgdG9OdW1iZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucywgU3VnZ2VzdEZuIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnRpZXNVdGlscyB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBgUHJvcGVydHlgIG9iamVjdHMgaW50byBhIGBQcm9wZXJ0aWVzTWFwYCBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlbXX0gW3NvdXJjZXNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgcHJvcGVydGllcyB0byBiZSBjb252ZXJ0ZWQuXG4gICAqIEBwYXJhbSB7Rm9ybUZpZWxkRGVmaW5pdGlvbltdfSBbZGVmaW5pdGlvbnNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgZm9ybSBmaWVsZCBkZWZpbml0aW9ucyB0byBoZWxwIHdpdGggdGhlIGNvbnZlcnNpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBPcHRpb25hbCBjb25maWd1cmF0aW9ucy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5vbWl0TmlsT3JCbGFua10gLSBJZiB0cnVlLCBwcm9wZXJ0aWVzIHdpdGggbmlsIG9yIGJsYW5rIHZhbHVlcyB3aWxsIGJlIG9taXR0ZWQuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqIEByZXR1cm4ge1Byb3BlcnRpZXNNYXB9IC0gVGhlIHJlc3VsdGluZyBgUHJvcGVydGllc01hcGAgb2JqZWN0LlxuICAgKi9cbiAgc3RhdGljIGFycmF5QXNPYmplY3Qoc291cmNlcz86IFByb3BlcnR5W10sIGRlZmluaXRpb25zPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdLCBvcHRzPzogeyBvbWl0TmlsT3JCbGFuazogYm9vbGVhbiB9KTogUHJvcGVydGllc01hcCB7XG4gICAgcmV0dXJuIChcbiAgICAgIChzb3VyY2VzIHx8IFtdKVxuICAgICAgICAvLyBTZXJpYWxpemUgZWFjaCBpdGVtXG4gICAgICAgIC5tYXAoKHNvdXJjZSkgPT4ge1xuICAgICAgICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IGtleSA9IEFwcFByb3BlcnR5VXRpbHMua2V5KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKCFrZXkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnM/LmZpbmQoKGQpID0+IGQua2V5ID09PSBrZXkpO1xuICAgICAgICAgIHJldHVybiBBcHBQcm9wZXJ0eVV0aWxzLmFzT2JqZWN0KHNvdXJjZSwgZGVmKTtcbiAgICAgICAgfSlcbiAgICAgICAgLy8gRmlsbCBhIEpTT04gb2JqZWN0XG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKHJlcywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhpdGVtPy5rZXkpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgLy8gU2tpcCBpZiBuaWwgb3IgYmxhbmsgdmFsdWVcbiAgICAgICAgICAgIGlmIChvcHRzPy5vbWl0TmlsT3JCbGFuayAhPT0gZmFsc2UgJiYgaXNOaWxPckJsYW5rKGl0ZW0udmFsdWUpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgcmVzW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgPFByb3BlcnRpZXNNYXA+e31cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGFuIGFycmF5IG9mIHByb3BlcnRpZXMgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0LCBvcHRpb25hbGx5IGFwcGx5aW5nIGRlZmluaXRpb25zIHRvIHRoZSBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnRpZXNNYXB9IFtzb3VyY2VzXSAtIFRoZSBzb3VyY2Ugb2JqZWN0IGZyb20gd2hpY2ggcHJvcGVydGllcyBhcmUgdG8gYmUgZXh0cmFjdGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb25bXX0gW2RlZmluaXRpb25zXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIGRlZmluaXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGV4dHJhY3RlZCBwcm9wZXJ0aWVzLlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eVtdIHwgUHJvbWlzZTxQcm9wZXJ0eVtdPn0gQW4gYXJyYXkgb2YgcHJvcGVydGllcyBnZW5lcmF0ZWQgZnJvbSB0aGUgc291cmNlIG9iamVjdCwgb3IgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGF0IGFycmF5LlxuICAgKi9cbiAgc3RhdGljIGFycmF5RnJvbU9iamVjdChzb3VyY2VzPzogUHJvcGVydGllc01hcCB8IFByb3BlcnR5W10sIGRlZmluaXRpb25zPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdKTogUHJvcGVydHlbXSB8IFByb21pc2U8UHJvcGVydHlbXT4ge1xuICAgIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICA/IHNvdXJjZXMuc2xpY2UoKVxuICAgICAgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VzIHx8IHt9KS5tYXAoKGtleSkgPT4gKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdmFsdWU6IHNvdXJjZXNba2V5XSxcbiAgICAgICAgfSkpO1xuICAgIGNvbnN0IGpvYnMgPSBbXTtcbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRlZmluaXRpb25zKSkge1xuICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICAgICAgLy8gRmluZCBkZWZpbml0aW9uXG4gICAgICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zLmZpbmQoKGRlZikgPT4gZGVmLmtleSA9PT0gdGFyZ2V0LmtleSk7XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZnJvbSBzdHJpbmdcbiAgICAgICAgbGV0IHByb3BlcnR5T3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5mcm9tT2JqZWN0KHRhcmdldCwgZGVmKTtcbiAgICAgICAgaWYgKGlzUHJvbWlzZShwcm9wZXJ0eU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICBqb2JzLnB1c2gocHJvcGVydHlPclByb21pc2UudGhlbigocHJvcGVydHkpID0+ICh0YXJnZXQudmFsdWUgPSBwcm9wZXJ0eS52YWx1ZSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRhcmdldCB2YWx1ZVxuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IHByb3BlcnR5T3JQcm9taXNlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFzIHByb21pc2UsIGlmIG5lZWRcbiAgICBpZiAoam9icy5sZW5ndGgpIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKCgpID0+IHRhcmdldHMpO1xuXG4gICAgcmV0dXJuIHRhcmdldHM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnR5VXRpbHMge1xuICBzdGF0aWMga2V5KHNvdXJjZTogUHJvcGVydHkgfCBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoc291cmNlLmtleSBhcyBhbnkpPy5rZXkgPz8gc291cmNlLmtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gc291cmNlIHRvIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEga2V5LXZhbHVlIHBhaXIuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHk8YW55PiB8IGFueX0gc291cmNlIC0gVGhlIHNvdXJjZSBwcm9wZXJ0eSBvciBhbnkgdmFsdWUgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb259IFtkZWZdIC0gVGhlIGZvcm0gZmllbGQgZGVmaW5pdGlvbiB1c2VkIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT0naWQnXSAtIFRoZSBhdHRyaWJ1dGUgdG8gYmUgdXNlZCBmb3IgZGVmYXVsdCBzZXJpYWxpemF0aW9uLlxuICAgKiBAcmV0dXJuIHt7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWR9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIGtleS12YWx1ZSBwYWlyLCBvciB1bmRlZmluZWQgaWYgdGhlIHNvdXJjZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBzdGF0aWMgYXNPYmplY3QoXG4gICAgc291cmNlOiBQcm9wZXJ0eTxhbnk+IHwgYW55LFxuICAgIGRlZj86IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIC8vIFNlcmlhbGl6ZSBrZXkgKFdBUk5JTkc6IGNhbiBiZSBhbiBvYmplY3QsIHdoZW4gdXNpbmcgYXV0b2NvbXBsZXRlIGZpZWxkIHRvIGVkaXQgYSBrZXkgLSBzZWUgQXBwUHJvcGVydGllc0Zvcm0pXG4gICAgY29uc3Qga2V5ID0gQXBwUHJvcGVydHlVdGlscy5rZXkoc291cmNlKTtcblxuICAgIC8vIFByZXBhcmUgYSBkZXNlcmlhbGl6ZSBmdW5jdGlvblxuICAgIGNvbnN0IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9IGRlZi5zZXJpYWxpemVBdHRyaWJ1dGUgPz8gb3B0cz8uZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyAnaWQnO1xuICAgIGNvbnN0IHNlcmlhbGl6ZUZuID1cbiAgICAgIGRlZj8uc2VyaWFsaXplIHx8XG4gICAgICAoKHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZVZhbHVlID0gZ2V0UHJvcGVydHlCeVBhdGgodmFsdWUsIHNlcmlhbGl6ZUF0dHJpYnV0ZSwgdmFsdWUgLypkZWZhdWx0IHZhbHVlKi8pO1xuICAgICAgICBpZiAoaXNOaWwoc2VyaWFsaXplVmFsdWUpKSByZXR1cm4gc2VyaWFsaXplVmFsdWU7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzZXJpYWxpemVWYWx1ZSk7XG4gICAgICB9KTtcblxuICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nO1xuXG4gICAgLy8gVmFsdWUgaXMgYW4gYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UudmFsdWUpKSB7XG4gICAgICB2YWx1ZVN0ciA9IHNvdXJjZS52YWx1ZS5tYXAoc2VyaWFsaXplRm4pLmZpbHRlcihpc05vdE5pbE9yQmxhbmspLmpvaW4oJywnKTtcbiAgICB9XG4gICAgLy8gQW55IG90aGVyIGNhc2VcbiAgICBlbHNlIHtcbiAgICAgIHZhbHVlU3RyID0gc2VyaWFsaXplRm4oc291cmNlLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogdmFsdWVTdHIgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT2JqZWN0KFxuICAgIHNvdXJjZTogUHJvcGVydHk8c3RyaW5nPixcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBQcm9wZXJ0eTxhbnk+IHwgUHJvbWlzZTxQcm9wZXJ0eTxhbnk+PiB7XG4gICAgaWYgKCFzb3VyY2U/LmtleSB8fCBpc05pbChzb3VyY2UudmFsdWUpIHx8ICFkZWYpIHJldHVybiBzb3VyY2U7IC8vIFNraXAgaWYgbm8ga2V5XG5cbiAgICAvLyBDTG9uZSB0aGUgc291cmNlXG4gICAgY29uc3QgdGFyZ2V0OiBQcm9wZXJ0eTxhbnk+ID0geyBrZXk6IHNvdXJjZS5rZXksIHZhbHVlOiBzb3VyY2UudmFsdWUgfTtcblxuICAgIGNvbnN0IGpvYnM6IFByb21pc2U8YW55PltdID0gW107XG4gICAgLy8gUmVzb2x2ZSB2YWx1ZVxuICAgIHN3aXRjaCAoZGVmLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICB0YXJnZXQudmFsdWUgPSB0b0Jvb2xlYW4oc291cmNlLnZhbHVlLCB0b0Jvb2xlYW4oZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdG9OdW1iZXIoc291cmNlLnZhbHVlLCB0b051bWJlcihkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW51bXMnOlxuICAgICAgICBjb25zdCBrZXlzID0gKHRhcmdldC52YWx1ZSB8fCAnJykudHJpbSgpLnNwbGl0KC9bfCxdKy8pO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGtleXMpKSB7XG4gICAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IGtleXMubWFwKChrZXkpID0+XG4gICAgICAgICAgICAoZGVmLnZhbHVlcyBhcyAoc3RyaW5nIHwgUHJvcGVydHkpW10pPy5maW5kKChkZWZWYWx1ZSkgPT4gZGVmVmFsdWUgJiYga2V5ID09PSAoZGVmVmFsdWVbJ2tleSddIHx8IGRlZlZhbHVlKSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IGVudW1WYWx1ZXMgfHwgbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXR5JzpcbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZW50aXR5IChlLmcuIGxvYWQgZW50aXR5IGZyb20gdGhlIGlkKVxuICAgICAgICBjb25zdCB2YWx1ZU9yUHJvbWlzZSA9IEFwcFByb3BlcnR5VXRpbHMucmVzb2x2ZUVudGl0eSh0YXJnZXQudmFsdWUsIGRlZiwgb3B0cyk7XG4gICAgICAgIGlmIChpc1Byb21pc2UodmFsdWVPclByb21pc2UpKSB7XG4gICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgdmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXRpZXMnOlxuICAgICAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGFycmF5XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKVxuICAgICAgICAgID8gc291cmNlLnZhbHVlLnNsaWNlKCkgLy8gQ29weVxuICAgICAgICAgIDogdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gc291cmNlLnZhbHVlXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKCh2KSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsT3JCbGFuaylcbiAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZWFjaCBzdWItdmFsdWVcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgc3ViVmFsdWUgb2YgdGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgICAgLy8gRGVzZXJpYWxpemUgc3ViLXZhbHVlXG4gICAgICAgICAgY29uc3Qgc3ViVmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnJlc29sdmVFbnRpdHkoc3ViVmFsdWUsIGRlZiwgb3B0cyk7XG5cbiAgICAgICAgICAvLyBBZGQgcHJvbWlzZSB0byBqb2JzXG4gICAgICAgICAgaWYgKGlzUHJvbWlzZShzdWJWYWx1ZU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIGpvYnMucHVzaChcbiAgICAgICAgICAgICAgc3ViVmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3ViIHZhbHVlXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlW2ZpbmFsSW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgc3ViIHZhbHVlXG4gICAgICAgICAgICB0YXJnZXQudmFsdWVbaW5kZXhdID0gc3ViVmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLyFcXCBSZXR1cm4gYXMgcHJvbWlzZSBvbmx5IGlmIG5lZWQgKGxldCBmdW5jdGlvbiBzeW5jIHdoZW4gcG9zc2libGUpXG4gICAgaWYgKGpvYnMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGwoam9icykudGhlbigoKSA9PiB0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlc29sdmVFbnRpdHkoXG4gICAgdmFsdWU6IGFueSxcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBhbnkgfCBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBkZXNlcmlhbGl6ZSBmdW5jdGlvbiwgaWYgYW55XG4gICAgaWYgKGRlZi5kZXNlcmlhbGl6ZSkge1xuICAgICAgcmV0dXJuIGRlZi5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gT3IgdHJ5IHVzaW5nIHN1Z2dlc3QgZnVuY3Rpb25cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRW50aXR5QnlTdWdnZXN0KHZhbHVlLCBkZWYsIG9wdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgcmVzb2x2ZUVudGl0eUJ5U3VnZ2VzdChcbiAgICB2YWx1ZTogYW55LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzoge1xuICAgICAgZGVmYXVsdFN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PjtcbiAgICAgIGRlZmF1bHRTdWdnZXN0T3B0aW9ucz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zO1xuICAgICAgZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgICB9XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+ID0gZGVmLmF1dG9jb21wbGV0ZT8uc3VnZ2VzdEZuIHx8IG9wdHM/LmRlZmF1bHRTdWdnZXN0Rm47XG4gICAgaWYgKCFzdWdnZXN0Rm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgJ2Rlc2VyaWFsaXplJyBvciAnYXV0b2NvbXBsZXRlLnN1Z2dlc3RGbicgaW4gdGhlIGZpZWxkIGRlZmluaXRpb24gJyR7ZGVmLmtleX0nLiBDYW5ub3QgZGVzZXJpYWxpemUgdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdmFsdWU7IC8vIFNraXBcbiAgICB9XG4gICAgbGV0IHNlYXJjaFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgZmlsdGVyID0geyAuLi5kZWYuYXV0b2NvbXBsZXRlPy5maWx0ZXIgfTsgLy8gQ29wZSBmaWx0ZXJcbiAgICBjb25zdCBzZXJpYWxpemVBdHRyaWJ1dGUgPSBkZWYuc2VyaWFsaXplQXR0cmlidXRlID8/IG9wdHMuZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyAnaWQnO1xuICAgIGlmIChzZXJpYWxpemVBdHRyaWJ1dGUgPT09ICdpZCcgfHwgc2VyaWFsaXplQXR0cmlidXRlID09PSAnbGFiZWwnKSB7XG4gICAgICBmaWx0ZXJbc2VyaWFsaXplQXR0cmlidXRlXSA9IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9PT0gJ2lkJyA/ICt2YWx1ZSA6IHZhbHVlO1xuICAgICAgZmlsdGVyLm9mZnNldCA9IDA7XG4gICAgICBmaWx0ZXIuc2l6ZSA9IDE7XG4gICAgICBzZWFyY2hWYWx1ZSA9ICcqJztcbiAgICAgIC8vIERFQlVHXG4gICAgICBjb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gUmVzb2x2aW5nIGVudGl0eSB3aGVyZSBpZD0ke3ZhbHVlfS4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIuc2VhcmNoQXR0cmlidXRlID0gc2VyaWFsaXplQXR0cmlidXRlO1xuICAgICAgLy8gREVCVUdcbiAgICAgIGNvbnNvbGUuZGVidWcoYFtwcm9wZXJ0aWVzLXV0aWxzXSBSZXNvbHZpbmcgZW50aXR5IHdoZXJlICR7c2VyaWFsaXplQXR0cmlidXRlfT0ke3NlYXJjaFZhbHVlfS4uLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBGZXRjaCBlbnRpdHksIHVzaW5nIHRoZSBzdWdnZXN0IGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBzdWdnZXN0Rm4oc2VhcmNoVmFsdWUsIGZpbHRlciwgc2VyaWFsaXplQXR0cmlidXRlLCAnYXNjJywge1xuICAgICAgICB3aXRoVG90YWw6IGZhbHNlLFxuICAgICAgICAuLi5vcHRzPy5kZWZhdWx0U3VnZ2VzdE9wdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgLy8gR2V0IHJlc3VsdCBhcnJheVxuICAgICAgY29uc3QgZGF0YSA9IEFycmF5LmlzQXJyYXkocmVzKSA/IHJlcyA6IHJlcy5kYXRhO1xuXG4gICAgICBjb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gJHtkYXRhLmxlbmd0aH0gZW50aXRpZXMgZm91bmQ6IGAsIGRhdGEpO1xuXG4gICAgICAvLyBPaywgd2UgZmluZCBpdCA9PiBzdG9wIGhlcmVcbiAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHJldHVybiBkYXRhWzBdO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgQ2Fubm90IGZldGNoIGVudGl0eSBmcm9tICR7ZGVmLmtleX09JHt2YWx1ZX1gLCBlcnIpO1xuICAgICAgLy8gQ29udGludWVcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG1pc3NpbmcgcmVzdWx0XG4gICAgY29uc3QgdW5yZXNvbHZlZEVudGl0eSA9IDxhbnk+e1xuICAgICAgW3NlcmlhbGl6ZUF0dHJpYnV0ZV06IHZhbHVlLFxuICAgIH07XG5cbiAgICAvLyBGaWxsIGF0dHJpYnV0ZXMgd2l0aCAnPz8nXG4gICAgZGVmLmF1dG9jb21wbGV0ZT8uYXR0cmlidXRlcz8uZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICB1bnJlc29sdmVkRW50aXR5W2tleV0gPSB1bnJlc29sdmVkRW50aXR5W2tleV0gPz8gJyc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5yZXNvbHZlZEVudGl0eTtcbiAgfVxufVxuIl19
@@ -22,4 +22,4 @@ export class FormFieldValuesHolder {
22
22
  return isNotNil(data[definition.key]) ? data[definition.key] : definition.defaultValue || undefined;
23
23
  }
24
24
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFvRHhDLE1BQU0sT0FBZ0IscUJBQXFCO0lBQ3pDLFlBQVksQ0FBQyxJQUFlLEVBQUUsVUFBK0I7UUFDM0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFTLEVBQUUsVUFBK0I7UUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUyxFQUFFLFVBQStCO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDO1FBQ3BGLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTLEVBQUUsVUFBK0I7UUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFFRCxHQUFHLENBQWEsSUFBUyxFQUFFLFVBQStCO1FBQ3hELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUM7SUFDdEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0TWFwLCBQcm9wZXJ0eSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGlzTm90TmlsIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZyB9IGZyb20gJy4uL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnJztcbmltcG9ydCB7IFVzZXJQcm9maWxlTGFiZWwgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5pbXBvcnQgeyBGbG9hdExhYmVsVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIERpc3BsYXlGbiA9IChvYmo6IGFueSkgPT4gc3RyaW5nO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIEVxdWFsc0ZuID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW47XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29tcGFyZUZuID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG51bWJlcjtcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBGb3JtRmllbGRUeXBlID1cbiAgfCAnaW50ZWdlcidcbiAgfCAnZG91YmxlJ1xuICB8ICdib29sZWFuJ1xuICB8ICdzdHJpbmcnXG4gIHwgJ2VudW0nXG4gIHwgJ2VudW1zJ1xuICB8ICdjb2xvcidcbiAgfCAncGVlcidcbiAgfCAnZW50aXR5J1xuICB8ICdlbnRpdGllcydcbiAgfCAnZGF0ZSdcbiAgfCAnZGF0ZVRpbWUnO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBBcHBGbG9hdExhYmVsVHlwZSA9IEZsb2F0TGFiZWxUeXBlIHwgJ25ldmVyJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZvcm1GaWVsZERlZmluaXRpb248SyA9IHN0cmluZywgVCA9IEZvcm1GaWVsZFR5cGUsIEUgPSBhbnk+IHtcbiAga2V5OiBLO1xuICB0eXBlOiBUO1xuICBsYWJlbDogc3RyaW5nO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIG1heGltdW1OdW1iZXJEZWNpbWFscz86IG51bWJlcjtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBpc1RyYW5zaWVudD86IGJvb2xlYW47IC8vIFVzZWZ1bCBvbmx5IGZvciByZW1vdGUgY29uZmlndXJhdGlvblxuICB2YWx1ZXM/OiAoc3RyaW5nIHwgUHJvcGVydHkpW10gfCBJbmplY3Rpb25Ub2tlbjwoc3RyaW5nIHwgUHJvcGVydHkpW10+O1xuICBhdXRvY29tcGxldGU/OiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxFPjtcbiAgZGVzZXJpYWxpemU/OiAodmFsdWU6IHN0cmluZykgPT4gRSB8IFByb21pc2U8RT47XG4gIHNlcmlhbGl6ZT86ICh2YWx1ZTogRSkgPT4gc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgZXh0cmE/OiB7XG4gICAgW2tleTogc3RyaW5nXToge1xuICAgICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgfTtcbiAgfTtcbiAgbWluUHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG59XG5leHBvcnQgZGVjbGFyZSB0eXBlIEZvcm1GaWVsZERlZmluaXRpb25NYXAgPSBPYmplY3RNYXA8Rm9ybUZpZWxkRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb3JtRmllbGRWYWx1ZXNIb2xkZXIge1xuICBnZXRBc0Jvb2xlYW4oZGF0YTogT2JqZWN0TWFwLCBkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICByZXR1cm4gaXNOb3ROaWwodmFsdWUpID8gdmFsdWUgJiYgdmFsdWUgIT09ICdmYWxzZScgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBc0ludChkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoZGF0YSwgZGVmaW5pdGlvbik7XG4gICAgcmV0dXJuIGlzTm90TmlsKHZhbHVlKSA/IHBhcnNlSW50KHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEFzTnVtYmVycyhkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBudW1iZXJbXSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJykubWFwKHBhcnNlRmxvYXQpIHx8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gaXNOb3ROaWwodmFsdWUpID8gW3BhcnNlRmxvYXQodmFsdWUpXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEFzU3RyaW5ncyhkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICByZXR1cm4gKHZhbHVlICYmIHZhbHVlLnNwbGl0KCcsJykpIHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldDxUID0gc3RyaW5nPihkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBUIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoZGF0YVtkZWZpbml0aW9uLmtleV0pID8gZGF0YVtkZWZpbml0aW9uLmtleV0gOiBkZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSB8fCB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFxRXhDLE1BQU0sT0FBZ0IscUJBQXFCO0lBQ3pDLFlBQVksQ0FBQyxJQUFlLEVBQUUsVUFBK0I7UUFDM0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFTLEVBQUUsVUFBK0I7UUFDakQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUyxFQUFFLFVBQStCO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksU0FBUyxDQUFDO1FBQ3BGLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFTLEVBQUUsVUFBK0I7UUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ2xELENBQUM7SUFFRCxHQUFHLENBQWEsSUFBUyxFQUFFLFVBQStCO1FBQ3hELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUM7SUFDdEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0TWFwLCBQcm9wZXJ0eSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGlzTm90TmlsIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZyB9IGZyb20gJy4uL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnJztcbmltcG9ydCB7IFVzZXJQcm9maWxlTGFiZWwgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5pbXBvcnQgeyBGbG9hdExhYmVsVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIERpc3BsYXlGbiA9IChvYmo6IGFueSkgPT4gc3RyaW5nO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIEVxdWFsc0ZuID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW47XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29tcGFyZUZuID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG51bWJlcjtcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBGb3JtRmllbGRUeXBlID1cbiAgfCAnaW50ZWdlcidcbiAgfCAnZG91YmxlJ1xuICB8ICdib29sZWFuJ1xuICB8ICdzdHJpbmcnXG4gIHwgJ2VudW0nXG4gIHwgJ2VudW1zJ1xuICB8ICdjb2xvcidcbiAgfCAncGVlcidcbiAgfCAnZW50aXR5J1xuICB8ICdlbnRpdGllcydcbiAgfCAnZGF0ZSdcbiAgfCAnZGF0ZVRpbWUnO1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBBcHBGbG9hdExhYmVsVHlwZSA9IEZsb2F0TGFiZWxUeXBlIHwgJ25ldmVyJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEZvcm1GaWVsZERlZmluaXRpb248SyA9IHN0cmluZywgVCA9IEZvcm1GaWVsZFR5cGUsIEUgPSBhbnk+IHtcbiAga2V5OiBLO1xuICB0eXBlOiBUO1xuICBsYWJlbDogc3RyaW5nO1xuICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgbWF4VmFsdWU/OiBudW1iZXI7XG4gIG1heGltdW1OdW1iZXJEZWNpbWFscz86IG51bWJlcjtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBpc1RyYW5zaWVudD86IGJvb2xlYW47IC8vIFVzZWZ1bCBvbmx5IGZvciByZW1vdGUgY29uZmlndXJhdGlvblxuICB2YWx1ZXM/OiAoc3RyaW5nIHwgUHJvcGVydHkpW10gfCBJbmplY3Rpb25Ub2tlbjwoc3RyaW5nIHwgUHJvcGVydHkpW10+O1xuICBhdXRvY29tcGxldGU/OiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxFPjtcblxuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgZXh0cmE/OiB7XG4gICAgW2tleTogc3RyaW5nXToge1xuICAgICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgfTtcbiAgfTtcbiAgbWluUHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG5cbiAgLyoqXG4gICAqIFVzZSBmb3IgYXV0b21hdGljIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIHRvL2Zyb20gc3RyaW5nIChlZy4gdXNpbmcgdGhlIGF1dG9jb21wbGV0ZSBzdWdnZXN0Rm4pLlxuICAgKiBEZWZhdWx0IHZhbHVlOiAnaWQnXG4gICAqL1xuICBzZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSB0byBzZXJpYWxpemUgYW4gZW50aXR5IGludG8gc3RyaW5nIChzZWUgQXBwUHJvcGVydGllc1V0aWxzLioqKmFzT2JqZWN0KCkpXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgc2VyaWFsaXplPzogKHZhbHVlOiBFKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZSB0byBkZXNlcmlhbGl6ZSBhIHN0cmluZyBpbnRvIGFuIGVudGl0eSAoc2VlIEFwcFByb3BlcnRpZXNVdGlscy4qKipmcm9tT2JqZWN0KCkpXG4gICAqIEBwYXJhbSB2YWx1ZVxuICAgKi9cbiAgZGVzZXJpYWxpemU/OiAodmFsdWU6IHN0cmluZykgPT4gRSB8IFByb21pc2U8RT47XG59XG5leHBvcnQgZGVjbGFyZSB0eXBlIEZvcm1GaWVsZERlZmluaXRpb25NYXAgPSBPYmplY3RNYXA8Rm9ybUZpZWxkRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb3JtRmllbGRWYWx1ZXNIb2xkZXIge1xuICBnZXRBc0Jvb2xlYW4oZGF0YTogT2JqZWN0TWFwLCBkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICByZXR1cm4gaXNOb3ROaWwodmFsdWUpID8gdmFsdWUgJiYgdmFsdWUgIT09ICdmYWxzZScgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBc0ludChkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoZGF0YSwgZGVmaW5pdGlvbik7XG4gICAgcmV0dXJuIGlzTm90TmlsKHZhbHVlKSA/IHBhcnNlSW50KHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEFzTnVtYmVycyhkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBudW1iZXJbXSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlLnNwbGl0KCcsJykubWFwKHBhcnNlRmxvYXQpIHx8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gaXNOb3ROaWwodmFsdWUpID8gW3BhcnNlRmxvYXQodmFsdWUpXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEFzU3RyaW5ncyhkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICByZXR1cm4gKHZhbHVlICYmIHZhbHVlLnNwbGl0KCcsJykpIHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldDxUID0gc3RyaW5nPihkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBUIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoZGF0YVtkZWZpbml0aW9uLmtleV0pID8gZGF0YVtkZWZpbml0aW9uLmtleV0gOiBkZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSB8fCB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -43,4 +43,4 @@ export class MatAutocompleteConfigHolder {
43
43
  return this.fields[fieldName] || this.add(fieldName);
44
44
  }
45
45
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBa0QxRSxNQUFNLE9BQU8sMkJBQTJCO0lBUTVCO0lBUFYsTUFBTSxHQUVGLEVBQUUsQ0FBQztJQUVQLGlCQUFpQixDQUFnRTtJQUVqRixZQUNVLE9BRVA7UUFGTyxZQUFPLEdBQVAsT0FBTyxDQUVkO1FBRUQsZ0VBQWdFO1FBQ2hFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxFQUFFLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELEdBQUcsQ0FBbUIsU0FBaUIsRUFBRSxPQUE4QztRQUNyRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxHQUFHLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELE9BQU8sR0FBRyxPQUFPLElBQW9DLEVBQUUsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBb0IsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlGLHVEQUF1RDtRQUN2RCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pILE1BQU0sTUFBTSxHQUFlO1lBQ3pCLGVBQWUsRUFBRSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3BFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDaEUsR0FBRyxPQUFPLENBQUMsTUFBTTtTQUNsQixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLHlCQUF5QixDQUFDLGFBQWEsQ0FBQztRQUV6RSxNQUFNLE1BQU0sR0FBK0I7WUFDekMsR0FBRyxPQUFPO1lBQ1YsVUFBVSxFQUFFLGNBQWM7WUFDMUIsU0FBUztZQUNULE1BQU07WUFDTixXQUFXO1lBQ1gsTUFBTTtTQUNQLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNoQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsR0FBRyxDQUFVLFNBQWlCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLEdBQUcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFtQyxDQUFDO0lBQzFGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvYWRSZXN1bHQsIFN1Z2dlc3RGbiwgU3VnZ2VzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVGaWVsZFV0aWxzIH0gZnJvbSAnLi9tYXRlcmlhbC5hdXRvY29tcGxldGUudXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGlzcGxheUZuLCBFcXVhbHNGbiB9IGZyb20gJy4uLy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWc8VCA9IGFueSwgRiA9IGFueT4ge1xuICBhdHRyaWJ1dGVzPzogc3RyaW5nW107XG4gIHN1Z2dlc3RGbj86ICh2YWx1ZTogYW55LCBvcHRpb25zPzogYW55KSA9PiBQcm9taXNlPFRbXSB8IExvYWRSZXN1bHQ8VD4+O1xuICBmaWx0ZXI/OiBQYXJ0aWFsPEY+O1xuICBpdGVtcz86IE9ic2VydmFibGU8VFtdPiB8IFRbXTtcbiAgY29sdW1uU2l6ZXM/OiAobnVtYmVyIHwgJ2F1dG8nIHwgdW5kZWZpbmVkKVtdO1xuICBjb2x1bW5OYW1lcz86IChzdHJpbmcgfCB1bmRlZmluZWQpW107XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgZGlzcGxheVdpdGg/OiBEaXNwbGF5Rm47XG4gIGRpc3BsYXlXaXRoU2VwYXJhdG9yPzogc3RyaW5nOyAvLyBVc2UgdG8gc3BsaXQgc2VhcmNoVGV4dCBiZWZvcmUgc2VhcmNoaW5nXG4gIHNwbGl0U2VhcmNoVGV4dD86IGJvb2xlYW47IC8vIFNwbGl0IHNlYXJjaFRleHQgYmVmb3JlIHNlYXJjaGluZz8gKHdpbGwgdXNlIHRoZSBmaXJzdCB2YWx1ZSlcbiAgdHJpbVNlYXJjaFRleHQ/OiBib29sZWFuOyAvLyBUcmltIHNlYXJjaFRleHQgYmVmb3JlIHNlYXJjaGluZz9cbiAgZXF1YWxzPzogRXF1YWxzRm47IC8vIFVzZWQgYnkgPG1hdC1jaGlwcy1maWVsZD5cbiAgc2hvd0FsbE9uRm9jdXM/OiBib29sZWFuO1xuICBzaG93UGFuZWxPbkZvY3VzPzogYm9vbGVhbjtcbiAgbW9iaWxlPzogYm9vbGVhbjtcbiAgZGVib3VuY2VUaW1lPzogbnVtYmVyO1xuICBzdWdnZXN0TGVuZ3RoVGhyZXNob2xkPzogbnVtYmVyO1xuICBoaWdobGlnaHRBY2NlbnQ/OiBib29sZWFuO1xuICBhcHBseUltcGxpY2l0VmFsdWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgc2VsZWN0IGlucHV0IGNvbnRlbnQgKGRlc2t0b3Agb25seSlcbiAgICovXG4gIHNlbGVjdElucHV0Q29udGVudE9uRm9jdXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDbGFzcyB0byBhcHBseSB0byB0aGUgYGRpdi5tYXQtbWRjLXNlbGVjdC1wYW5lbGBcbiAgICovXG4gIHBhbmVsQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93IHRvIGZpeCBwYW5lbCB3aWR0aCAoZS5nLiAnNTAwcHgnIG9yICcxMDB2dycpXG4gICAqL1xuICBwYW5lbFdpZHRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYHBhbmVsQ2xhc3NgIGluc3RlYWRcbiAgICovXG4gIGNsYXNzPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWF0QXV0b2NvbXBsZXRlRmllbGRBZGRPcHRpb25zPFQgPSBhbnksIEYgPSBhbnk+IGV4dGVuZHMgUGFydGlhbDxNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxULCBGPj4ge1xuICBzZXJ2aWNlPzogU3VnZ2VzdFNlcnZpY2U8VCwgRj47XG59XG5cbmV4cG9ydCBjbGFzcyBNYXRBdXRvY29tcGxldGVDb25maWdIb2xkZXIge1xuICBmaWVsZHM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZztcbiAgfSA9IHt9O1xuXG4gIGdldFVzZXJBdHRyaWJ1dGVzOiAoZmllbGROYW1lOiBzdHJpbmcsIGRlZmF1bHRBdHRyaWJ1dGVzPzogc3RyaW5nW10pID0+IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3B0aW9ucz86IHtcbiAgICAgIGdldFVzZXJBdHRyaWJ1dGVzOiAoZmllbGROYW1lOiBzdHJpbmcsIGRlZmF1bHRBdHRyaWJ1dGVzPzogc3RyaW5nW10pID0+IHN0cmluZ1tdO1xuICAgIH1cbiAgKSB7XG4gICAgLy8gU3RvcmUgdGhlIGZ1bmN0aW9uIGZyb20gb3B0aW9ucyAoZS5nLiBnZXQgZnJvbSB1c2VyIHNldHRpbmdzKVxuICAgIC8vIG9yIGNyZWF0ZSBhIGRlZmF1bHQgZnVuY3Rpb25cbiAgICB0aGlzLmdldFVzZXJBdHRyaWJ1dGVzID0gb3B0aW9ucz8uZ2V0VXNlckF0dHJpYnV0ZXMgfHwgKChmaWVsZE5hbWUsIGRlZmF1bHRBdHRyaWJ1dGVzKSA9PiBkZWZhdWx0QXR0cmlidXRlcyB8fCBbJ2xhYmVsJywgJ25hbWUnXSk7XG4gIH1cblxuICBhZGQ8VCA9IGFueSwgRiA9IGFueT4oZmllbGROYW1lOiBzdHJpbmcsIG9wdGlvbnM/OiBNYXRBdXRvY29tcGxldGVGaWVsZEFkZE9wdGlvbnM8VCwgRj4pOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxULCBGPiB7XG4gICAgaWYgKCFmaWVsZE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGFkZCBjb25maWcsIHdpdGggbmFtZTogJyArIChmaWVsZE5hbWUgfHwgJ3VuZGVmaW5lZCcpKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgPE1hdEF1dG9jb21wbGV0ZUZpZWxkQWRkT3B0aW9ucz57fTtcbiAgICBjb25zdCBzdWdnZXN0Rm46IFN1Z2dlc3RGbjxULCBGPiA9IG9wdGlvbnMuc3VnZ2VzdEZuIHx8IChvcHRpb25zLnNlcnZpY2UgJiYgKCh2LCBmKSA9PiBvcHRpb25zLnNlcnZpY2Uuc3VnZ2VzdCh2LCBmKSkpIHx8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5nZXRVc2VyQXR0cmlidXRlcyhmaWVsZE5hbWUsIG9wdGlvbnMuYXR0cmlidXRlcykgfHwgWydsYWJlbCcsICduYW1lJ107XG4gICAgLy8gS2VlcCBvcmlnaW5hbCB0aGUgZnVuY3Rpb24gZnJvbSBvcHRpb25zLCB3aGVuIGV4aXN0c1xuICAgIGNvbnN0IGF0dHJpYnV0ZXNPckZuID0gYXR0cmlidXRlcy5tYXAoKGEsIGluZGV4KSA9PiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgb3B0aW9ucy5hdHRyaWJ1dGVzW2luZGV4XSkgfHwgYSk7XG4gICAgY29uc3QgZmlsdGVyOiBQYXJ0aWFsPEY+ID0ge1xuICAgICAgc2VhcmNoQXR0cmlidXRlOiBhdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMSA/IGF0dHJpYnV0ZXNbMF0gOiB1bmRlZmluZWQsXG4gICAgICBzZWFyY2hBdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLmxlbmd0aCA+IDEgPyBhdHRyaWJ1dGVzIDogdW5kZWZpbmVkLFxuICAgICAgLi4ub3B0aW9ucy5maWx0ZXIsXG4gICAgfTtcbiAgICBjb25zdCBkaXNwbGF5V2l0aCA9IG9wdGlvbnMuZGlzcGxheVdpdGggfHwgTWF0QXV0b2NvbXBsZXRlRmllbGRVdGlscy5jcmVhdGVEaXNwbGF5Rm4oYXR0cmlidXRlcywgb3B0aW9ucy5tdWx0aXBsZSk7XG4gICAgY29uc3QgZXF1YWxzID0gb3B0aW9ucy5lcXVhbHMgfHwgTWF0QXV0b2NvbXBsZXRlRmllbGRVdGlscy5kZWZhdWx0RXF1YWxzO1xuXG4gICAgY29uc3QgY29uZmlnOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzT3JGbixcbiAgICAgIHN1Z2dlc3RGbixcbiAgICAgIGZpbHRlcixcbiAgICAgIGRpc3BsYXlXaXRoLFxuICAgICAgZXF1YWxzLFxuICAgIH07XG5cbiAgICB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdID0gY29uZmlnO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBnZXQ8VCA9IGFueT4oZmllbGROYW1lOiBzdHJpbmcpOiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxUPiB7XG4gICAgaWYgKCFmaWVsZE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGFkZCBjb25maWcsIHdpdGggbmFtZTogJyArIChmaWVsZE5hbWUgfHwgJ3VuZGVmaW5lZCcpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmllbGRzW2ZpZWxkTmFtZV0gfHwgKHRoaXMuYWRkKGZpZWxkTmFtZSkgYXMgTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWc8VD4pO1xuICB9XG59XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuYXV0b2NvbXBsZXRlLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9tYXRlcmlhbC5hdXRvY29tcGxldGUuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBa0QxRSxNQUFNLE9BQU8sMkJBQTJCO0lBUTVCO0lBUFYsTUFBTSxHQUVGLEVBQUUsQ0FBQztJQUVQLGlCQUFpQixDQUFnRTtJQUVqRixZQUNVLE9BRVA7UUFGTyxZQUFPLEdBQVAsT0FBTyxDQUVkO1FBRUQsZ0VBQWdFO1FBQ2hFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxFQUFFLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELEdBQUcsQ0FBbUIsU0FBaUIsRUFBRSxPQUE4QztRQUNyRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxHQUFHLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELE9BQU8sR0FBRyxPQUFPLElBQW9DLEVBQUUsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBb0IsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlGLHVEQUF1RDtRQUN2RCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxVQUFVLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pILE1BQU0sTUFBTSxHQUFlO1lBQ3pCLGVBQWUsRUFBRSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3BFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDaEUsR0FBRyxPQUFPLENBQUMsTUFBTTtTQUNsQixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLHlCQUF5QixDQUFDLGFBQWEsQ0FBQztRQUV6RSxNQUFNLE1BQU0sR0FBK0I7WUFDekMsR0FBRyxPQUFPO1lBQ1YsVUFBVSxFQUFFLGNBQWM7WUFDMUIsU0FBUztZQUNULE1BQU07WUFDTixXQUFXO1lBQ1gsTUFBTTtTQUNQLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNoQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsR0FBRyxDQUFVLFNBQWlCO1FBQzVCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLEdBQUcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFtQyxDQUFDO0lBQzFGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1Z2dlc3RGbiwgU3VnZ2VzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVGaWVsZFV0aWxzIH0gZnJvbSAnLi9tYXRlcmlhbC5hdXRvY29tcGxldGUudXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGlzcGxheUZuLCBFcXVhbHNGbiB9IGZyb20gJy4uLy4uL2Zvcm0vZmllbGQubW9kZWwnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWc8VCA9IGFueSwgRiA9IGFueT4ge1xuICBhdHRyaWJ1dGVzPzogc3RyaW5nW107XG4gIHN1Z2dlc3RGbj86IFN1Z2dlc3RGbjxULCBGPjtcbiAgZmlsdGVyPzogUGFydGlhbDxGPjtcbiAgaXRlbXM/OiBPYnNlcnZhYmxlPFRbXT4gfCBUW107XG4gIGNvbHVtblNpemVzPzogKG51bWJlciB8ICdhdXRvJyB8IHVuZGVmaW5lZClbXTtcbiAgY29sdW1uTmFtZXM/OiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIGRpc3BsYXlXaXRoPzogRGlzcGxheUZuO1xuICBkaXNwbGF5V2l0aFNlcGFyYXRvcj86IHN0cmluZzsgLy8gVXNlIHRvIHNwbGl0IHNlYXJjaFRleHQgYmVmb3JlIHNlYXJjaGluZ1xuICBzcGxpdFNlYXJjaFRleHQ/OiBib29sZWFuOyAvLyBTcGxpdCBzZWFyY2hUZXh0IGJlZm9yZSBzZWFyY2hpbmc/ICh3aWxsIHVzZSB0aGUgZmlyc3QgdmFsdWUpXG4gIHRyaW1TZWFyY2hUZXh0PzogYm9vbGVhbjsgLy8gVHJpbSBzZWFyY2hUZXh0IGJlZm9yZSBzZWFyY2hpbmc/XG4gIGVxdWFscz86IEVxdWFsc0ZuOyAvLyBVc2VkIGJ5IDxtYXQtY2hpcHMtZmllbGQ+XG4gIHNob3dBbGxPbkZvY3VzPzogYm9vbGVhbjtcbiAgc2hvd1BhbmVsT25Gb2N1cz86IGJvb2xlYW47XG4gIG1vYmlsZT86IGJvb2xlYW47XG4gIGRlYm91bmNlVGltZT86IG51bWJlcjtcbiAgc3VnZ2VzdExlbmd0aFRocmVzaG9sZD86IG51bWJlcjtcbiAgaGlnaGxpZ2h0QWNjZW50PzogYm9vbGVhbjtcbiAgYXBwbHlJbXBsaWNpdFZhbHVlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIHNlbGVjdCBpbnB1dCBjb250ZW50IChkZXNrdG9wIG9ubHkpXG4gICAqL1xuICBzZWxlY3RJbnB1dENvbnRlbnRPbkZvY3VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2xhc3MgdG8gYXBwbHkgdG8gdGhlIGBkaXYubWF0LW1kYy1zZWxlY3QtcGFuZWxgXG4gICAqL1xuICBwYW5lbENsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvdyB0byBmaXggcGFuZWwgd2lkdGggKGUuZy4gJzUwMHB4JyBvciAnMTAwdncnKVxuICAgKi9cbiAgcGFuZWxXaWR0aD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBwYW5lbENsYXNzYCBpbnN0ZWFkXG4gICAqL1xuICBjbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1hdEF1dG9jb21wbGV0ZUZpZWxkQWRkT3B0aW9uczxUID0gYW55LCBGID0gYW55PiBleHRlbmRzIFBhcnRpYWw8TWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWc8VCwgRj4+IHtcbiAgc2VydmljZT86IFN1Z2dlc3RTZXJ2aWNlPFQsIEY+O1xufVxuXG5leHBvcnQgY2xhc3MgTWF0QXV0b2NvbXBsZXRlQ29uZmlnSG9sZGVyIHtcbiAgZmllbGRzOiB7XG4gICAgW2tleTogc3RyaW5nXTogTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWc7XG4gIH0gPSB7fTtcblxuICBnZXRVc2VyQXR0cmlidXRlczogKGZpZWxkTmFtZTogc3RyaW5nLCBkZWZhdWx0QXR0cmlidXRlcz86IHN0cmluZ1tdKSA9PiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG9wdGlvbnM/OiB7XG4gICAgICBnZXRVc2VyQXR0cmlidXRlczogKGZpZWxkTmFtZTogc3RyaW5nLCBkZWZhdWx0QXR0cmlidXRlcz86IHN0cmluZ1tdKSA9PiBzdHJpbmdbXTtcbiAgICB9XG4gICkge1xuICAgIC8vIFN0b3JlIHRoZSBmdW5jdGlvbiBmcm9tIG9wdGlvbnMgKGUuZy4gZ2V0IGZyb20gdXNlciBzZXR0aW5ncylcbiAgICAvLyBvciBjcmVhdGUgYSBkZWZhdWx0IGZ1bmN0aW9uXG4gICAgdGhpcy5nZXRVc2VyQXR0cmlidXRlcyA9IG9wdGlvbnM/LmdldFVzZXJBdHRyaWJ1dGVzIHx8ICgoZmllbGROYW1lLCBkZWZhdWx0QXR0cmlidXRlcykgPT4gZGVmYXVsdEF0dHJpYnV0ZXMgfHwgWydsYWJlbCcsICduYW1lJ10pO1xuICB9XG5cbiAgYWRkPFQgPSBhbnksIEYgPSBhbnk+KGZpZWxkTmFtZTogc3RyaW5nLCBvcHRpb25zPzogTWF0QXV0b2NvbXBsZXRlRmllbGRBZGRPcHRpb25zPFQsIEY+KTogTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWc8VCwgRj4ge1xuICAgIGlmICghZmllbGROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBhZGQgY29uZmlnLCB3aXRoIG5hbWU6ICcgKyAoZmllbGROYW1lIHx8ICd1bmRlZmluZWQnKSk7XG4gICAgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IDxNYXRBdXRvY29tcGxldGVGaWVsZEFkZE9wdGlvbnM+e307XG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48VCwgRj4gPSBvcHRpb25zLnN1Z2dlc3RGbiB8fCAob3B0aW9ucy5zZXJ2aWNlICYmICgodiwgZikgPT4gb3B0aW9ucy5zZXJ2aWNlLnN1Z2dlc3QodiwgZikpKSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuZ2V0VXNlckF0dHJpYnV0ZXMoZmllbGROYW1lLCBvcHRpb25zLmF0dHJpYnV0ZXMpIHx8IFsnbGFiZWwnLCAnbmFtZSddO1xuICAgIC8vIEtlZXAgb3JpZ2luYWwgdGhlIGZ1bmN0aW9uIGZyb20gb3B0aW9ucywgd2hlbiBleGlzdHNcbiAgICBjb25zdCBhdHRyaWJ1dGVzT3JGbiA9IGF0dHJpYnV0ZXMubWFwKChhLCBpbmRleCkgPT4gKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nICYmIG9wdGlvbnMuYXR0cmlidXRlc1tpbmRleF0pIHx8IGEpO1xuICAgIGNvbnN0IGZpbHRlcjogUGFydGlhbDxGPiA9IHtcbiAgICAgIHNlYXJjaEF0dHJpYnV0ZTogYXR0cmlidXRlcy5sZW5ndGggPT09IDEgPyBhdHRyaWJ1dGVzWzBdIDogdW5kZWZpbmVkLFxuICAgICAgc2VhcmNoQXR0cmlidXRlczogYXR0cmlidXRlcy5sZW5ndGggPiAxID8gYXR0cmlidXRlcyA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMuZmlsdGVyLFxuICAgIH07XG4gICAgY29uc3QgZGlzcGxheVdpdGggPSBvcHRpb25zLmRpc3BsYXlXaXRoIHx8IE1hdEF1dG9jb21wbGV0ZUZpZWxkVXRpbHMuY3JlYXRlRGlzcGxheUZuKGF0dHJpYnV0ZXMsIG9wdGlvbnMubXVsdGlwbGUpO1xuICAgIGNvbnN0IGVxdWFscyA9IG9wdGlvbnMuZXF1YWxzIHx8IE1hdEF1dG9jb21wbGV0ZUZpZWxkVXRpbHMuZGVmYXVsdEVxdWFscztcblxuICAgIGNvbnN0IGNvbmZpZzogTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWcgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgYXR0cmlidXRlczogYXR0cmlidXRlc09yRm4sXG4gICAgICBzdWdnZXN0Rm4sXG4gICAgICBmaWx0ZXIsXG4gICAgICBkaXNwbGF5V2l0aCxcbiAgICAgIGVxdWFscyxcbiAgICB9O1xuXG4gICAgdGhpcy5maWVsZHNbZmllbGROYW1lXSA9IGNvbmZpZztcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgZ2V0PFQgPSBhbnk+KGZpZWxkTmFtZTogc3RyaW5nKTogTWF0QXV0b2NvbXBsZXRlRmllbGRDb25maWc8VD4ge1xuICAgIGlmICghZmllbGROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBhZGQgY29uZmlnLCB3aXRoIG5hbWU6ICcgKyAoZmllbGROYW1lIHx8ICd1bmRlZmluZWQnKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpZWxkc1tmaWVsZE5hbWVdIHx8ICh0aGlzLmFkZChmaWVsZE5hbWUpIGFzIE1hdEF1dG9jb21wbGV0ZUZpZWxkQ29uZmlnPFQ+KTtcbiAgfVxufVxuIl19
@@ -67,4 +67,4 @@ export function suggestFromArray(items, value, opts) {
67
67
  }
68
68
  return result;
69
69
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGVBQWUsRUFDZixRQUFRLEVBQ1IsZUFBZSxFQUNmLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsbUJBQW1CLEdBQ3BCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBVSxFQUNWLEtBQVUsRUFDVixJQVVDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBRTNFLEtBQUssR0FBRyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUV6RixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDMUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQixtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLEVBQUUsU0FBUyxJQUFLLEtBQWdCLENBQUMsT0FBTyxD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QixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUs7S0FDTixDQUFDO0lBRUYsa0RBQWtEO0lBQ2xELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEUsSUFBSSxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDN0IsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxpQ0FBaUMsRUFBRTtZQUMzRSxHQUFHLElBQUk7WUFDUCxNQUFNLEVBQUUsVUFBVTtZQUNsQixRQUFRLEVBQUUsSUFBSSxFQUFFLCtCQUErQjtZQUMvQyxXQUFXLEVBQUUsU0FBUyxFQUFFLGlDQUFpQztTQUMxRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvYWRSZXN1bHQgfSBmcm9tICcuL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7XG4gIGdldFByb3BlcnR5QnlQYXRoQXNTdHJpbmcsXG4gIGlzTm90RW1wdHlBcnJheSxcbiAgaXNOb3ROaWwsXG4gIGlzTm90TmlsT3JCbGFuayxcbiAgbWF0Y2hVcHBlckNhc2UsXG4gIHByb3BlcnRpZXNQYXRoQ29tcGFyYXRvcixcbiAgc3RhcnRzV2l0aFVwcGVyQ2FzZSxcbn0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3VnZ2VzdEZyb21BcnJheTxUID0gYW55PihcbiAgaXRlbXM6IFRbXSxcbiAgdmFsdWU6IGFueSxcbiAgb3B0cz86IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICBzaXplPzogbnVtYmVyO1xuICAgIHNlYXJjaEF0dHJpYnV0ZT86IHN0cmluZztcbiAgICBzZWFyY2hBdHRyaWJ1dGVzPzogc3RyaW5nW107XG4gICAgaW5jbHVkZWRJZHM/OiBudW1iZXJbXTtcbiAgICBleGNsdWRlZElkcz86IG51bWJlcltdO1xuICAgIHNraXBTb3J0PzogYm9vbGVhbjtcbiAgICBhbnlTZWFyY2g/OiBib29sZWFuO1xuICB9XG4pOiBMb2FkUmVzdWx0PFQ+IHtcbiAgaWYgKGlzTm90TmlsKHZhbHVlKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4geyBkYXRhOiBbdmFsdWVdIH07XG5cbiAgdmFsdWUgPSAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSAhPT0gJyonICYmIHZhbHVlLnRvVXBwZXJDYXNlKCkpIHx8IHVuZGVmaW5lZDtcblxuICBjb25zdCBrZXlzID0gKG9wdHMgJiYgKChvcHRzLnNlYXJjaEF0dHJpYnV0ZSAmJiBbb3B0cy5zZWFyY2hBdHRyaWJ1dGVdKSB8fCBvcHRzLnNlYXJjaEF0dHJpYnV0ZXMpKSB8fCBbJ2xhYmVsJ107XG5cbiAgaWYgKCFpdGVtcykge1xuICAgIHJldHVybiB7IGRhdGE6IFtdLCB0b3RhbDogMCB9O1xuICB9XG5cbiAgLy8gRmlsdGVyIGl0ZW1zXG4gIGxldCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXM7XG4gIGlmIChpc05vdE5pbE9yQmxhbmsodmFsdWUpKSB7XG4gICAgLy8gSWYgd2lsZGNhcmQsIHNlYXJjaCB1c2luZyByZWdleHBcbiAgICBpZiAob3B0cz8uYW55U2VhcmNoIHx8ICh2YWx1ZSBhcyBzdHJpbmcpLmluZGV4T2YoJyonKSAhPT0gLTEpIHtcbiAgICAgIHZhbHVlID0gKHZhbHVlIGFzIHN0cmluZykucmVwbGFjZSgvWypdKy9nLCAnLionKTtcbiAgICAgIC8vIFNlYXJjaCBieSByZWdleHBcbiAgICAgIGlmICh2YWx1ZSAhPT0gJy4qJykge1xuICAgICAgICBmaWx0ZXJlZEl0ZW1zID0gZmlsdGVyZWRJdGVtcy5maWx0ZXIoKHYpID0+IGtleXMuc29tZSgoa2V5KSA9PiBtYXRjaFVwcGVyQ2FzZShnZXRQcm9wZXJ0eUJ5UGF0aEFzU3RyaW5nKHYsIGtleSksIHZhbHVlKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBFbHNlIChubyB3aWxkY2FyZCksIHNlYXJjaCB1c2luZyBzdGFydHNXaXRoXG4gICAgZWxzZSB7XG4gICAgICBmaWx0ZXJlZEl0ZW1zID0gZmlsdGVyZWRJdGVtcy5maWx0ZXIoKHYpID0+IGtleXMuc29tZSgoa2V5KSA9PiBzdGFydHNXaXRoVXBwZXJDYXNlKGdldFByb3BlcnR5QnlQYXRoQXNTdHJpbmcodiwga2V5KSwgdmFsdWUpKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSW5jbHVkZWQgaWRzXG4gIGNvbnN0IGluY2x1ZGVkSWRzID0gb3B0cz8uaW5jbHVkZWRJZHMgfHwgKGlzTm90TmlsKG9wdHM/LmlkKSA/IFtvcHRzLmlkXSA6IG51bGwpO1xuICBpZiAoaXNOb3RFbXB0eUFycmF5KGluY2x1ZGVkSWRzKSkge1xuICAgIGZpbHRlcmVkSXRlbXMgPSBmaWx0ZXJlZEl0ZW1zLmZpbHRlcigodikgPT4gaW5jbHVkZWRJZHMuaW5jbHVkZXMoK3ZbJ2lkJ10pKTtcbiAgfVxuXG4gIC8vIEV4Y2x1ZGUgaWRzXG4gIGlmIChpc05vdEVtcHR5QXJyYXkob3B0cz8uZXhjbHVkZWRJZHMpKSB7XG4gICAgZmlsdGVyZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXMuZmlsdGVyKCh2KSA9PiAhb3B0cy5leGNsdWRlZElkcy5pbmNsdWRlcygrdlsnaWQnXSkpO1xuICB9XG5cbiAgLy8gU29ydFxuICBpZiAoIW9wdHMgfHwgb3B0cy5za2lwU29ydCAhPT0gdHJ1ZSkge1xuICAgIC8vIE1ha2UgdG8gY29weSBpbnB1dCBpdGVtcywgYmVmb3JlIHNvcnRpbmcgKGlmIG5vdCB5ZXQgYWxyZWFkeSBkb25lKVxuICAgIGlmIChmaWx0ZXJlZEl0ZW1zID09PSBpdGVtcykgZmlsdGVyZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXMuc2xpY2UoKTtcblxuICAgIC8vIFNvcnQgYnkga2V5c1xuICAgIGZpbHRlcmVkSXRlbXMuc29ydChwcm9wZXJ0aWVzUGF0aENvbXBhcmF0b3Ioa2V5cykpO1xuICB9XG5cbiAgY29uc3QgdG90YWwgPSBmaWx0ZXJlZEl0ZW1zLmxlbmd0aCB8fCAwO1xuXG4gIC8vIFBhZ2luYXRpb24gKHRydW5jYXRlIGlmIG5lZWQpXG4gIGxldCBwYWdlRGF0YSA9IGZpbHRlcmVkSXRlbXM7XG4gIGlmIChvcHRzKSB7XG4gICAgaWYgKChvcHRzLm9mZnNldCB8fCAwKSA+IDApIHtcbiAgICAgIHBhZ2VEYXRhID0gcGFnZURhdGEuc2xpY2Uob3B0cy5vZmZzZXQpO1xuICAgIH1cbiAgICBpZiAoaXNOb3ROaWwob3B0cy5zaXplKSAmJiBwYWdlRGF0YS5sZW5ndGggPiBvcHRzLnNpemUpIHtcbiAgICAgIHBhZ2VEYXRhID0gcGFnZURhdGEuc2xpY2UoMCwgb3B0cy5zaXplKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IExvYWRSZXN1bHQ8VD4gPSB7XG4gICAgZGF0YTogcGFnZURhdGEsXG4gICAgdG90YWwsXG4gIH07XG5cbiAgLy8gQWRkIGZldGNoIG1vcmUgY2FwYWJpbGl0eSwgaWYgdG90YWwgd2FzIGZldGNoZWRcbiAgY29uc3QgbmV4dE9mZnNldCA9ICgob3B0cyAmJiBvcHRzLm9mZnNldCkgfHwgMCkgKyBwYWdlRGF0YS5sZW5ndGg7XG4gIGlmIChuZXh0T2Zmc2V0IDwgdG90YWwpIHtcbiAgICByZXN1bHQuZmV0Y2hNb3JlID0gYXN5bmMgKF8pID0+XG4gICAgICBzdWdnZXN0RnJvbUFycmF5KGZpbHRlcmVkSXRlbXMsIHVuZGVmaW5lZCAvKk9QVElNSVNBVElPTjogYWxyZWFkeSBhcHBsaWVkKi8sIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgb2Zmc2V0OiBuZXh0T2Zmc2V0LFxuICAgICAgICBza2lwU29ydDogdHJ1ZSwgLy8gT1BUSU1JU0FUSU9OOiBhbHJlYWR5IHNvcnRlZFxuICAgICAgICBleGNsdWRlZElkczogdW5kZWZpbmVkLCAvLyBPUFRJTUlTQVRJT046IGFscmVhZHkgZmlsdGVyZWRcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9zZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGVBQWUsRUFDZixRQUFRLEVBQ1IsZUFBZSxFQUNmLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsbUJBQW1CLEdBQ3BCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBVSxFQUNWLEtBQVUsRUFDVixJQVVDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBRTNFLEtBQUssR0FBRyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUV6RixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDMUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQixtQ0FBbUM7UUFDbkMsSUFBSSxJQUFJLEVBQUUsU0FBUyxJQUFLLEtBQWdCLENBQUMsT0FBTyxD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QixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUs7S0FDTixDQUFDO0lBRUYsa0RBQWtEO0lBQ2xELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEUsSUFBSSxVQUFVLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDdkIsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDN0IsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxpQ0FBaUMsRUFBRTtZQUMzRSxHQUFHLElBQUk7WUFDUCxNQUFNLEVBQUUsVUFBVTtZQUNsQixRQUFRLEVBQUUsSUFBSSxFQUFFLCtCQUErQjtZQUMvQyxXQUFXLEVBQUUsU0FBUyxFQUFFLGlDQUFpQztTQUMxRCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvYWRSZXN1bHQgfSBmcm9tICcuL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7XG4gIGdldFByb3BlcnR5QnlQYXRoQXNTdHJpbmcsXG4gIGlzTm90RW1wdHlBcnJheSxcbiAgaXNOb3ROaWwsXG4gIGlzTm90TmlsT3JCbGFuayxcbiAgbWF0Y2hVcHBlckNhc2UsXG4gIHByb3BlcnRpZXNQYXRoQ29tcGFyYXRvcixcbiAgc3RhcnRzV2l0aFVwcGVyQ2FzZSxcbn0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3VnZ2VzdEZyb21BcnJheTxUID0gYW55PihcbiAgaXRlbXM6IFRbXSxcbiAgdmFsdWU6IGFueSxcbiAgb3B0cz86IHtcbiAgICBpZD86IG51bWJlcjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICBzZWFyY2hBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgc2VhcmNoQXR0cmlidXRlcz86IHN0cmluZ1tdO1xuICAgIGluY2x1ZGVkSWRzPzogbnVtYmVyW107XG4gICAgZXhjbHVkZWRJZHM/OiBudW1iZXJbXTtcbiAgICBza2lwU29ydD86IGJvb2xlYW47XG4gICAgYW55U2VhcmNoPzogYm9vbGVhbjtcbiAgfVxuKTogTG9hZFJlc3VsdDxUPiB7XG4gIGlmIChpc05vdE5pbCh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgcmV0dXJuIHsgZGF0YTogW3ZhbHVlXSB9O1xuXG4gIHZhbHVlID0gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgIT09ICcqJyAmJiB2YWx1ZS50b1VwcGVyQ2FzZSgpKSB8fCB1bmRlZmluZWQ7XG5cbiAgY29uc3Qga2V5cyA9IChvcHRzICYmICgob3B0cy5zZWFyY2hBdHRyaWJ1dGUgJiYgW29wdHMuc2VhcmNoQXR0cmlidXRlXSkgfHwgb3B0cy5zZWFyY2hBdHRyaWJ1dGVzKSkgfHwgWydsYWJlbCddO1xuXG4gIGlmICghaXRlbXMpIHtcbiAgICByZXR1cm4geyBkYXRhOiBbXSwgdG90YWw6IDAgfTtcbiAgfVxuXG4gIC8vIEZpbHRlciBpdGVtc1xuICBsZXQgZmlsdGVyZWRJdGVtcyA9IGl0ZW1zO1xuICBpZiAoaXNOb3ROaWxPckJsYW5rKHZhbHVlKSkge1xuICAgIC8vIElmIHdpbGRjYXJkLCBzZWFyY2ggdXNpbmcgcmVnZXhwXG4gICAgaWYgKG9wdHM/LmFueVNlYXJjaCB8fCAodmFsdWUgYXMgc3RyaW5nKS5pbmRleE9mKCcqJykgIT09IC0xKSB7XG4gICAgICB2YWx1ZSA9ICh2YWx1ZSBhcyBzdHJpbmcpLnJlcGxhY2UoL1sqXSsvZywgJy4qJyk7XG4gICAgICAvLyBTZWFyY2ggYnkgcmVnZXhwXG4gICAgICBpZiAodmFsdWUgIT09ICcuKicpIHtcbiAgICAgICAgZmlsdGVyZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXMuZmlsdGVyKCh2KSA9PiBrZXlzLnNvbWUoKGtleSkgPT4gbWF0Y2hVcHBlckNhc2UoZ2V0UHJvcGVydHlCeVBhdGhBc1N0cmluZyh2LCBrZXkpLCB2YWx1ZSkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRWxzZSAobm8gd2lsZGNhcmQpLCBzZWFyY2ggdXNpbmcgc3RhcnRzV2l0aFxuICAgIGVsc2Uge1xuICAgICAgZmlsdGVyZWRJdGVtcyA9IGZpbHRlcmVkSXRlbXMuZmlsdGVyKCh2KSA9PiBrZXlzLnNvbWUoKGtleSkgPT4gc3RhcnRzV2l0aFVwcGVyQ2FzZShnZXRQcm9wZXJ0eUJ5UGF0aEFzU3RyaW5nKHYsIGtleSksIHZhbHVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEluY2x1ZGVkIGlkc1xuICBjb25zdCBpbmNsdWRlZElkcyA9IG9wdHM/LmluY2x1ZGVkSWRzIHx8IChpc05vdE5pbChvcHRzPy5pZCkgPyBbb3B0cy5pZF0gOiBudWxsKTtcbiAgaWYgKGlzTm90RW1wdHlBcnJheShpbmNsdWRlZElkcykpIHtcbiAgICBmaWx0ZXJlZEl0ZW1zID0gZmlsdGVyZWRJdGVtcy5maWx0ZXIoKHYpID0+IGluY2x1ZGVkSWRzLmluY2x1ZGVzKCt2WydpZCddKSk7XG4gIH1cblxuICAvLyBFeGNsdWRlIGlkc1xuICBpZiAoaXNOb3RFbXB0eUFycmF5KG9wdHM/LmV4Y2x1ZGVkSWRzKSkge1xuICAgIGZpbHRlcmVkSXRlbXMgPSBmaWx0ZXJlZEl0ZW1zLmZpbHRlcigodikgPT4gIW9wdHMuZXhjbHVkZWRJZHMuaW5jbHVkZXMoK3ZbJ2lkJ10pKTtcbiAgfVxuXG4gIC8vIFNvcnRcbiAgaWYgKCFvcHRzIHx8IG9wdHMuc2tpcFNvcnQgIT09IHRydWUpIHtcbiAgICAvLyBNYWtlIHRvIGNvcHkgaW5wdXQgaXRlbXMsIGJlZm9yZSBzb3J0aW5nIChpZiBub3QgeWV0IGFscmVhZHkgZG9uZSlcbiAgICBpZiAoZmlsdGVyZWRJdGVtcyA9PT0gaXRlbXMpIGZpbHRlcmVkSXRlbXMgPSBmaWx0ZXJlZEl0ZW1zLnNsaWNlKCk7XG5cbiAgICAvLyBTb3J0IGJ5IGtleXNcbiAgICBmaWx0ZXJlZEl0ZW1zLnNvcnQocHJvcGVydGllc1BhdGhDb21wYXJhdG9yKGtleXMpKTtcbiAgfVxuXG4gIGNvbnN0IHRvdGFsID0gZmlsdGVyZWRJdGVtcy5sZW5ndGggfHwgMDtcblxuICAvLyBQYWdpbmF0aW9uICh0cnVuY2F0ZSBpZiBuZWVkKVxuICBsZXQgcGFnZURhdGEgPSBmaWx0ZXJlZEl0ZW1zO1xuICBpZiAob3B0cykge1xuICAgIGlmICgob3B0cy5vZmZzZXQgfHwgMCkgPiAwKSB7XG4gICAgICBwYWdlRGF0YSA9IHBhZ2VEYXRhLnNsaWNlKG9wdHMub2Zmc2V0KTtcbiAgICB9XG4gICAgaWYgKGlzTm90TmlsKG9wdHMuc2l6ZSkgJiYgcGFnZURhdGEubGVuZ3RoID4gb3B0cy5zaXplKSB7XG4gICAgICBwYWdlRGF0YSA9IHBhZ2VEYXRhLnNsaWNlKDAsIG9wdHMuc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBMb2FkUmVzdWx0PFQ+ID0ge1xuICAgIGRhdGE6IHBhZ2VEYXRhLFxuICAgIHRvdGFsLFxuICB9O1xuXG4gIC8vIEFkZCBmZXRjaCBtb3JlIGNhcGFiaWxpdHksIGlmIHRvdGFsIHdhcyBmZXRjaGVkXG4gIGNvbnN0IG5leHRPZmZzZXQgPSAoKG9wdHMgJiYgb3B0cy5vZmZzZXQpIHx8IDApICsgcGFnZURhdGEubGVuZ3RoO1xuICBpZiAobmV4dE9mZnNldCA8IHRvdGFsKSB7XG4gICAgcmVzdWx0LmZldGNoTW9yZSA9IGFzeW5jIChfKSA9PlxuICAgICAgc3VnZ2VzdEZyb21BcnJheShmaWx0ZXJlZEl0ZW1zLCB1bmRlZmluZWQgLypPUFRJTUlTQVRJT046IGFscmVhZHkgYXBwbGllZCovLCB7XG4gICAgICAgIC4uLm9wdHMsXG4gICAgICAgIG9mZnNldDogbmV4dE9mZnNldCxcbiAgICAgICAgc2tpcFNvcnQ6IHRydWUsIC8vIE9QVElNSVNBVElPTjogYWxyZWFkeSBzb3J0ZWRcbiAgICAgICAgZXhjbHVkZWRJZHM6IHVuZGVmaW5lZCwgLy8gT1BUSU1JU0FUSU9OOiBhbHJlYWR5IGZpbHRlcmVkXG4gICAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -11181,14 +11181,17 @@ class AppPropertiesUtils {
11181
11181
  if (!source)
11182
11182
  return undefined;
11183
11183
  const key = AppPropertyUtils.key(source);
11184
+ if (!key)
11185
+ return undefined;
11184
11186
  const def = definitions?.find((d) => d.key === key);
11185
11187
  return AppPropertyUtils.asObject(source, def);
11186
11188
  })
11187
11189
  // Fill a JSON object
11188
11190
  .reduce((res, item) => {
11189
- if (isNilOrBlank(item.key))
11191
+ if (isNilOrBlank(item?.key))
11190
11192
  return res;
11191
- if (isNilOrBlank(item.value) && opts?.omitNilOrBlank !== false)
11193
+ // Skip if nil or blank value
11194
+ if (opts?.omitNilOrBlank !== false && isNilOrBlank(item.value))
11192
11195
  return res;
11193
11196
  res[item.key] = item.value;
11194
11197
  return res;
@@ -11236,24 +11239,39 @@ class AppPropertyUtils {
11236
11239
  return undefined;
11237
11240
  return source.key?.key ?? source.key;
11238
11241
  }
11239
- static asObject(source, def) {
11242
+ /**
11243
+ * Converts the given source to an object that contains a key-value pair.
11244
+ *
11245
+ * @param {Property<any> | any} source - The source property or any value to be converted.
11246
+ * @param {FormFieldDefinition} [def] - The form field definition used for serialization.
11247
+ * @param {Object} [opts] - Additional options for serialization.
11248
+ * @param {string} [opts.defaultSerializeAttribute='id'] - The attribute to be used for default serialization.
11249
+ * @return {{ key: string, value: string } | undefined} An object containing the serialized key-value pair, or undefined if the source is not provided.
11250
+ */
11251
+ static asObject(source, def, opts) {
11240
11252
  if (!source)
11241
11253
  return undefined;
11242
11254
  // Serialize key (WARNING: can be an object, when using autocomplete field to edit a key - see AppPropertiesForm)
11243
11255
  const key = AppPropertyUtils.key(source);
11244
- const joinAttribute = def?.autocomplete?.filter?.joinAttribute || 'id';
11245
- // Serialize the value
11246
- let value = source.value;
11247
- if (Array.isArray(value)) {
11248
- value = value
11249
- .map((v) => v?.[joinAttribute] ?? v)
11250
- .filter(isNotNil)
11251
- .join(',');
11256
+ // Prepare a deserialize function
11257
+ const serializeAttribute = def.serializeAttribute ?? opts?.defaultSerializeAttribute ?? 'id';
11258
+ const serializeFn = def?.serialize ||
11259
+ ((value) => {
11260
+ const serializeValue = getPropertyByPath(value, serializeAttribute, value /*default value*/);
11261
+ if (isNil(serializeValue))
11262
+ return serializeValue;
11263
+ return JSON.stringify(serializeValue);
11264
+ });
11265
+ let valueStr;
11266
+ // Value is an array
11267
+ if (Array.isArray(source.value)) {
11268
+ valueStr = source.value.map(serializeFn).filter(isNotNilOrBlank).join(',');
11252
11269
  }
11270
+ // Any other case
11253
11271
  else {
11254
- value = value?.id ?? value;
11272
+ valueStr = serializeFn(source.value);
11255
11273
  }
11256
- return { key, value: value?.toString() };
11274
+ return { key, value: valueStr };
11257
11275
  }
11258
11276
  static fromObject(source, def, opts) {
11259
11277
  if (!source?.key || isNil(source.value) || !def)
@@ -11281,8 +11299,8 @@ class AppPropertyUtils {
11281
11299
  }
11282
11300
  break;
11283
11301
  case 'entity':
11284
- // Deserialize unique entity
11285
- const valueOrPromise = AppPropertyUtils.valueFromObject(target.value, def, opts);
11302
+ // Deserialize entity (e.g. load entity from the id)
11303
+ const valueOrPromise = AppPropertyUtils.resolveEntity(target.value, def, opts);
11286
11304
  if (isPromise(valueOrPromise)) {
11287
11305
  jobs.push(valueOrPromise.then((value) => {
11288
11306
  target.value = value;
@@ -11306,7 +11324,7 @@ class AppPropertyUtils {
11306
11324
  let index = 0;
11307
11325
  for (let subValue of target.value) {
11308
11326
  // Deserialize sub-value
11309
- const subValueOrPromise = AppPropertyUtils.valueFromObject(subValue, def, opts);
11327
+ const subValueOrPromise = AppPropertyUtils.resolveEntity(subValue, def, opts);
11310
11328
  // Add promise to jobs
11311
11329
  if (isPromise(subValueOrPromise)) {
11312
11330
  const finalIndex = index;
@@ -11327,15 +11345,15 @@ class AppPropertyUtils {
11327
11345
  return Promise.all(jobs).then(() => target);
11328
11346
  return target;
11329
11347
  }
11330
- static valueFromObject(value, def, opts) {
11348
+ static resolveEntity(value, def, opts) {
11331
11349
  // Use deserialize function, if any
11332
11350
  if (def.deserialize) {
11333
11351
  return def.deserialize(value);
11334
11352
  }
11335
11353
  // Or try using suggest function
11336
- return this.resolveValueBySuggest(value, def, opts);
11354
+ return this.resolveEntityBySuggest(value, def, opts);
11337
11355
  }
11338
- static async resolveValueBySuggest(value, def, opts) {
11356
+ static async resolveEntityBySuggest(value, def, opts) {
11339
11357
  const suggestFn = def.autocomplete?.suggestFn || opts?.defaultSuggestFn;
11340
11358
  if (!suggestFn) {
11341
11359
  console.warn(`Missing 'deserialize' or 'autocomplete.suggestFn' in the field definition '${def.key}'. Cannot deserialize value: ${JSON.stringify(value)}`);
@@ -11343,9 +11361,9 @@ class AppPropertyUtils {
11343
11361
  }
11344
11362
  let searchValue = value;
11345
11363
  const filter = { ...def.autocomplete?.filter }; // Cope filter
11346
- const joinAttribute = filter?.joinAttribute || 'id';
11347
- if (joinAttribute === 'id') {
11348
- filter.id = +value;
11364
+ const serializeAttribute = def.serializeAttribute ?? opts.defaultSerializeAttribute ?? 'id';
11365
+ if (serializeAttribute === 'id' || serializeAttribute === 'label') {
11366
+ filter[serializeAttribute] = serializeAttribute === 'id' ? +value : value;
11349
11367
  filter.offset = 0;
11350
11368
  filter.size = 1;
11351
11369
  searchValue = '*';
@@ -11353,13 +11371,13 @@ class AppPropertyUtils {
11353
11371
  console.debug(`[properties-utils] Resolving entity where id=${value}...`);
11354
11372
  }
11355
11373
  else {
11356
- filter.searchAttribute = joinAttribute;
11374
+ filter.searchAttribute = serializeAttribute;
11357
11375
  // DEBUG
11358
- console.debug(`[properties-utils] Resolving entity where ${joinAttribute}=${searchValue}...`);
11376
+ console.debug(`[properties-utils] Resolving entity where ${serializeAttribute}=${searchValue}...`);
11359
11377
  }
11360
11378
  try {
11361
11379
  // Fetch entity, using the suggest function
11362
- const res = await suggestFn(searchValue, filter, joinAttribute, 'asc', {
11380
+ const res = await suggestFn(searchValue, filter, serializeAttribute, 'asc', {
11363
11381
  withTotal: false,
11364
11382
  ...opts?.defaultSuggestOptions,
11365
11383
  });
@@ -11376,7 +11394,7 @@ class AppPropertyUtils {
11376
11394
  }
11377
11395
  // Create the missing result
11378
11396
  const unresolvedEntity = {
11379
- [joinAttribute]: value,
11397
+ [serializeAttribute]: value,
11380
11398
  };
11381
11399
  // Fill attributes with '??'
11382
11400
  def.autocomplete?.attributes?.forEach((key) => {