UNPKG

angular-material-datatransfer-lib

Version:

A HTML5 datatransfer UI for handling upload and download of multiple simultaneous files.

300 lines 22.4 kB
/** * @fileoverview added by tsickle * Generated from: lib/models/app-config.model.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var CoreAppConfig = /** @class */ (function () { function CoreAppConfig() { this.showUploadDropzone = true; this.uploadBrowseElementId = undefined; this.uploadDropElementId = undefined; this.paginationRppOptions = [5, 10, 25]; this.simultaneousDownloads = 2; this.downloadMethod = 'GET'; this.downloadHeaders = {}; this.downloadWithCredentials = false; this.downloadXhrTimeout = 0; this.preprocessHashEnabled = false; this.preprocessHashChecked = true; this.preprocessHashTarget = 'https://httpbin.org'; this.preprocessHashMethod = 'GET'; this.preprocessHashParameterName = 'hash'; this.preprocessHashFileNameParameterName = 'filename'; this.preprocessHashFunctionName = 'sha1'; this.preprocessHashEncodingName = 'hex'; this.preprocessHashInputEncodingName = 'latin1'; this.preprocessHashTooltipContent = 'The preprocess option checks if the file is already on the system before uploading.'; this.parseMessageCallback = (/** * @param {?} message * @return {?} */ function (message) { return message; }); this.getTarget = (/** * @param {?} request * @param {?} params * @return {?} */ function (request, params) { /** @type {?} */ var target; if (request === 'preprocessHash' && this.preprocessHashChecked) { target = this.preprocessHashTarget; } if (typeof target === 'function') { return target(params); } if (target) { /** @type {?} */ var separator = target.indexOf('?') < 0 ? '?' : '&'; /** @type {?} */ var joinedParams = params.join('&'); return target + separator + joinedParams; } else { return; } }); } return CoreAppConfig; }()); export { CoreAppConfig }; if (false) { /** @type {?} */ CoreAppConfig.prototype.showUploadDropzone; /** @type {?} */ CoreAppConfig.prototype.uploadBrowseElementId; /** @type {?} */ CoreAppConfig.prototype.uploadDropElementId; /** @type {?} */ CoreAppConfig.prototype.paginationRppOptions; /** @type {?} */ CoreAppConfig.prototype.simultaneousDownloads; /** @type {?} */ CoreAppConfig.prototype.downloadMethod; /** @type {?} */ CoreAppConfig.prototype.downloadHeaders; /** @type {?} */ CoreAppConfig.prototype.downloadWithCredentials; /** @type {?} */ CoreAppConfig.prototype.downloadXhrTimeout; /** @type {?} */ CoreAppConfig.prototype.preprocessHashEnabled; /** @type {?} */ CoreAppConfig.prototype.preprocessHashChecked; /** @type {?} */ CoreAppConfig.prototype.preprocessHashTarget; /** @type {?} */ CoreAppConfig.prototype.preprocessHashMethod; /** @type {?} */ CoreAppConfig.prototype.preprocessHashParameterName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashFileNameParameterName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashFunctionName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashEncodingName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashInputEncodingName; /** @type {?} */ CoreAppConfig.prototype.preprocessHashTooltipContent; /** @type {?} */ CoreAppConfig.prototype.parseMessageCallback; /** @type {?} */ CoreAppConfig.prototype.getTarget; } var ResumableJsAppConfig = /** @class */ (function () { function ResumableJsAppConfig() { this.chunkSize = 1 * 1024 * 1024; this.forceChunkSize = false; this.simultaneousUploads = 3; this.fileParameterName = 'file'; this.chunkNumberParameterName = 'resumableChunkNumber'; this.chunkSizeParameterName = 'resumableChunkSize'; this.currentChunkSizeParameterName = 'resumableCurrentChunkSize'; this.totalSizeParameterName = 'resumableTotalSize'; this.typeParameterName = 'resumableType'; this.identifierParameterName = 'resumableIdentifier'; this.fileNameParameterName = 'resumableFilename'; this.relativePathParameterName = 'resumableRelativePath'; this.totalChunksParameterName = 'resumableTotalChunks'; this.throttleProgressCallbacks = 0.5; this.query = {}; this.headers = {}; this.preprocess = null; this.preprocessFile = null; this.method = 'multipart'; this.uploadMethod = 'POST'; this.testMethod = 'GET'; this.target = 'https://httpbin.org'; this.testTarget = null; this.parameterNamespace = ''; this.testChunks = true; this.generateUniqueIdentifier = null; this.getTarget = null; this.maxChunkRetries = 100; this.chunkRetryInterval = undefined; this.permanentErrors = [400, 404, 405, 415, 501]; this.maxFiles = undefined; this.withCredentials = false; this.xhrTimeout = 0; this.clearInput = true; this.chunkFormat = 'blob'; this.minFileSize = 1; this.maxFileSize = undefined; this.fileType = []; this.maxFilesErrorCallback = (/** * @param {?} files * @param {?} errorCount * @return {?} */ function (files, errorCount) { alert('Please upload no more than ' + this.maxFiles + ' file' + (this.maxFiles === 1 ? '' : 's') + ' at a time.'); }); this.minFileSizeErrorCallback = (/** * @param {?} file * @param {?} errorCount * @return {?} */ function (file, errorCount) { alert(file.fileName || file.name + ' is too small; please upload files larger than ' + this.minFileSize + '.'); }); this.maxFileSizeErrorCallback = (/** * @param {?} file * @param {?} errorCount * @return {?} */ function (file, errorCount) { alert(file.fileName || file.name + ' is too large; please upload files less than ' + this.maxFileSize + '.'); }); this.fileTypeErrorCallback = (/** * @param {?} file * @param {?} errorCount * @return {?} */ function (file, errorCount) { alert(file.fileName || file.name + ' has type not allowed; please upload files of type ' + this.fileType + '.'); }); } return ResumableJsAppConfig; }()); export { ResumableJsAppConfig }; if (false) { /** @type {?} */ ResumableJsAppConfig.prototype.chunkSize; /** @type {?} */ ResumableJsAppConfig.prototype.forceChunkSize; /** @type {?} */ ResumableJsAppConfig.prototype.simultaneousUploads; /** @type {?} */ ResumableJsAppConfig.prototype.fileParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.chunkNumberParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.chunkSizeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.currentChunkSizeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.totalSizeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.typeParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.identifierParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.fileNameParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.relativePathParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.totalChunksParameterName; /** @type {?} */ ResumableJsAppConfig.prototype.throttleProgressCallbacks; /** @type {?} */ ResumableJsAppConfig.prototype.query; /** @type {?} */ ResumableJsAppConfig.prototype.headers; /** @type {?} */ ResumableJsAppConfig.prototype.preprocess; /** @type {?} */ ResumableJsAppConfig.prototype.preprocessFile; /** @type {?} */ ResumableJsAppConfig.prototype.method; /** @type {?} */ ResumableJsAppConfig.prototype.uploadMethod; /** @type {?} */ ResumableJsAppConfig.prototype.testMethod; /** @type {?} */ ResumableJsAppConfig.prototype.prioritizeFirstAndLastChunk; /** @type {?} */ ResumableJsAppConfig.prototype.target; /** @type {?} */ ResumableJsAppConfig.prototype.testTarget; /** @type {?} */ ResumableJsAppConfig.prototype.parameterNamespace; /** @type {?} */ ResumableJsAppConfig.prototype.testChunks; /** @type {?} */ ResumableJsAppConfig.prototype.generateUniqueIdentifier; /** @type {?} */ ResumableJsAppConfig.prototype.getTarget; /** @type {?} */ ResumableJsAppConfig.prototype.maxChunkRetries; /** @type {?} */ ResumableJsAppConfig.prototype.chunkRetryInterval; /** @type {?} */ ResumableJsAppConfig.prototype.permanentErrors; /** @type {?} */ ResumableJsAppConfig.prototype.maxFiles; /** @type {?} */ ResumableJsAppConfig.prototype.withCredentials; /** @type {?} */ ResumableJsAppConfig.prototype.xhrTimeout; /** @type {?} */ ResumableJsAppConfig.prototype.clearInput; /** @type {?} */ ResumableJsAppConfig.prototype.chunkFormat; /** @type {?} */ ResumableJsAppConfig.prototype.minFileSize; /** @type {?} */ ResumableJsAppConfig.prototype.maxFileSize; /** @type {?} */ ResumableJsAppConfig.prototype.fileType; /** @type {?} */ ResumableJsAppConfig.prototype.maxFilesErrorCallback; /** @type {?} */ ResumableJsAppConfig.prototype.minFileSizeErrorCallback; /** @type {?} */ ResumableJsAppConfig.prototype.maxFileSizeErrorCallback; /** @type {?} */ ResumableJsAppConfig.prototype.fileTypeErrorCallback; } /** * @record */ export function IAppConfig() { } if (false) { /** @type {?} */ IAppConfig.prototype.production; /** @type {?} */ IAppConfig.prototype.core; /** @type {?} */ IAppConfig.prototype.resumablejs; } var AppConfig = /** @class */ (function () { function AppConfig() { this.production = true; this.core = new CoreAppConfig(); this.resumablejs = new ResumableJsAppConfig(); } return AppConfig; }()); export { AppConfig }; if (false) { /** @type {?} */ AppConfig.prototype.production; /** @type {?} */ AppConfig.prototype.core; /** @type {?} */ AppConfig.prototype.resumablejs; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItbWF0ZXJpYWwtZGF0YXRyYW5zZmVyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvYXBwLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0lBQUE7UUFDSSx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDMUIsMEJBQXFCLEdBQUcsU0FBUyxDQUFDO1FBQ2xDLHdCQUFtQixHQUFHLFNBQVMsQ0FBQztRQUNoQyx5QkFBb0IsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkMsMEJBQXFCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBQzFCLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUNoQyx1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdkIsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUM3Qix5QkFBb0IsR0FBRyxxQkFBcUIsQ0FBQztRQUM3Qyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsZ0NBQTJCLEdBQUcsTUFBTSxDQUFDO1FBQ3JDLHdDQUFtQyxHQUFHLFVBQVUsQ0FBQztRQUNqRCwrQkFBMEIsR0FBRyxNQUFNLENBQUM7UUFDcEMsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLG9DQUErQixHQUFHLFFBQVEsQ0FBQztRQUMzQyxpQ0FBNEIsR0FBRyxxRkFBcUYsQ0FBQztRQUNySCx5QkFBb0I7Ozs7UUFBRyxVQUFTLE9BQU87WUFDbkMsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQyxFQUFDO1FBQ0YsY0FBUzs7Ozs7UUFBRyxVQUFTLE9BQU8sRUFBRSxNQUFNOztnQkFDNUIsTUFBTTtZQUVWLElBQUksT0FBTyxLQUFLLGdCQUFnQixJQUFJLElBQUks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OUMsaURBQW9DOztJQUNwQyx1REFBZ0Q7O0lBQ2hELHFEQUE0Qzs7SUFDNUMseURBQW9EOztJQUNwRCx3REFBa0Q7O0lBQ2xELHlEQUFnQzs7SUFDaEMscUNBQVc7O0lBQ1gsdUNBQWE7O0lBQ2IsMENBQWtCOztJQUNsQiw4Q0FBc0I7O0lBQ3RCLHNDQUFxQjs7SUFDckIsNENBQXNCOztJQUN0QiwwQ0FBbUI7O0lBQ25CLDJEQUFtQzs7SUFDbkMsc0NBQStCOztJQUMvQiwwQ0FBa0I7O0lBQ2xCLGtEQUF3Qjs7SUFDeEIsMENBQWtCOztJQUNsQix3REFBZ0M7O0lBQ2hDLHlDQUFpQjs7SUFDakIsK0NBQXNCOztJQUN0QixrREFBK0I7O0lBQy9CLCtDQUE0Qzs7SUFDNUMsd0NBQXFCOztJQUNyQiwrQ0FBd0I7O0lBQ3hCLDBDQUFlOztJQUNmLDBDQUFrQjs7SUFDbEIsMkNBQXFCOztJQUNyQiwyQ0FBZ0I7O0lBQ2hCLDJDQUF3Qjs7SUFDeEIsd0NBQWM7O0lBQ2QscURBRUU7O0lBQ0Ysd0RBRUU7O0lBQ0Ysd0RBRUU7O0lBQ0YscURBRUU7Ozs7O0FBR04sZ0NBSUM7OztJQUhHLGdDQUFvQjs7SUFDcEIsMEJBQW9COztJQUNwQixpQ0FBa0M7O0FBR3RDO0lBQUE7UUFDSSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLFNBQUksR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzNCLGdCQUFXLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFBRCxnQkFBQztBQUFELENBQUMsQUFKRCxJQUlDOzs7O0lBSEcsK0JBQWtCOztJQUNsQix5QkFBMkI7O0lBQzNCLGdDQUF5QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb3JlQXBwQ29uZmlnIHtcclxuICAgIHNob3dVcGxvYWREcm9wem9uZSA9IHRydWU7XHJcbiAgICB1cGxvYWRCcm93c2VFbGVtZW50SWQgPSB1bmRlZmluZWQ7XHJcbiAgICB1cGxvYWREcm9wRWxlbWVudElkID0gdW5kZWZpbmVkO1xyXG4gICAgcGFnaW5hdGlvblJwcE9wdGlvbnMgPSBbNSwgMTAsIDI1XTtcclxuICAgIHNpbXVsdGFuZW91c0Rvd25sb2FkcyA9IDI7XHJcbiAgICBkb3dubG9hZE1ldGhvZCA9ICdHRVQnO1xyXG4gICAgZG93bmxvYWRIZWFkZXJzOiBhbnkgPSB7fTtcclxuICAgIGRvd25sb2FkV2l0aENyZWRlbnRpYWxzID0gZmFsc2U7XHJcbiAgICBkb3dubG9hZFhoclRpbWVvdXQgPSAwO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hFbmFibGVkID0gZmFsc2U7XHJcbiAgICBwcmVwcm9jZXNzSGFzaENoZWNrZWQgPSB0cnVlO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hUYXJnZXQgPSAnaHR0cHM6Ly9odHRwYmluLm9yZyc7XHJcbiAgICBwcmVwcm9jZXNzSGFzaE1ldGhvZCA9ICdHRVQnO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hQYXJhbWV0ZXJOYW1lID0gJ2hhc2gnO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hGaWxlTmFtZVBhcmFtZXRlck5hbWUgPSAnZmlsZW5hbWUnO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hGdW5jdGlvbk5hbWUgPSAnc2hhMSc7XHJcbiAgICBwcmVwcm9jZXNzSGFzaEVuY29kaW5nTmFtZSA9ICdoZXgnO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hJbnB1dEVuY29kaW5nTmFtZSA9ICdsYXRpbjEnO1xyXG4gICAgcHJlcHJvY2Vzc0hhc2hUb29sdGlwQ29udGVudCA9ICdUaGUgcHJlcHJvY2VzcyBvcHRpb24gY2hlY2tzIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgb24gdGhlIHN5c3RlbSBiZWZvcmUgdXBsb2FkaW5nLic7XHJcbiAgICBwYXJzZU1lc3NhZ2VDYWxsYmFjayA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH07XHJcbiAgICBnZXRUYXJnZXQgPSBmdW5jdGlvbihyZXF1ZXN0LCBwYXJhbXMpIHtcclxuICAgICAgICBsZXQgdGFyZ2V0O1xyXG5cclxuICAgICAgICBpZiAocmVxdWVzdCA9PT0gJ3ByZXByb2Nlc3NIYXNoJyAmJiB0aGlzLnByZXByb2Nlc3NIYXNoQ2hlY2tlZCkge1xyXG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLnByZXByb2Nlc3NIYXNoVGFyZ2V0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldChwYXJhbXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSB0YXJnZXQuaW5kZXhPZignPycpIDwgMCA/ICc/JyA6ICcmJztcclxuICAgICAgICAgICAgY29uc3Qgam9pbmVkUGFyYW1zID0gcGFyYW1zLmpvaW4oJyYnKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQgKyBzZXBhcmF0b3IgKyBqb2luZWRQYXJhbXM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXN1bWFibGVKc0FwcENvbmZpZyB7XHJcbiAgICBjaHVua1NpemUgPSAxICogMTAyNCAqIDEwMjQ7XHJcbiAgICBmb3JjZUNodW5rU2l6ZSA9IGZhbHNlO1xyXG4gICAgc2ltdWx0YW5lb3VzVXBsb2FkcyA9IDM7XHJcbiAgICBmaWxlUGFyYW1ldGVyTmFtZSA9ICdmaWxlJztcclxuICAgIGNodW5rTnVtYmVyUGFyYW1ldGVyTmFtZSA9ICdyZXN1bWFibGVDaHVua051bWJlcic7XHJcbiAgICBjaHVua1NpemVQYXJhbWV0ZXJOYW1lID0gJ3Jlc3VtYWJsZUNodW5rU2l6ZSc7XHJcbiAgICBjdXJyZW50Q2h1bmtTaXplUGFyYW1ldGVyTmFtZSA9ICdyZXN1bWFibGVDdXJyZW50Q2h1bmtTaXplJztcclxuICAgIHRvdGFsU2l6ZVBhcmFtZXRlck5hbWUgPSAncmVzdW1hYmxlVG90YWxTaXplJztcclxuICAgIHR5cGVQYXJhbWV0ZXJOYW1lID0gJ3Jlc3VtYWJsZVR5cGUnO1xyXG4gICAgaWRlbnRpZmllclBhcmFtZXRlck5hbWUgPSAncmVzdW1hYmxlSWRlbnRpZmllcic7XHJcbiAgICBmaWxlTmFtZVBhcmFtZXRlck5hbWUgPSAncmVzdW1hYmxlRmlsZW5hbWUnO1xyXG4gICAgcmVsYXRpdmVQYXRoUGFyYW1ldGVyTmFtZSA9ICdyZXN1bWFibGVSZWxhdGl2ZVBhdGgnO1xyXG4gICAgdG90YWxDaHVua3NQYXJhbWV0ZXJOYW1lID0gJ3Jlc3VtYWJsZVRvdGFsQ2h1bmtzJztcclxuICAgIHRocm90dGxlUHJvZ3Jlc3NDYWxsYmFja3MgPSAwLjU7XHJcbiAgICBxdWVyeSA9IHt9O1xyXG4gICAgaGVhZGVycyA9IHt9O1xyXG4gICAgcHJlcHJvY2VzcyA9IG51bGw7XHJcbiAgICBwcmVwcm9jZXNzRmlsZSA9IG51bGw7XHJcbiAgICBtZXRob2QgPSAnbXVsdGlwYXJ0JztcclxuICAgIHVwbG9hZE1ldGhvZCA9ICdQT1NUJztcclxuICAgIHRlc3RNZXRob2QgPSAnR0VUJztcclxuICAgIHByaW9yaXRpemVGaXJzdEFuZExhc3RDaHVuazogZmFsc2U7XHJcbiAgICB0YXJnZXQgPSAnaHR0cHM6Ly9odHRwYmluLm9yZyc7XHJcbiAgICB0ZXN0VGFyZ2V0ID0gbnVsbDtcclxuICAgIHBhcmFtZXRlck5hbWVzcGFjZSA9ICcnO1xyXG4gICAgdGVzdENodW5rcyA9IHRydWU7XHJcbiAgICBnZW5lcmF0ZVVuaXF1ZUlkZW50aWZpZXIgPSBudWxsO1xyXG4gICAgZ2V0VGFyZ2V0ID0gbnVsbDtcclxuICAgIG1heENodW5rUmV0cmllcyA9IDEwMDtcclxuICAgIGNodW5rUmV0cnlJbnRlcnZhbCA9IHVuZGVmaW5lZDtcclxuICAgIHBlcm1hbmVudEVycm9ycyA9IFs0MDAsIDQwNCwgNDA1LCA0MTUsIDUwMV07XHJcbiAgICBtYXhGaWxlcyA9IHVuZGVmaW5lZDtcclxuICAgIHdpdGhDcmVkZW50aWFscyA9IGZhbHNlO1xyXG4gICAgeGhyVGltZW91dCA9IDA7XHJcbiAgICBjbGVhcklucHV0ID0gdHJ1ZTtcclxuICAgIGNodW5rRm9ybWF0ID0gJ2Jsb2InO1xyXG4gICAgbWluRmlsZVNpemUgPSAxO1xyXG4gICAgbWF4RmlsZVNpemUgPSB1bmRlZmluZWQ7XHJcbiAgICBmaWxlVHlwZSA9IFtdO1xyXG4gICAgbWF4RmlsZXNFcnJvckNhbGxiYWNrID0gZnVuY3Rpb24oZmlsZXMsIGVycm9yQ291bnQpIHtcclxuICAgICAgICBhbGVydCgnUGxlYXNlIHVwbG9hZCBubyBtb3JlIHRoYW4gJyArIHRoaXMubWF4RmlsZXMgKyAnIGZpbGUnICsgKHRoaXMubWF4RmlsZXMgPT09IDEgPyAnJyA6ICdzJykgKyAnIGF0IGEgdGltZS4nKTtcclxuICAgIH07XHJcbiAgICBtaW5GaWxlU2l6ZUVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihmaWxlLCBlcnJvckNvdW50KSB7XHJcbiAgICAgICAgYWxlcnQoZmlsZS5maWxlTmFtZSB8fCBmaWxlLm5hbWUgKyAnIGlzIHRvbyBzbWFsbDsgcGxlYXNlIHVwbG9hZCBmaWxlcyBsYXJnZXIgdGhhbiAnICsgdGhpcy5taW5GaWxlU2l6ZSArICcuJyk7XHJcbiAgICB9O1xyXG4gICAgbWF4RmlsZVNpemVFcnJvckNhbGxiYWNrID0gZnVuY3Rpb24oZmlsZSwgZXJyb3JDb3VudCkge1xyXG4gICAgICAgIGFsZXJ0KGZpbGUuZmlsZU5hbWUgfHwgZmlsZS5uYW1lICsgJyBpcyB0b28gbGFyZ2U7IHBsZWFzZSB1cGxvYWQgZmlsZXMgbGVzcyB0aGFuICcgKyB0aGlzLm1heEZpbGVTaXplICsgJy4nKTtcclxuICAgIH07XHJcbiAgICBmaWxlVHlwZUVycm9yQ2FsbGJhY2sgPSBmdW5jdGlvbihmaWxlLCBlcnJvckNvdW50KSB7XHJcbiAgICAgICAgYWxlcnQoZmlsZS5maWxlTmFtZSB8fCBmaWxlLm5hbWUgKyAnIGhhcyB0eXBlIG5vdCBhbGxvd2VkOyBwbGVhc2UgdXBsb2FkIGZpbGVzIG9mIHR5cGUgJyArIHRoaXMuZmlsZVR5cGUgKyAnLicpO1xyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXBwQ29uZmlnIHtcclxuICAgIHByb2R1Y3Rpb246IGJvb2xlYW47XHJcbiAgICBjb3JlOiBDb3JlQXBwQ29uZmlnO1xyXG4gICAgcmVzdW1hYmxlanM6IFJlc3VtYWJsZUpzQXBwQ29uZmlnO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXBwQ29uZmlnIGltcGxlbWVudHMgSUFwcENvbmZpZyB7XHJcbiAgICBwcm9kdWN0aW9uID0gdHJ1ZTtcclxuICAgIGNvcmUgPSBuZXcgQ29yZUFwcENvbmZpZygpO1xyXG4gICAgcmVzdW1hYmxlanMgPSBuZXcgUmVzdW1hYmxlSnNBcHBDb25maWcoKTtcclxufVxyXG4iXX0=