nuxeo-development-framework 4.1.5 → 4.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nuxeo-development-framework.umd.js +249 -177
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/file-manger/components/delete/delete.component.js +48 -20
- package/esm2015/lib/components/file-manger/components/rename/rename.component.js +57 -30
- package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +95 -75
- package/esm2015/lib/shared/services/base/cache-base.service.js +2 -2
- package/fesm2015/nuxeo-development-framework.js +186 -116
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/file-manger/components/delete/delete.component.d.ts +11 -4
- package/lib/components/file-manger/components/rename/rename.component.d.ts +11 -5
- package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +6 -7
- package/package.json +1 -1
|
@@ -105,7 +105,7 @@ _CacheBaseService_fetchedItems = new WeakMap(), _CacheBaseService_instances = ne
|
|
|
105
105
|
resultsCount: _fetchedItems[options.resultsCount]
|
|
106
106
|
}, options);
|
|
107
107
|
}
|
|
108
|
-
__classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey] =
|
|
108
|
+
__classPrivateFieldGet(this, _CacheBaseService_fetchedItems, "f")[options.cacheKey].fetchingItemsFromTheServer = false;
|
|
109
109
|
return _fetchedItems;
|
|
110
110
|
}), map((res) => {
|
|
111
111
|
const result = _cloneDeep({
|
|
@@ -293,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
293
293
|
providedIn: 'root'
|
|
294
294
|
}]
|
|
295
295
|
}], ctorParameters: function () { return [{ type: i1.UserPreferencesService }, { type: i2.UtilityService }]; } });
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY2FjaGUtYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUszRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzVCLFlBQ1Msc0JBQThDLEVBQzlDLGNBQThCO1FBRDlCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCOztRQUp2Qyx5Q0FBd0MsSUFBSSxHQUFHLEVBQXFCLEVBQUM7UUFNcEUsdUJBQUEsSUFBSSxvRUFBZSxNQUFuQixJQUFJLENBQWlCLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENB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QVE7UUFBRSxPQUFPO1NBQ3hCO1FBQ0osSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FDOUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUNyQixDQUFDO0tBQ0Y7QUFDRixDQUFDOzhHQTdXVyxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZoQixNQUFNOzRGQUVOLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGV4cGFuZCwgbGFzdCwgbWFwLCByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ0FDSEVfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmFzZUNhY2hlT3B0aW9ucywgQ2FjaGVJbmZvIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgX29taXQgZnJvbSAnbG9kYXNoL29taXQnO1xyXG5pbXBvcnQgX2Fzc2lnbiBmcm9tICdsb2Rhc2gvYXNzaWduJztcclxuaW1wb3J0IF9jbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XHJcbmltcG9ydCB7IERFRkFVTFRfVFRMX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcclxuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdXNlci91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbGl0aWVzL3V0aWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudk1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Vudi9lbnYtbWFuYWdlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWNoZUJhc2VTZXJ2aWNlIHtcclxuXHQjZmV0Y2hlZEl0ZW1zOiBNYXA8c3RyaW5nLCBDYWNoZUluZm8+ID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlSW5mbz4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy4jcHJlcGFyZUNvbmZpZygpO1xyXG5cdH1cclxuXHJcblx0aGFzSXRlbShjYWNoZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmhhc0l0ZW0oXHJcblx0XHRcdGAke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9JHtjYWNoZUtleX1gXHJcblx0XHQpO1xyXG5cdH1cclxuXHRjbGVhckFsbCh1c2VyTmFtZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLiNjbGVhcih1c2VyTmFtZSk7XHJcblx0fVxyXG5cdHZhbGlkYXRlVFRMKHVzZXJOYW1lOiBzdHJpbmcpIHtcclxuXHRcdGlmICghREVGQVVMVF9UVExfQ09ORklHLkFVVE9fQ0hFQ0sgfHwgIXVzZXJOYW1lKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcHJlZml4ID0gYCR7dXNlck5hbWV9X18ke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9YDtcclxuXHRcdE9iamVjdC5rZXlzKHdpbmRvdy5sb2NhbFN0b3JhZ2UpXHJcblx0XHRcdC5maWx0ZXIoKHEpID0+IHEuc3RhcnRzV2l0aChwcmVmaXgpKVxyXG5cdFx0XHQuZmlsdGVyKChrZXkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zID0ge1xyXG5cdFx0XHRcdFx0Y2FjaGVLZXk6IGtleS5yZXBsYWNlKHByZWZpeCwgJycpLFxyXG5cdFx0XHRcdFx0dXNlck5hbWU6IHVzZXJOYW1lLFxyXG5cdFx0XHRcdFx0cmVxdWVzdDogREVGQVVMVF9DQUNIRV9PUFRJT05TLlJFUVVFU1QsXHJcblx0XHRcdFx0XHRwcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmc6IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVQQVJFX0RBVEFcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGNvbnN0IGZpcnN0RmV0Y2hpbmdEYXRlID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKT8uZmlyc3RGZXRjaGluZ0RhdGU7XHJcblx0XHRcdFx0aWYgKCFmaXJzdEZldGNoaW5nRGF0ZSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0XHRjb25zdCBtb21lbnREYXRlMSA9IG1vbWVudChuZXcgRGF0ZShmaXJzdEZldGNoaW5nRGF0ZSkpO1xyXG5cdFx0XHRcdGNvbnN0IG1vbWVudERhdGUyID0gbW9tZW50KG5ldyBEYXRlKCkpO1xyXG5cdFx0XHRcdGNvbnN0IGRpZmZlcmVuY2UgPSBtb21lbnREYXRlMi5kaWZmKFxyXG5cdFx0XHRcdFx0bW9tZW50RGF0ZTEsXHJcblx0XHRcdFx0XHRERUZBVUxUX1RUTF9DT05GSUcuVU5JVFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0cmV0dXJuIGRpZmZlcmVuY2UgPj0gREVGQVVMVF9UVExfQ09ORklHLlRUTDtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblx0c3RhcnRGZXRjaGluZ0l0ZW1zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0dGhpcy4jdmFsaWRhdGVUVExGb3JLZXkob3B0aW9ucyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XT8uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuI2ZldGNoZWRJdGVtc1tcclxuXHRcdFx0XHRvcHRpb25zLmNhY2hlS2V5XHJcblx0XHRcdF0ub25GaW5pc2hGZXRjaGluZy5hc09ic2VydmFibGUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB0aGlzLiNoYW5kbGVDYWNoZUl0ZW1zKG9wdGlvbnMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjaGFuZGxlQ2FjaGVJdGVtcyhvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT47XHJcblx0XHR0aGlzLiNwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuXHJcblx0XHRjb25zdCBjYWNoZWRJdGVtID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKTtcclxuXHJcblx0XHRpZiAoY2FjaGVkSXRlbSkge1xyXG5cdFx0XHR0aGlzLiNzZXRJdGVtSW5NYXAob3B0aW9ucy5jYWNoZUtleSwge1xyXG5cdFx0XHRcdC4uLmNhY2hlZEl0ZW0sXHJcblx0XHRcdFx0ZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXI6IGZhbHNlLFxyXG5cdFx0XHRcdG9uRmluaXNoRmV0Y2hpbmc6IG5ldyBTdWJqZWN0PENhY2hlSW5mbz4oKSxcclxuXHRcdFx0XHRyZXF1ZXN0OiBvcHRpb25zLnJlcXVlc3RcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHRjb25zdCBwYXJhbXMgPSB7XHJcblx0XHRcdFx0W29wdGlvbnMucGFnZUtleV06IDAsXHJcblx0XHRcdFx0W29wdGlvbnMubWluQ29tcGFyZURhdGVLZXldOiB0aGlzLiNhZGQxU2Vjb25kVG9Nb2RpZmllZERhdGUoXHJcblx0XHRcdFx0XHRuZXcgRGF0ZSh0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ubGFzdE1vZGlmaWVkRGF0ZSlcclxuXHRcdFx0XHQpLnRvSVNPU3RyaW5nKClcclxuXHRcdFx0fTtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnBhcmFtcyA9IHBhcmFtcztcclxuXHRcdFx0b2JzZXJ2YWJsZSA9IG9wdGlvbnMucmVxdWVzdChwYXJhbXMpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy4jc2V0SXRlbUluTWFwKG9wdGlvbnMuY2FjaGVLZXkpO1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdDtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmZpcnN0RmV0Y2hpbmdEYXRlID1cclxuXHRcdFx0XHRuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XHJcblx0XHRcdG9ic2VydmFibGUgPSBvcHRpb25zLnJlcXVlc3QoeyBbb3B0aW9ucy5wYWdlS2V5XTogMCB9KTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSB0cnVlO1xyXG5cdFx0cmV0dXJuIG9ic2VydmFibGUucGlwZShcclxuXHRcdFx0cmV0cnkoREVGQVVMVF9UVExfQ09ORklHLlJFVFJZKSxcclxuXHRcdFx0ZXhwYW5kKChyZXN1bHRzOiBhbnkpID0+IHtcclxuXHRcdFx0XHRsZXQgYW5vdGhlckNhbGw6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cdFx0XHRcdGlmIChyZXN1bHRzICYmIHJlc3VsdHNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XT8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRhbm90aGVyQ2FsbCA9IHRoaXMuI2hhbmRsZUZldGNoZWRJdGVtcyhvcHRpb25zLCByZXN1bHRzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIGFub3RoZXJDYWxsID8gYW5vdGhlckNhbGwgOiBFTVBUWTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGxhc3QoKSxcclxuXHRcdFx0bWFwKChfKSA9PiB7XHJcblx0XHRcdFx0bGV0IF9mZXRjaGVkSXRlbXMgPSB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0gYXMgQ2FjaGVJbmZvO1xyXG5cdFx0XHRcdF9mZXRjaGVkSXRlbXMuZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSBmYWxzZTtcclxuXHRcdFx0XHRpZiAoX2ZldGNoZWRJdGVtcy5kYXRhPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdF9mZXRjaGVkSXRlbXMubGFzdE1vZGlmaWVkRGF0ZSA9IHRoaXMuI2ZpbmRMYXJnZXN0RGF0ZShcclxuXHRcdFx0XHRcdFx0X2ZldGNoZWRJdGVtcy5kYXRhLFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmNoaWxkcmVuUGF0aCxcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHRoaXMuI3NldEl0ZW0oXHJcblx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRkYXRhOiBfZmV0Y2hlZEl0ZW1zLmRhdGEsXHJcblx0XHRcdFx0XHRcdFx0bGFzdE1vZGlmaWVkRGF0ZTogX2ZldGNoZWRJdGVtcy5sYXN0TW9kaWZpZWREYXRlLFxyXG5cdFx0XHRcdFx0XHRcdGZpcnN0RmV0Y2hpbmdEYXRlOiBfZmV0Y2hlZEl0ZW1zLmZpcnN0RmV0Y2hpbmdEYXRlLFxyXG5cdFx0XHRcdFx0XHRcdHJlc3VsdHNDb3VudDogX2ZldGNoZWRJdGVtc1tvcHRpb25zLnJlc3VsdHNDb3VudF1cclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0b3B0aW9uc1xyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldID0gX2ZldGNoZWRJdGVtcztcclxuXHRcdFx0XHRyZXR1cm4gX2ZldGNoZWRJdGVtcztcclxuXHRcdFx0fSksXHJcblx0XHRcdG1hcCgocmVzKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gX2Nsb25lRGVlcCh7XHJcblx0XHRcdFx0XHRbb3B0aW9ucy5tYXBwZWREYXRhS2V5XTogcmVzLmRhdGEsXHJcblx0XHRcdFx0XHRbb3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlS2V5XTogcmVzLmxhc3RNb2RpZmllZERhdGUsXHJcblx0XHRcdFx0XHRbb3B0aW9ucy5yZXN1bHRzQ291bnRdOiByZXNbb3B0aW9ucy5yZXN1bHRzQ291bnRdXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0cmVzLm9uRmluaXNoRmV0Y2hpbmcubmV4dChyZXN1bHQpO1xyXG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cdH1cclxuXHQjZmluZE5vZGUoXHJcblx0XHRpdGVtczogYW55W10sXHJcblx0XHR1bmlxdWVDb21wYXJlS2V5OiBzdHJpbmcsXHJcblx0XHRjaGlsZHJlblBhdGg6IHN0cmluZyxcclxuXHRcdHZhbHVlOiBhbnlcclxuXHQpIHtcclxuXHRcdGZvciAoY29uc3Qgbm9kZSBvZiBpdGVtcykge1xyXG5cdFx0XHRpZiAobm9kZVt1bmlxdWVDb21wYXJlS2V5XSA9PT0gdmFsdWUpIHtcclxuXHRcdFx0XHRyZXR1cm4gbm9kZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjb25zdCBjaGlsZHJlbiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUobm9kZSwgY2hpbGRyZW5QYXRoKTtcclxuXHRcdFx0aWYgKGNoaWxkcmVuKSB7XHJcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy4jZmluZE5vZGUoXHJcblx0XHRcdFx0XHRjaGlsZHJlbixcclxuXHRcdFx0XHRcdHVuaXF1ZUNvbXBhcmVLZXksXHJcblx0XHRcdFx0XHRjaGlsZHJlblBhdGgsXHJcblx0XHRcdFx0XHR2YWx1ZVxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHQjZmluZExhcmdlc3REYXRlKFxyXG5cdFx0bm9kZUxpc3Q6IGFueVtdLFxyXG5cdFx0Y2hpbGRyZW5QYXRoOiBzdHJpbmcsXHJcblx0XHRkYXRlUGF0aDogc3RyaW5nXHJcblx0KTogc3RyaW5nIHtcclxuXHRcdGxldCBsYXJnZXN0RGF0ZTogc3RyaW5nID0gbnVsbDtcclxuXHRcdGNvbnN0IHRyYXZlcnNlID0gKG5vZGU6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAoIW5vZGUpIHJldHVybjtcclxuXHRcdFx0Y29uc3QgY2hpbGRyZW4gPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKG5vZGUsIGNoaWxkcmVuUGF0aCk7XHJcblx0XHRcdGNvbnN0IG5vZGVEYXRlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShub2RlLCBkYXRlUGF0aCk7XHJcblx0XHRcdGlmIChub2RlRGF0ZSAmJiAoIWxhcmdlc3REYXRlIHx8IG5vZGVEYXRlID4gbGFyZ2VzdERhdGUpKSB7XHJcblx0XHRcdFx0bGFyZ2VzdERhdGUgPSBub2RlRGF0ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRcdHRyYXZlcnNlKGNoaWxkKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH07XHJcblx0XHRub2RlTGlzdC5mb3JFYWNoKChub2RlKSA9PiB0cmF2ZXJzZShub2RlKSk7XHJcblx0XHRyZXR1cm4gbGFyZ2VzdERhdGU7XHJcblx0fVxyXG5cdCNoYW5kbGVGZXRjaGVkSXRlbXMoXHJcblx0XHRvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zLFxyXG5cdFx0cmVzOiBhbnlcclxuXHQpOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsIHtcclxuXHRcdGlmICh0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YT8ubGVuZ3RoKSB7XHJcblx0XHRcdHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldLnNvcnQoKGEsIGIpID0+IHtcclxuXHRcdFx0XHRjb25zdCBmaXJzdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcblx0XHRcdFx0XHRhLFxyXG5cdFx0XHRcdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0Y29uc3Qgc2Vjb25kID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShcclxuXHRcdFx0XHRcdGIsXHJcblx0XHRcdFx0XHRvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHRyZXR1cm4gbmV3IERhdGUoZmlyc3QpLmdldFRpbWUoKSAtIG5ldyBEYXRlKHNlY29uZCkuZ2V0VGltZSgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0cmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV0uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGl0ZW0gPSB0aGlzLiNmaW5kTm9kZShcclxuXHRcdFx0XHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhLFxyXG5cdFx0XHRcdFx0b3B0aW9ucy51bmlxdWVDb21wYXJlS2V5LFxyXG5cdFx0XHRcdFx0b3B0aW9ucy5jaGlsZHJlblBhdGgsXHJcblx0XHRcdFx0XHRlbGVtZW50W29wdGlvbnMudW5pcXVlQ29tcGFyZUtleV1cclxuXHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBtYXBwZWRFbGVtZW50ID0gb3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoW2VsZW1lbnRdKVswXTtcclxuXHRcdFx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHRcdFx0Ly8gZWRpdCA6IHVwZGF0ZSBpdGVtIGluIGNhY2hlXHJcblx0XHRcdFx0XHRjb25zdCBmaWx0ZXJlZFNvdXJjZSA9IF9vbWl0KFxyXG5cdFx0XHRcdFx0XHRtYXBwZWRFbGVtZW50LFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmV4Y2x1ZGVLZXlzV2hlblVwZGF0ZVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdF9hc3NpZ24oaXRlbSwgZmlsdGVyZWRTb3VyY2UpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyBhZGQgOiBjaGVjayBkYXRlIHRvIGRldGVybWluZSB3aGVyZSB3aWxsIGluc2VydFxyXG5cclxuXHRcdFx0XHRcdC8vIGlmIGl0ZW0gcGFyZW50IG5vdCBmb3VuZCBhZGQgYXMgcm9vdCBlbHNlIHdpbGwgYWRkIGxlYXZlcyB0byBzdWJQYXJlbnRcclxuXHRcdFx0XHRcdGNvbnN0IG5vZGUgPSB0aGlzLiNmaW5kTm9kZShcclxuXHRcdFx0XHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEsXHJcblx0XHRcdFx0XHRcdG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSxcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5jaGlsZHJlblBhdGgsXHJcblx0XHRcdFx0XHRcdGVsZW1lbnRbb3B0aW9ucy5wYXJlbnRLZXldXHJcblx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRcdGlmIChub2RlKSB7XHJcblx0XHRcdFx0XHRcdC8vIHdpbGwgY29tcGFyZSB3aXRoIG5vZGUgY2hpbGQgdG8gYWRkXHJcblx0XHRcdFx0XHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShcclxuXHRcdFx0XHRcdFx0XHRub2RlLFxyXG5cdFx0XHRcdFx0XHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoXHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuI2FkZEl0ZW1zVG8ob3B0aW9ucywgY2hpbGRyZW4sIGVsZW1lbnQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly8gd2lsbCBjb21wYXJlIHdpdGggcm9vdCBsZXZlbCB0byBhZGRcclxuXHRcdFx0XHRcdFx0dGhpcy4jYWRkSXRlbXNUbyhcclxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhLFxyXG5cdFx0XHRcdFx0XHRcdGVsZW1lbnRcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV0gPSBvcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyhcclxuXHRcdFx0XHRyZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XVxyXG5cdFx0XHQpO1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSA9IHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldO1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVzdWx0c0NvdW50ID1cclxuXHRcdFx0XHRyZXNbb3B0aW9ucy5yZXN1bHRzQ291bnRdO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHJlc1tvcHRpb25zLnRvdGFsUGFnZUtleV0gLSByZXNbb3B0aW9ucy5wYWdlS2V5XSA+IDEpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5yZXF1ZXN0KHtcclxuXHRcdFx0XHQuLi4odGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnBhcmFtcyB8fCB7fSksXHJcblx0XHRcdFx0W29wdGlvbnMucGFnZUtleV06IHJlc1tvcHRpb25zLnBhZ2VLZXldICsgMVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjYWRkSXRlbXNUbyhvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zLCBkYXRhOiBhbnlbXSwgaXRlbTogYW55KSB7XHJcblx0XHRjb25zdCBmaXJzdENhY2hlZE1vZGlmaWVkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShcclxuXHRcdFx0ZGF0YVswXSxcclxuXHRcdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG5cdFx0KTtcclxuXHRcdGNvbnN0IGN1cnJlbnRNb2RpZmllZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcblx0XHRcdGl0ZW0sXHJcblx0XHRcdG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGhcclxuXHRcdCk7XHJcblx0XHRpZiAoZmlyc3RDYWNoZWRNb2RpZmllZCA8IGN1cnJlbnRNb2RpZmllZCkge1xyXG5cdFx0XHRkYXRhLnVuc2hpZnQoLi4ub3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoW2l0ZW1dKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRkYXRhLnB1c2goLi4ub3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoW2l0ZW1dKSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdCNwcmVwYXJlT3B0aW9ucyhvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKSB7XHJcblx0XHRvcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyA9XHJcblx0XHRcdG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nIHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVQQVJFX0RBVEE7XHJcblx0XHRvcHRpb25zLnBhZ2VLZXkgPSBvcHRpb25zLnBhZ2VLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlBBR0VfS0VZO1xyXG5cdFx0b3B0aW9ucy50b3RhbFBhZ2VLZXkgPVxyXG5cdFx0XHRvcHRpb25zLnRvdGFsUGFnZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuVE9UQUxfUEFHRV9LRVk7XHJcblx0XHRvcHRpb25zLnJlc3VsdHNDb3VudCA9XHJcblx0XHRcdG9wdGlvbnMucmVzdWx0c0NvdW50IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5SRVNVTFRTX0NPVU5UX0tFWTtcclxuXHRcdG9wdGlvbnMubWFwcGVkRGF0YUtleSA9XHJcblx0XHRcdG9wdGlvbnMubWFwcGVkRGF0YUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTUFQUEVEX0RBVEFfS0VZO1xyXG5cdFx0b3B0aW9ucy51bmlxdWVDb21wYXJlS2V5ID1cclxuXHRcdFx0b3B0aW9ucy51bmlxdWVDb21wYXJlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5VTklRVUVfQ09NUEFSRV9LRVk7XHJcblx0XHRvcHRpb25zLm1pbkNvbXBhcmVEYXRlS2V5ID1cclxuXHRcdFx0b3B0aW9ucy5taW5Db21wYXJlRGF0ZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuTUlOX0NPTVBBUkVfREFURV9LRVk7XHJcblx0XHRvcHRpb25zLmxhc3RNb2RpZmllZERhdGVLZXkgPVxyXG5cdFx0XHRvcHRpb25zLmxhc3RNb2RpZmllZERhdGVLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLkxBU1RfTU9ESUZJRURfS0VZO1xyXG5cdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aCA9XHJcblx0XHRcdG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGggfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLkxBU1RfTU9ESUZJRURfUEFUSDtcclxuXHRcdG9wdGlvbnMuZXhjbHVkZUtleXNXaGVuVXBkYXRlID1cclxuXHRcdFx0b3B0aW9ucy5leGNsdWRlS2V5c1doZW5VcGRhdGUgfHxcclxuXHRcdFx0REVGQVVMVF9DQUNIRV9PUFRJT05TLkVYQ0xVREVfS0VZU19XSEVOX1VQREFURTtcclxuXHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoID1cclxuXHRcdFx0b3B0aW9ucy5jaGlsZHJlblBhdGggfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLkNISUxEUkVOX1BBVEg7XHJcblx0XHRvcHRpb25zLnBhcmVudEtleSA9IG9wdGlvbnMucGFyZW50S2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QQVJFTlRfS0VZO1xyXG5cdH1cclxuXHQjcHJlcGFyZUNvbmZpZygpIHtcclxuXHRcdERFRkFVTFRfVFRMX0NPTkZJRy5UVEwgPVxyXG5cdFx0XHRFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8udHRsIHx8IERFRkFVTFRfVFRMX0NPTkZJRy5UVEw7XHJcblx0XHRERUZBVUxUX1RUTF9DT05GSUcuVU5JVCA9XHJcblx0XHRcdEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy50dGxVbml0IHx8IERFRkFVTFRfVFRMX0NPTkZJRy5VTklUO1xyXG5cdFx0REVGQVVMVF9UVExfQ09ORklHLkFVVE9fQ0hFQ0sgPVxyXG5cdFx0XHRFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8uYXV0b0NoZWNrID09ICdZRVMnO1xyXG5cdFx0REVGQVVMVF9UVExfQ09ORklHLlJFVFJZID1cclxuXHRcdFx0RW52TWFuYWdlci5lbnZpcm9ubWVudD8uY2FjaGU/LnJldHJ5IHx8IERFRkFVTFRfVFRMX0NPTkZJRy5SRVRSWTtcclxuXHR9XHJcblx0I2FkZDFTZWNvbmRUb01vZGlmaWVkRGF0ZShkYXRlOiBEYXRlKTogRGF0ZSB7XHJcblx0XHRsZXQgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTtcclxuXHRcdG5ld0RhdGUuc2V0U2Vjb25kcyhuZXdEYXRlLmdldFNlY29uZHMoKSArIDEpO1xyXG5cdFx0cmV0dXJuIG5ld0RhdGU7XHJcblx0fVxyXG5cdCNjbGVhcih1c2VyTmFtZTogc3RyaW5nLCBrZXlPckFsbDogc3RyaW5nID0gJycpIHtcclxuXHRcdE9iamVjdC5rZXlzKHdpbmRvdy5sb2NhbFN0b3JhZ2UpXHJcblx0XHRcdC5maWx0ZXIoKHEpID0+XHJcblx0XHRcdFx0cS5zdGFydHNXaXRoKGAke3VzZXJOYW1lfV9fJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7a2V5T3JBbGx9YClcclxuXHRcdFx0KVxyXG5cdFx0XHQuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdFx0d2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHQjdmFsaWRhdGVUVExGb3JLZXkob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG5cdFx0Y29uc3QgZmlyc3RGZXRjaGluZ0RhdGUgPSB0aGlzLiNnZXRJdGVtKG9wdGlvbnMpPy5maXJzdEZldGNoaW5nRGF0ZTtcclxuXHJcblx0XHRpZiAoIWZpcnN0RmV0Y2hpbmdEYXRlKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgbW9tZW50RGF0ZTEgPSBtb21lbnQobmV3IERhdGUoZmlyc3RGZXRjaGluZ0RhdGUpKTtcclxuXHRcdGNvbnN0IG1vbWVudERhdGUyID0gbW9tZW50KG5ldyBEYXRlKCkpO1xyXG5cclxuXHRcdGNvbnN0IGRpZmZlcmVuY2UgPSBtb21lbnREYXRlMi5kaWZmKG1vbWVudERhdGUxLCBERUZBVUxUX1RUTF9DT05GSUcuVU5JVCk7XHJcblxyXG5cdFx0aWYgKGRpZmZlcmVuY2UgPj0gREVGQVVMVF9UVExfQ09ORklHLlRUTClcclxuXHRcdFx0dGhpcy4jY2xlYXIob3B0aW9ucy51c2VyTmFtZSwgb3B0aW9ucy5jYWNoZUtleSk7XHJcblx0fVxyXG5cdCNzZXRJdGVtSW5NYXAoa2V5OiBzdHJpbmcsIHZhbD86IENhY2hlSW5mbyk6IHZvaWQge1xyXG5cdFx0Y29uc3QgZW1wdHk6IENhY2hlSW5mbyA9IHtcclxuXHRcdFx0ZGF0YTogW10sXHJcblx0XHRcdGZpcnN0RmV0Y2hpbmdEYXRlOiAnJyxcclxuXHRcdFx0bGFzdE1vZGlmaWVkRGF0ZTogJycsXHJcblx0XHRcdHJlc3VsdHNDb3VudDogMCxcclxuXHRcdFx0ZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXI6IGZhbHNlLFxyXG5cdFx0XHRvbkZpbmlzaEZldGNoaW5nOiBuZXcgU3ViamVjdDxDYWNoZUluZm8+KClcclxuXHRcdH07XHJcblx0XHRsZXQgdmFsdWU6IENhY2hlSW5mbyA9IHZhbCA/IHZhbCA6IGVtcHR5O1xyXG5cdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW2tleV0gPSB2YWx1ZTtcclxuXHR9XHJcblx0I2dldEl0ZW0ob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG5cdFx0bGV0IGRhdGE6IENhY2hlSW5mbztcclxuXHRcdGlmIChvcHRpb25zLmluTWVtb3J5KSB7XHJcblx0XHRcdGRhdGEgPSB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV07XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5nZXQoXHJcblx0XHRcdFx0YCR7REVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRUZJWH0ke29wdGlvbnMuY2FjaGVLZXl9YFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRpZiAoIXZhbHVlKSByZXR1cm47XHJcblx0XHRcdGRhdGEgPSBKU09OLnBhcnNlKHZhbHVlKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBkYXRhO1xyXG5cdH1cclxuXHQjc2V0SXRlbSh2YWx1ZTogUmVjb3JkPHN0cmluZywgYW55Piwgb3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG5cdFx0aWYgKG9wdGlvbnMuaW5NZW1vcnkpIHJldHVybjtcclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2Uuc2V0KFxyXG5cdFx0XHRcdGAke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9JHtvcHRpb25zLmNhY2hlS2V5fWAsXHJcblx0XHRcdFx0SlNPTi5zdHJpbmdpZnkodmFsdWUpXHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Jhc2UvY2FjaGUtYmFzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLGFBQWEsQ0FBQztBQUNoQyxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDcEMsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUszRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzVCLFlBQ1Msc0JBQThDLEVBQzlDLGNBQThCO1FBRDlCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCOztRQUp2Qyx5Q0FBd0MsSUFBSSxHQUFHLEVBQXFCLEVBQUM7UUFNcEUsdUJBQUEsSUFBSSxvRUFBZSxNQUFuQixJQUFJLENBQWlCLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENB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T0FBTyxDQUFDLFFBQVE7UUFBRSxPQUFPO1NBQ3hCO1FBQ0osSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FDOUIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUNyQixDQUFDO0tBQ0Y7QUFDRixDQUFDOzhHQTdXVyxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZoQixNQUFNOzRGQUVOLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGV4cGFuZCwgbGFzdCwgbWFwLCByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ0FDSEVfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmFzZUNhY2hlT3B0aW9ucywgQ2FjaGVJbmZvIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgX29taXQgZnJvbSAnbG9kYXNoL29taXQnO1xyXG5pbXBvcnQgX2Fzc2lnbiBmcm9tICdsb2Rhc2gvYXNzaWduJztcclxuaW1wb3J0IF9jbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XHJcbmltcG9ydCB7IERFRkFVTFRfVFRMX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcclxuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvdXNlci91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbGl0aWVzL3V0aWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudk1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Vudi9lbnYtbWFuYWdlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWNoZUJhc2VTZXJ2aWNlIHtcclxuXHQjZmV0Y2hlZEl0ZW1zOiBNYXA8c3RyaW5nLCBDYWNoZUluZm8+ID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlSW5mbz4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy4jcHJlcGFyZUNvbmZpZygpO1xyXG5cdH1cclxuXHJcblx0aGFzSXRlbShjYWNoZUtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmhhc0l0ZW0oXHJcblx0XHRcdGAke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9JHtjYWNoZUtleX1gXHJcblx0XHQpO1xyXG5cdH1cclxuXHRjbGVhckFsbCh1c2VyTmFtZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLiNjbGVhcih1c2VyTmFtZSk7XHJcblx0fVxyXG5cdHZhbGlkYXRlVFRMKHVzZXJOYW1lOiBzdHJpbmcpIHtcclxuXHRcdGlmICghREVGQVVMVF9UVExfQ09ORklHLkFVVE9fQ0hFQ0sgfHwgIXVzZXJOYW1lKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcHJlZml4ID0gYCR7dXNlck5hbWV9X18ke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9YDtcclxuXHRcdE9iamVjdC5rZXlzKHdpbmRvdy5sb2NhbFN0b3JhZ2UpXHJcblx0XHRcdC5maWx0ZXIoKHEpID0+IHEuc3RhcnRzV2l0aChwcmVmaXgpKVxyXG5cdFx0XHQuZmlsdGVyKChrZXkpID0+IHtcclxuXHRcdFx0XHRjb25zdCBvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zID0ge1xyXG5cdFx0XHRcdFx0Y2FjaGVLZXk6IGtleS5yZXBsYWNlKHByZWZpeCwgJycpLFxyXG5cdFx0XHRcdFx0dXNlck5hbWU6IHVzZXJOYW1lLFxyXG5cdFx0XHRcdFx0cmVxdWVzdDogREVGQVVMVF9DQUNIRV9PUFRJT05TLlJFUVVFU1QsXHJcblx0XHRcdFx0XHRwcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmc6IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVQQVJFX0RBVEFcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGNvbnN0IGZpcnN0RmV0Y2hpbmdEYXRlID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKT8uZmlyc3RGZXRjaGluZ0RhdGU7XHJcblx0XHRcdFx0aWYgKCFmaXJzdEZldGNoaW5nRGF0ZSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0XHRjb25zdCBtb21lbnREYXRlMSA9IG1vbWVudChuZXcgRGF0ZShmaXJzdEZldGNoaW5nRGF0ZSkpO1xyXG5cdFx0XHRcdGNvbnN0IG1vbWVudERhdGUyID0gbW9tZW50KG5ldyBEYXRlKCkpO1xyXG5cdFx0XHRcdGNvbnN0IGRpZmZlcmVuY2UgPSBtb21lbnREYXRlMi5kaWZmKFxyXG5cdFx0XHRcdFx0bW9tZW50RGF0ZTEsXHJcblx0XHRcdFx0XHRERUZBVUxUX1RUTF9DT05GSUcuVU5JVFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0cmV0dXJuIGRpZmZlcmVuY2UgPj0gREVGQVVMVF9UVExfQ09ORklHLlRUTDtcclxuXHRcdFx0fSlcclxuXHRcdFx0LmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblx0c3RhcnRGZXRjaGluZ0l0ZW1zKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0dGhpcy4jdmFsaWRhdGVUVExGb3JLZXkob3B0aW9ucyk7XHJcblxyXG5cdFx0aWYgKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XT8uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuI2ZldGNoZWRJdGVtc1tcclxuXHRcdFx0XHRvcHRpb25zLmNhY2hlS2V5XHJcblx0XHRcdF0ub25GaW5pc2hGZXRjaGluZy5hc09ic2VydmFibGUoKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB0aGlzLiNoYW5kbGVDYWNoZUl0ZW1zKG9wdGlvbnMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjaGFuZGxlQ2FjaGVJdGVtcyhvcHRpb25zOiBCYXNlQ2FjaGVPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT47XHJcblx0XHR0aGlzLiNwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuXHJcblx0XHRjb25zdCBjYWNoZWRJdGVtID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKTtcclxuXHJcblx0XHRpZiAoY2FjaGVkSXRlbSkge1xyXG5cdFx0XHR0aGlzLiNzZXRJdGVtSW5NYXAob3B0aW9ucy5jYWNoZUtleSwge1xyXG5cdFx0XHRcdC4uLmNhY2hlZEl0ZW0sXHJcblx0XHRcdFx0ZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXI6IGZhbHNlLFxyXG5cdFx0XHRcdG9uRmluaXNoRmV0Y2hpbmc6IG5ldyBTdWJqZWN0PENhY2hlSW5mbz4oKSxcclxuXHRcdFx0XHRyZXF1ZXN0OiBvcHRpb25zLnJlcXVlc3RcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHRjb25zdCBwYXJhbXMgPSB7XHJcblx0XHRcdFx0W29wdGlvbnMucGFnZUtleV06IDAsXHJcblx0XHRcdFx0W29wdGlvbnMubWluQ29tcGFyZURhdGVLZXldOiB0aGlzLiNhZGQxU2Vjb25kVG9Nb2RpZmllZERhdGUoXHJcblx0XHRcdFx0XHRuZXcgRGF0ZSh0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ubGFzdE1vZGlmaWVkRGF0ZSlcclxuXHRcdFx0XHQpLnRvSVNPU3RyaW5nKClcclxuXHRcdFx0fTtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnBhcmFtcyA9IHBhcmFtcztcclxuXHRcdFx0b2JzZXJ2YWJsZSA9IG9wdGlvbnMucmVxdWVzdChwYXJhbXMpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy4jc2V0SXRlbUluTWFwKG9wdGlvbnMuY2FjaGVLZXkpO1xyXG5cdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdDtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmZpcnN0RmV0Y2hpbmdEYXRlID1cclxuXHRcdFx0XHRuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XHJcblx0XHRcdG9ic2VydmFibGUgPSBvcHRpb25zLnJlcXVlc3QoeyBbb3B0aW9ucy5wYWdlS2V5XTogMCB9KTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSB0cnVlO1xyXG5cdFx0cmV0dXJuIG9ic2VydmFibGUucGlwZShcclxuXHRcdFx0cmV0cnkoREVGQVVMVF9UVExfQ09ORklHLlJFVFJZKSxcclxuXHRcdFx0ZXhwYW5kKChyZXN1bHRzOiBhbnkpID0+IHtcclxuXHRcdFx0XHRsZXQgYW5vdGhlckNhbGw6IE9ic2VydmFibGU8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cdFx0XHRcdGlmIChyZXN1bHRzICYmIHJlc3VsdHNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XT8ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRhbm90aGVyQ2FsbCA9IHRoaXMuI2hhbmRsZUZldGNoZWRJdGVtcyhvcHRpb25zLCByZXN1bHRzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIGFub3RoZXJDYWxsID8gYW5vdGhlckNhbGwgOiBFTVBUWTtcclxuXHRcdFx0fSksXHJcblx0XHRcdGxhc3QoKSxcclxuXHRcdFx0bWFwKChfKSA9PiB7XHJcblx0XHRcdFx0bGV0IF9mZXRjaGVkSXRlbXMgPSB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0gYXMgQ2FjaGVJbmZvO1xyXG5cdFx0XHRcdF9mZXRjaGVkSXRlbXMuZmV0Y2hpbmdJdGVtc0Zyb21UaGVTZXJ2ZXIgPSBmYWxzZTtcclxuXHRcdFx0XHRpZiAoX2ZldGNoZWRJdGVtcy5kYXRhPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdF9mZXRjaGVkSXRlbXMubGFzdE1vZGlmaWVkRGF0ZSA9IHRoaXMuI2ZpbmRMYXJnZXN0RGF0ZShcclxuXHRcdFx0XHRcdFx0X2ZldGNoZWRJdGVtcy5kYXRhLFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zLmNoaWxkcmVuUGF0aCxcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdHRoaXMuI3NldEl0ZW0oXHJcblx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRkYXRhOiBfZmV0Y2hlZEl0ZW1zLmRhdGEsXHJcblx0XHRcdFx0XHRcdFx0bGFzdE1vZGlmaWVkRGF0ZTogX2ZldGNoZWRJdGVtcy5sYXN0TW9kaWZpZWREYXRlLFxyXG5cdFx0XHRcdFx0XHRcdGZpcnN0RmV0Y2hpbmdEYXRlOiBfZmV0Y2hlZEl0ZW1zLmZpcnN0RmV0Y2hpbmdEYXRlLFxyXG5cdFx0XHRcdFx0XHRcdHJlc3VsdHNDb3VudDogX2ZldGNoZWRJdGVtc1tvcHRpb25zLnJlc3VsdHNDb3VudF1cclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0b3B0aW9uc1xyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyID0gZmFsc2U7XHJcblx0XHRcdFx0cmV0dXJuIF9mZXRjaGVkSXRlbXM7XHJcblx0XHRcdH0pLFxyXG5cdFx0XHRtYXAoKHJlcykgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IF9jbG9uZURlZXAoe1xyXG5cdFx0XHRcdFx0W29wdGlvbnMubWFwcGVkRGF0YUtleV06IHJlcy5kYXRhLFxyXG5cdFx0XHRcdFx0W29wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZUtleV06IHJlcy5sYXN0TW9kaWZpZWREYXRlLFxyXG5cdFx0XHRcdFx0W29wdGlvbnMucmVzdWx0c0NvdW50XTogcmVzW29wdGlvbnMucmVzdWx0c0NvdW50XVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHJlcy5vbkZpbmlzaEZldGNoaW5nLm5leHQocmVzdWx0KTtcclxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblx0I2ZpbmROb2RlKFxyXG5cdFx0aXRlbXM6IGFueVtdLFxyXG5cdFx0dW5pcXVlQ29tcGFyZUtleTogc3RyaW5nLFxyXG5cdFx0Y2hpbGRyZW5QYXRoOiBzdHJpbmcsXHJcblx0XHR2YWx1ZTogYW55XHJcblx0KSB7XHJcblx0XHRmb3IgKGNvbnN0IG5vZGUgb2YgaXRlbXMpIHtcclxuXHRcdFx0aWYgKG5vZGVbdW5pcXVlQ29tcGFyZUtleV0gPT09IHZhbHVlKSB7XHJcblx0XHRcdFx0cmV0dXJuIG5vZGU7XHJcblx0XHRcdH1cclxuXHRcdFx0Y29uc3QgY2hpbGRyZW4gPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKG5vZGUsIGNoaWxkcmVuUGF0aCk7XHJcblx0XHRcdGlmIChjaGlsZHJlbikge1xyXG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuI2ZpbmROb2RlKFxyXG5cdFx0XHRcdFx0Y2hpbGRyZW4sXHJcblx0XHRcdFx0XHR1bmlxdWVDb21wYXJlS2V5LFxyXG5cdFx0XHRcdFx0Y2hpbGRyZW5QYXRoLFxyXG5cdFx0XHRcdFx0dmFsdWVcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGlmIChyZXN1bHQpIHtcclxuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblx0I2ZpbmRMYXJnZXN0RGF0ZShcclxuXHRcdG5vZGVMaXN0OiBhbnlbXSxcclxuXHRcdGNoaWxkcmVuUGF0aDogc3RyaW5nLFxyXG5cdFx0ZGF0ZVBhdGg6IHN0cmluZ1xyXG5cdCk6IHN0cmluZyB7XHJcblx0XHRsZXQgbGFyZ2VzdERhdGU6IHN0cmluZyA9IG51bGw7XHJcblx0XHRjb25zdCB0cmF2ZXJzZSA9IChub2RlOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKCFub2RlKSByZXR1cm47XHJcblx0XHRcdGNvbnN0IGNoaWxkcmVuID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRWYWx1ZShub2RlLCBjaGlsZHJlblBhdGgpO1xyXG5cdFx0XHRjb25zdCBub2RlRGF0ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUobm9kZSwgZGF0ZVBhdGgpO1xyXG5cdFx0XHRpZiAobm9kZURhdGUgJiYgKCFsYXJnZXN0RGF0ZSB8fCBub2RlRGF0ZSA+IGxhcmdlc3REYXRlKSkge1xyXG5cdFx0XHRcdGxhcmdlc3REYXRlID0gbm9kZURhdGU7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKGNoaWxkcmVuPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcblx0XHRcdFx0XHR0cmF2ZXJzZShjaGlsZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cdFx0bm9kZUxpc3QuZm9yRWFjaCgobm9kZSkgPT4gdHJhdmVyc2Uobm9kZSkpO1xyXG5cdFx0cmV0dXJuIGxhcmdlc3REYXRlO1xyXG5cdH1cclxuXHQjaGFuZGxlRmV0Y2hlZEl0ZW1zKFxyXG5cdFx0b3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucyxcclxuXHRcdHJlczogYW55XHJcblx0KTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XHJcblx0XHRpZiAodGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGE/Lmxlbmd0aCkge1xyXG5cdFx0XHRyZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XS5zb3J0KChhLCBiKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZmlyc3QgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKFxyXG5cdFx0XHRcdFx0YSxcclxuXHRcdFx0XHRcdG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGhcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdGNvbnN0IHNlY29uZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcblx0XHRcdFx0XHRiLFxyXG5cdFx0XHRcdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlUGF0aFxyXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0cmV0dXJuIG5ldyBEYXRlKGZpcnN0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShzZWNvbmQpLmdldFRpbWUoKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuXHRcdFx0XHRjb25zdCBpdGVtID0gdGhpcy4jZmluZE5vZGUoXHJcblx0XHRcdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSxcclxuXHRcdFx0XHRcdG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSxcclxuXHRcdFx0XHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoLFxyXG5cdFx0XHRcdFx0ZWxlbWVudFtvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXldXHJcblx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0Y29uc3QgbWFwcGVkRWxlbWVudCA9IG9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFtlbGVtZW50XSlbMF07XHJcblx0XHRcdFx0aWYgKGl0ZW0pIHtcclxuXHRcdFx0XHRcdC8vIGVkaXQgOiB1cGRhdGUgaXRlbSBpbiBjYWNoZVxyXG5cdFx0XHRcdFx0Y29uc3QgZmlsdGVyZWRTb3VyY2UgPSBfb21pdChcclxuXHRcdFx0XHRcdFx0bWFwcGVkRWxlbWVudCxcclxuXHRcdFx0XHRcdFx0b3B0aW9ucy5leGNsdWRlS2V5c1doZW5VcGRhdGVcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRfYXNzaWduKGl0ZW0sIGZpbHRlcmVkU291cmNlKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0Ly8gYWRkIDogY2hlY2sgZGF0ZSB0byBkZXRlcm1pbmUgd2hlcmUgd2lsbCBpbnNlcnRcclxuXHJcblx0XHRcdFx0XHQvLyBpZiBpdGVtIHBhcmVudCBub3QgZm91bmQgYWRkIGFzIHJvb3QgZWxzZSB3aWxsIGFkZCBsZWF2ZXMgdG8gc3ViUGFyZW50XHJcblx0XHRcdFx0XHRjb25zdCBub2RlID0gdGhpcy4jZmluZE5vZGUoXHJcblx0XHRcdFx0XHRcdHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5kYXRhLFxyXG5cdFx0XHRcdFx0XHRvcHRpb25zLnVuaXF1ZUNvbXBhcmVLZXksXHJcblx0XHRcdFx0XHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoLFxyXG5cdFx0XHRcdFx0XHRlbGVtZW50W29wdGlvbnMucGFyZW50S2V5XVxyXG5cdFx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0XHRpZiAobm9kZSkge1xyXG5cdFx0XHRcdFx0XHQvLyB3aWxsIGNvbXBhcmUgd2l0aCBub2RlIGNoaWxkIHRvIGFkZFxyXG5cdFx0XHRcdFx0XHRjb25zdCBjaGlsZHJlbiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcblx0XHRcdFx0XHRcdFx0bm9kZSxcclxuXHRcdFx0XHRcdFx0XHRvcHRpb25zLmNoaWxkcmVuUGF0aFxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiNhZGRJdGVtc1RvKG9wdGlvbnMsIGNoaWxkcmVuLCBlbGVtZW50KTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdC8vIHdpbGwgY29tcGFyZSB3aXRoIHJvb3QgbGV2ZWwgdG8gYWRkXHJcblx0XHRcdFx0XHRcdHRoaXMuI2FkZEl0ZW1zVG8oXHJcblx0XHRcdFx0XHRcdFx0b3B0aW9ucyxcclxuXHRcdFx0XHRcdFx0XHR0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0uZGF0YSxcclxuXHRcdFx0XHRcdFx0XHRlbGVtZW50XHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlc1tvcHRpb25zLm1hcHBlZERhdGFLZXldID0gb3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcoXHJcblx0XHRcdFx0cmVzW29wdGlvbnMubWFwcGVkRGF0YUtleV1cclxuXHRcdFx0KTtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLmRhdGEgPSByZXNbb3B0aW9ucy5tYXBwZWREYXRhS2V5XTtcclxuXHRcdFx0dGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldLnJlc3VsdHNDb3VudCA9XHJcblx0XHRcdFx0cmVzW29wdGlvbnMucmVzdWx0c0NvdW50XTtcclxuXHRcdH1cclxuXHRcdGlmIChyZXNbb3B0aW9ucy50b3RhbFBhZ2VLZXldIC0gcmVzW29wdGlvbnMucGFnZUtleV0gPiAxKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLiNmZXRjaGVkSXRlbXNbb3B0aW9ucy5jYWNoZUtleV0ucmVxdWVzdCh7XHJcblx0XHRcdFx0Li4uKHRoaXMuI2ZldGNoZWRJdGVtc1tvcHRpb25zLmNhY2hlS2V5XS5wYXJhbXMgfHwge30pLFxyXG5cdFx0XHRcdFtvcHRpb25zLnBhZ2VLZXldOiByZXNbb3B0aW9ucy5wYWdlS2V5XSArIDFcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblx0I2FkZEl0ZW1zVG8ob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucywgZGF0YTogYW55W10sIGl0ZW06IGFueSkge1xyXG5cdFx0Y29uc3QgZmlyc3RDYWNoZWRNb2RpZmllZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0VmFsdWUoXHJcblx0XHRcdGRhdGFbMF0sXHJcblx0XHRcdG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGhcclxuXHRcdCk7XHJcblx0XHRjb25zdCBjdXJyZW50TW9kaWZpZWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFZhbHVlKFxyXG5cdFx0XHRpdGVtLFxyXG5cdFx0XHRvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoXHJcblx0XHQpO1xyXG5cdFx0aWYgKGZpcnN0Q2FjaGVkTW9kaWZpZWQgPCBjdXJyZW50TW9kaWZpZWQpIHtcclxuXHRcdFx0ZGF0YS51bnNoaWZ0KC4uLm9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFtpdGVtXSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0ZGF0YS5wdXNoKC4uLm9wdGlvbnMucHJlcGFyZURhdGFCZWZvcmVDYWNoaW5nKFtpdGVtXSkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQjcHJlcGFyZU9wdGlvbnMob3B0aW9uczogQmFzZUNhY2hlT3B0aW9ucykge1xyXG5cdFx0b3B0aW9ucy5wcmVwYXJlRGF0YUJlZm9yZUNhY2hpbmcgPVxyXG5cdFx0XHRvcHRpb25zLnByZXBhcmVEYXRhQmVmb3JlQ2FjaGluZyB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFUEFSRV9EQVRBO1xyXG5cdFx0b3B0aW9ucy5wYWdlS2V5ID0gb3B0aW9ucy5wYWdlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QQUdFX0tFWTtcclxuXHRcdG9wdGlvbnMudG90YWxQYWdlS2V5ID1cclxuXHRcdFx0b3B0aW9ucy50b3RhbFBhZ2VLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLlRPVEFMX1BBR0VfS0VZO1xyXG5cdFx0b3B0aW9ucy5yZXN1bHRzQ291bnQgPVxyXG5cdFx0XHRvcHRpb25zLnJlc3VsdHNDb3VudCB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUkVTVUxUU19DT1VOVF9LRVk7XHJcblx0XHRvcHRpb25zLm1hcHBlZERhdGFLZXkgPVxyXG5cdFx0XHRvcHRpb25zLm1hcHBlZERhdGFLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLk1BUFBFRF9EQVRBX0tFWTtcclxuXHRcdG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSA9XHJcblx0XHRcdG9wdGlvbnMudW5pcXVlQ29tcGFyZUtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuVU5JUVVFX0NPTVBBUkVfS0VZO1xyXG5cdFx0b3B0aW9ucy5taW5Db21wYXJlRGF0ZUtleSA9XHJcblx0XHRcdG9wdGlvbnMubWluQ29tcGFyZURhdGVLZXkgfHwgREVGQVVMVF9DQUNIRV9PUFRJT05TLk1JTl9DT01QQVJFX0RBVEVfS0VZO1xyXG5cdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlS2V5ID1cclxuXHRcdFx0b3B0aW9ucy5sYXN0TW9kaWZpZWREYXRlS2V5IHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5MQVNUX01PRElGSUVEX0tFWTtcclxuXHRcdG9wdGlvbnMubGFzdE1vZGlmaWVkRGF0ZVBhdGggPVxyXG5cdFx0XHRvcHRpb25zLmxhc3RNb2RpZmllZERhdGVQYXRoIHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5MQVNUX01PRElGSUVEX1BBVEg7XHJcblx0XHRvcHRpb25zLmV4Y2x1ZGVLZXlzV2hlblVwZGF0ZSA9XHJcblx0XHRcdG9wdGlvbnMuZXhjbHVkZUtleXNXaGVuVXBkYXRlIHx8XHJcblx0XHRcdERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5FWENMVURFX0tFWVNfV0hFTl9VUERBVEU7XHJcblx0XHRvcHRpb25zLmNoaWxkcmVuUGF0aCA9XHJcblx0XHRcdG9wdGlvbnMuY2hpbGRyZW5QYXRoIHx8IERFRkFVTFRfQ0FDSEVfT1BUSU9OUy5DSElMRFJFTl9QQVRIO1xyXG5cdFx0b3B0aW9ucy5wYXJlbnRLZXkgPSBvcHRpb25zLnBhcmVudEtleSB8fCBERUZBVUxUX0NBQ0hFX09QVElPTlMuUEFSRU5UX0tFWTtcclxuXHR9XHJcblx0I3ByZXBhcmVDb25maWcoKSB7XHJcblx0XHRERUZBVUxUX1RUTF9DT05GSUcuVFRMID1cclxuXHRcdFx0RW52TWFuYWdlci5lbnZpcm9ubWVudD8uY2FjaGU/LnR0bCB8fCBERUZBVUxUX1RUTF9DT05GSUcuVFRMO1xyXG5cdFx0REVGQVVMVF9UVExfQ09ORklHLlVOSVQgPVxyXG5cdFx0XHRFbnZNYW5hZ2VyLmVudmlyb25tZW50Py5jYWNoZT8udHRsVW5pdCB8fCBERUZBVUxUX1RUTF9DT05GSUcuVU5JVDtcclxuXHRcdERFRkFVTFRfVFRMX0NPTkZJRy5BVVRPX0NIRUNLID1cclxuXHRcdFx0RW52TWFuYWdlci5lbnZpcm9ubWVudD8uY2FjaGU/LmF1dG9DaGVjayA9PSAnWUVTJztcclxuXHRcdERFRkFVTFRfVFRMX0NPTkZJRy5SRVRSWSA9XHJcblx0XHRcdEVudk1hbmFnZXIuZW52aXJvbm1lbnQ/LmNhY2hlPy5yZXRyeSB8fCBERUZBVUxUX1RUTF9DT05GSUcuUkVUUlk7XHJcblx0fVxyXG5cdCNhZGQxU2Vjb25kVG9Nb2RpZmllZERhdGUoZGF0ZTogRGF0ZSk6IERhdGUge1xyXG5cdFx0bGV0IG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XHJcblx0XHRuZXdEYXRlLnNldFNlY29uZHMobmV3RGF0ZS5nZXRTZWNvbmRzKCkgKyAxKTtcclxuXHRcdHJldHVybiBuZXdEYXRlO1xyXG5cdH1cclxuXHQjY2xlYXIodXNlck5hbWU6IHN0cmluZywga2V5T3JBbGw6IHN0cmluZyA9ICcnKSB7XHJcblx0XHRPYmplY3Qua2V5cyh3aW5kb3cubG9jYWxTdG9yYWdlKVxyXG5cdFx0XHQuZmlsdGVyKChxKSA9PlxyXG5cdFx0XHRcdHEuc3RhcnRzV2l0aChgJHt1c2VyTmFtZX1fXyR7REVGQVVMVF9DQUNIRV9PUFRJT05TLlBSRUZJWH0ke2tleU9yQWxsfWApXHJcblx0XHRcdClcclxuXHRcdFx0LmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblx0I3ZhbGlkYXRlVFRMRm9yS2V5KG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuXHRcdGNvbnN0IGZpcnN0RmV0Y2hpbmdEYXRlID0gdGhpcy4jZ2V0SXRlbShvcHRpb25zKT8uZmlyc3RGZXRjaGluZ0RhdGU7XHJcblxyXG5cdFx0aWYgKCFmaXJzdEZldGNoaW5nRGF0ZSkgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IG1vbWVudERhdGUxID0gbW9tZW50KG5ldyBEYXRlKGZpcnN0RmV0Y2hpbmdEYXRlKSk7XHJcblx0XHRjb25zdCBtb21lbnREYXRlMiA9IG1vbWVudChuZXcgRGF0ZSgpKTtcclxuXHJcblx0XHRjb25zdCBkaWZmZXJlbmNlID0gbW9tZW50RGF0ZTIuZGlmZihtb21lbnREYXRlMSwgREVGQVVMVF9UVExfQ09ORklHLlVOSVQpO1xyXG5cclxuXHRcdGlmIChkaWZmZXJlbmNlID49IERFRkFVTFRfVFRMX0NPTkZJRy5UVEwpXHJcblx0XHRcdHRoaXMuI2NsZWFyKG9wdGlvbnMudXNlck5hbWUsIG9wdGlvbnMuY2FjaGVLZXkpO1xyXG5cdH1cclxuXHQjc2V0SXRlbUluTWFwKGtleTogc3RyaW5nLCB2YWw/OiBDYWNoZUluZm8pOiB2b2lkIHtcclxuXHRcdGNvbnN0IGVtcHR5OiBDYWNoZUluZm8gPSB7XHJcblx0XHRcdGRhdGE6IFtdLFxyXG5cdFx0XHRmaXJzdEZldGNoaW5nRGF0ZTogJycsXHJcblx0XHRcdGxhc3RNb2RpZmllZERhdGU6ICcnLFxyXG5cdFx0XHRyZXN1bHRzQ291bnQ6IDAsXHJcblx0XHRcdGZldGNoaW5nSXRlbXNGcm9tVGhlU2VydmVyOiBmYWxzZSxcclxuXHRcdFx0b25GaW5pc2hGZXRjaGluZzogbmV3IFN1YmplY3Q8Q2FjaGVJbmZvPigpXHJcblx0XHR9O1xyXG5cdFx0bGV0IHZhbHVlOiBDYWNoZUluZm8gPSB2YWwgPyB2YWwgOiBlbXB0eTtcclxuXHRcdHRoaXMuI2ZldGNoZWRJdGVtc1trZXldID0gdmFsdWU7XHJcblx0fVxyXG5cdCNnZXRJdGVtKG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuXHRcdGxldCBkYXRhOiBDYWNoZUluZm87XHJcblx0XHRpZiAob3B0aW9ucy5pbk1lbW9yeSkge1xyXG5cdFx0XHRkYXRhID0gdGhpcy4jZmV0Y2hlZEl0ZW1zW29wdGlvbnMuY2FjaGVLZXldO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2UuZ2V0KFxyXG5cdFx0XHRcdGAke0RFRkFVTFRfQ0FDSEVfT1BUSU9OUy5QUkVGSVh9JHtvcHRpb25zLmNhY2hlS2V5fWBcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG5cdFx0XHRkYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZGF0YTtcclxuXHR9XHJcblx0I3NldEl0ZW0odmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9wdGlvbnM6IEJhc2VDYWNoZU9wdGlvbnMpIHtcclxuXHRcdGlmIChvcHRpb25zLmluTWVtb3J5KSByZXR1cm47XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0dGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldChcclxuXHRcdFx0XHRgJHtERUZBVUxUX0NBQ0hFX09QVElPTlMuUFJFRklYfSR7b3B0aW9ucy5jYWNoZUtleX1gLFxyXG5cdFx0XHRcdEpTT04uc3RyaW5naWZ5KHZhbHVlKVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
|