@aquera/ngx-smart-table 0.0.3-alpha → 0.0.6-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/editors/nile-calendar-editor.mjs +2 -5
- package/esm2020/lib/editors/nile-date-picker-editor.mjs +38 -77
- package/esm2020/lib/editors/nile-select-editor.mjs +53 -3
- package/esm2020/lib/models/cell-strategies.interface.mjs +1 -1
- package/esm2020/lib/renderer/components/st-cell/st-cell.component.mjs +10 -4
- package/esm2020/lib/renderer/components/st-column-menu/st-column-menu.component.mjs +2 -2
- package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +18 -10
- package/esm2020/lib/renderer/components/st-table-actions/st-table-actions.component.mjs +15 -17
- package/fesm2015/aquera-ngx-smart-table.mjs +485 -465
- package/fesm2015/aquera-ngx-smart-table.mjs.map +1 -1
- package/fesm2020/aquera-ngx-smart-table.mjs +476 -456
- package/fesm2020/aquera-ngx-smart-table.mjs.map +1 -1
- package/lib/editors/nile-calendar-editor.d.ts +1 -2
- package/lib/editors/nile-date-picker-editor.d.ts +6 -4
- package/lib/editors/nile-select-editor.d.ts +2 -0
- package/lib/models/cell-strategies.interface.d.ts +7 -0
- package/package.json +1 -1
|
@@ -10,6 +10,7 @@ import { isObservable } from 'rxjs';
|
|
|
10
10
|
export class NileSelectEditor {
|
|
11
11
|
constructor(options) {
|
|
12
12
|
this.options = options;
|
|
13
|
+
this.acceptsInitialKeypress = false;
|
|
13
14
|
this.eventListeners = [];
|
|
14
15
|
this.currentOptions = [];
|
|
15
16
|
// Handle Observable options
|
|
@@ -57,6 +58,11 @@ export class NileSelectEditor {
|
|
|
57
58
|
setTimeout(() => {
|
|
58
59
|
this.select?.focus();
|
|
59
60
|
this.select?.click();
|
|
61
|
+
// Find the portal div for multi-select click detection
|
|
62
|
+
if (this.options.multiple) {
|
|
63
|
+
// Portal div is appended to document body
|
|
64
|
+
this.portalDiv = document.querySelector('.nile-select-portal-append');
|
|
65
|
+
}
|
|
60
66
|
}, 0);
|
|
61
67
|
}
|
|
62
68
|
/**
|
|
@@ -155,6 +161,9 @@ export class NileSelectEditor {
|
|
|
155
161
|
if (this.options.portal !== undefined) {
|
|
156
162
|
this.select.portal = this.options.portal;
|
|
157
163
|
}
|
|
164
|
+
else {
|
|
165
|
+
this.select.portal = true; // Default to portal mode for better positioning
|
|
166
|
+
}
|
|
158
167
|
// Prevent width syncing issues in table cells
|
|
159
168
|
this.select.noWidthSync = true;
|
|
160
169
|
}
|
|
@@ -232,7 +241,11 @@ export class NileSelectEditor {
|
|
|
232
241
|
this.select?.reportValidity();
|
|
233
242
|
return;
|
|
234
243
|
}
|
|
235
|
-
|
|
244
|
+
// Only save immediately for single-select
|
|
245
|
+
// Multi-select saves on outside click
|
|
246
|
+
if (!this.options.multiple) {
|
|
247
|
+
context.onSave(this.parseValue(customEvent.detail.value));
|
|
248
|
+
}
|
|
236
249
|
};
|
|
237
250
|
this.select.addEventListener('nile-change', changeHandler);
|
|
238
251
|
this.eventListeners.push({ event: 'nile-change', handler: changeHandler });
|
|
@@ -264,6 +277,35 @@ export class NileSelectEditor {
|
|
|
264
277
|
this.select.addEventListener('nile-search', searchHandler);
|
|
265
278
|
this.eventListeners.push({ event: 'nile-search', handler: searchHandler });
|
|
266
279
|
}
|
|
280
|
+
// For multi-select: detect clicks outside portal and select
|
|
281
|
+
if (this.options.multiple) {
|
|
282
|
+
const documentClickHandler = (e) => {
|
|
283
|
+
const mouseEvent = e;
|
|
284
|
+
const target = mouseEvent.target;
|
|
285
|
+
// Check if portal div exists (might take a moment to render)
|
|
286
|
+
if (!this.portalDiv) {
|
|
287
|
+
this.portalDiv = document.querySelector('.nile-select-portal-append');
|
|
288
|
+
}
|
|
289
|
+
// Determine if click is inside the select or portal
|
|
290
|
+
const clickedInsideSelect = this.select?.contains(target);
|
|
291
|
+
const clickedInsidePortal = this.portalDiv?.contains(target);
|
|
292
|
+
// If clicked outside both select and portal, save and close
|
|
293
|
+
if (!clickedInsideSelect && !clickedInsidePortal) {
|
|
294
|
+
if (validateOnSave && !this.select?.checkValidity()) {
|
|
295
|
+
this.select?.reportValidity();
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
context.onSave(this.getCurrentValue());
|
|
299
|
+
}
|
|
300
|
+
// Otherwise, click is inside - do nothing (dropdown stays open)
|
|
301
|
+
};
|
|
302
|
+
// Add to document with capture phase
|
|
303
|
+
document.addEventListener('click', documentClickHandler, true);
|
|
304
|
+
this.eventListeners.push({
|
|
305
|
+
event: 'document-click',
|
|
306
|
+
handler: documentClickHandler
|
|
307
|
+
});
|
|
308
|
+
}
|
|
267
309
|
}
|
|
268
310
|
/**
|
|
269
311
|
* Parse value based on selection mode
|
|
@@ -291,11 +333,19 @@ export class NileSelectEditor {
|
|
|
291
333
|
// Remove all event listeners
|
|
292
334
|
if (this.select) {
|
|
293
335
|
this.eventListeners.forEach(({ event, handler }) => {
|
|
294
|
-
|
|
336
|
+
if (event === 'document-click') {
|
|
337
|
+
// Remove from document for multi-select click handler
|
|
338
|
+
document.removeEventListener('click', handler, true);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
// Remove from select element
|
|
342
|
+
this.select?.removeEventListener(event, handler);
|
|
343
|
+
}
|
|
295
344
|
});
|
|
296
345
|
this.eventListeners = [];
|
|
297
346
|
this.select.remove();
|
|
298
347
|
this.select = undefined;
|
|
348
|
+
this.portalDiv = undefined; // Clean up portal reference
|
|
299
349
|
}
|
|
300
350
|
}
|
|
301
351
|
focus() {
|
|
@@ -314,4 +364,4 @@ export class NileSelectEditor {
|
|
|
314
364
|
return (Array.isArray(value) ? (value.length > 0 ? value[0] : '') : value);
|
|
315
365
|
}
|
|
316
366
|
}
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1zZWxlY3QtZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9lZGl0b3JzL25pbGUtc2VsZWN0LWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFHSCxPQUFPLEVBQTRCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1GOUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQU0zQixZQUE2QixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQUpyRCxtQkFBYyxHQUFxRCxFQUFFLENBQUM7UUFFdEUsbUJBQWMsR0FBOEIsRUFBRSxDQUFDO1FBR3JELDRCQUE0QjtRQUM1QixJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDM0IsOENBQThDO2dCQUM5QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN0QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7YUFDMUQ7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsT0FBNkI7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsT0FBTyxDQUFD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QUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBaUIsQ0FBQztTQUMxRDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBRWhDLDRCQUE0QjtRQUM1QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQWlCLENBQUM7U0FDakU7UUFFRCwwQkFBMEI7UUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBaUIsQ0FBQztJQUM3RixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEN1c3RvbSBlZGl0b3IgdXNpbmcgTmlsZVNlbGVjdCBmcm9tIEBhcXVlcmEvbmlsZS1lbGVtZW50c1xuICogVGhpcyBkZW1vbnN0cmF0ZXMgaG93IHRvIGNyZWF0ZSBkcm9wZG93bi9zZWxlY3QgZWRpdG9ycyBmb3Igbmd4LXNtYXJ0LXRhYmxlXG4gKi9cblxuaW1wb3J0IHsgQ2VsbEVkaXRvciwgQ2VsbEVkaXRvckNvbnRleHQgfSBmcm9tICcuLi9tb2RlbHMvY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFNlbGVjdCBvcHRpb24gY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdE9wdGlvbiB7XG4gIC8qKiBUaGUgb3B0aW9uJ3MgdmFsdWUgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbGFiZWwgZm9yIHRoZSBvcHRpb24gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBPcHRpb25hbCBwcmVmaXggaWNvbiBvciBjb250ZW50ICovXG4gIHByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGludGVyZmFjZSBmb3IgTmlsZVNlbGVjdEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5pbGVTZWxlY3RFZGl0b3JPcHRpb25zIHtcbiAgLy8gT3B0aW9ucyBjb25maWd1cmF0aW9uIChSRVFVSVJFRClcbiAgLyoqIEFycmF5IG9mIG9wdGlvbnMgLSBzdXBwb3J0cyBzdGF0aWMgYXJyYXlzLCBPYnNlcnZhYmxlLCBvciBCZWhhdmlvclN1YmplY3QgZm9yIHJlYWN0aXZlIHVwZGF0ZXMgKi9cbiAgb3B0aW9uczogU2VsZWN0T3B0aW9uW10gfCBzdHJpbmdbXSB8IE9ic2VydmFibGU8U2VsZWN0T3B0aW9uW10gfCBzdHJpbmdbXT47XG4gIFxuICAvLyBCYXNpYyBwcm9wZXJ0aWVzXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0IHdoZW4gbm8gc2VsZWN0aW9uIGlzIG1hZGUgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBTaXplIG9mIHRoZSBzZWxlY3QgY29udHJvbCAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcbiAgLyoqIEVuYWJsZSBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZSAqL1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIFxuICAvLyBCZWhhdmlvciBvcHRpb25zXG4gIC8qKiBBZGRzIGNsZWFyIGJ1dHRvbiB3aGVuIHZhbHVlIGlzIG5vdCBlbXB0eSAqL1xuICBjbGVhcmFibGU/OiBib29sZWFuO1xuICAvKiogRGlzYWJsZSB0aGUgc2VsZWN0IGNvbnRyb2wgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTWFrZSB0aGUgc2VsZWN0IHJlcXVpcmVkICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBzZWFyY2ggZnVuY3Rpb25hbGl0eSAqL1xuICBzZWFyY2hFbmFibGVkPzogYm9vbGVhbjtcbiAgXG4gIC8vIFZpc3VhbCBzdGF0ZXNcbiAgLyoqIFdhcm5pbmcgc3RhdGUgc3R5bGluZyAqL1xuICB3YXJuaW5nPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIHN0YXRlIHN0eWxpbmcgKi9cbiAgZXJyb3I/OiBib29sZWFuO1xuICAvKiogU3VjY2VzcyBzdGF0ZSBzdHlsaW5nICovXG4gIHN1Y2Nlc3M/OiBib29sZWFuO1xuICAvKiogRXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5ICovXG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgLyoqIEhlbHAgdGV4dCB0byBkaXNwbGF5ICovXG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xuICBcbiAgLy8gQWR2YW5jZWQgZmVhdHVyZXNcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIHNlbGVjdGVkIG9wdGlvbnMgdG8gc2hvdyBpbiBtdWx0aXBsZSBtb2RlICgwID0gbm8gbGltaXQpICovXG4gIG1heE9wdGlvbnNWaXNpYmxlPzogbnVtYmVyO1xuICAvKiogRHJhd3MgYSBmaWxsZWQgc2VsZWN0IHN0eWxlICovXG4gIGZpbGxlZD86IGJvb2xlYW47XG4gIC8qKiBQaWxsLXN0eWxlIHdpdGggcm91bmRlZCBlZGdlcyAqL1xuICBwaWxsPzogYm9vbGVhbjtcbiAgLyoqIFVzZSBmaXhlZCBwb3NpdGlvbmluZyB0byBwcmV2ZW50IGNsaXBwaW5nICovXG4gIGhvaXN0PzogYm9vbGVhbjtcbiAgLyoqIFBsYWNlbWVudCBvZiB0aGUgZHJvcGRvd24gbWVudSAqL1xuICBwbGFjZW1lbnQ/OiAndG9wJyB8ICdib3R0b20nO1xuICBcbiAgLy8gVmlydHVhbCBzY3JvbGwgZm9yIGxhcmdlIGxpc3RzXG4gIC8qKiBFbmFibGUgdmlydHVhbCBzY3JvbGxpbmcgZm9yIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIG1hbnkgb3B0aW9ucyAqL1xuICBlbmFibGVWaXJ0dWFsU2Nyb2xsPzogYm9vbGVhbjtcbiAgXG4gIC8vIFNlYXJjaCBjb25maWd1cmF0aW9uXG4gIC8qKiBEaXNhYmxlIGxvY2FsIHNlYXJjaCAodXNlIGZvciBzZXJ2ZXItc2lkZSBzZWFyY2gpICovXG4gIGRpc2FibGVMb2NhbFNlYXJjaD86IGJvb2xlYW47XG4gIFxuICAvLyBWYWxpZGF0aW9uXG4gIC8qKiBWYWxpZGF0ZSBiZWZvcmUgc2F2aW5nIChkZWZhdWx0OiB0cnVlKSAqL1xuICB2YWxpZGF0ZU9uU2F2ZT86IGJvb2xlYW47XG4gIFxuICAvLyBQb3J0YWwgb3B0aW9uc1xuICAvKiogQXBwZW5kIGRyb3Bkb3duIHRvIGRvY3VtZW50IGJvZHkgaW5zdGVhZCBvZiBwYXJlbnQgKi9cbiAgcG9ydGFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDdXN0b20gZWRpdG9yIHRoYXQgdXNlcyBOaWxlU2VsZWN0IGNvbXBvbmVudFxuICogQHRlbXBsYXRlIFQgVGhlIHZhbHVlIHR5cGUgKHN0cmluZyBmb3Igc2luZ2xlIHNlbGVjdGlvbiwgc3RyaW5nW10gZm9yIG11bHRpcGxlKVxuICovXG5leHBvcnQgY2xhc3MgTmlsZVNlbGVjdEVkaXRvcjxUID0gc3RyaW5nPiBpbXBsZW1lbnRzIENlbGxFZGl0b3I8VD4ge1xuICBwcml2YXRlIHNlbGVjdD86IGFueTtcbiAgcHJpdmF0ZSBldmVudExpc3RlbmVyczogQXJyYXk8eyBldmVudDogc3RyaW5nOyBoYW5kbGVyOiBFdmVudExpc3RlbmVyIH0+ID0gW107XG4gIHByaXZhdGUgb3B0aW9uc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjdXJyZW50T3B0aW9uczogKFNlbGVjdE9wdGlvbiB8IHN0cmluZylbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTmlsZVNlbGVjdEVkaXRvck9wdGlvbnMpIHtcbiAgICAvLyBIYW5kbGUgT2JzZXJ2YWJsZSBvcHRpb25zXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShvcHRpb25zLm9wdGlvbnMpKSB7XG4gICAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24gPSBvcHRpb25zLm9wdGlvbnMuc3Vic2NyaWJlKG9wdHMgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRPcHRpb25zID0gb3B0cztcbiAgICAgICAgLy8gSWYgZWRpdG9yIGlzIGFscmVhZHkgYWN0aXZlLCB1cGRhdGUgdGhlIERPTVxuICAgICAgICBpZiAodGhpcy5zZWxlY3QpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0YXRpYyBvcHRpb25zXG4gICAgICB0aGlzLmN1cnJlbnRPcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgICAgaWYgKHRoaXMuY3VycmVudE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTmlsZVNlbGVjdEVkaXRvcjogb3B0aW9ucyBhcnJheSBpcyBlbXB0eScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVkaXQoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQuY29udGFpbmVyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05pbGVTZWxlY3RFZGl0b3IgcmVxdWlyZXMgYSBjb250YWluZXIgZWxlbWVudCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBOaWxlU2VsZWN0IGN1c3RvbSBlbGVtZW50IHVzaW5nIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRcbiAgICB0aGlzLnNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtc2VsZWN0Jyk7XG4gICAgdGhpcy5zZWxlY3QuY2xhc3NOYW1lID0gJ3N0LWNlbGwtZWRpdG9yJztcbiAgICBcbiAgICAvLyBBcHBseSBpbmxpbmUgc3R5bGVzIGZvciBwcm9wZXIgY2VsbCBmaXR0aW5nXG4gICAgdGhpcy5zZWxlY3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy5zZWxlY3Quc3R5bGUuaGVpZ2h0ID0gJ2luaGVyaXQnO1xuICAgIHRoaXMuc2VsZWN0LnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94JztcbiAgICBcbiAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZVxuICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlKGNvbnRleHQudmFsdWUpO1xuXG4gICAgLy8gQXBwbHkgYWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgIHRoaXMuYXBwbHlPcHRpb25zKCk7XG5cbiAgICAvLyBDcmVhdGUgYW5kIGFwcGVuZCBvcHRpb25zIHdpdGggY3VycmVudCBvcHRpb25zXG4gICAgdGhpcy5jcmVhdGVBbmRBcHBlbmRPcHRpb25zKHRoaXMuY3VycmVudE9wdGlvbnMpO1xuXG4gICAgLy8gU2V0IHVwIGV2ZW50IGxpc3RlbmVyc1xuICAgIHRoaXMuc2V0dXBFdmVudExpc3RlbmVycyhjb250ZXh0KTtcblxuICAgIC8vIENsZWFyIGNvbnRhaW5lciBhbmQgYXBwZW5kIHNlbGVjdFxuICAgIGNvbnRleHQuY29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnRleHQuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0KTtcblxuICAgIC8vIEZvY3VzIGFmdGVyIHJlbmRlclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Q/LmZvY3VzKCk7XG4gICAgICB0aGlzLnNlbGVjdD8uY2xpY2soKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBzZWxlY3RcbiAgICovXG4gIHByaXZhdGUgc2V0SW5pdGlhbFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIHNlbGVjdGlvbiAtIHZhbHVlIHNob3VsZCBiZSBhcnJheVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gW1N0cmluZyh2YWx1ZSldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3QudmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIHNpbmdsZSBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gdmFsdWUgPyBTdHJpbmcodmFsdWUpIDogJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIE5pbGVTZWxlY3QgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgLy8gQmFzaWMgb3B0aW9uc1xuICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBsYWNlaG9sZGVyID0gdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2l6ZSkge1xuICAgICAgdGhpcy5zZWxlY3Quc2l6ZSA9IHRoaXMub3B0aW9ucy5zaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdC5zaXplID0gJ3NtYWxsJzsgLy8gRGVmYXVsdCBmb3IgdGFibGUgY2VsbHNcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5tdWx0aXBsZSA9IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcbiAgICB9XG5cbiAgICAvLyBCZWhhdmlvciBvcHRpb25zXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhcmFibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmNsZWFyYWJsZSA9IHRoaXMub3B0aW9ucy5jbGVhcmFibGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3QuZGlzYWJsZWQgPSB0aGlzLm9wdGlvbnMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5zZWxlY3QucmVxdWlyZWQgPSB0aGlzLm9wdGlvbnMucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZWFyY2hFbmFibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5zZWFyY2hFbmFibGVkID0gdGhpcy5vcHRpb25zLnNlYXJjaEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gVmlzdWFsIHN0YXRlc1xuICAgIGlmICh0aGlzLm9wdGlvbnMud2FybmluZykge1xuICAgICAgdGhpcy5zZWxlY3Qud2FybmluZyA9IHRoaXMub3B0aW9ucy53YXJuaW5nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmVycm9yID0gdGhpcy5vcHRpb25zLmVycm9yO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc3VjY2Vzcykge1xuICAgICAgdGhpcy5zZWxlY3Quc3VjY2VzcyA9IHRoaXMub3B0aW9ucy5zdWNjZXNzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5lcnJvck1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVscFRleHQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmhlbHBUZXh0ID0gdGhpcy5vcHRpb25zLmhlbHBUZXh0O1xuICAgIH1cblxuICAgIC8vIEFkdmFuY2VkIGZlYXR1cmVzXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhPcHRpb25zVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5tYXhPcHRpb25zVmlzaWJsZSA9IHRoaXMub3B0aW9ucy5tYXhPcHRpb25zVmlzaWJsZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmZpbGxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5maWxsZWQgPSB0aGlzLm9wdGlvbnMuZmlsbGVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucGlsbCkge1xuICAgICAgdGhpcy5zZWxlY3QucGlsbCA9IHRoaXMub3B0aW9ucy5waWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaG9pc3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmhvaXN0ID0gdGhpcy5vcHRpb25zLmhvaXN0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2VtZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdC5wbGFjZW1lbnQgPSB0aGlzLm9wdGlvbnMucGxhY2VtZW50O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5hYmxlVmlydHVhbFNjcm9sbCkge1xuICAgICAgdGhpcy5zZWxlY3QuZW5hYmxlVmlydHVhbFNjcm9sbCA9IHRoaXMub3B0aW9ucy5lbmFibGVWaXJ0dWFsU2Nyb2xsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZUxvY2FsU2VhcmNoKSB7XG4gICAgICB0aGlzLnNlbGVjdC5kaXNhYmxlTG9jYWxTZWFyY2ggPSB0aGlzLm9wdGlvbnMuZGlzYWJsZUxvY2FsU2VhcmNoO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucG9ydGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBvcnRhbCA9IHRoaXMub3B0aW9ucy5wb3J0YWw7XG4gICAgfVxuXG4gICAgLy8gUHJldmVudCB3aWR0aCBzeW5jaW5nIGlzc3VlcyBpbiB0YWJsZSBjZWxsc1xuICAgIHRoaXMuc2VsZWN0Lm5vV2lkdGhTeW5jID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgb3B0aW9ucyBkeW5hbWljYWxseSB3aGlsZSBlZGl0b3IgaXMgYWN0aXZlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgLy8gQ2xlYXIgZXhpc3Rpbmcgb3B0aW9uc1xuICAgIHdoaWxlICh0aGlzLnNlbGVjdC5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5yZW1vdmVDaGlsZCh0aGlzLnNlbGVjdC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICAvLyBSZS1hcHBlbmQgd2l0aCBuZXcgb3B0aW9uc1xuICAgIHRoaXMuY3JlYXRlQW5kQXBwZW5kT3B0aW9ucyh0aGlzLmN1cnJlbnRPcHRpb25zKTtcbiAgICBcbiAgICAvLyBUcmlnZ2VyIHVwZGF0ZSBvbiB0aGUgd2ViIGNvbXBvbmVudFxuICAgIGlmICh0aGlzLnNlbGVjdC5yZXF1ZXN0VXBkYXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBOaWxlT3B0aW9uIGVsZW1lbnRzIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgc2VsZWN0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gcmVuZGVyXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUFuZEFwcGVuZE9wdGlvbnMob3B0aW9uczogKFNlbGVjdE9wdGlvbiB8IHN0cmluZylbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3QpIHJldHVybjtcblxuICAgIG9wdGlvbnMuZm9yRWFjaChvcHQgPT4ge1xuICAgICAgY29uc3QgbmlsZU9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25pbGUtb3B0aW9uJykgYXMgYW55O1xuXG4gICAgICAvLyBBdXRvLWRldGVjdCBmb3JtYXQ6IHN0cmluZyBvciBTZWxlY3RPcHRpb24gb2JqZWN0XG4gICAgICBpZiAodHlwZW9mIG9wdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbmlsZU9wdGlvbi52YWx1ZSA9IG9wdDtcbiAgICAgICAgbmlsZU9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgb3B0KTtcbiAgICAgICAgbmlsZU9wdGlvbi50ZXh0Q29udGVudCA9IG9wdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5pbGVPcHRpb24udmFsdWUgPSBvcHQudmFsdWU7XG4gICAgICAgIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCd2YWx1ZScsIG9wdC52YWx1ZSk7XG4gICAgICAgIG5pbGVPcHRpb24udGV4dENvbnRlbnQgPSBvcHQubGFiZWw7XG4gICAgICAgIFxuICAgICAgICBpZiAob3B0LmRpc2FibGVkKSB7XG4gICAgICAgICAgbmlsZU9wdGlvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgbmlsZU9wdGlvbi5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBwcmVmaXggaWYgcHJvdmlkZWQgKGNvdWxkIGJlIGljb24gbmFtZSBvciBjb250ZW50KVxuICAgICAgICBpZiAob3B0LnByZWZpeCkge1xuICAgICAgICAgIC8vIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCdzbG90JywgJ3ByZWZpeCcpO1xuICAgICAgICAgIC8vIG5pbGVPcHRpb24uaW5uZXJIVE1MID0gYDxuaWxlLWljb24gbmFtZT1cIiR7b3B0LnByZWZpeH1cIj48L25pbGUtaWNvbj5gO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0IS5hcHBlbmRDaGlsZChuaWxlT3B0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgYWxsIGV2ZW50IGxpc3RlbmVycyB3aXRoIHByb3BlciBjbGVhbnVwIHRyYWNraW5nXG4gICAqL1xuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dDogQ2VsbEVkaXRvckNvbnRleHQ8VD4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0KSByZXR1cm47XG5cbiAgICBjb25zdCB2YWxpZGF0ZU9uU2F2ZSA9IHRoaXMub3B0aW9ucy52YWxpZGF0ZU9uU2F2ZSAhPT0gZmFsc2U7XG5cbiAgICAvLyBIYW5kbGUga2V5Ym9hcmQgZXZlbnRzIChrZXlkb3duIGlzIG5vdCByZXBsYWNlZCBieSBjdXN0b20gZXZlbnRzKVxuICAgIGNvbnN0IGtleWRvd25IYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBrZXlFdmVudCA9IGUgYXMgS2V5Ym9hcmRFdmVudDtcbiAgICAgIGlmIChrZXlFdmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb250ZXh0Lm9uQ2FuY2VsKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLnNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywga2V5ZG93bkhhbmRsZXIpO1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IGV2ZW50OiAna2V5ZG93bicsIGhhbmRsZXI6IGtleWRvd25IYW5kbGVyIH0pO1xuXG4gICAgLy8gVXNlIG5pbGUtY2hhbmdlIGN1c3RvbSBldmVudCBhcyBwcmltYXJ5IHNhdmUgdHJpZ2dlclxuICAgIGNvbnN0IGNoYW5nZUhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gZSBhcyBDdXN0b21FdmVudDtcbiAgICAgIGlmICh2YWxpZGF0ZU9uU2F2ZSAmJiAhdGhpcy5zZWxlY3Q/LmNoZWNrVmFsaWRpdHkoKSkge1xuICAgICAgICB0aGlzLnNlbGVjdD8ucmVwb3J0VmFsaWRpdHkoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29udGV4dC5vblNhdmUodGhpcy5wYXJzZVZhbHVlKGN1c3RvbUV2ZW50LmRldGFpbC52YWx1ZSkpO1xuICAgIH07XG4gICAgdGhpcy5zZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignbmlsZS1jaGFuZ2UnLCBjaGFuZ2VIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtY2hhbmdlJywgaGFuZGxlcjogY2hhbmdlSGFuZGxlciB9KTtcblxuICAgIC8vIEhhbmRsZSBibHVyIGFzIHNlY29uZGFyeSBzYXZlIHRyaWdnZXJcbiAgICBjb25zdCBibHVySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgaWYgKHZhbGlkYXRlT25TYXZlICYmICF0aGlzLnNlbGVjdD8uY2hlY2tWYWxpZGl0eSgpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Py5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBjb250ZXh0Lm9uU2F2ZSh0aGlzLmdldEN1cnJlbnRWYWx1ZSgpKTtcbiAgICB9O1xuICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtYmx1cicsIGJsdXJIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtYmx1cicsIGhhbmRsZXI6IGJsdXJIYW5kbGVyIH0pO1xuXG4gICAgLy8gSGFuZGxlIGNsZWFyIGJ1dHRvbiBpZiBlbmFibGVkXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhcmFibGUpIHtcbiAgICAgIGNvbnN0IGNsZWFySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5vcHRpb25zLm11bHRpcGxlID8gW10gOiAnJykpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtY2xlYXInLCBjbGVhckhhbmRsZXIpO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWNsZWFyJywgaGFuZGxlcjogY2xlYXJIYW5kbGVyIH0pO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzZWFyY2ggZm9yIHNlcnZlci1zaWRlIHNlYXJjaCBzY2VuYXJpb3NcbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVMb2NhbFNlYXJjaCkge1xuICAgICAgY29uc3Qgc2VhcmNoSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICAgIC8vIEVtaXQgc2VhcmNoIHF1ZXJ5IHRocm91Z2ggb25DaGFuZ2UgZm9yIGV4dGVybmFsIGhhbmRsaW5nXG4gICAgICAgIGNvbnRleHQub25DaGFuZ2UoY3VzdG9tRXZlbnQuZGV0YWlsIGFzIFQpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtc2VhcmNoJywgc2VhcmNoSGFuZGxlcik7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtc2VhcmNoJywgaGFuZGxlcjogc2VhcmNoSGFuZGxlciB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdmFsdWUgYmFzZWQgb24gc2VsZWN0aW9uIG1vZGVcbiAgICovXG4gIHByaXZhdGUgcGFyc2VWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBUIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICAvLyBFbnN1cmUgYXJyYXkgZm9yIG11bHRpcGxlIHNlbGVjdGlvblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBhcyB1bmtub3duIGFzIFQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHZhbHVlID8gW3ZhbHVlXSA6IFtdKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIFxuICAgIC8vIFNpbmdsZSBzZWxlY3Rpb24gLSByZXR1cm4gc3RyaW5nXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZVswXSA6ICcnKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gb3B0aW9ucyBPYnNlcnZhYmxlXG4gICAgaWYgKHRoaXMub3B0aW9uc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIFxuICAgIC8vIFJlbW92ZSBhbGwgZXZlbnQgbGlzdGVuZXJzXG4gICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLmZvckVhY2goKHsgZXZlbnQsIGhhbmRsZXIgfSkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgICAgIFxuICAgICAgdGhpcy5zZWxlY3QucmVtb3ZlKCk7XG4gICAgICB0aGlzLnNlbGVjdCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdD8uZm9jdXMoKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRWYWx1ZSgpOiBUIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0KSB7XG4gICAgICByZXR1cm4gKHRoaXMub3B0aW9ucy5tdWx0aXBsZSA/IFtdIDogJycpIGFzIHVua25vd24gYXMgVDtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlbGVjdC52YWx1ZTtcbiAgICBcbiAgICAvLyBIYW5kbGUgbXVsdGlwbGUgc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSkgYXMgdW5rbm93biBhcyBUO1xuICAgIH1cbiAgICBcbiAgICAvLyBIYW5kbGUgc2luZ2xlIHNlbGVjdGlvblxuICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAodmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlWzBdIDogJycpIDogdmFsdWUpIGFzIHVua25vd24gYXMgVDtcbiAgfVxufVxuIl19
|
|
367
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlsZS1zZWxlY3QtZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9lZGl0b3JzL25pbGUtc2VsZWN0LWVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFHSCxPQUFPLEVBQTRCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1GOUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixZQUE2QixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQVI3RCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFJdkIsbUJBQWMsR0FBcUQsRUFBRSxDQUFDO1FBRXRFLG1CQUFjLEdBQThCLEVBQUUsQ0FBQztRQUdyRCw0QkFBNEI7UUFDNUIsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzNCLDhDQUE4QztnQkFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNmLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxpQkFBaUI7WUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO2FBQzFEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQTZCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENB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QUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFpQixDQUFDO1NBQ2pFO1FBRUQsMEJBQTBCO1FBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQWlCLENBQUM7SUFDN0YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXN0b20gZWRpdG9yIHVzaW5nIE5pbGVTZWxlY3QgZnJvbSBAYXF1ZXJhL25pbGUtZWxlbWVudHNcbiAqIFRoaXMgZGVtb25zdHJhdGVzIGhvdyB0byBjcmVhdGUgZHJvcGRvd24vc2VsZWN0IGVkaXRvcnMgZm9yIG5neC1zbWFydC10YWJsZVxuICovXG5cbmltcG9ydCB7IENlbGxFZGl0b3IsIENlbGxFZGl0b3JDb250ZXh0IH0gZnJvbSAnLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBTZWxlY3Qgb3B0aW9uIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb24ge1xuICAvKiogVGhlIG9wdGlvbidzIHZhbHVlICovXG4gIHZhbHVlOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IGxhYmVsIGZvciB0aGUgb3B0aW9uICovXG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgZGlzYWJsZWQgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogT3B0aW9uYWwgcHJlZml4IGljb24gb3IgY29udGVudCAqL1xuICBwcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBpbnRlcmZhY2UgZm9yIE5pbGVTZWxlY3RFZGl0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOaWxlU2VsZWN0RWRpdG9yT3B0aW9ucyB7XG4gIC8vIE9wdGlvbnMgY29uZmlndXJhdGlvbiAoUkVRVUlSRUQpXG4gIC8qKiBBcnJheSBvZiBvcHRpb25zIC0gc3VwcG9ydHMgc3RhdGljIGFycmF5cywgT2JzZXJ2YWJsZSwgb3IgQmVoYXZpb3JTdWJqZWN0IGZvciByZWFjdGl2ZSB1cGRhdGVzICovXG4gIG9wdGlvbnM6IFNlbGVjdE9wdGlvbltdIHwgc3RyaW5nW10gfCBPYnNlcnZhYmxlPFNlbGVjdE9wdGlvbltdIHwgc3RyaW5nW10+O1xuICBcbiAgLy8gQmFzaWMgcHJvcGVydGllc1xuICAvKiogUGxhY2Vob2xkZXIgdGV4dCB3aGVuIG5vIHNlbGVjdGlvbiBpcyBtYWRlICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogU2l6ZSBvZiB0aGUgc2VsZWN0IGNvbnRyb2wgKi9cbiAgc2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG4gIC8qKiBFbmFibGUgbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUgKi9cbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICBcbiAgLy8gQmVoYXZpb3Igb3B0aW9uc1xuICAvKiogQWRkcyBjbGVhciBidXR0b24gd2hlbiB2YWx1ZSBpcyBub3QgZW1wdHkgKi9cbiAgY2xlYXJhYmxlPzogYm9vbGVhbjtcbiAgLyoqIERpc2FibGUgdGhlIHNlbGVjdCBjb250cm9sICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIE1ha2UgdGhlIHNlbGVjdCByZXF1aXJlZCAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIC8qKiBFbmFibGUgc2VhcmNoIGZ1bmN0aW9uYWxpdHkgKi9cbiAgc2VhcmNoRW5hYmxlZD86IGJvb2xlYW47XG4gIFxuICAvLyBWaXN1YWwgc3RhdGVzXG4gIC8qKiBXYXJuaW5nIHN0YXRlIHN0eWxpbmcgKi9cbiAgd2FybmluZz86IGJvb2xlYW47XG4gIC8qKiBFcnJvciBzdGF0ZSBzdHlsaW5nICovXG4gIGVycm9yPzogYm9vbGVhbjtcbiAgLyoqIFN1Y2Nlc3Mgc3RhdGUgc3R5bGluZyAqL1xuICBzdWNjZXNzPzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSAqL1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgdG8gZGlzcGxheSAqL1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgXG4gIC8vIEFkdmFuY2VkIGZlYXR1cmVzXG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBzZWxlY3RlZCBvcHRpb25zIHRvIHNob3cgaW4gbXVsdGlwbGUgbW9kZSAoMCA9IG5vIGxpbWl0KSAqL1xuICBtYXhPcHRpb25zVmlzaWJsZT86IG51bWJlcjtcbiAgLyoqIERyYXdzIGEgZmlsbGVkIHNlbGVjdCBzdHlsZSAqL1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICAvKiogUGlsbC1zdHlsZSB3aXRoIHJvdW5kZWQgZWRnZXMgKi9cbiAgcGlsbD86IGJvb2xlYW47XG4gIC8qKiBVc2UgZml4ZWQgcG9zaXRpb25pbmcgdG8gcHJldmVudCBjbGlwcGluZyAqL1xuICBob2lzdD86IGJvb2xlYW47XG4gIC8qKiBQbGFjZW1lbnQgb2YgdGhlIGRyb3Bkb3duIG1lbnUgKi9cbiAgcGxhY2VtZW50PzogJ3RvcCcgfCAnYm90dG9tJztcbiAgXG4gIC8vIFZpcnR1YWwgc2Nyb2xsIGZvciBsYXJnZSBsaXN0c1xuICAvKiogRW5hYmxlIHZpcnR1YWwgc2Nyb2xsaW5nIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2Ugd2l0aCBtYW55IG9wdGlvbnMgKi9cbiAgZW5hYmxlVmlydHVhbFNjcm9sbD86IGJvb2xlYW47XG4gIFxuICAvLyBTZWFyY2ggY29uZmlndXJhdGlvblxuICAvKiogRGlzYWJsZSBsb2NhbCBzZWFyY2ggKHVzZSBmb3Igc2VydmVyLXNpZGUgc2VhcmNoKSAqL1xuICBkaXNhYmxlTG9jYWxTZWFyY2g/OiBib29sZWFuO1xuICBcbiAgLy8gVmFsaWRhdGlvblxuICAvKiogVmFsaWRhdGUgYmVmb3JlIHNhdmluZyAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgdmFsaWRhdGVPblNhdmU/OiBib29sZWFuO1xuICBcbiAgLy8gUG9ydGFsIG9wdGlvbnNcbiAgLyoqIEFwcGVuZCBkcm9wZG93biB0byBkb2N1bWVudCBib2R5IGluc3RlYWQgb2YgcGFyZW50ICovXG4gIHBvcnRhbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3VzdG9tIGVkaXRvciB0aGF0IHVzZXMgTmlsZVNlbGVjdCBjb21wb25lbnRcbiAqIEB0ZW1wbGF0ZSBUIFRoZSB2YWx1ZSB0eXBlIChzdHJpbmcgZm9yIHNpbmdsZSBzZWxlY3Rpb24sIHN0cmluZ1tdIGZvciBtdWx0aXBsZSlcbiAqL1xuZXhwb3J0IGNsYXNzIE5pbGVTZWxlY3RFZGl0b3I8VCA9IHN0cmluZz4gaW1wbGVtZW50cyBDZWxsRWRpdG9yPFQ+IHtcbiAgYWNjZXB0c0luaXRpYWxLZXlwcmVzcyA9IGZhbHNlO1xuICBcbiAgcHJpdmF0ZSBzZWxlY3Q/OiBhbnk7XG4gIHByaXZhdGUgcG9ydGFsRGl2PzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgZXZlbnRMaXN0ZW5lcnM6IEFycmF5PHsgZXZlbnQ6IHN0cmluZzsgaGFuZGxlcjogRXZlbnRMaXN0ZW5lciB9PiA9IFtdO1xuICBwcml2YXRlIG9wdGlvbnNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgY3VycmVudE9wdGlvbnM6IChTZWxlY3RPcHRpb24gfCBzdHJpbmcpW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IE5pbGVTZWxlY3RFZGl0b3JPcHRpb25zKSB7XG4gICAgLy8gSGFuZGxlIE9ic2VydmFibGUgb3B0aW9uc1xuICAgIGlmIChpc09ic2VydmFibGUob3B0aW9ucy5vcHRpb25zKSkge1xuICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uID0gb3B0aW9ucy5vcHRpb25zLnN1YnNjcmliZShvcHRzID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50T3B0aW9ucyA9IG9wdHM7XG4gICAgICAgIC8vIElmIGVkaXRvciBpcyBhbHJlYWR5IGFjdGl2ZSwgdXBkYXRlIHRoZSBET01cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGF0aWMgb3B0aW9uc1xuICAgICAgdGhpcy5jdXJyZW50T3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ05pbGVTZWxlY3RFZGl0b3I6IG9wdGlvbnMgYXJyYXkgaXMgZW1wdHknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlZGl0KGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgaWYgKCFjb250ZXh0LmNvbnRhaW5lcikge1xuICAgICAgY29uc29sZS53YXJuKCdOaWxlU2VsZWN0RWRpdG9yIHJlcXVpcmVzIGEgY29udGFpbmVyIGVsZW1lbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgTmlsZVNlbGVjdCBjdXN0b20gZWxlbWVudCB1c2luZyBkb2N1bWVudC5jcmVhdGVFbGVtZW50XG4gICAgdGhpcy5zZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduaWxlLXNlbGVjdCcpO1xuICAgIHRoaXMuc2VsZWN0LmNsYXNzTmFtZSA9ICdzdC1jZWxsLWVkaXRvcic7XG4gICAgXG4gICAgLy8gQXBwbHkgaW5saW5lIHN0eWxlcyBmb3IgcHJvcGVyIGNlbGwgZml0dGluZ1xuICAgIHRoaXMuc2VsZWN0LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMuc2VsZWN0LnN0eWxlLmhlaWdodCA9ICdpbmhlcml0JztcbiAgICB0aGlzLnNlbGVjdC5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgXG4gICAgLy8gU2V0IGluaXRpYWwgdmFsdWVcbiAgICB0aGlzLnNldEluaXRpYWxWYWx1ZShjb250ZXh0LnZhbHVlKTtcblxuICAgIC8vIEFwcGx5IGFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuXG4gICAgLy8gQ3JlYXRlIGFuZCBhcHBlbmQgb3B0aW9ucyB3aXRoIGN1cnJlbnQgb3B0aW9uc1xuICAgIHRoaXMuY3JlYXRlQW5kQXBwZW5kT3B0aW9ucyh0aGlzLmN1cnJlbnRPcHRpb25zKTtcblxuICAgIC8vIFNldCB1cCBldmVudCBsaXN0ZW5lcnNcbiAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoY29udGV4dCk7XG5cbiAgICAvLyBDbGVhciBjb250YWluZXIgYW5kIGFwcGVuZCBzZWxlY3RcbiAgICBjb250ZXh0LmNvbnRhaW5lci5pbm5lckhUTUwgPSAnJztcbiAgICBjb250ZXh0LmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnNlbGVjdCk7XG5cbiAgICAvLyBGb2N1cyBhZnRlciByZW5kZXJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0Py5mb2N1cygpO1xuICAgICAgdGhpcy5zZWxlY3Q/LmNsaWNrKCk7XG4gICAgICBcbiAgICAgIC8vIEZpbmQgdGhlIHBvcnRhbCBkaXYgZm9yIG11bHRpLXNlbGVjdCBjbGljayBkZXRlY3Rpb25cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgLy8gUG9ydGFsIGRpdiBpcyBhcHBlbmRlZCB0byBkb2N1bWVudCBib2R5XG4gICAgICAgIHRoaXMucG9ydGFsRGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5pbGUtc2VsZWN0LXBvcnRhbC1hcHBlbmQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBzZWxlY3RcbiAgICovXG4gIHByaXZhdGUgc2V0SW5pdGlhbFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIHNlbGVjdGlvbiAtIHZhbHVlIHNob3VsZCBiZSBhcnJheVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gW1N0cmluZyh2YWx1ZSldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3QudmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIHNpbmdsZSBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2VsZWN0LnZhbHVlID0gdmFsdWUgPyBTdHJpbmcodmFsdWUpIDogJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGFsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gdGhlIE5pbGVTZWxlY3QgZWxlbWVudFxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgLy8gQmFzaWMgb3B0aW9uc1xuICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBsYWNlaG9sZGVyID0gdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc2l6ZSkge1xuICAgICAgdGhpcy5zZWxlY3Quc2l6ZSA9IHRoaXMub3B0aW9ucy5zaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdC5zaXplID0gJ3NtYWxsJzsgLy8gRGVmYXVsdCBmb3IgdGFibGUgY2VsbHNcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5tdWx0aXBsZSA9IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcbiAgICB9XG5cbiAgICAvLyBCZWhhdmlvciBvcHRpb25zXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhcmFibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmNsZWFyYWJsZSA9IHRoaXMub3B0aW9ucy5jbGVhcmFibGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3QuZGlzYWJsZWQgPSB0aGlzLm9wdGlvbnMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5zZWxlY3QucmVxdWlyZWQgPSB0aGlzLm9wdGlvbnMucmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5zZWFyY2hFbmFibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5zZWFyY2hFbmFibGVkID0gdGhpcy5vcHRpb25zLnNlYXJjaEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gVmlzdWFsIHN0YXRlc1xuICAgIGlmICh0aGlzLm9wdGlvbnMud2FybmluZykge1xuICAgICAgdGhpcy5zZWxlY3Qud2FybmluZyA9IHRoaXMub3B0aW9ucy53YXJuaW5nO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmVycm9yID0gdGhpcy5vcHRpb25zLmVycm9yO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc3VjY2Vzcykge1xuICAgICAgdGhpcy5zZWxlY3Quc3VjY2VzcyA9IHRoaXMub3B0aW9ucy5zdWNjZXNzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlKSB7XG4gICAgICB0aGlzLnNlbGVjdC5lcnJvck1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVscFRleHQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmhlbHBUZXh0ID0gdGhpcy5vcHRpb25zLmhlbHBUZXh0O1xuICAgIH1cblxuICAgIC8vIEFkdmFuY2VkIGZlYXR1cmVzXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhPcHRpb25zVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5tYXhPcHRpb25zVmlzaWJsZSA9IHRoaXMub3B0aW9ucy5tYXhPcHRpb25zVmlzaWJsZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmZpbGxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdC5maWxsZWQgPSB0aGlzLm9wdGlvbnMuZmlsbGVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucGlsbCkge1xuICAgICAgdGhpcy5zZWxlY3QucGlsbCA9IHRoaXMub3B0aW9ucy5waWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaG9pc3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0LmhvaXN0ID0gdGhpcy5vcHRpb25zLmhvaXN0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucGxhY2VtZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdC5wbGFjZW1lbnQgPSB0aGlzLm9wdGlvbnMucGxhY2VtZW50O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZW5hYmxlVmlydHVhbFNjcm9sbCkge1xuICAgICAgdGhpcy5zZWxlY3QuZW5hYmxlVmlydHVhbFNjcm9sbCA9IHRoaXMub3B0aW9ucy5lbmFibGVWaXJ0dWFsU2Nyb2xsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlzYWJsZUxvY2FsU2VhcmNoKSB7XG4gICAgICB0aGlzLnNlbGVjdC5kaXNhYmxlTG9jYWxTZWFyY2ggPSB0aGlzLm9wdGlvbnMuZGlzYWJsZUxvY2FsU2VhcmNoO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucG9ydGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBvcnRhbCA9IHRoaXMub3B0aW9ucy5wb3J0YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0LnBvcnRhbCA9IHRydWU7IC8vIERlZmF1bHQgdG8gcG9ydGFsIG1vZGUgZm9yIGJldHRlciBwb3NpdGlvbmluZ1xuICAgIH1cblxuICAgIC8vIFByZXZlbnQgd2lkdGggc3luY2luZyBpc3N1ZXMgaW4gdGFibGUgY2VsbHNcbiAgICB0aGlzLnNlbGVjdC5ub1dpZHRoU3luYyA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9wdGlvbnMgZHluYW1pY2FsbHkgd2hpbGUgZWRpdG9yIGlzIGFjdGl2ZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZWxlY3QpIHJldHVybjtcblxuICAgIC8vIENsZWFyIGV4aXN0aW5nIG9wdGlvbnNcbiAgICB3aGlsZSAodGhpcy5zZWxlY3QuZmlyc3RDaGlsZCkge1xuICAgICAgdGhpcy5zZWxlY3QucmVtb3ZlQ2hpbGQodGhpcy5zZWxlY3QuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgLy8gUmUtYXBwZW5kIHdpdGggbmV3IG9wdGlvbnNcbiAgICB0aGlzLmNyZWF0ZUFuZEFwcGVuZE9wdGlvbnModGhpcy5jdXJyZW50T3B0aW9ucyk7XG4gICAgXG4gICAgLy8gVHJpZ2dlciB1cGRhdGUgb24gdGhlIHdlYiBjb21wb25lbnRcbiAgICBpZiAodGhpcy5zZWxlY3QucmVxdWVzdFVwZGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3QucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgTmlsZU9wdGlvbiBlbGVtZW50cyBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIHNlbGVjdFxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHJlbmRlclxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVBbmRBcHBlbmRPcHRpb25zKG9wdGlvbnM6IChTZWxlY3RPcHRpb24gfCBzdHJpbmcpW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0KSByZXR1cm47XG5cbiAgICBvcHRpb25zLmZvckVhY2gob3B0ID0+IHtcbiAgICAgIGNvbnN0IG5pbGVPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCduaWxlLW9wdGlvbicpIGFzIGFueTtcblxuICAgICAgLy8gQXV0by1kZXRlY3QgZm9ybWF0OiBzdHJpbmcgb3IgU2VsZWN0T3B0aW9uIG9iamVjdFxuICAgICAgaWYgKHR5cGVvZiBvcHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5pbGVPcHRpb24udmFsdWUgPSBvcHQ7XG4gICAgICAgIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCd2YWx1ZScsIG9wdCk7XG4gICAgICAgIG5pbGVPcHRpb24udGV4dENvbnRlbnQgPSBvcHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuaWxlT3B0aW9uLnZhbHVlID0gb3B0LnZhbHVlO1xuICAgICAgICBuaWxlT3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBvcHQudmFsdWUpO1xuICAgICAgICBuaWxlT3B0aW9uLnRleHRDb250ZW50ID0gb3B0LmxhYmVsO1xuICAgICAgICBcbiAgICAgICAgaWYgKG9wdC5kaXNhYmxlZCkge1xuICAgICAgICAgIG5pbGVPcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIG5pbGVPcHRpb24uc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgcHJlZml4IGlmIHByb3ZpZGVkIChjb3VsZCBiZSBpY29uIG5hbWUgb3IgY29udGVudClcbiAgICAgICAgaWYgKG9wdC5wcmVmaXgpIHtcbiAgICAgICAgICAvLyBuaWxlT3B0aW9uLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdwcmVmaXgnKTtcbiAgICAgICAgICAvLyBuaWxlT3B0aW9uLmlubmVySFRNTCA9IGA8bmlsZS1pY29uIG5hbWU9XCIke29wdC5wcmVmaXh9XCI+PC9uaWxlLWljb24+YDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdCEuYXBwZW5kQ2hpbGQobmlsZU9wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVwIGFsbCBldmVudCBsaXN0ZW5lcnMgd2l0aCBwcm9wZXIgY2xlYW51cCB0cmFja2luZ1xuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cEV2ZW50TGlzdGVuZXJzKGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PFQ+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdmFsaWRhdGVPblNhdmUgPSB0aGlzLm9wdGlvbnMudmFsaWRhdGVPblNhdmUgIT09IGZhbHNlO1xuXG4gICAgLy8gSGFuZGxlIGtleWJvYXJkIGV2ZW50cyAoa2V5ZG93biBpcyBub3QgcmVwbGFjZWQgYnkgY3VzdG9tIGV2ZW50cylcbiAgICBjb25zdCBrZXlkb3duSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3Qga2V5RXZlbnQgPSBlIGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgICBpZiAoa2V5RXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICBrZXlFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBrZXlFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29udGV4dC5vbkNhbmNlbCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5zZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGtleWRvd25IYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ2tleWRvd24nLCBoYW5kbGVyOiBrZXlkb3duSGFuZGxlciB9KTtcblxuICAgIC8vIFVzZSBuaWxlLWNoYW5nZSBjdXN0b20gZXZlbnQgYXMgcHJpbWFyeSBzYXZlIHRyaWdnZXJcbiAgICBjb25zdCBjaGFuZ2VIYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICBpZiAodmFsaWRhdGVPblNhdmUgJiYgIXRoaXMuc2VsZWN0Py5jaGVja1ZhbGlkaXR5KCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Q/LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gT25seSBzYXZlIGltbWVkaWF0ZWx5IGZvciBzaW5nbGUtc2VsZWN0XG4gICAgICAvLyBNdWx0aS1zZWxlY3Qgc2F2ZXMgb24gb3V0c2lkZSBjbGlja1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgY29udGV4dC5vblNhdmUodGhpcy5wYXJzZVZhbHVlKGN1c3RvbUV2ZW50LmRldGFpbC52YWx1ZSkpO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5zZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignbmlsZS1jaGFuZ2UnLCBjaGFuZ2VIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtY2hhbmdlJywgaGFuZGxlcjogY2hhbmdlSGFuZGxlciB9KTtcblxuICAgIC8vIEhhbmRsZSBibHVyIGFzIHNlY29uZGFyeSBzYXZlIHRyaWdnZXJcbiAgICBjb25zdCBibHVySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgaWYgKHZhbGlkYXRlT25TYXZlICYmICF0aGlzLnNlbGVjdD8uY2hlY2tWYWxpZGl0eSgpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0Py5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBjb250ZXh0Lm9uU2F2ZSh0aGlzLmdldEN1cnJlbnRWYWx1ZSgpKTtcbiAgICB9O1xuICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtYmx1cicsIGJsdXJIYW5kbGVyKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtYmx1cicsIGhhbmRsZXI6IGJsdXJIYW5kbGVyIH0pO1xuXG4gICAgLy8gSGFuZGxlIGNsZWFyIGJ1dHRvbiBpZiBlbmFibGVkXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jbGVhcmFibGUpIHtcbiAgICAgIGNvbnN0IGNsZWFySGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLnBhcnNlVmFsdWUodGhpcy5vcHRpb25zLm11bHRpcGxlID8gW10gOiAnJykpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtY2xlYXInLCBjbGVhckhhbmRsZXIpO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycy5wdXNoKHsgZXZlbnQ6ICduaWxlLWNsZWFyJywgaGFuZGxlcjogY2xlYXJIYW5kbGVyIH0pO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzZWFyY2ggZm9yIHNlcnZlci1zaWRlIHNlYXJjaCBzY2VuYXJpb3NcbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVMb2NhbFNlYXJjaCkge1xuICAgICAgY29uc3Qgc2VhcmNoSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IGUgYXMgQ3VzdG9tRXZlbnQ7XG4gICAgICAgIC8vIEVtaXQgc2VhcmNoIHF1ZXJ5IHRocm91Z2ggb25DaGFuZ2UgZm9yIGV4dGVybmFsIGhhbmRsaW5nXG4gICAgICAgIGNvbnRleHQub25DaGFuZ2UoY3VzdG9tRXZlbnQuZGV0YWlsIGFzIFQpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ25pbGUtc2VhcmNoJywgc2VhcmNoSGFuZGxlcik7XG4gICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzLnB1c2goeyBldmVudDogJ25pbGUtc2VhcmNoJywgaGFuZGxlcjogc2VhcmNoSGFuZGxlciB9KTtcbiAgICB9XG5cbiAgICAvLyBGb3IgbXVsdGktc2VsZWN0OiBkZXRlY3QgY2xpY2tzIG91dHNpZGUgcG9ydGFsIGFuZCBzZWxlY3RcbiAgICBpZiAodGhpcy5vcHRpb25zLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCBkb2N1bWVudENsaWNrSGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBtb3VzZUV2ZW50ID0gZSBhcyBNb3VzZUV2ZW50O1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBtb3VzZUV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgXG4gICAgICAgIC8vIENoZWNrIGlmIHBvcnRhbCBkaXYgZXhpc3RzIChtaWdodCB0YWtlIGEgbW9tZW50IHRvIHJlbmRlcilcbiAgICAgICAgaWYgKCF0aGlzLnBvcnRhbERpdikge1xuICAgICAgICAgIHRoaXMucG9ydGFsRGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5pbGUtc2VsZWN0LXBvcnRhbC1hcHBlbmQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIGNsaWNrIGlzIGluc2lkZSB0aGUgc2VsZWN0IG9yIHBvcnRhbFxuICAgICAgICBjb25zdCBjbGlja2VkSW5zaWRlU2VsZWN0ID0gdGhpcy5zZWxlY3Q/LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVQb3J0YWwgPSB0aGlzLnBvcnRhbERpdj8uY29udGFpbnModGFyZ2V0KTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIGNsaWNrZWQgb3V0c2lkZSBib3RoIHNlbGVjdCBhbmQgcG9ydGFsLCBzYXZlIGFuZCBjbG9zZVxuICAgICAgICBpZiAoIWNsaWNrZWRJbnNpZGVTZWxlY3QgJiYgIWNsaWNrZWRJbnNpZGVQb3J0YWwpIHtcbiAgICAgICAgICBpZiAodmFsaWRhdGVPblNhdmUgJiYgIXRoaXMuc2VsZWN0Py5jaGVja1ZhbGlkaXR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Py5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250ZXh0Lm9uU2F2ZSh0aGlzLmdldEN1cnJlbnRWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UsIGNsaWNrIGlzIGluc2lkZSAtIGRvIG5vdGhpbmcgKGRyb3Bkb3duIHN0YXlzIG9wZW4pXG4gICAgICB9O1xuICAgICAgXG4gICAgICAvLyBBZGQgdG8gZG9jdW1lbnQgd2l0aCBjYXB0dXJlIHBoYXNlXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGRvY3VtZW50Q2xpY2tIYW5kbGVyLCB0cnVlKTtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMucHVzaCh7IFxuICAgICAgICBldmVudDogJ2RvY3VtZW50LWNsaWNrJywgIC8vIFVzZSBjdXN0b20gbmFtZSB0byBpZGVudGlmeSBpdFxuICAgICAgICBoYW5kbGVyOiBkb2N1bWVudENsaWNrSGFuZGxlciBcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSB2YWx1ZSBiYXNlZCBvbiBzZWxlY3Rpb24gbW9kZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IFQge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgIC8vIEVuc3VyZSBhcnJheSBmb3IgbXVsdGlwbGUgc2VsZWN0aW9uXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIHVua25vd24gYXMgVDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAodmFsdWUgPyBbdmFsdWVdIDogW10pIGFzIHVua25vd24gYXMgVDtcbiAgICB9XG4gICAgXG4gICAgLy8gU2luZ2xlIHNlbGVjdGlvbiAtIHJldHVybiBzdHJpbmdcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAodmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlWzBdIDogJycpIGFzIHVua25vd24gYXMgVDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlIGFzIHVua25vd24gYXMgVDtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBvcHRpb25zIE9ic2VydmFibGVcbiAgICBpZiAodGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9wdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMub3B0aW9uc1N1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgXG4gICAgLy8gUmVtb3ZlIGFsbCBldmVudCBsaXN0ZW5lcnNcbiAgICBpZiAodGhpcy5zZWxlY3QpIHtcbiAgICAgIHRoaXMuZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoeyBldmVudCwgaGFuZGxlciB9KSA9PiB7XG4gICAgICAgIGlmIChldmVudCA9PT0gJ2RvY3VtZW50LWNsaWNrJykge1xuICAgICAgICAgIC8vIFJlbW92ZSBmcm9tIGRvY3VtZW50IGZvciBtdWx0aS1zZWxlY3QgY2xpY2sgaGFuZGxlclxuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlciwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIGZyb20gc2VsZWN0IGVsZW1lbnRcbiAgICAgICAgICB0aGlzLnNlbGVjdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5ldmVudExpc3RlbmVycyA9IFtdO1xuICAgICAgXG4gICAgICB0aGlzLnNlbGVjdC5yZW1vdmUoKTtcbiAgICAgIHRoaXMuc2VsZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5wb3J0YWxEaXYgPSB1bmRlZmluZWQ7ICAvLyBDbGVhbiB1cCBwb3J0YWwgcmVmZXJlbmNlXG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Q/LmZvY3VzKCk7XG4gIH1cblxuICBnZXRDdXJyZW50VmFsdWUoKTogVCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdCkge1xuICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbnMubXVsdGlwbGUgPyBbXSA6ICcnKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5zZWxlY3QudmFsdWU7XG4gICAgXG4gICAgLy8gSGFuZGxlIG11bHRpcGxlIHNlbGVjdGlvblxuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pIGFzIHVua25vd24gYXMgVDtcbiAgICB9XG4gICAgXG4gICAgLy8gSGFuZGxlIHNpbmdsZSBzZWxlY3Rpb25cbiAgICByZXR1cm4gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gKHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZVswXSA6ICcnKSA6IHZhbHVlKSBhcyB1bmtub3duIGFzIFQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* These interfaces define pluggable strategies for formatting, validation, and editing
|
|
4
4
|
*/
|
|
5
5
|
export {};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdHJhdGVneSBpbnRlcmZhY2VzIGZvciBjZWxsIGJlaGF2aW9yXG4gKiBUaGVzZSBpbnRlcmZhY2VzIGRlZmluZSBwbHVnZ2FibGUgc3RyYXRlZ2llcyBmb3IgZm9ybWF0dGluZywgdmFsaWRhdGlvbiwgYW5kIGVkaXRpbmdcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0LCBDZWxsRXZlbnQgfSBmcm9tICcuL2NlbGwtdHlwZXMnO1xuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgZm9ybWF0dGluZyBjZWxsIHZhbHVlcyBmb3IgZGlzcGxheVxuICogRm9ybWF0dGVycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxGb3JtYXR0ZXI8VCA9IGFueT4ge1xuICAvKipcbiAgICogRm9ybWF0cyBhIHZhbHVlIGZvciBkaXNwbGF5XG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICovXG4gIGZvcm1hdCh2YWx1ZTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWV0aG9kIHRvIGZvcm1hdCB2YWx1ZSB3aXRoIGFkZGl0aW9uYWwgY29udGV4dFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGZvcm1hdFxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZm9ybWF0V2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgdmFsaWRhdGluZyBjZWxsIHZhbHVlc1xuICogVmFsaWRhdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxWYWxpZGF0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGEgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVzdWx0IHdpdGggc3VjY2VzcyBmbGFnIGFuZCBvcHRpb25hbCBlcnJvciBtZXNzYWdlc1xuICAgKi9cbiAgdmFsaWRhdGUodmFsdWU6IFQpOiBWYWxpZGF0aW9uUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gdmFsaWRhdGUgd2l0aCBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIHZhbGlkYXRlV2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZVxuICAgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVkaXRvciBjb250ZXh0IHByb3ZpZGVkIHRvIGNlbGwgZWRpdG9yc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3JDb250ZXh0PFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2VsbCB2YWx1ZVxuICAgKi9cbiAgdmFsdWU6IFQ7XG5cbiAgLyoqXG4gICAqIFJvdyBkYXRhIGNvbnRleHRcbiAgICovXG4gIHJvd0RhdGE/OiBhbnk7XG5cbiAgLyoqXG4gICAqIENvbHVtbiBrZXlcbiAgICovXG4gIGNvbHVtbktleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXhcbiAgICovXG4gIHJvd0luZGV4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHZhbHVlIGNoYW5nZXNcbiAgICovXG4gIG9uQ2hhbmdlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHNhdmUgdGhlIGVkaXRlZCB2YWx1ZVxuICAgKi9cbiAgb25TYXZlOiAobmV3VmFsdWU6IFQpID0+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdHJhdGVneSBpbnRlcmZhY2VzIGZvciBjZWxsIGJlaGF2aW9yXG4gKiBUaGVzZSBpbnRlcmZhY2VzIGRlZmluZSBwbHVnZ2FibGUgc3RyYXRlZ2llcyBmb3IgZm9ybWF0dGluZywgdmFsaWRhdGlvbiwgYW5kIGVkaXRpbmdcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0LCBDZWxsRXZlbnQgfSBmcm9tICcuL2NlbGwtdHlwZXMnO1xuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgZm9ybWF0dGluZyBjZWxsIHZhbHVlcyBmb3IgZGlzcGxheVxuICogRm9ybWF0dGVycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxGb3JtYXR0ZXI8VCA9IGFueT4ge1xuICAvKipcbiAgICogRm9ybWF0cyBhIHZhbHVlIGZvciBkaXNwbGF5XG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAgICovXG4gIGZvcm1hdCh2YWx1ZTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWV0aG9kIHRvIGZvcm1hdCB2YWx1ZSB3aXRoIGFkZGl0aW9uYWwgY29udGV4dFxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGZvcm1hdFxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgZm9ybWF0V2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgdmFsaWRhdGluZyBjZWxsIHZhbHVlc1xuICogVmFsaWRhdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxWYWxpZGF0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGEgY2VsbCB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIFZhbGlkYXRpb24gcmVzdWx0IHdpdGggc3VjY2VzcyBmbGFnIGFuZCBvcHRpb25hbCBlcnJvciBtZXNzYWdlc1xuICAgKi9cbiAgdmFsaWRhdGUodmFsdWU6IFQpOiBWYWxpZGF0aW9uUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gdmFsaWRhdGUgd2l0aCBhZGRpdGlvbmFsIGNvbnRleHRcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0gcm93RGF0YSBUaGUgZW50aXJlIHJvdyBkYXRhXG4gICAqIEBwYXJhbSBjb2x1bW5LZXkgVGhlIGNvbHVtbiBrZXlcbiAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIHZhbGlkYXRlV2l0aENvbnRleHQ/KHZhbHVlOiBULCByb3dEYXRhOiBhbnksIGNvbHVtbktleTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZVxuICAgKi9cbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVkaXRvciBjb250ZXh0IHByb3ZpZGVkIHRvIGNlbGwgZWRpdG9yc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3JDb250ZXh0PFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIEN1cnJlbnQgY2VsbCB2YWx1ZVxuICAgKi9cbiAgdmFsdWU6IFQ7XG5cbiAgLyoqXG4gICAqIFJvdyBkYXRhIGNvbnRleHRcbiAgICovXG4gIHJvd0RhdGE/OiBhbnk7XG5cbiAgLyoqXG4gICAqIENvbHVtbiBrZXlcbiAgICovXG4gIGNvbHVtbktleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSb3cgaW5kZXhcbiAgICovXG4gIHJvd0luZGV4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIHZhbHVlIGNoYW5nZXNcbiAgICovXG4gIG9uQ2hhbmdlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIHNhdmUgdGhlIGVkaXRlZCB2YWx1ZVxuICAgKi9cbiAgb25TYXZlOiAobmV3VmFsdWU6IFQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGNhbmNlbCBlZGl0aW5nXG4gICAqL1xuICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGVsZW1lbnQgZm9yIHRoZSBlZGl0b3JcbiAgICovXG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFN0cmF0ZWd5IGludGVyZmFjZSBmb3IgaGFuZGxpbmcgaW5saW5lIGNlbGwgZWRpdGluZ1xuICogRWRpdG9ycyBhcmUgc3RhdGVsZXNzIGFuZCBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENlbGxFZGl0b3I8VCA9IGFueT4ge1xuICAvKipcbiAgICogV2hldGhlciB0aGlzIGVkaXRvciBzaG91bGQgcmVjZWl2ZSB0aGUgaW5pdGlhbCBrZXlwcmVzcyBjaGFyYWN0ZXJcbiAgICogd2hlbiBzdGFydGluZyBlZGl0IG1vZGUgdmlhIGtleWJvYXJkLlxuICAgKiAtIHRydWUgKGRlZmF1bHQpOiBJbml0aWFsIGtleXByZXNzIGNoYXJhY3RlciBiZWNvbWVzIHRoZSBzdGFydGluZyB2YWx1ZVxuICAgKiAtIGZhbHNlOiBJbml0aWFsIGtleXByZXNzIGp1c3QgdHJpZ2dlcnMgZWRpdCBtb2RlLCBjaGFyYWN0ZXIgaXMgaWdub3JlZFxuICAgKi9cbiAgYWNjZXB0c0luaXRpYWxLZXlwcmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYW5kIHJlbmRlciB0aGUgZWRpdG9yXG4gICAqIEBwYXJhbSBjb250ZXh0IEVkaXRvciBjb250ZXh0IHdpdGggdmFsdWUsIGNhbGxiYWNrcywgYW5kIGNvbnRhaW5lclxuICAgKi9cbiAgZWRpdChjb250ZXh0OiBDZWxsRWRpdG9yQ29udGV4dDxUPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNsZWFudXAgd2hlbiBlZGl0b3IgaXMgZGVzdHJveWVkXG4gICAqL1xuICBkZXN0cm95PygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gZm9jdXMgdGhlIGVkaXRvclxuICAgKi9cbiAgZm9jdXM/KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1ldGhvZCB0byBnZXQgY3VycmVudCBlZGl0b3IgdmFsdWUgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGdldEN1cnJlbnRWYWx1ZT8oKTogVDtcbn1cblxuLyoqXG4gKiBQYXJzZXIgaW50ZXJmYWNlIGZvciBjb252ZXJ0aW5nIHVzZXIgaW5wdXQgdG8gdHlwZWQgdmFsdWVzXG4gKiBVc2VkIGJ5IGVkaXRvcnMgdG8gY29udmVydCBzdHJpbmcgaW5wdXQgdG8gcHJvcGVyIGRhdGEgdHlwZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZWxsUGFyc2VyPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFBhcnNlIHVzZXIgaW5wdXQgdG8gdHlwZWQgdmFsdWVcbiAgICogQHBhcmFtIGlucHV0IFVzZXIgaW5wdXQgKHVzdWFsbHkgc3RyaW5nKVxuICAgKiBAcmV0dXJucyBQYXJzZWQgdHlwZWQgdmFsdWVcbiAgICovXG4gIHBhcnNlKGlucHV0OiBhbnkpOiBUO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRob2QgdG8gY2hlY2sgaWYgaW5wdXQgY2FuIGJlIHBhcnNlZFxuICAgKiBAcGFyYW0gaW5wdXQgVXNlciBpbnB1dFxuICAgKiBAcmV0dXJucyBUcnVlIGlmIGlucHV0IGNhbiBiZSBwYXJzZWRcbiAgICovXG4gIGNhblBhcnNlPyhpbnB1dDogYW55KTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb21wb3NpdGUgdmFsaWRhdG9yIHRoYXQgY2hhaW5zIG11bHRpcGxlIHZhbGlkYXRvcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb3NpdGVWYWxpZGF0b3I8VCA9IGFueT4gZXh0ZW5kcyBDZWxsVmFsaWRhdG9yPFQ+IHtcbiAgLyoqXG4gICAqIEFkZCBhIHZhbGlkYXRvciB0byB0aGUgY2hhaW5cbiAgICovXG4gIGFkZFZhbGlkYXRvcih2YWxpZGF0b3I6IENlbGxWYWxpZGF0b3I8VD4pOiB0aGlzO1xuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHZhbGlkYXRvcnMgaW4gdGhlIGNoYWluXG4gICAqL1xuICBnZXRWYWxpZGF0b3JzKCk6IENlbGxWYWxpZGF0b3I8VD5bXTtcbn1cblxuLyoqXG4gKiBFdmVudCBoYW5kbGVyIHR5cGVzIGZvciBjZWxsIGxpZmVjeWNsZSBldmVudHNcbiAqL1xuZXhwb3J0IHR5cGUgQ2VsbEV2ZW50SGFuZGxlcjxUID0gYW55PiA9IChldmVudDogQ2VsbEV2ZW50PFQ+KSA9PiB2b2lkO1xuXG4vKipcbiAqIENlbGwgbGlmZWN5Y2xlIGhvb2tzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbExpZmVjeWNsZUhvb2tzPFQgPSBhbnk+IHtcbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgZWRpdGluZyBzdGFydHNcbiAgICovXG4gIGJlZm9yZUVkaXQ/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBlZGl0IG1vZGUgaXMgZW50ZXJlZFxuICAgKi9cbiAgb25FZGl0PzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGVkaXQgbW9kZSBpcyBleGl0ZWRcbiAgICovXG4gIGFmdGVyRWRpdD86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCBiZWZvcmUgdmFsdWUgaXMgc2F2ZWRcbiAgICovXG4gIGJlZm9yZVNhdmU/OiBDZWxsRXZlbnRIYW5kbGVyPFQ+O1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgdmFsdWUgaXMgc2F2ZWRcbiAgICovXG4gIG9uU2F2ZT86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGVkaXQgaXMgY2FuY2VsbGVkXG4gICAqL1xuICBvbkNhbmNlbD86IENlbGxFdmVudEhhbmRsZXI8VD47XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIG9uVmFsaWRhdGlvbkVycm9yPzogQ2VsbEV2ZW50SGFuZGxlcjxUPjtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gY2VsbCB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBvbkNoYW5nZT86IENlbGxFdmVudEhhbmRsZXI8VD47XG59XG5cbiJdfQ==
|
|
@@ -155,12 +155,18 @@ export class StCellComponent {
|
|
|
155
155
|
startEditWithKey(key) {
|
|
156
156
|
const canStart = this.cell.startEdit();
|
|
157
157
|
if (canStart) {
|
|
158
|
-
// Replace current value with the key
|
|
159
|
-
this.cell.setValue(key, false);
|
|
160
158
|
const column = this.cell.getColumnConfig();
|
|
159
|
+
const editor = column.editor;
|
|
160
|
+
// Only set initial keypress value if editor accepts it
|
|
161
|
+
// Default to true for backward compatibility with existing editors
|
|
162
|
+
const acceptsKeypress = editor?.acceptsInitialKeypress !== false;
|
|
163
|
+
if (acceptsKeypress) {
|
|
164
|
+
// Replace current value with the key
|
|
165
|
+
this.cell.setValue(key, false);
|
|
166
|
+
}
|
|
161
167
|
const editEvent = {
|
|
162
168
|
cell: this.cell,
|
|
163
|
-
value: key,
|
|
169
|
+
value: acceptsKeypress ? key : this.cell.getValue(),
|
|
164
170
|
rowData: this.cell.getRowData(),
|
|
165
171
|
columnKey: column.key,
|
|
166
172
|
rowIndex: this.cell.getRowIndex(),
|
|
@@ -388,4 +394,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
388
394
|
type: HostListener,
|
|
389
395
|
args: ['keydown', ['$event']]
|
|
390
396
|
}] } });
|
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2NvbXBvbmVudHMvc3QtY2VsbC9zdC1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jZWxsL3N0LWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBOEIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNKLE9BQU8sRUFBa0UsUUFBUSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFTMUosTUFBTSxPQUFPLGVBQWU7SUFtQjFCO1FBakJTLGFBQVEsR0FBYSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBS25DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDN0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQzdDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBMEQsQ0FBQztJQVN4RyxDQUFDO0lBRUosUUFBUTtRQUNOLHdDQUF3QztRQUN4Qyw2RUFBNkU7UUFDN0UsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ3JELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxRQUFR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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBUZW1wbGF0ZVJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NlbGwuY2xhc3MnO1xuaW1wb3J0IHsgQ2VsbEVkaXRvckNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2VsbC1zdHJhdGVnaWVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDZWxsRWRpdEV2ZW50LCBDZWxsU2F2ZUV2ZW50LCBDZWxsQ2hhbmdlRXZlbnQsIENlbGxDYW5jZWxFdmVudCwgRWRpdE1vZGUsIE5hdmlnYXRpb25LZXksIE5hdmlnYXRpb25EaXJlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2VsbC10eXBlcyc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RhYmxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdC1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0LWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdC1jZWxsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN0Q2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY2VsbCE6IENlbGw8YW55PjtcbiAgQElucHV0KCkgZWRpdE1vZGU6IEVkaXRNb2RlID0gRWRpdE1vZGUuQ0xJQ0s7XG4gIEBJbnB1dCgpIHRhYmxlU3RhdGU/OiBUYWJsZVN0YXRlO1xuICBASW5wdXQoKSB0YWJsZUNvbmZpZz86IFRhYmxlQ29uZmlnO1xuICBASW5wdXQoKSBjb2x1bW5JbmRleD86IG51bWJlcjtcbiAgXG4gIEBPdXRwdXQoKSBjZWxsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsQ2hhbmdlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjZWxsRWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbEVkaXRFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNlbGxTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxDZWxsU2F2ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2VsbENhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENhbmNlbEV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2VsbFNhdmVBbmROYXZpZ2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8e2V2ZW50OiBLZXlib2FyZEV2ZW50LCBkaXJlY3Rpb246IE5hdmlnYXRpb25EaXJlY3Rpb259PigpO1xuICBcbiAgQFZpZXdDaGlsZCgnZWRpdG9yQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGVkaXRvckNvbnRhaW5lcj86IEVsZW1lbnRSZWY7XG4gIFxuICBwcml2YXRlIGVkaXRvckNsZWFudXA/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgZWRpdGluZ1Bvc2l0aW9uU3Vic2NyaXB0aW9uPzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU3Vic2NyaWJlIHRvIGVkaXRpbmcgcG9zaXRpb24gY2hhbmdlc1xuICAgIC8vIFdoZW4gYW5vdGhlciBjZWxsIHN0YXJ0cyBlZGl0aW5nLCBzYXZlIHRoaXMgY2VsbCBpZiBpdCdzIGN1cnJlbnRseSBlZGl0aW5nXG4gICAgaWYgKHRoaXMudGFibGVTdGF0ZSAmJiB0aGlzLmNvbHVtbkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZWRpdGluZ1Bvc2l0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy50YWJsZVN0YXRlLmVkaXRpbmdDZWxsUG9zaXRpb24kLnN1YnNjcmliZShwb3NpdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5jZWxsLmdldFJvd0luZGV4KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBJZiB0aGlzIGNlbGwgaXMgY3VycmVudGx5IGVkaXRpbmdcbiAgICAgICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSAmJiByb3dJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gQW5kIHRoZSBuZXcgZWRpdGluZyBwb3NpdGlvbiBpcyBhIGRpZmZlcmVudCBjZWxsXG4gICAgICAgICAgaWYgKHBvc2l0aW9uICYmIFxuICAgICAgICAgICAgICAocG9zaXRpb24ucm93SW5kZXggIT09IHJvd0luZGV4IHx8IHBvc2l0aW9uLmNvbHVtbkluZGV4ICE9PSB0aGlzLmNvbHVtbkluZGV4KSkge1xuICAgICAgICAgICAgLy8gRm9yY2Ugc2F2ZSB0aGlzIGNlbGxcbiAgICAgICAgICAgIHRoaXMuc2F2ZUVkaXQodGhpcy5jZWxsLmdldFZhbHVlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIElmIGNlbGwgaXMgYWxyZWFkeSBpbiBlZGl0aW5nIG1vZGUsIHJlbmRlciB0aGUgZWRpdG9yXG4gICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSAmJiB0aGlzLmVkaXRvckNvbnRhaW5lcikge1xuICAgICAgdGhpcy5yZW5kZXJFZGl0b3IoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBFZGl0b3IoKTtcbiAgICBcbiAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGVkaXRpbmcgcG9zaXRpb24gY2hhbmdlc1xuICAgIGlmICh0aGlzLmVkaXRpbmdQb3NpdGlvblN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5lZGl0aW5nUG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNFZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgcmV0dXJuIGNvbmZpZy5lZGl0YWJsZSA/PyBmYWxzZTtcbiAgfVxuXG4gIGdldCB2YWxpZGF0aW9uRXJyb3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBSZWFkIHZhbGlkYXRpb24gc3RhdGUgd2l0aG91dCB0cmlnZ2VyaW5nIHZhbGlkYXRpb25cbiAgICAvLyBUaGlzIHByZXZlbnRzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuY2VsbC5nZXRTdGF0ZSgpO1xuICAgIFxuICAgIGlmIChzdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIHN0YXRlLmVycm9yO1xuICAgIH1cbiAgICBcbiAgICBpZiAoc3RhdGUuZXJyb3JzICYmIEFycmF5LmlzQXJyYXkoc3RhdGUuZXJyb3JzKSAmJiBzdGF0ZS5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHN0YXRlLmVycm9ycy5qb2luKCcsICcpO1xuICAgIH1cbiAgICBcbiAgICAvLyBPbmx5IHJldHVybiBnZW5lcmljIG1lc3NhZ2UgaWYgY2VsbCBpcyBtYXJrZWQgYXMgaW52YWxpZFxuICAgIGlmICghdGhpcy5jZWxsLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuICdJbnZhbGlkIHZhbHVlJztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBoYXNDZWxsVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgIHJldHVybiAhIWNvbmZpZy5jZWxsVGVtcGxhdGU7XG4gIH1cblxuICBnZXQgY2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpLmNlbGxUZW1wbGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHRlbXBsYXRlQ29udGV4dCgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAkaW1wbGljaXQ6IHRoaXMuY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgIHJvd0luZGV4OiB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKVxuICAgIH07XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25DZWxsS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8vIE9ubHkgaGFuZGxlIGlmIHRoaXMgY2VsbCBpcyBmb2N1c2VkXG4gICAgaWYgKCF0aGlzLmNlbGwuaXNGb2N1c2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gVXNlIE5hdmlnYXRpb25LZXkgZW51bSBmb3IgdHlwZS1zYWZlIGtleSBjaGVja2luZ1xuICAgIHN3aXRjaCAoZXZlbnQua2V5IGFzIE5hdmlnYXRpb25LZXkpIHtcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5FTlRFUjpcbiAgICAgICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSkge1xuICAgICAgICAgIC8vIFNhdmUgYW5kIGxldCBuYXZpZ2F0aW9uIGhhcHBlblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zYXZlRWRpdCh0aGlzLmNlbGwuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgLy8gRW1pdCBldmVudCB0byB0cmlnZ2VyIG5hdmlnYXRpb24gZG93blxuICAgICAgICAgIHRoaXMuY2VsbFNhdmVBbmROYXZpZ2F0ZS5lbWl0KHsgZXZlbnQsIGRpcmVjdGlvbjogTmF2aWdhdGlvbkRpcmVjdGlvbi5ET1dOIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5vdCBlZGl0aW5nLCBsZXQgZGlyZWN0aXZlIGhhbmRsZSBuYXZpZ2F0aW9uXG4gICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5UQUI6XG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICAvLyBTYXZlIGFuZCBsZXQgbmF2aWdhdGlvbiBoYXBwZW5cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2F2ZUVkaXQodGhpcy5jZWxsLmdldFZhbHVlKCkpO1xuICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5ID8gTmF2aWdhdGlvbkRpcmVjdGlvbi5MRUZUIDogTmF2aWdhdGlvbkRpcmVjdGlvbi5SSUdIVDtcbiAgICAgICAgICB0aGlzLmNlbGxTYXZlQW5kTmF2aWdhdGUuZW1pdCh7IGV2ZW50LCBkaXJlY3Rpb24gfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgbm90IGVkaXRpbmcsIGxldCBkaXJlY3RpdmUgaGFuZGxlIG5hdmlnYXRpb25cbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgY2FzZSBOYXZpZ2F0aW9uS2V5LkVTQ0FQRTpcbiAgICAgICAgaWYgKHRoaXMuY2VsbC5pc0VkaXRpbmcoKSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICAgICAgLy8gU3RheSBmb2N1c2VkIG9uIHNhbWUgY2VsbCAobm8gbmF2aWdhdGlvbilcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBDaGVjayBmb3IgYWxwaGFudW1lcmljIGtleXMgd2hlbiBmb2N1c2VkIGJ1dCBub3QgZWRpdGluZ1xuICAgICAgICBpZiAoIXRoaXMuY2VsbC5pc0VkaXRpbmcoKSAmJiB0aGlzLmlzQWxwaGFudW1lcmljS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGlmICh0aGlzLmNhbkVkaXRWaWFLZXlib2FyZCgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAvLyBTdGFydCBlZGl0aW5nIHdpdGggdGhlIHByZXNzZWQga2V5IGFzIGluaXRpYWwgdmFsdWVcbiAgICAgICAgICAgIHRoaXMuc3RhcnRFZGl0V2l0aEtleShldmVudC5rZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBFbnRlciBrZXkgY2FuIHRyaWdnZXIgZWRpdGluZ1xuICAgKiBVc2luZyBFZGl0TW9kZSBlbnVtIHZhbHVlc1xuICAgKi9cbiAgcHJpdmF0ZSBjYW5FZGl0VmlhRW50ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZGl0YWJsZSAmJiBcbiAgICAgICAgICAgKHRoaXMuZWRpdE1vZGUgPT09IEVkaXRNb2RlLkVOVEVSIHx8IHRoaXMuZWRpdE1vZGUgPT09IEVkaXRNb2RlLkNMSUNLKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGtleWJvYXJkIGNhbiB0cmlnZ2VyIGVkaXRpbmcgKGZvciBhbHBoYW51bWVyaWMgYW5kIGRvdWJsZS1jbGljaylcbiAgICovXG4gIHByaXZhdGUgY2FuRWRpdFZpYUtleWJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRWRpdGFibGUgJiYgXG4gICAgICAgICAgICh0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5FTlRFUiB8fCB0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5DTElDSyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIGtleSBpcyBhbHBoYW51bWVyaWMgKHNpbmdsZSBjaGFyYWN0ZXIpXG4gICAqL1xuICBwcml2YXRlIGlzQWxwaGFudW1lcmljS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgLy8gU2luZ2xlIGNoYXJhY3RlciBrZXlzIChsZXR0ZXJzLCBudW1iZXJzLCBzeW1ib2xzKVxuICAgIHJldHVybiBldmVudC5rZXkubGVuZ3RoID09PSAxICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5ICYmICFldmVudC5hbHRLZXk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTdGFydCBlZGl0aW5nIHdpdGggYSBzcGVjaWZpYyBrZXkgYXMgdGhlIGluaXRpYWwgdmFsdWVcbiAgICovXG4gIHByaXZhdGUgc3RhcnRFZGl0V2l0aEtleShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNhblN0YXJ0ID0gdGhpcy5jZWxsLnN0YXJ0RWRpdCgpO1xuICAgIGlmIChjYW5TdGFydCkge1xuICAgICAgLy8gUmVwbGFjZSBjdXJyZW50IHZhbHVlIHdpdGggdGhlIGtleVxuICAgICAgdGhpcy5jZWxsLnNldFZhbHVlKGtleSwgZmFsc2UpO1xuICAgICAgXG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgICBjb25zdCBlZGl0RXZlbnQ6IENlbGxFZGl0RXZlbnQgPSB7XG4gICAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgICAgdmFsdWU6IGtleSxcbiAgICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICAgIGNlbGxTdGF0ZTogdGhpcy5jZWxsLmdldFN0YXRlKClcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxFZGl0LmVtaXQoZWRpdEV2ZW50KTtcbiAgICAgIFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyRWRpdG9yKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBvbkNlbGxDbGljaygpOiB2b2lkIHtcbiAgICAvLyBTaW5nbGUgY2xpY2sgbm93IG9ubHkgZm9jdXNlcywgZG9lc24ndCBzdGFydCBlZGl0aW5nXG4gICAgLy8gRm9jdXMgaXMgaGFuZGxlZCBieSBwYXJlbnQgc3QtdGFibGUgY29tcG9uZW50XG4gIH1cblxuICBvbkNlbGxEb3VibGVDbGljaygpOiB2b2lkIHtcbiAgICAvLyBEb3VibGUtY2xpY2sgc3RhcnRzIGVkaXRpbmcgcmVnYXJkbGVzcyBvZiBFZGl0TW9kZSAoRXhjZWwtbGlrZSBiZWhhdmlvcilcbiAgICBpZiAodGhpcy5pc0VkaXRhYmxlICYmICF0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuc3RhcnRFZGl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydEVkaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY2FuU3RhcnQgPSB0aGlzLmNlbGwuc3RhcnRFZGl0KCk7XG4gICAgaWYgKGNhblN0YXJ0KSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgICBcbiAgICAgIC8vIE5vdGlmeSBUYWJsZVN0YXRlIHRoYXQgdGhpcyBjZWxsIGlzIG5vdyBlZGl0aW5nXG4gICAgICBpZiAodGhpcy50YWJsZVN0YXRlICYmIHRoaXMuY29sdW1uSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpO1xuICAgICAgICBpZiAocm93SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMudGFibGVTdGF0ZS5zZXRFZGl0aW5nQ2VsbChyb3dJbmRleCwgdGhpcy5jb2x1bW5JbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgY29uc3QgZWRpdEV2ZW50OiBDZWxsRWRpdEV2ZW50ID0ge1xuICAgICAgICBjZWxsOiB0aGlzLmNlbGwsXG4gICAgICAgIHZhbHVlOiB0aGlzLmNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICAgIGNlbGxTdGF0ZTogdGhpcy5jZWxsLmdldFN0YXRlKClcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxFZGl0LmVtaXQoZWRpdEV2ZW50KTtcbiAgICAgIFxuICAgICAgLy8gV2FpdCBmb3IgQW5ndWxhciB0byByZW5kZXIgdGhlIGVkaXRvciBjb250YWluZXJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlckVkaXRvcigpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJFZGl0b3IoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVkaXRvckNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICBjb25zdCBlZGl0b3IgPSBjb2x1bW4uZWRpdG9yO1xuICAgIFxuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vIGVkaXRvciBjb25maWd1cmVkIGZvciBjb2x1bW46JywgY29sdW1uLmtleSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNlbGwuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgIFxuICAgIC8vIENyZWF0ZSBlZGl0b3IgY29udGV4dFxuICAgIGNvbnN0IGNvbnRleHQ6IENlbGxFZGl0b3JDb250ZXh0PGFueT4gPSB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICBvbkNoYW5nZTogKG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgLy8gVHJpZ2dlciBlYWdlciB2YWxpZGF0aW9uIGlmIGVuYWJsZWRcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb25maWc/LnZhbGlkYXRpb24/Lm1vZGUgPT09ICdlYWdlcicpIHtcbiAgICAgICAgICAvLyBVcGRhdGUgY2VsbCB2YWx1ZSB0ZW1wb3JhcmlseSBmb3IgdmFsaWRhdGlvblxuICAgICAgICAgIHRoaXMuY2VsbC5zZXRWYWx1ZShuZXdWYWx1ZSwgdHJ1ZSk7IC8vIHNraXAgdmFsaWRhdGlvbiB0byBhdm9pZCBkb3VibGUgdmFsaWRhdGlvblxuICAgICAgICAgIHRoaXMudHJpZ2dlckVhZ2VyVmFsaWRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb25TYXZlOiAobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNhdmVFZGl0KG5ld1ZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbmNlbEVkaXQoKTtcbiAgICAgIH0sXG4gICAgICBjb250YWluZXJcbiAgICB9O1xuICAgIFxuICAgIC8vIENhbGwgZWRpdG9yJ3MgZWRpdCBtZXRob2RcbiAgICBlZGl0b3IuZWRpdChjb250ZXh0KTtcbiAgICBcbiAgICAvLyBTdG9yZSBjbGVhbnVwIGNhbGxiYWNrXG4gICAgdGhpcy5lZGl0b3JDbGVhbnVwID0gKCkgPT4ge1xuICAgICAgaWYgKGVkaXRvci5kZXN0cm95KSB7XG4gICAgICAgIGVkaXRvci5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgICAvLyBDbGVhciBjb250YWluZXJcbiAgICAgIHdoaWxlIChjb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNhdmVFZGl0KG5ld1ZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5jZWxsLmdldFZhbHVlKCk7XG4gICAgY29uc3Qgd2FzVmFsaWQgPSB0aGlzLmNlbGwuaXNWYWxpZCgpO1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmNlbGwuc2F2ZUVkaXQobmV3VmFsdWUpO1xuICAgIFxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgICBjb25zdCBjZWxsU3RhdGUgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKTtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLmNlbGwuaXNWYWxpZCgpO1xuICAgICAgXG4gICAgICAvLyBOb3RpZnkgVGFibGVTdGF0ZSB0aGF0IGVkaXRpbmcgZW5kZWRcbiAgICAgIGlmICh0aGlzLnRhYmxlU3RhdGUpIHtcbiAgICAgICAgdGhpcy50YWJsZVN0YXRlLmNsZWFyRWRpdGluZ0NlbGwoKTtcbiAgICAgICAgXG4gICAgICAgIC8vIFVwZGF0ZSB2YWxpZGF0aW9uIHN0YXRlIChsYXp5IG1vZGUgLSBvbiBzYXZlKVxuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25TdGF0ZSgpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBFbWl0IHNhdmUgZXZlbnRcbiAgICAgIGNvbnN0IHNhdmVFdmVudDogQ2VsbFNhdmVFdmVudCA9IHtcbiAgICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIHByZXZpb3VzVmFsdWU6IHByZXZpb3VzVmFsdWUsXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICBpc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgICB2YWxpZGF0aW9uRXJyb3JzOiBjZWxsU3RhdGUuZXJyb3IgPyBbY2VsbFN0YXRlLmVycm9yXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY2VsbFN0YXRlOiBjZWxsU3RhdGVcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxTYXZlLmVtaXQoc2F2ZUV2ZW50KTtcbiAgICAgIFxuICAgICAgLy8gRW1pdCBjaGFuZ2UgZXZlbnRcbiAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBDZWxsQ2hhbmdlRXZlbnQgPSB7XG4gICAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgICAgb2xkVmFsdWU6IHByZXZpb3VzVmFsdWUsXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KCksXG4gICAgICAgIHdhc1ZhbGlkOiB3YXNWYWxpZCxcbiAgICAgICAgaXNWYWxpZDogaXNWYWxpZCxcbiAgICAgICAgY2VsbFN0YXRlOiBjZWxsU3RhdGVcbiAgICAgIH07XG4gICAgICB0aGlzLmNlbGxDaGFuZ2UuZW1pdChjaGFuZ2VFdmVudCk7XG4gICAgICBcbiAgICAgIHRoaXMuY2xlYW51cEVkaXRvcigpO1xuICAgIH1cbiAgICAvLyBJZiB2YWxpZGF0aW9uIGZhaWxzLCBrZWVwIGVkaXRpbmcgbW9kZVxuICB9XG4gIFxuICAvKipcbiAgICogVXBkYXRlIHZhbGlkYXRpb24gc3RhdGUgaW4gVGFibGVTdGF0ZVxuICAgKiBDYWxsZWQgb24gc2F2ZSAobGF6eSBtb2RlKSBvciBvbiBjaGFuZ2UgKGVhZ2VyIG1vZGUpXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVZhbGlkYXRpb25TdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFibGVTdGF0ZSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jZWxsLmlzVmFsaWQoKTtcbiAgICBjb25zdCBlcnJvciA9IHRoaXMuY2VsbC5nZXRTdGF0ZSgpLmVycm9yO1xuICAgIGNvbnN0IHJvd0luZGV4ID0gdGhpcy5jZWxsLmdldFJvd0luZGV4KCk7XG4gICAgXG4gICAgLy8gT25seSB1cGRhdGUgaWYgcm93SW5kZXggaXMgZGVmaW5lZFxuICAgIGlmIChyb3dJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgXG4gICAgdGhpcy50YWJsZVN0YXRlLnVwZGF0ZUNlbGxWYWxpZGF0aW9uKFxuICAgICAgcm93SW5kZXgsXG4gICAgICBjb2x1bW4ua2V5LFxuICAgICAgaXNWYWxpZCxcbiAgICAgIGVycm9yXG4gICAgKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFRyaWdnZXIgZWFnZXIgdmFsaWRhdGlvbiAob24gZXZlcnkgY2hhbmdlKVxuICAgKi9cbiAgcHJpdmF0ZSB0cmlnZ2VyRWFnZXJWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJsZVN0YXRlIHx8ICF0aGlzLnRhYmxlQ29uZmlnKSByZXR1cm47XG4gICAgXG4gICAgY29uc3QgdmFsaWRhdGlvbk1vZGUgPSB0aGlzLnRhYmxlQ29uZmlnLnZhbGlkYXRpb24/Lm1vZGUgfHwgJ2xhenknO1xuICAgIGlmICh2YWxpZGF0aW9uTW9kZSAhPT0gJ2VhZ2VyJykgcmV0dXJuO1xuICAgIFxuICAgIC8vIFJlLXZhbGlkYXRlIHRoZSBjZWxsXG4gICAgdGhpcy5jZWxsLnZhbGlkYXRlKCk7XG4gICAgXG4gICAgLy8gVXBkYXRlIHZhbGlkYXRpb24gc3RhdGVcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb25TdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxFZGl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICBjb25zdCBjZWxsU3RhdGUgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKTtcbiAgICBcbiAgICAvLyBOb3RpZnkgVGFibGVTdGF0ZSB0aGF0IGVkaXRpbmcgZW5kZWRcbiAgICBpZiAodGhpcy50YWJsZVN0YXRlKSB7XG4gICAgICB0aGlzLnRhYmxlU3RhdGUuY2xlYXJFZGl0aW5nQ2VsbCgpO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBjYW5jZWxFdmVudDogQ2VsbENhbmNlbEV2ZW50ID0ge1xuICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgdmFsdWU6IHRoaXMuY2VsbC5nZXRWYWx1ZSgpLFxuICAgICAgcHJldmlvdXNWYWx1ZTogY2VsbFN0YXRlLnByZXZpb3VzVmFsdWUsXG4gICAgICByb3dEYXRhOiB0aGlzLmNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgY2VsbFN0YXRlOiBjZWxsU3RhdGVcbiAgICB9O1xuICAgIFxuICAgIHRoaXMuY2VsbC5jYW5jZWxFZGl0KCk7XG4gICAgdGhpcy5jZWxsQ2FuY2VsLmVtaXQoY2FuY2VsRXZlbnQpO1xuICAgIHRoaXMuY2xlYW51cEVkaXRvcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwRWRpdG9yKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRvckNsZWFudXApIHtcbiAgICAgIHRoaXMuZWRpdG9yQ2xlYW51cCgpO1xuICAgICAgdGhpcy5lZGl0b3JDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0LWNlbGxcIiBcbiAgW25nQ2xhc3NdPVwie1xuICAgICdlZGl0aW5nJzogY2VsbC5pc0VkaXRpbmcoKSxcbiAgICAnZGlydHknOiBjZWxsLmlzRGlydHkoKSxcbiAgICAnaW52YWxpZCc6ICFjZWxsLmlzVmFsaWQoKSxcbiAgICAncmVhZG9ubHknOiAhaXNFZGl0YWJsZVxuICB9XCJcbiAgKGNsaWNrKT1cIm9uQ2VsbENsaWNrKClcIiBcbiAgKGRibGNsaWNrKT1cIm9uQ2VsbERvdWJsZUNsaWNrKClcIj5cblxuICA8IS0tIERpc3BsYXkgTW9kZSB3aXRoIFRlbXBsYXRlIFN1cHBvcnQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2VsbC5pc0VkaXRpbmcoKVwiPlxuICAgIDwhLS0gQ3VzdG9tIFRlbXBsYXRlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNDZWxsVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHRlbXBsYXRlQ29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBEZWZhdWx0IFRleHQgUmVuZGVyaW5nIC0tPlxuICAgIDxzcGFuICpuZ0lmPVwiIWhhc0NlbGxUZW1wbGF0ZVwiIGNsYXNzPVwiY2VsbC1kaXNwbGF5XCI+XG4gICAgICB7eyBjZWxsLnJlbmRlcigpIH19XG4gICAgPC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEVkaXQgTW9kZSAtLT5cbiAgPGRpdiAqbmdJZj1cImNlbGwuaXNFZGl0aW5nKClcIiBjbGFzcz1cImNlbGwtZWRpdG9yXCIgI2VkaXRvckNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
397
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2NvbXBvbmVudHMvc3QtY2VsbC9zdC1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jZWxsL3N0LWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBOEIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNKLE9BQU8sRUFBa0UsUUFBUSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFTMUosTUFBTSxPQUFPLGVBQWU7SUFtQjFCO1FBakJTLGFBQVEsR0FBYSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBS25DLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDN0MsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQzdDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUNqRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBMEQsQ0FBQztJQVN4RyxDQUFDO0lBRUosUUFBUTtRQUNOLHdDQUF3QztRQUN4Qyw2RUFBNkU7UUFDN0UsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ3JELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxRQUFR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Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUU2QyxlQUFlO3NCQUFsRSxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkEwRmxELGFBQWE7c0JBRFosWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgVGVtcGxhdGVSZWYsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VsbCB9IGZyb20gJy4uLy4uL21vZGVscy9jZWxsLmNsYXNzJztcbmltcG9ydCB7IENlbGxFZGl0b3JDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NlbGwtc3RyYXRlZ2llcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2VsbEVkaXRFdmVudCwgQ2VsbFNhdmVFdmVudCwgQ2VsbENoYW5nZUV2ZW50LCBDZWxsQ2FuY2VsRXZlbnQsIEVkaXRNb2RlLCBOYXZpZ2F0aW9uS2V5LCBOYXZpZ2F0aW9uRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NlbGwtdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90YWJsZS1jb25maWcuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3QtY2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdC1jZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3QtY2VsbC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTdENlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGNlbGwhOiBDZWxsPGFueT47XG4gIEBJbnB1dCgpIGVkaXRNb2RlOiBFZGl0TW9kZSA9IEVkaXRNb2RlLkNMSUNLO1xuICBASW5wdXQoKSB0YWJsZVN0YXRlPzogVGFibGVTdGF0ZTtcbiAgQElucHV0KCkgdGFibGVDb25maWc/OiBUYWJsZUNvbmZpZztcbiAgQElucHV0KCkgY29sdW1uSW5kZXg/OiBudW1iZXI7XG4gIFxuICBAT3V0cHV0KCkgY2VsbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbENoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2VsbEVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxFZGl0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjZWxsU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2VsbFNhdmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNlbGxDYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPENlbGxDYW5jZWxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNlbGxTYXZlQW5kTmF2aWdhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHtldmVudDogS2V5Ym9hcmRFdmVudCwgZGlyZWN0aW9uOiBOYXZpZ2F0aW9uRGlyZWN0aW9ufT4oKTtcbiAgXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvckNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBlZGl0b3JDb250YWluZXI/OiBFbGVtZW50UmVmO1xuICBcbiAgcHJpdmF0ZSBlZGl0b3JDbGVhbnVwPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIGVkaXRpbmdQb3NpdGlvblN1YnNjcmlwdGlvbj86IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFN1YnNjcmliZSB0byBlZGl0aW5nIHBvc2l0aW9uIGNoYW5nZXNcbiAgICAvLyBXaGVuIGFub3RoZXIgY2VsbCBzdGFydHMgZWRpdGluZywgc2F2ZSB0aGlzIGNlbGwgaWYgaXQncyBjdXJyZW50bHkgZWRpdGluZ1xuICAgIGlmICh0aGlzLnRhYmxlU3RhdGUgJiYgdGhpcy5jb2x1bW5JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmVkaXRpbmdQb3NpdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMudGFibGVTdGF0ZS5lZGl0aW5nQ2VsbFBvc2l0aW9uJC5zdWJzY3JpYmUocG9zaXRpb24gPT4ge1xuICAgICAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpO1xuICAgICAgICBcbiAgICAgICAgLy8gSWYgdGhpcyBjZWxsIGlzIGN1cnJlbnRseSBlZGl0aW5nXG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkgJiYgcm93SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIEFuZCB0aGUgbmV3IGVkaXRpbmcgcG9zaXRpb24gaXMgYSBkaWZmZXJlbnQgY2VsbFxuICAgICAgICAgIGlmIChwb3NpdGlvbiAmJiBcbiAgICAgICAgICAgICAgKHBvc2l0aW9uLnJvd0luZGV4ICE9PSByb3dJbmRleCB8fCBwb3NpdGlvbi5jb2x1bW5JbmRleCAhPT0gdGhpcy5jb2x1bW5JbmRleCkpIHtcbiAgICAgICAgICAgIC8vIEZvcmNlIHNhdmUgdGhpcyBjZWxsXG4gICAgICAgICAgICB0aGlzLnNhdmVFZGl0KHRoaXMuY2VsbC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJZiBjZWxsIGlzIGFscmVhZHkgaW4gZWRpdGluZyBtb2RlLCByZW5kZXIgdGhlIGVkaXRvclxuICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkgJiYgdGhpcy5lZGl0b3JDb250YWluZXIpIHtcbiAgICAgIHRoaXMucmVuZGVyRWRpdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwRWRpdG9yKCk7XG4gICAgXG4gICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBlZGl0aW5nIHBvc2l0aW9uIGNoYW5nZXNcbiAgICBpZiAodGhpcy5lZGl0aW5nUG9zaXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZWRpdGluZ1Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgIHJldHVybiBjb25maWcuZWRpdGFibGUgPz8gZmFsc2U7XG4gIH1cblxuICBnZXQgdmFsaWRhdGlvbkVycm9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gUmVhZCB2YWxpZGF0aW9uIHN0YXRlIHdpdGhvdXQgdHJpZ2dlcmluZyB2YWxpZGF0aW9uXG4gICAgLy8gVGhpcyBwcmV2ZW50cyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKTtcbiAgICBcbiAgICBpZiAoc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5lcnJvcjtcbiAgICB9XG4gICAgXG4gICAgaWYgKHN0YXRlLmVycm9ycyAmJiBBcnJheS5pc0FycmF5KHN0YXRlLmVycm9ycykgJiYgc3RhdGUuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBzdGF0ZS5lcnJvcnMuam9pbignLCAnKTtcbiAgICB9XG4gICAgXG4gICAgLy8gT25seSByZXR1cm4gZ2VuZXJpYyBtZXNzYWdlIGlmIGNlbGwgaXMgbWFya2VkIGFzIGludmFsaWRcbiAgICBpZiAoIXRoaXMuY2VsbC5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybiAnSW52YWxpZCB2YWx1ZSc7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgaGFzQ2VsbFRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICByZXR1cm4gISFjb25maWcuY2VsbFRlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKS5jZWxsVGVtcGxhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCB0ZW1wbGF0ZUNvbnRleHQoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgJGltcGxpY2l0OiB0aGlzLmNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICByb3dJbmRleDogdGhpcy5jZWxsLmdldFJvd0luZGV4KClcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uQ2VsbEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBPbmx5IGhhbmRsZSBpZiB0aGlzIGNlbGwgaXMgZm9jdXNlZFxuICAgIGlmICghdGhpcy5jZWxsLmlzRm9jdXNlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIFVzZSBOYXZpZ2F0aW9uS2V5IGVudW0gZm9yIHR5cGUtc2FmZSBrZXkgY2hlY2tpbmdcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSBhcyBOYXZpZ2F0aW9uS2V5KSB7XG4gICAgICBjYXNlIE5hdmlnYXRpb25LZXkuRU5URVI6XG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICAvLyBTYXZlIGFuZCBsZXQgbmF2aWdhdGlvbiBoYXBwZW5cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2F2ZUVkaXQodGhpcy5jZWxsLmdldFZhbHVlKCkpO1xuICAgICAgICAgIC8vIEVtaXQgZXZlbnQgdG8gdHJpZ2dlciBuYXZpZ2F0aW9uIGRvd25cbiAgICAgICAgICB0aGlzLmNlbGxTYXZlQW5kTmF2aWdhdGUuZW1pdCh7IGV2ZW50LCBkaXJlY3Rpb246IE5hdmlnYXRpb25EaXJlY3Rpb24uRE9XTiB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBub3QgZWRpdGluZywgbGV0IGRpcmVjdGl2ZSBoYW5kbGUgbmF2aWdhdGlvblxuICAgICAgICBicmVhaztcbiAgICAgICAgXG4gICAgICBjYXNlIE5hdmlnYXRpb25LZXkuVEFCOlxuICAgICAgICBpZiAodGhpcy5jZWxsLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgLy8gU2F2ZSBhbmQgbGV0IG5hdmlnYXRpb24gaGFwcGVuXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnNhdmVFZGl0KHRoaXMuY2VsbC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBldmVudC5zaGlmdEtleSA/IE5hdmlnYXRpb25EaXJlY3Rpb24uTEVGVCA6IE5hdmlnYXRpb25EaXJlY3Rpb24uUklHSFQ7XG4gICAgICAgICAgdGhpcy5jZWxsU2F2ZUFuZE5hdmlnYXRlLmVtaXQoeyBldmVudCwgZGlyZWN0aW9uIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5vdCBlZGl0aW5nLCBsZXQgZGlyZWN0aXZlIGhhbmRsZSBuYXZpZ2F0aW9uXG4gICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgIGNhc2UgTmF2aWdhdGlvbktleS5FU0NBUEU6XG4gICAgICAgIGlmICh0aGlzLmNlbGwuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuY2FuY2VsRWRpdCgpO1xuICAgICAgICAgIC8vIFN0YXkgZm9jdXNlZCBvbiBzYW1lIGNlbGwgKG5vIG5hdmlnYXRpb24pXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICAgIFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGFscGhhbnVtZXJpYyBrZXlzIHdoZW4gZm9jdXNlZCBidXQgbm90IGVkaXRpbmdcbiAgICAgICAgaWYgKCF0aGlzLmNlbGwuaXNFZGl0aW5nKCkgJiYgdGhpcy5pc0FscGhhbnVtZXJpY0tleShldmVudCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5jYW5FZGl0VmlhS2V5Ym9hcmQoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgLy8gU3RhcnQgZWRpdGluZyB3aXRoIHRoZSBwcmVzc2VkIGtleSBhcyBpbml0aWFsIHZhbHVlXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RWRpdFdpdGhLZXkoZXZlbnQua2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgRW50ZXIga2V5IGNhbiB0cmlnZ2VyIGVkaXRpbmdcbiAgICogVXNpbmcgRWRpdE1vZGUgZW51bSB2YWx1ZXNcbiAgICovXG4gIHByaXZhdGUgY2FuRWRpdFZpYUVudGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRWRpdGFibGUgJiYgXG4gICAgICAgICAgICh0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5FTlRFUiB8fCB0aGlzLmVkaXRNb2RlID09PSBFZGl0TW9kZS5DTElDSyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBrZXlib2FyZCBjYW4gdHJpZ2dlciBlZGl0aW5nIChmb3IgYWxwaGFudW1lcmljIGFuZCBkb3VibGUtY2xpY2spXG4gICAqL1xuICBwcml2YXRlIGNhbkVkaXRWaWFLZXlib2FyZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VkaXRhYmxlICYmIFxuICAgICAgICAgICAodGhpcy5lZGl0TW9kZSA9PT0gRWRpdE1vZGUuRU5URVIgfHwgdGhpcy5lZGl0TW9kZSA9PT0gRWRpdE1vZGUuQ0xJQ0spO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBrZXkgaXMgYWxwaGFudW1lcmljIChzaW5nbGUgY2hhcmFjdGVyKVxuICAgKi9cbiAgcHJpdmF0ZSBpc0FscGhhbnVtZXJpY0tleShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIC8vIFNpbmdsZSBjaGFyYWN0ZXIga2V5cyAobGV0dGVycywgbnVtYmVycywgc3ltYm9scylcbiAgICByZXR1cm4gZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuYWx0S2V5O1xuICB9XG4gIFxuICAvKipcbiAgICogU3RhcnQgZWRpdGluZyB3aXRoIGEgc3BlY2lmaWMga2V5IGFzIHRoZSBpbml0aWFsIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHN0YXJ0RWRpdFdpdGhLZXkoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjYW5TdGFydCA9IHRoaXMuY2VsbC5zdGFydEVkaXQoKTtcbiAgICBpZiAoY2FuU3RhcnQpIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2VsbC5nZXRDb2x1bW5Db25maWcoKTtcbiAgICAgIGNvbnN0IGVkaXRvciA9IGNvbHVtbi5lZGl0b3I7XG4gICAgICBcbiAgICAgIC8vIE9ubHkgc2V0IGluaXRpYWwga2V5cHJlc3MgdmFsdWUgaWYgZWRpdG9yIGFjY2VwdHMgaXRcbiAgICAgIC8vIERlZmF1bHQgdG8gdHJ1ZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGVkaXRvcnNcbiAgICAgIGNvbnN0IGFjY2VwdHNLZXlwcmVzcyA9IGVkaXRvcj8uYWNjZXB0c0luaXRpYWxLZXlwcmVzcyAhPT0gZmFsc2U7XG4gICAgICBcbiAgICAgIGlmIChhY2NlcHRzS2V5cHJlc3MpIHtcbiAgICAgICAgLy8gUmVwbGFjZSBjdXJyZW50IHZhbHVlIHdpdGggdGhlIGtleVxuICAgICAgICB0aGlzLmNlbGwuc2V0VmFsdWUoa2V5LCBmYWxzZSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGVkaXRFdmVudDogQ2VsbEVkaXRFdmVudCA9IHtcbiAgICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgICB2YWx1ZTogYWNjZXB0c0tleXByZXNzID8ga2V5IDogdGhpcy5jZWxsLmdldFZhbHVlKCksXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICBjZWxsU3RhdGU6IHRoaXMuY2VsbC5nZXRTdGF0ZSgpXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsRWRpdC5lbWl0KGVkaXRFdmVudCk7XG4gICAgICBcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlckVkaXRvcigpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgb25DZWxsQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gU2luZ2xlIGNsaWNrIG5vdyBvbmx5IGZvY3VzZXMsIGRvZXNuJ3Qgc3RhcnQgZWRpdGluZ1xuICAgIC8vIEZvY3VzIGlzIGhhbmRsZWQgYnkgcGFyZW50IHN0LXRhYmxlIGNvbXBvbmVudFxuICB9XG5cbiAgb25DZWxsRG91YmxlQ2xpY2soKTogdm9pZCB7XG4gICAgLy8gRG91YmxlLWNsaWNrIHN0YXJ0cyBlZGl0aW5nIHJlZ2FyZGxlc3Mgb2YgRWRpdE1vZGUgKEV4Y2VsLWxpa2UgYmVoYXZpb3IpXG4gICAgaWYgKHRoaXMuaXNFZGl0YWJsZSAmJiAhdGhpcy5jZWxsLmlzRWRpdGluZygpKSB7XG4gICAgICB0aGlzLnN0YXJ0RWRpdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRFZGl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNhblN0YXJ0ID0gdGhpcy5jZWxsLnN0YXJ0RWRpdCgpO1xuICAgIGlmIChjYW5TdGFydCkge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgICAgXG4gICAgICAvLyBOb3RpZnkgVGFibGVTdGF0ZSB0aGF0IHRoaXMgY2VsbCBpcyBub3cgZWRpdGluZ1xuICAgICAgaWYgKHRoaXMudGFibGVTdGF0ZSAmJiB0aGlzLmNvbHVtbkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKTtcbiAgICAgICAgaWYgKHJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlU3RhdGUuc2V0RWRpdGluZ0NlbGwocm93SW5kZXgsIHRoaXMuY29sdW1uSW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBcbiAgICAgIGNvbnN0IGVkaXRFdmVudDogQ2VsbEVkaXRFdmVudCA9IHtcbiAgICAgICAgY2VsbDogdGhpcy5jZWxsLFxuICAgICAgICB2YWx1ZTogdGhpcy5jZWxsLmdldFZhbHVlKCksXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICBjZWxsU3RhdGU6IHRoaXMuY2VsbC5nZXRTdGF0ZSgpXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsRWRpdC5lbWl0KGVkaXRFdmVudCk7XG4gICAgICBcbiAgICAgIC8vIFdhaXQgZm9yIEFuZ3VsYXIgdG8gcmVuZGVyIHRoZSBlZGl0b3IgY29udGFpbmVyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJFZGl0b3IoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRWRpdG9yKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5lZGl0b3JDb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgY29uc3QgZWRpdG9yID0gY29sdW1uLmVkaXRvcjtcbiAgICBcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgY29uc29sZS53YXJuKCdObyBlZGl0b3IgY29uZmlndXJlZCBmb3IgY29sdW1uOicsIGNvbHVtbi5rZXkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jZWxsLmdldFZhbHVlKCk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5lZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBcbiAgICAvLyBDcmVhdGUgZWRpdG9yIGNvbnRleHRcbiAgICBjb25zdCBjb250ZXh0OiBDZWxsRWRpdG9yQ29udGV4dDxhbnk+ID0ge1xuICAgICAgdmFsdWUsXG4gICAgICByb3dEYXRhOiB0aGlzLmNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgY29sdW1uS2V5OiBjb2x1bW4ua2V5LFxuICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgb25DaGFuZ2U6IChuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgICAgIC8vIFRyaWdnZXIgZWFnZXIgdmFsaWRhdGlvbiBpZiBlbmFibGVkXG4gICAgICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnPy52YWxpZGF0aW9uPy5tb2RlID09PSAnZWFnZXInKSB7XG4gICAgICAgICAgLy8gVXBkYXRlIGNlbGwgdmFsdWUgdGVtcG9yYXJpbHkgZm9yIHZhbGlkYXRpb25cbiAgICAgICAgICB0aGlzLmNlbGwuc2V0VmFsdWUobmV3VmFsdWUsIHRydWUpOyAvLyBza2lwIHZhbGlkYXRpb24gdG8gYXZvaWQgZG91YmxlIHZhbGlkYXRpb25cbiAgICAgICAgICB0aGlzLnRyaWdnZXJFYWdlclZhbGlkYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uU2F2ZTogKG5ld1ZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zYXZlRWRpdChuZXdWYWx1ZSk7XG4gICAgICB9LFxuICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxFZGl0KCk7XG4gICAgICB9LFxuICAgICAgY29udGFpbmVyXG4gICAgfTtcbiAgICBcbiAgICAvLyBDYWxsIGVkaXRvcidzIGVkaXQgbWV0aG9kXG4gICAgZWRpdG9yLmVkaXQoY29udGV4dCk7XG4gICAgXG4gICAgLy8gU3RvcmUgY2xlYW51cCBjYWxsYmFja1xuICAgIHRoaXMuZWRpdG9yQ2xlYW51cCA9ICgpID0+IHtcbiAgICAgIGlmIChlZGl0b3IuZGVzdHJveSkge1xuICAgICAgICBlZGl0b3IuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgLy8gQ2xlYXIgY29udGFpbmVyXG4gICAgICB3aGlsZSAoY29udGFpbmVyLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRhaW5lci5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlRWRpdChuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRoaXMuY2VsbC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHdhc1ZhbGlkID0gdGhpcy5jZWxsLmlzVmFsaWQoKTtcbiAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5jZWxsLnNhdmVFZGl0KG5ld1ZhbHVlKTtcbiAgICBcbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jZWxsLmdldENvbHVtbkNvbmZpZygpO1xuICAgICAgY29uc3QgY2VsbFN0YXRlID0gdGhpcy5jZWxsLmdldFN0YXRlKCk7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy5jZWxsLmlzVmFsaWQoKTtcbiAgICAgIFxuICAgICAgLy8gTm90aWZ5IFRhYmxlU3RhdGUgdGhhdCBlZGl0aW5nIGVuZGVkXG4gICAgICBpZiAodGhpcy50YWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMudGFibGVTdGF0ZS5jbGVhckVkaXRpbmdDZWxsKCk7XG4gICAgICAgIFxuICAgICAgICAvLyBVcGRhdGUgdmFsaWRhdGlvbiBzdGF0ZSAobGF6eSBtb2RlIC0gb24gc2F2ZSlcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uU3RhdGUoKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gRW1pdCBzYXZlIGV2ZW50XG4gICAgICBjb25zdCBzYXZlRXZlbnQ6IENlbGxTYXZlRXZlbnQgPSB7XG4gICAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgICAgbmV3VmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlLFxuICAgICAgICByb3dEYXRhOiB0aGlzLmNlbGwuZ2V0Um93RGF0YSgpLFxuICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICAgIHJvd0luZGV4OiB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKSxcbiAgICAgICAgaXNWYWxpZDogaXNWYWxpZCxcbiAgICAgICAgdmFsaWRhdGlvbkVycm9yczogY2VsbFN0YXRlLmVycm9yID8gW2NlbGxTdGF0ZS5lcnJvcl0gOiB1bmRlZmluZWQsXG4gICAgICAgIGNlbGxTdGF0ZTogY2VsbFN0YXRlXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsU2F2ZS5lbWl0KHNhdmVFdmVudCk7XG4gICAgICBcbiAgICAgIC8vIEVtaXQgY2hhbmdlIGV2ZW50XG4gICAgICBjb25zdCBjaGFuZ2VFdmVudDogQ2VsbENoYW5nZUV2ZW50ID0ge1xuICAgICAgICBjZWxsOiB0aGlzLmNlbGwsXG4gICAgICAgIG9sZFZhbHVlOiBwcmV2aW91c1ZhbHVlLFxuICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIHJvd0RhdGE6IHRoaXMuY2VsbC5nZXRSb3dEYXRhKCksXG4gICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgcm93SW5kZXg6IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpLFxuICAgICAgICB3YXNWYWxpZDogd2FzVmFsaWQsXG4gICAgICAgIGlzVmFsaWQ6IGlzVmFsaWQsXG4gICAgICAgIGNlbGxTdGF0ZTogY2VsbFN0YXRlXG4gICAgICB9O1xuICAgICAgdGhpcy5jZWxsQ2hhbmdlLmVtaXQoY2hhbmdlRXZlbnQpO1xuICAgICAgXG4gICAgICB0aGlzLmNsZWFudXBFZGl0b3IoKTtcbiAgICB9XG4gICAgLy8gSWYgdmFsaWRhdGlvbiBmYWlscywga2VlcCBlZGl0aW5nIG1vZGVcbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSB2YWxpZGF0aW9uIHN0YXRlIGluIFRhYmxlU3RhdGVcbiAgICogQ2FsbGVkIG9uIHNhdmUgKGxhenkgbW9kZSkgb3Igb24gY2hhbmdlIChlYWdlciBtb2RlKVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWYWxpZGF0aW9uU3RhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYmxlU3RhdGUpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuY2VsbC5pc1ZhbGlkKCk7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmNlbGwuZ2V0U3RhdGUoKS5lcnJvcjtcbiAgICBjb25zdCByb3dJbmRleCA9IHRoaXMuY2VsbC5nZXRSb3dJbmRleCgpO1xuICAgIFxuICAgIC8vIE9ubHkgdXBkYXRlIGlmIHJvd0luZGV4IGlzIGRlZmluZWRcbiAgICBpZiAocm93SW5kZXggPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMudGFibGVTdGF0ZS51cGRhdGVDZWxsVmFsaWRhdGlvbihcbiAgICAgIHJvd0luZGV4LFxuICAgICAgY29sdW1uLmtleSxcbiAgICAgIGlzVmFsaWQsXG4gICAgICBlcnJvclxuICAgICk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGVhZ2VyIHZhbGlkYXRpb24gKG9uIGV2ZXJ5IGNoYW5nZSlcbiAgICovXG4gIHByaXZhdGUgdHJpZ2dlckVhZ2VyVmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFibGVTdGF0ZSB8fCAhdGhpcy50YWJsZUNvbmZpZykgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IHZhbGlkYXRpb25Nb2RlID0gdGhpcy50YWJsZUNvbmZpZy52YWxpZGF0aW9uPy5tb2RlIHx8ICdsYXp5JztcbiAgICBpZiAodmFsaWRhdGlvbk1vZGUgIT09ICdlYWdlcicpIHJldHVybjtcbiAgICBcbiAgICAvLyBSZS12YWxpZGF0ZSB0aGUgY2VsbFxuICAgIHRoaXMuY2VsbC52YWxpZGF0ZSgpO1xuICAgIFxuICAgIC8vIFVwZGF0ZSB2YWxpZGF0aW9uIHN0YXRlXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuY2VsRWRpdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNlbGwuZ2V0Q29sdW1uQ29uZmlnKCk7XG4gICAgY29uc3QgY2VsbFN0YXRlID0gdGhpcy5jZWxsLmdldFN0YXRlKCk7XG4gICAgXG4gICAgLy8gTm90aWZ5IFRhYmxlU3RhdGUgdGhhdCBlZGl0aW5nIGVuZGVkXG4gICAgaWYgKHRoaXMudGFibGVTdGF0ZSkge1xuICAgICAgdGhpcy50YWJsZVN0YXRlLmNsZWFyRWRpdGluZ0NlbGwoKTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY2FuY2VsRXZlbnQ6IENlbGxDYW5jZWxFdmVudCA9IHtcbiAgICAgIGNlbGw6IHRoaXMuY2VsbCxcbiAgICAgIHZhbHVlOiB0aGlzLmNlbGwuZ2V0VmFsdWUoKSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IGNlbGxTdGF0ZS5wcmV2aW91c1ZhbHVlLFxuICAgICAgcm93RGF0YTogdGhpcy5jZWxsLmdldFJvd0RhdGEoKSxcbiAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgIHJvd0luZGV4OiB0aGlzLmNlbGwuZ2V0Um93SW5kZXgoKSxcbiAgICAgIGNlbGxTdGF0ZTogY2VsbFN0YXRlXG4gICAgfTtcbiAgICBcbiAgICB0aGlzLmNlbGwuY2FuY2VsRWRpdCgpO1xuICAgIHRoaXMuY2VsbENhbmNlbC5lbWl0KGNhbmNlbEV2ZW50KTtcbiAgICB0aGlzLmNsZWFudXBFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW51cEVkaXRvcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0b3JDbGVhbnVwKSB7XG4gICAgICB0aGlzLmVkaXRvckNsZWFudXAoKTtcbiAgICAgIHRoaXMuZWRpdG9yQ2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdC1jZWxsXCIgXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZWRpdGluZyc6IGNlbGwuaXNFZGl0aW5nKCksXG4gICAgJ2RpcnR5JzogY2VsbC5pc0RpcnR5KCksXG4gICAgJ2ludmFsaWQnOiAhY2VsbC5pc1ZhbGlkKCksXG4gICAgJ3JlYWRvbmx5JzogIWlzRWRpdGFibGVcbiAgfVwiXG4gIChjbGljayk9XCJvbkNlbGxDbGljaygpXCIgXG4gIChkYmxjbGljayk9XCJvbkNlbGxEb3VibGVDbGljaygpXCI+XG5cbiAgPCEtLSBEaXNwbGF5IE1vZGUgd2l0aCBUZW1wbGF0ZSBTdXBwb3J0IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNlbGwuaXNFZGl0aW5nKClcIj5cbiAgICA8IS0tIEN1c3RvbSBUZW1wbGF0ZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2VsbFRlbXBsYXRlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2VsbFRlbXBsYXRlOyBjb250ZXh0OiB0ZW1wbGF0ZUNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gRGVmYXVsdCBUZXh0IFJlbmRlcmluZyAtLT5cbiAgICA8c3BhbiAqbmdJZj1cIiFoYXNDZWxsVGVtcGxhdGVcIiBjbGFzcz1cImNlbGwtZGlzcGxheVwiPlxuICAgICAge3sgY2VsbC5yZW5kZXIoKSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBFZGl0IE1vZGUgLS0+XG4gIDxkaXYgKm5nSWY9XCJjZWxsLmlzRWRpdGluZygpXCIgY2xhc3M9XCJjZWxsLWVkaXRvclwiICNlZGl0b3JDb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -208,10 +208,10 @@ export class StColumnMenuDropdownComponent {
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
StColumnMenuDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
-
StColumnMenuDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnMenuDropdownComponent, selector: "st-column-menu-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "click": "onBackdropClick($event)" } }, viewQueries: [{ propertyName: "filterPopup", first: true, predicate: ["filterPopup"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;
|
|
211
|
+
StColumnMenuDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnMenuDropdownComponent, selector: "st-column-menu-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "click": "onBackdropClick($event)" } }, viewQueries: [{ propertyName: "filterPopup", first: true, predicate: ["filterPopup"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"], components: [{ type: i1.StColumnFilterComponent, selector: "st-column-filter", inputs: ["column", "tableState", "columnIndex", "isFirstColumn", "isLastColumn", "isOpen", "filterContext"], outputs: ["closed", "filterApplied", "filterCleared"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
212
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, decorators: [{
|
|
213
213
|
type: Component,
|
|
214
|
-
args: [{ selector: 'st-column-menu-dropdown', template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;
|
|
214
|
+
args: [{ selector: 'st-column-menu-dropdown', template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"] }]
|
|
215
215
|
}], propDecorators: { isOpen: [{
|
|
216
216
|
type: Input
|
|
217
217
|
}], position: [{
|