angular-material-datatransfer-lib
Version:
A HTML5 datatransfer UI for handling upload and download of multiple simultaneous files.
300 lines • 22.4 kB
JavaScript
/**
* @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=