sp-attachment-library
Version:
This is library is used ro do attachments realted actions on a list item in Sharepoint Angular SPA Addins.
323 lines • 22.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable, Inject } from '@angular/core';
import { SpAttachmentConfigService } from '../config';
// Third party imports
import { sp } from '@pnp/sp';
import * as i0 from "@angular/core";
import * as i1 from "../config/sp-attachment-config-service";
var SpAttachmentLibraryService = /** @class */ (function () {
function SpAttachmentLibraryService(config) {
this.config = config;
// setup sp
sp.setup({
sp: {
headers: {
'Accept': 'application/json;odata=verbose',
},
baseUrl: this.config.baseUrl,
}
});
}
/**
* @param {?} listName
* @param {?} itemId
* @return {?}
*/
SpAttachmentLibraryService.prototype.getAttachmentsById = /**
* @param {?} listName
* @param {?} itemId
* @return {?}
*/
function (listName, itemId) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
/** @type {?} */
var item = sp.web
.lists
.getByTitle(listName)
.items
.getById(itemId);
item.attachmentFiles
.get()
.then((/**
* @param {?} response
* @return {?}
*/
function (response) {
resolve({ result: response });
}))
.catch((/**
* @param {?} e
* @return {?}
*/
function (e) {
reject({ result: false, message: e.message });
}));
}));
};
/**
* @param {?} listName
* @param {?} itemId
* @param {?} attachment
* @return {?}
*/
SpAttachmentLibraryService.prototype.addAttachment = /**
* @param {?} listName
* @param {?} itemId
* @param {?} attachment
* @return {?}
*/
function (listName, itemId, attachment) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
/** @type {?} */
var item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.add(attachment.name, attachment.content).then((/**
* @param {?} response
* @return {?}
*/
function (response) {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
function (e) {
reject({ result: false, message: e.message });
}));
}));
};
/**
* @param {?} listName
* @param {?} itemId
* @param {?} attachments
* @return {?}
*/
SpAttachmentLibraryService.prototype.addAttachments = /**
* @param {?} listName
* @param {?} itemId
* @param {?} attachments
* @return {?}
*/
function (listName, itemId, attachments) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
/** @type {?} */
var item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.addMultiple(attachments).then((/**
* @param {?} response
* @return {?}
*/
function (response) {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
function (e) {
reject({ result: false, message: e.message });
}));
}));
};
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @return {?}
*/
SpAttachmentLibraryService.prototype.deleteAttachment = /**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @return {?}
*/
function (listName, itemId, fileName) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
/** @type {?} */
var item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.getByName(fileName).delete().then((/**
* @param {?} response
* @return {?}
*/
function (response) {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
function (e) {
reject({ result: false, message: e.message });
}));
}));
};
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileNames
* @return {?}
*/
SpAttachmentLibraryService.prototype.deleteAttachments = /**
* @param {?} listName
* @param {?} itemId
* @param {?} fileNames
* @return {?}
*/
function (listName, itemId, fileNames) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
var _a;
/** @type {?} */
var item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
(_a = item.attachmentFiles).deleteMultiple.apply(_a, tslib_1.__spread(fileNames)).then((/**
* @param {?} response
* @return {?}
*/
function (response) {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
function (e) {
reject({ result: false, message: e.message });
}));
}));
};
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @return {?}
*/
SpAttachmentLibraryService.prototype.getAttachmentContent = /**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @return {?}
*/
function (listName, itemId, fileName) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
/** @type {?} */
var item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.getByName(fileName).getBlob().then((/**
* @param {?} response
* @return {?}
*/
function (response) {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
function (e) {
reject({ result: false, message: e.message });
}));
}));
};
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @param {?} content
* @return {?}
*/
SpAttachmentLibraryService.prototype.updateAttachmentContent = /**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @param {?} content
* @return {?}
*/
function (listName, itemId, fileName, content) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
function (resolve, reject) {
/** @type {?} */
var item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.getByName(fileName).setContent(content).then((/**
* @param {?} response
* @return {?}
*/
function (response) {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
function (e) {
reject({ result: false, message: e.message });
}));
}));
};
SpAttachmentLibraryService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
SpAttachmentLibraryService.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Inject, args: [SpAttachmentConfigService,] }] }
]; };
/** @nocollapse */ SpAttachmentLibraryService.ngInjectableDef = i0.defineInjectable({ factory: function SpAttachmentLibraryService_Factory() { return new SpAttachmentLibraryService(i0.inject(i1.SpAttachmentConfigService)); }, token: SpAttachmentLibraryService, providedIn: "root" });
return SpAttachmentLibraryService;
}());
export { SpAttachmentLibraryService };
if (false) {
/**
* @type {?}
* @private
*/
SpAttachmentLibraryService.prototype.config;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3AtYXR0YWNobWVudC1saWJyYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9zcC1hdHRhY2htZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvc3AtYXR0YWNobWVudC1saWJyYXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQXNCLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUcxRSxPQUFPLEVBQUUsRUFBRSxFQUFzQixNQUFNLFNBQVMsQ0FBQzs7O0FBRWpEO0lBS0ksb0NBQXVELE1BQTBCO1FBQTFCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzdFLFdBQVc7UUFDWCxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ0wsRUFBRSxFQUFFO2dCQUNBLE9BQU8sRUFBRTtvQkFDTCxRQUFRLEVBQUUsZ0NBQWdDO2lCQUM3QztnQkFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2FBQy9CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7O0lBRUQsdURBQWtCOzs7OztJQUFsQixVQUFtQixRQUFnQixFQUFFLE1BQWM7UUFDL0MsT0FBTyxJQUFJLE9BQU87Ozs7O1FBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTTs7Z0JBQ3pCLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRztpQkFDZCxLQUFLO2lCQUNMLFVBQVUsQ0FBQyxRQUFRLENBQUM7aUJBQ3BCLEtBQUs7aUJBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUVwQixJQUFJLENBQUMsZUFBZTtpQkFDZixHQUFHLEVBQUU7aUJBQ0wsSUFBSTs7OztZQUFDLFVBQUMsUUFBUTtnQkFDWCxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDLEVBQUM7aUJBQ0QsS0FBSzs7OztZQUFDLFVBQUMs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TSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbEQsQ0FBQyxFQUFDLENBQUM7UUFDUCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7Ozs7O0lBRUQsNERBQXVCOzs7Ozs7O0lBQXZCLFVBQXdCLFFBQWdCLEVBQUUsTUFBYyxFQUFFLFFBQWdCLEVBQUUsT0FBb0M7UUFDNUcsT0FBTyxJQUFJLE9BQU87Ozs7O1FBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTTs7Z0JBQ3pCLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRztpQkFDZCxLQUFLO2lCQUNMLFVBQVUsQ0FBQyxRQUFRLENBQUM7aUJBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBRTFCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJOzs7O1lBQUMsVUFBQSxRQUFRO2dCQUN0RSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDLEVBQUMsQ0FBQyxLQUFLOzs7O1lBQUMsVUFBQyxDQUFDO2dCQUNQLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELENBQUMsRUFBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOztnQkE1SEosVUFBVSxTQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7OztnREFHZ0IsTUFBTSxTQUFDLHlCQUF5Qjs7O3FDQVhqRDtDQW9JQyxBQTlIRCxJQThIQztTQTNIWSwwQkFBMEI7Ozs7OztJQUV2Qiw0Q0FBcUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcEF0dGFjaG1lbnRDb25maWcsIFNwQXR0YWNobWVudENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb25maWcnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnRzXHJcbmltcG9ydCB7IHNwLCBBdHRhY2htZW50RmlsZUluZm8gfSBmcm9tICdAcG5wL3NwJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BBdHRhY2htZW50TGlicmFyeVNlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoU3BBdHRhY2htZW50Q29uZmlnU2VydmljZSkgcHJpdmF0ZSBjb25maWc6IFNwQXR0YWNobWVudENvbmZpZykge1xyXG4gICAgICAgIC8vIHNldHVwIHNwXHJcbiAgICAgICAgc3Auc2V0dXAoe1xyXG4gICAgICAgICAgICBzcDoge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbjtvZGF0YT12ZXJib3NlJyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiB0aGlzLmNvbmZpZy5iYXNlVXJsLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXR0YWNobWVudHNCeUlkKGxpc3ROYW1lOiBzdHJpbmcsIGl0ZW1JZDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gc3Aud2ViXHJcbiAgICAgICAgICAgICAgICAubGlzdHNcclxuICAgICAgICAgICAgICAgIC5nZXRCeVRpdGxlKGxpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgLml0ZW1zXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlJZChpdGVtSWQpO1xyXG5cclxuICAgICAgICAgICAgaXRlbS5hdHRhY2htZW50RmlsZXNcclxuICAgICAgICAgICAgICAgIC5nZXQoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlc3VsdDogcmVzcG9uc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHsgcmVzdWx0OiBmYWxzZSwgbWVzc2FnZTogZS5tZXNzYWdlIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEF0dGFjaG1lbnQobGlzdE5hbWU6IHN0cmluZywgaXRlbUlkOiBudW1iZXIsIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlSW5mbyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNwLndlYlxyXG4gICAgICAgICAgICAgICAgLmxpc3RzXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlUaXRsZShsaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIC5pdGVtcy5nZXRCeUlkKGl0ZW1JZCk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRGaWxlcy5hZGQoYXR0YWNobWVudC5uYW1lLCBhdHRhY2htZW50LmNvbnRlbnQpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlc3VsdDogcmVzcG9uc2UgfSk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoeyByZXN1bHQ6IGZhbHNlLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEF0dGFjaG1lbnRzKGxpc3ROYW1lOiBzdHJpbmcsIGl0ZW1JZDogbnVtYmVyLCBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVJbmZvW10pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzcC53ZWJcclxuICAgICAgICAgICAgICAgIC5saXN0c1xyXG4gICAgICAgICAgICAgICAgLmdldEJ5VGl0bGUobGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICAuaXRlbXMuZ2V0QnlJZChpdGVtSWQpO1xyXG5cclxuICAgICAgICAgICAgaXRlbS5hdHRhY2htZW50RmlsZXMuYWRkTXVsdGlwbGUoYXR0YWNobWVudHMpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlc3VsdDogcmVzcG9uc2UgfSk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoeyByZXN1bHQ6IGZhbHNlLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUF0dGFjaG1lbnQobGlzdE5hbWU6IHN0cmluZywgaXRlbUlkOiBudW1iZXIsIGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzcC53ZWJcclxuICAgICAgICAgICAgICAgIC5saXN0c1xyXG4gICAgICAgICAgICAgICAgLmdldEJ5VGl0bGUobGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICAuaXRlbXMuZ2V0QnlJZChpdGVtSWQpO1xyXG5cclxuICAgICAgICAgICAgaXRlbS5hdHRhY2htZW50RmlsZXMuZ2V0QnlOYW1lKGZpbGVOYW1lKS5kZWxldGUoKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZXN1bHQ6IHJlc3BvbnNlIH0pO1xyXG4gICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KHsgcmVzdWx0OiBmYWxzZSwgbWVzc2FnZTogZS5tZXNzYWdlIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVBdHRhY2htZW50cyhsaXN0TmFtZTogc3RyaW5nLCBpdGVtSWQ6IG51bWJlciwgZmlsZU5hbWVzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNwLndlYlxyXG4gICAgICAgICAgICAgICAgLmxpc3RzXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlUaXRsZShsaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIC5pdGVtcy5nZXRCeUlkKGl0ZW1JZCk7XHJcbiAgICAgICAgICAgIGl0ZW0uYXR0YWNobWVudEZpbGVzLmRlbGV0ZU11bHRpcGxlKC4uLmZpbGVOYW1lcykudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVzdWx0OiByZXNwb25zZSB9KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdCh7IHJlc3VsdDogZmFsc2UsIG1lc3NhZ2U6IGUubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QXR0YWNobWVudENvbnRlbnQobGlzdE5hbWU6IHN0cmluZywgaXRlbUlkOiBudW1iZXIsIGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzcC53ZWJcclxuICAgICAgICAgICAgICAgIC5saXN0c1xyXG4gICAgICAgICAgICAgICAgLmdldEJ5VGl0bGUobGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICAuaXRlbXMuZ2V0QnlJZChpdGVtSWQpO1xyXG5cclxuICAgICAgICAgICAgaXRlbS5hdHRhY2htZW50RmlsZXMuZ2V0QnlOYW1lKGZpbGVOYW1lKS5nZXRCbG9iKCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVzdWx0OiByZXNwb25zZSB9KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdCh7IHJlc3VsdDogZmFsc2UsIG1lc3NhZ2U6IGUubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQXR0YWNobWVudENvbnRlbnQobGlzdE5hbWU6IHN0cmluZywgaXRlbUlkOiBudW1iZXIsIGZpbGVOYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZyB8IEJsb2IgfCBBcnJheUJ1ZmZlcik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNwLndlYlxyXG4gICAgICAgICAgICAgICAgLmxpc3RzXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlUaXRsZShsaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIC5pdGVtcy5nZXRCeUlkKGl0ZW1JZCk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRGaWxlcy5nZXRCeU5hbWUoZmlsZU5hbWUpLnNldENvbnRlbnQoY29udGVudCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVzdWx0OiByZXNwb25zZSB9KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdCh7IHJlc3VsdDogZmFsc2UsIG1lc3NhZ2U6IGUubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==