@sebgroup/green-angular 10.0.5 → 10.0.6
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/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-v-angular.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sebgroup-green-angular-src-v-angular-drag-drop.mjs","sources":["../tmp-esm2022/src/v-angular/drag-drop/drag-drop.utils.js","../tmp-esm2022/src/v-angular/drag-drop/drag-drop.pipes.js","../tmp-esm2022/src/v-angular/drag-drop/drag-drop.component.js","../tmp-esm2022/src/v-angular/drag-drop/drag-drop.module.js","../tmp-esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { throwError, timer } from 'rxjs';\nimport { finalize, mergeMap } from 'rxjs/operators';\n/**\n * Helper to extend the base file with {@link APIFile} defaults\n * @param file file base that will be extended with {@link APIFile} defaults\n * @param data extra data to override defaults\n */\nexport const extendFile = (file, ...data) => {\n return Object.assign({\n id: file ? btoa(file.name) : '',\n fileName: file ? file.name : 'na',\n status: '',\n statusReasonInformation: null,\n principal: '',\n uploadDate: (file\n ? new Date(file.lastModified)\n : new Date()).toISOString(),\n registrarId: '',\n registrarName: '',\n progress: 0,\n uploadState: 'local',\n uploadRequests: undefined,\n raw: file,\n }, ...data);\n};\n/**\n * Checks if file matches allowed mime types\n * @param type file mime type\n * @param accept allowed mime types\n */\nexport const verifyAccept = (type, accept) => {\n if (!accept)\n return true;\n const regex = new RegExp(accept.replace(/\\*/g, '.*').replace(/\\s*,\\s*/g, '|'));\n return regex.test(type);\n};\n/**\n * Determines if browser supports drag and drop\n */\nexport const isDragDropAvailable = () => {\n const div = document.createElement('div');\n return (('draggable' in div || ('ondragstart' in div && 'ondrop' in div)) &&\n 'FormData' in window &&\n 'FileReader' in window);\n};\n/**\n * Pick only specified keys from a given object\n * @param keys keys to pick from a given object\n * @param object to extract keys from\n */\nexport const pick = (object, ...keys) => {\n const copy = {};\n keys.forEach((key) => {\n copy[key] = object[key];\n });\n return copy;\n};\n/**\n * Will retry running the observable when an error occurs to a maximum limit, increasing delay between executions.\n * @param options specifies number of retries, scaling duration and statuses to exclude\n */\nexport const retryStrategy = ({ maxRetryAttempts = 3, scalingDuration = 1000, excludedStatusCodes = [], } = {}) => (attempts) => {\n return attempts.pipe(mergeMap((error, i) => {\n const retryAttempt = i + 1;\n // if maximum number of retries have been met\n // or response is a status code we don't wish to retry, throw error\n if (retryAttempt > maxRetryAttempts ||\n excludedStatusCodes.find((e) => e === error.status)) {\n return throwError(() => error);\n }\n console.warn(`Attempt ${retryAttempt}: retrying in ${retryAttempt * scalingDuration}ms`);\n return timer(retryAttempt * scalingDuration);\n }), finalize(() => console.warn(`Failed after ${maxRetryAttempts} retry attempts, standing down.`)));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJhZy1kcm9wL2RyYWctZHJvcC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFjLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUluRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQXNCLEVBQ3RCLEdBQUcsSUFBc0QsRUFDcEMsRUFBRTtJQUN2QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCO1FBQ0UsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ2pDLE1BQU0sRUFBRSxFQUFFO1FBQ1YsdUJBQXVCLEVBQUUsSUFBSTtRQUM3QixTQUFTLEVBQUUsRUFBRTtRQUNiLFVBQVUsRUFBRSxDQUFDLElBQUk7WUFDZixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FDYixDQUFDLFdBQVcsRUFBRTtRQUNmLFdBQVcsRUFBRSxFQUFFO1FBQ2YsYUFBYSxFQUFFLEVBQUU7UUFDakIsUUFBUSxFQUFFLENBQUM7UUFDWCxXQUFXLEVBQUUsT0FBTztRQUNwQixjQUFjLEVBQUUsU0FBUztRQUN6QixHQUFHLEVBQUUsSUFBSTtLQUNhLEVBQ3hCLEdBQUcsSUFBSSxDQUNSLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLE1BQWUsRUFBRSxFQUFFO0lBQzVELElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzlFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsRUFBRTtJQUN0QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pDLE9BQU8sQ0FDTCxDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNqRSxVQUFVLElBQUksTUFBTTtRQUNwQixZQUFZLElBQUksTUFBTSxDQUN2QixDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUNsQixNQUFTLEVBQ1QsR0FBRyxJQUFTLEVBQ0EsRUFBRTtJQUNkLE1BQU0sSUFBSSxHQUFRLEVBQUUsQ0FBQTtJQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNGLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUN4QixDQUFDLEVBQ0MsZ0JBQWdCLEdBQUcsQ0FBQyxFQUNwQixlQUFlLEdBQUcsSUFBSSxFQUN0QixtQkFBbUIsR0FBRyxFQUFFLE1BS3RCLEVBQUUsRUFBRSxFQUFFLENBQ1YsQ0FBQyxRQUF5QixFQUFFLEVBQUU7SUFDNUIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDcEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMxQiw2Q0FBNkM7UUFDN0MsbUVBQW1FO1FBQ25FLElBQ0UsWUFBWSxHQUFHLGdCQUFnQjtZQUMvQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ25ELENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVixXQUFXLFlBQVksaUJBQWlCLFlBQVksR0FBRyxlQUFlLElBQUksQ0FDM0UsQ0FBQTtRQUNELE9BQU8sS0FBSyxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFLENBQ1osT0FBTyxDQUFDLElBQUksQ0FDVixnQkFBZ0IsZ0JBQWdCLGlDQUFpQyxDQUNsRSxDQUNGLENBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGZpbmFsaXplLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBBUElGaWxlLCBMb2NhbEZpbGUgfSBmcm9tICcuL2RyYWctZHJvcC5tb2RlbHMnXG5cbi8qKlxuICogSGVscGVyIHRvIGV4dGVuZCB0aGUgYmFzZSBmaWxlIHdpdGgge0BsaW5rIEFQSUZpbGV9IGRlZmF1bHRzXG4gKiBAcGFyYW0gZmlsZSBmaWxlIGJhc2UgdGhhdCB3aWxsIGJlIGV4dGVuZGVkIHdpdGgge0BsaW5rIEFQSUZpbGV9IGRlZmF1bHRzXG4gKiBAcGFyYW0gZGF0YSBleHRyYSBkYXRhIHRvIG92ZXJyaWRlIGRlZmF1bHRzXG4gKi9cbmV4cG9ydCBjb25zdCBleHRlbmRGaWxlID0gKFxuICBmaWxlOiBGaWxlIHwgdW5kZWZpbmVkLFxuICAuLi5kYXRhOiBBcnJheTxQYXJ0aWFsPE9taXQ8TG9jYWxGaWxlLCAncmF3Jz4gJiBBUElGaWxlPj5cbik6IExvY2FsRmlsZSAmIEFQSUZpbGUgPT4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICB7XG4gICAgICBpZDogZmlsZSA/IGJ0b2EoZmlsZS5uYW1lKSA6ICcnLFxuICAgICAgZmlsZU5hbWU6IGZpbGUgPyBmaWxlLm5hbWUgOiAnbmEnLFxuICAgICAgc3RhdHVzOiAnJyxcbiAgICAgIHN0YXR1c1JlYXNvbkluZm9ybWF0aW9uOiBudWxsLFxuICAgICAgcHJpbmNpcGFsOiAnJyxcbiAgICAgIHVwbG9hZERhdGU6IChmaWxlXG4gICAgICAgID8gbmV3IERhdGUoZmlsZS5sYXN0TW9kaWZpZWQpXG4gICAgICAgIDogbmV3IERhdGUoKVxuICAgICAgKS50b0lTT1N0cmluZygpLFxuICAgICAgcmVnaXN0cmFySWQ6ICcnLFxuICAgICAgcmVnaXN0cmFyTmFtZTogJycsXG4gICAgICBwcm9ncmVzczogMCxcbiAgICAgIHVwbG9hZFN0YXRlOiAnbG9jYWwnLFxuICAgICAgdXBsb2FkUmVxdWVzdHM6IHVuZGVmaW5lZCxcbiAgICAgIHJhdzogZmlsZSxcbiAgICB9IGFzIExvY2FsRmlsZSAmIEFQSUZpbGUsXG4gICAgLi4uZGF0YSxcbiAgKVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBmaWxlIG1hdGNoZXMgYWxsb3dlZCBtaW1lIHR5cGVzXG4gKiBAcGFyYW0gdHlwZSBmaWxlIG1pbWUgdHlwZVxuICogQHBhcmFtIGFjY2VwdCBhbGxvd2VkIG1pbWUgdHlwZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHZlcmlmeUFjY2VwdCA9ICh0eXBlOiBzdHJpbmcsIGFjY2VwdD86IHN0cmluZykgPT4ge1xuICBpZiAoIWFjY2VwdCkgcmV0dXJuIHRydWVcbiAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGFjY2VwdC5yZXBsYWNlKC9cXCovZywgJy4qJykucmVwbGFjZSgvXFxzKixcXHMqL2csICd8JykpXG4gIHJldHVybiByZWdleC50ZXN0KHR5cGUpXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBicm93c2VyIHN1cHBvcnRzIGRyYWcgYW5kIGRyb3BcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRHJhZ0Ryb3BBdmFpbGFibGUgPSAoKSA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIHJldHVybiAoXG4gICAgKCdkcmFnZ2FibGUnIGluIGRpdiB8fCAoJ29uZHJhZ3N0YXJ0JyBpbiBkaXYgJiYgJ29uZHJvcCcgaW4gZGl2KSkgJiZcbiAgICAnRm9ybURhdGEnIGluIHdpbmRvdyAmJlxuICAgICdGaWxlUmVhZGVyJyBpbiB3aW5kb3dcbiAgKVxufVxuXG4vKipcbiAqIFBpY2sgb25seSBzcGVjaWZpZWQga2V5cyBmcm9tIGEgZ2l2ZW4gb2JqZWN0XG4gKiBAcGFyYW0ga2V5cyBrZXlzIHRvIHBpY2sgZnJvbSBhIGdpdmVuIG9iamVjdFxuICogQHBhcmFtIG9iamVjdCB0byBleHRyYWN0IGtleXMgZnJvbVxuICovXG5leHBvcnQgY29uc3QgcGljayA9IDxULCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gIG9iamVjdDogVCxcbiAgLi4ua2V5czogS1tdXG4pOiBQaWNrPFQsIEs+ID0+IHtcbiAgY29uc3QgY29weTogYW55ID0ge31cbiAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb3B5W2tleV0gPSBvYmplY3Rba2V5XVxuICB9KVxuICByZXR1cm4gY29weVxufVxuXG4vKipcbiAqIFdpbGwgcmV0cnkgcnVubmluZyB0aGUgb2JzZXJ2YWJsZSB3aGVuIGFuIGVycm9yIG9jY3VycyB0byBhIG1heGltdW0gbGltaXQsIGluY3JlYXNpbmcgZGVsYXkgYmV0d2VlbiBleGVjdXRpb25zLlxuICogQHBhcmFtIG9wdGlvbnMgc3BlY2lmaWVzIG51bWJlciBvZiByZXRyaWVzLCBzY2FsaW5nIGR1cmF0aW9uIGFuZCBzdGF0dXNlcyB0byBleGNsdWRlXG4gKi9cbmV4cG9ydCBjb25zdCByZXRyeVN0cmF0ZWd5ID1cbiAgKHtcbiAgICBtYXhSZXRyeUF0dGVtcHRzID0gMyxcbiAgICBzY2FsaW5nRHVyYXRpb24gPSAxMDAwLFxuICAgIGV4Y2x1ZGVkU3RhdHVzQ29kZXMgPSBbXSxcbiAgfToge1xuICAgIG1heFJldHJ5QXR0ZW1wdHM/OiBudW1iZXJcbiAgICBzY2FsaW5nRHVyYXRpb24/OiBudW1iZXJcbiAgICBleGNsdWRlZFN0YXR1c0NvZGVzPzogbnVtYmVyW11cbiAgfSA9IHt9KSA9PlxuICAoYXR0ZW1wdHM6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgIHJldHVybiBhdHRlbXB0cy5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGVycm9yLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IHJldHJ5QXR0ZW1wdCA9IGkgKyAxXG4gICAgICAgIC8vIGlmIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgaGF2ZSBiZWVuIG1ldFxuICAgICAgICAvLyBvciByZXNwb25zZSBpcyBhIHN0YXR1cyBjb2RlIHdlIGRvbid0IHdpc2ggdG8gcmV0cnksIHRocm93IGVycm9yXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXRyeUF0dGVtcHQgPiBtYXhSZXRyeUF0dGVtcHRzIHx8XG4gICAgICAgICAgZXhjbHVkZWRTdGF0dXNDb2Rlcy5maW5kKChlKSA9PiBlID09PSBlcnJvci5zdGF0dXMpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQXR0ZW1wdCAke3JldHJ5QXR0ZW1wdH06IHJldHJ5aW5nIGluICR7cmV0cnlBdHRlbXB0ICogc2NhbGluZ0R1cmF0aW9ufW1zYCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gdGltZXIocmV0cnlBdHRlbXB0ICogc2NhbGluZ0R1cmF0aW9uKVxuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PlxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEZhaWxlZCBhZnRlciAke21heFJldHJ5QXR0ZW1wdHN9IHJldHJ5IGF0dGVtcHRzLCBzdGFuZGluZyBkb3duLmAsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgfVxuIl19","import { inject, KeyValueDiffers, Pipe, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.values = [];\n }\n transform(input) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n if (differChanges) {\n this.values = [];\n differChanges.forEachItem((r) => {\n this.values.push(r.currentValue);\n });\n }\n return this.values;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: ValuePipe, isStandalone: false, name: \"value\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValuePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'value', pure: false,\n standalone: false\n }]\n }], ctorParameters: () => [{ type: i0.KeyValueDiffers }] });\n/**\n * Stand-alone version of existing value pipe.\n *\n * Impure flag needed due to keep track of changes in complex values (such as objects or arrays).\n */\nexport class ValueImpurePipe {\n constructor() {\n this.differs = inject(KeyValueDiffers);\n this.values = [];\n }\n transform(input) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n if (differChanges) {\n this.values = [];\n differChanges.forEachItem(({ currentValue }) => {\n this.values.push(currentValue);\n });\n }\n return this.values;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValueImpurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: ValueImpurePipe, isStandalone: true, name: \"valueImpure\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValueImpurePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'valueImpure',\n pure: false,\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJhZy1kcm9wL2RyYWctZHJvcC5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUlOLGVBQWUsRUFDZixJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUE7O0FBTXRCLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQTZCLE9BQXdCO1FBQXhCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBRzdDLFdBQU0sR0FBZSxFQUFFLENBQUE7SUFIeUIsQ0FBQztJQVl6RCxTQUFTLENBQ1AsS0FBZ0U7UUFFaEUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksR0FBRyxDQUFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2pELENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBaUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2xFLEtBQVksQ0FDYixDQUFBO1FBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUNoQixhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBNkIsRUFBRSxFQUFFO2dCQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDbEMsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7OEdBcENVLFNBQVM7NEdBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFKckIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO29CQUMxQixVQUFVLEVBQUUsS0FBSztpQkFDcEI7O0FBd0NEOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1tQixZQUFPLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRzFDLFdBQU0sR0FBZSxFQUFFLENBQUE7S0FtQ2hDO0lBMUJDLFNBQVMsQ0FDUCxLQUFnRTtRQUVoRSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxHQUFHLENBQUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDakQsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFpQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbEUsS0FBWSxDQUNiLENBQUE7UUFFRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBQ2hCLGFBQWEsQ0FBQyxXQUFXLENBQ3ZCLENBQUMsRUFBRSxZQUFZLEVBQThCLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDaEMsQ0FBQyxDQUNGLENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7OEdBdENVLGVBQWU7NEdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFMM0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW5qZWN0LFxuICBLZXlWYWx1ZUNoYW5nZVJlY29yZCxcbiAgS2V5VmFsdWVDaGFuZ2VzLFxuICBLZXlWYWx1ZURpZmZlcixcbiAgS2V5VmFsdWVEaWZmZXJzLFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3ZhbHVlJywgcHVyZTogZmFsc2UsXG4gICAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzKSB7fVxuXG4gIHByaXZhdGUgZGlmZmVyITogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+XG4gIHByaXZhdGUgdmFsdWVzOiBBcnJheTxhbnk+ID0gW11cblxuICB0cmFuc2Zvcm08SywgVj4oaW5wdXQ6IG51bGwpOiBudWxsXG4gIHRyYW5zZm9ybTxWPihpbnB1dDogeyBba2V5OiBzdHJpbmddOiBWIH0gfCBNYXA8c3RyaW5nLCBWPik6IEFycmF5PFY+XG4gIHRyYW5zZm9ybTxWPihcbiAgICBpbnB1dDogeyBba2V5OiBzdHJpbmddOiBWIH0gfCBNYXA8c3RyaW5nLCBWPiB8IG51bGwsXG4gICk6IEFycmF5PFY+IHwgbnVsbFxuICB0cmFuc2Zvcm08SywgVj4oaW5wdXQ6IE1hcDxLLCBWPik6IEFycmF5PFY+XG4gIHRyYW5zZm9ybTxLLCBWPihpbnB1dDogTWFwPEssIFY+IHwgbnVsbCk6IEFycmF5PFY+IHwgbnVsbFxuICB0cmFuc2Zvcm08SywgVj4oXG4gICAgaW5wdXQ6IG51bGwgfCB7IFtrZXk6IHN0cmluZ106IFY7IFtrZXk6IG51bWJlcl06IFYgfSB8IE1hcDxLLCBWPixcbiAgKTogQXJyYXk8Vj4gfCBudWxsIHtcbiAgICBpZiAoIWlucHV0IHx8ICghKGlucHV0IGluc3RhbmNlb2YgTWFwKSAmJiB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGlmZmVyKSB7XG4gICAgICAvLyBtYWtlIGEgZGlmZmVyIGZvciB3aGF0ZXZlciB0eXBlIHdlJ3ZlIGJlZW4gcGFzc2VkIGluXG4gICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKGlucHV0KS5jcmVhdGUoKVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZlckNoYW5nZXM6IEtleVZhbHVlQ2hhbmdlczxLLCBWPiB8IG51bGwgPSB0aGlzLmRpZmZlci5kaWZmKFxuICAgICAgaW5wdXQgYXMgYW55LFxuICAgIClcblxuICAgIGlmIChkaWZmZXJDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IFtdXG4gICAgICBkaWZmZXJDaGFuZ2VzLmZvckVhY2hJdGVtKChyOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxLLCBWPikgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHIuY3VycmVudFZhbHVlKVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzXG4gIH1cbn1cblxuLyoqXG4gKiBTdGFuZC1hbG9uZSB2ZXJzaW9uIG9mIGV4aXN0aW5nIHZhbHVlIHBpcGUuXG4gKlxuICogSW1wdXJlIGZsYWcgbmVlZGVkIGR1ZSB0byBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgaW4gY29tcGxleCB2YWx1ZXMgKHN1Y2ggYXMgb2JqZWN0cyBvciBhcnJheXMpLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICd2YWx1ZUltcHVyZScsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBWYWx1ZUltcHVyZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkaWZmZXJzID0gaW5qZWN0KEtleVZhbHVlRGlmZmVycylcblxuICBwcml2YXRlIGRpZmZlciE6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PlxuICBwcml2YXRlIHZhbHVlczogQXJyYXk8YW55PiA9IFtdXG5cbiAgdHJhbnNmb3JtPEssIFY+KGlucHV0OiBudWxsKTogbnVsbFxuICB0cmFuc2Zvcm08Vj4oaW5wdXQ6IHsgW2tleTogc3RyaW5nXTogViB9IHwgTWFwPHN0cmluZywgVj4pOiBBcnJheTxWPlxuICB0cmFuc2Zvcm08Vj4oXG4gICAgaW5wdXQ6IHsgW2tleTogc3RyaW5nXTogViB9IHwgTWFwPHN0cmluZywgVj4gfCBudWxsLFxuICApOiBBcnJheTxWPiB8IG51bGxcbiAgdHJhbnNmb3JtPEssIFY+KGlucHV0OiBNYXA8SywgVj4pOiBBcnJheTxWPlxuICB0cmFuc2Zvcm08SywgVj4oaW5wdXQ6IE1hcDxLLCBWPiB8IG51bGwpOiBBcnJheTxWPiB8IG51bGxcbiAgdHJhbnNmb3JtPEssIFY+KFxuICAgIGlucHV0OiBudWxsIHwgeyBba2V5OiBzdHJpbmddOiBWOyBba2V5OiBudW1iZXJdOiBWIH0gfCBNYXA8SywgVj4sXG4gICk6IEFycmF5PFY+IHwgbnVsbCB7XG4gICAgaWYgKCFpbnB1dCB8fCAoIShpbnB1dCBpbnN0YW5jZW9mIE1hcCkgJiYgdHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0JykpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRpZmZlcikge1xuICAgICAgLy8gbWFrZSBhIGRpZmZlciBmb3Igd2hhdGV2ZXIgdHlwZSB3ZSd2ZSBiZWVuIHBhc3NlZCBpblxuICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChpbnB1dCkuY3JlYXRlKClcbiAgICB9XG5cbiAgICBjb25zdCBkaWZmZXJDaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8SywgVj4gfCBudWxsID0gdGhpcy5kaWZmZXIuZGlmZihcbiAgICAgIGlucHV0IGFzIGFueSxcbiAgICApXG5cbiAgICBpZiAoZGlmZmVyQ2hhbmdlcykge1xuICAgICAgdGhpcy52YWx1ZXMgPSBbXVxuICAgICAgZGlmZmVyQ2hhbmdlcy5mb3JFYWNoSXRlbShcbiAgICAgICAgKHsgY3VycmVudFZhbHVlIH06IEtleVZhbHVlQ2hhbmdlUmVjb3JkPEssIFY+KSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMucHVzaChjdXJyZW50VmFsdWUpXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlc1xuICB9XG59XG4iXX0=","/* eslint-disable no-console */\nimport { HttpEventType } from '@angular/common/http';\nimport { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, } from '@angular/core';\nimport { timer } from 'rxjs';\nimport { filter, retryWhen, switchMap, take, tap } from 'rxjs/operators';\nimport { NggvDialogComponent, } from '@sebgroup/green-angular/src/v-angular/modal';\nimport { extendFile, isDragDropAvailable, pick, retryStrategy, verifyAccept, } from './drag-drop.utils';\nimport '@sebgroup/green-core/components/icon/icons/cloud-upload.js';\nimport '@sebgroup/green-core/components/icon/icons/cross-small.js';\nimport '@sebgroup/green-core/components/icon/icons/checkmark.js';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@jsverse/transloco\";\nimport * as i2 from \"@sebgroup/green-angular/src/v-angular/modal\";\nimport * as i3 from \"@sebgroup/green-angular/src/lib/shared\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"./drag-drop.pipes\";\nexport class NggvDragDropComponent {\n constructor() {\n /** Special property used for selecting DOM elements during automated UI testing. */\n this.thook = 'drag-drop';\n /** Disables deletion or cancellation during defined states [local | uploading | aborted | uploaded | validating | error | deleted | done]. */\n this.disableRemove = [];\n /** File size limit in mega bytes. */\n this.fileLimit = 250 * 1024 * 1024;\n /** Allowing selecting or dropping multiple files. */\n this.multiple = true;\n /** Determines if list should be shown under upload, disabling list disables multiple upload. */\n this.list = true;\n /** Frequency of requests which to send to the API requesting status updates. */\n this.throttle = 5000;\n /** Maximum number of attempts to request a status update from the API if service is unreachable. */\n this.retryAttempts = 5;\n /** If selection of multiple file should be possible with a checkbox.\n * @experimental work in progress and should not yet be used.\n * @internal\n */\n this.selectable = false;\n /** Allows multiple values from `apiFile.status` to be mapped to a single file upload state. */\n this.stateMap = {\n local: 'local',\n uploading: 'uploading',\n aborted: 'aborted',\n uploaded: 'uploaded',\n validating: 'validating',\n error: 'error',\n deleted: 'deleted',\n done: 'done',\n };\n /** Statuses allowed to be fetch during the initial load. Used to hide \"done\" states from list. */\n this.fetchStatuses = [];\n /** Statuses allowed be shown when status is \"rejected\". Will fallback to generic message. `null` allows all. */\n this.errorCodes = null;\n /** Event triggered on initialization and every time the \"uploadState\" for a file changes. */\n this.stateChange = new EventEmitter();\n /** Event triggered when view details is clicked. */\n this.detailsClick = new EventEmitter();\n /** @internal */\n this.isDragDropAvailable = isDragDropAvailable();\n /** @internal */\n this.componentState = 'normal';\n /** @internal */\n this.files = new Map();\n /** @internal */\n this.selected = [];\n /** @internal */\n this.loading = false;\n }\n /**\n * Initialize the component and warn if service is not defined. Will also fetch files for the list if enabled.\n */\n ngOnInit() {\n if (!this.service) {\n return console.error('Drag and drop component will not work without the [service] property defined!');\n }\n if (this.list) {\n this.service.fetchFiles(this.fetchStatuses).subscribe((apiFiles) => {\n for (const apiFile of apiFiles) {\n const extendedFile = extendFile(undefined, apiFile, {\n progress: 100,\n uploadState: this.determineUploadState(apiFile.status),\n internalStatusReasonCode: this.fallbackError(apiFile.internalStatusReasonCode),\n });\n this.files.set(extendedFile.id, extendedFile);\n this.stateChange.emit(pick(extendedFile, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'));\n // Check if validation is required, then start polling\n if (extendedFile.uploadState === 'uploaded' ||\n extendedFile.uploadState === 'validating') {\n this.checkValidity(extendedFile, this.throttle);\n }\n }\n });\n }\n }\n /** Destroy all event listeners and polling running */\n ngOnDestroy() {\n this.files.forEach((file) => {\n file.uploadRequests?.unsubscribe();\n if (file.uploadState === 'uploading') {\n file.uploadState = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM004';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));\n }\n });\n }\n /** @internal Warn user trying to leave page before all uploads are done. Custom message only works in older browsers. */\n onBeforeUnload(event) {\n if (!this.allUploadingDone(this.files)) {\n const confirmationMessage = `You still have files uploading, are you sure you want to leave this page?`;\n (event || window.event).returnValue =\n confirmationMessage;\n return confirmationMessage;\n }\n return;\n }\n /* Drag & Drop Events */\n /** @internal Event handler for when a file is held over the drop area */\n onDragEnter(event) {\n if (!this.service)\n return;\n event.preventDefault();\n // Update the visual state\n this.componentState = 'over';\n }\n /** @internal Event handler for when a file leaves the drop area */\n onDragLeave(event) {\n if (!this.service)\n return;\n event.preventDefault();\n this.componentState = 'normal';\n }\n /** @internal Event handler for when a file is dropped on the drop area or when `input` files are selected */\n onDrop(event) {\n if (!this.service)\n return;\n event.preventDefault();\n this.componentState = 'normal';\n let files;\n // Determine if files are from the drop event or input element\n if (event instanceof DragEvent && event.dataTransfer) {\n files = event.dataTransfer.files;\n }\n else if (event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files) {\n files = event.target.files;\n }\n if (files) {\n const extendedFiles = Array.from(files, (file) => {\n let abort = false;\n let statusCode = null;\n // Check if file size is larger than limit\n if (file.size > this.fileLimit) {\n abort = true;\n statusCode = 'MFEFHM003';\n }\n // Check if file type is not acceptable\n if (!verifyAccept(file.type, this.accept)) {\n abort = true;\n statusCode = 'MFEFHM002';\n }\n // Add default values expected by the API\n const extendedFile = extendFile(file, {\n internalStatusReasonCode: statusCode,\n uploadState: (abort ? 'aborted' : 'local'),\n });\n // Emit initial local upload event\n this.stateChange.emit({\n uploadState: 'local',\n fileName: extendedFile.fileName,\n });\n if (abort) {\n // Emit aborted upload event\n this.stateChange.emit({\n uploadState: 'aborted',\n fileName: extendedFile.fileName,\n status: 'aborted',\n internalStatusReasonCode: statusCode,\n });\n }\n return extendedFile;\n });\n // Append to previous files\n let i = 0;\n for (const file of extendedFiles) {\n // If multiple or list is false append only file then break loop\n if ((!this.multiple || !this.list) && i >= 1)\n break;\n this.lastFile = file;\n this.files.set(file.id, file);\n i++;\n }\n // Clear file input so that same file can be uploaded\n if (event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files) {\n event.target.value = '';\n }\n this.onSubmit();\n }\n }\n /** @internal Event trigger for when delete button is pressed */\n onRemove(id, state) {\n // Only allow removal in certain states\n if (!this.service || this.disableRemove.includes(state))\n return;\n const file = this.files.get(id);\n if (!file)\n return;\n // Skip confirmation for aborted and deleted files\n if (file.uploadState === 'error' ||\n file.uploadState === 'aborted' ||\n file.uploadState === 'deleted') {\n this.onConfirmRemove({ original: undefined, payload: file });\n }\n else {\n this.markedForDeletion = file;\n this.deleteModalRef.open();\n }\n }\n /** @internal */\n onConfirmRemove(event) {\n const { payload: file } = event;\n if (!file || !this.service)\n return;\n // Abort upload and set local state to aborted to inform user\n switch (file.uploadState) {\n case 'local':\n case 'uploading':\n file.uploadRequests?.unsubscribe();\n file.uploadState = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM004';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));\n break;\n // Remove file from service then set local state to aborted to inform user\n case 'uploaded':\n case 'validating':\n this.service\n .removeFile(file.id)\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Abort regardless of response from server\n file.uploadRequests?.unsubscribe();\n file.uploadState = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM005';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));\n });\n break;\n // Remove file from service then locally for \"completed\" states\n case 'error':\n case 'done':\n ;\n (this.service.removeFileFor\n ? this.service.removeFileFor(file)\n : this.service.removeFile(file.id))\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Remove regardless of response from server\n this.files.delete(file.id);\n const event = pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation');\n event.uploadState = 'deleted';\n this.stateChange.emit(event);\n });\n break;\n // Just remove the file locally to clean up\n case 'aborted':\n case 'deleted':\n default:\n this.files.delete(file.id);\n this.stateChange.emit({\n ...pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'),\n uploadState: 'deleted',\n });\n break;\n }\n }\n /** @internal Event handler for when the files should be uploaded */\n onSubmit() {\n if (!this.files || !this.service)\n return;\n // If list is not enabled update the component state to show progress\n if (!this.list)\n this.componentState = 'uploading';\n this.loading = true;\n this.files.forEach((file) => {\n // Filter out all files that aren't currently considered local\n if (!file.raw || file.uploadState !== 'local')\n return;\n file.uploadRequests = this.service.uploadFile(file.raw).subscribe({\n next: (event) => {\n switch (event.type) {\n case HttpEventType.UploadProgress:\n // Update upload progress\n if (file.uploadState !== 'uploading') {\n file.uploadState = 'uploading';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName'));\n }\n file.progress = Math.round((100 * event.loaded) / (event.total || 100));\n file.uploadState = 'uploading';\n break;\n case HttpEventType.Response:\n if (event.body?.id) {\n // Remove old file id\n this.files.delete(file.id);\n // Update file with information from the API\n Object.assign(file, event.body);\n file.progress = 100;\n file.uploadState = this.determineUploadState(file.status);\n // Update with new file id\n this.files.set(file.id, file);\n }\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'statusReasonInformation'));\n // Check if validation is required, then start polling\n if (file.uploadState === 'uploaded' ||\n file.uploadState === 'validating') {\n this.checkValidity(file, this.throttle);\n }\n else\n this.setComponentStateDone();\n this.loading = false;\n break;\n }\n },\n error: (error) => {\n console.warn(error);\n file.uploadState = 'aborted';\n file.status = 'aborted';\n // todo: wrong\n file.statusReasonInformation = [\n { originatorId: 'local', reason: 'dragDrop.error.MFEFHM001' },\n ];\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'statusReasonInformation'));\n this.loading = false;\n },\n });\n });\n }\n /**\n * @internal\n * Using the state map convert `apiFile.state` to one of {@link UploadState}\n * @param apiState the state given by the file to be used for mapping\n */\n determineUploadState(apiState) {\n // Reverse so that later states override earlier\n const stateEntries = Object.entries(this.stateMap).reverse();\n for (const [uploadState, apiStates] of stateEntries) {\n if (this.uploadStateIsArray(apiStates)) {\n if (apiStates.includes(apiState))\n return uploadState;\n }\n else {\n if (apiStates === apiState)\n return uploadState;\n }\n }\n return 'error';\n }\n /** @internal */\n uploadStateIsArray(state) {\n return Array.isArray(state);\n }\n /** @internal used for translation templating parameters */\n translateParams(file) {\n return { ...file, fileLimit: (this.fileLimit / 1024 / 1024).toFixed(3) };\n }\n /**\n * Poll the status endpoint to determine when file is valid\n * @param file file used to check state and update\n * @param delay how long each interval should wait before sending a request\n */\n checkValidity(file, delay) {\n if (!this.service)\n return;\n file.uploadRequests = timer(0, delay)\n .pipe(switchMap(() => {\n const asyncFetchStatus = this.service && this.service.fetchStatusFor\n ? this.service.fetchStatusFor(file)\n : this.service.fetchStatus(file.id);\n return asyncFetchStatus;\n }), retryWhen(retryStrategy({\n maxRetryAttempts: this.retryAttempts,\n })), tap((fileStatus) => {\n // Continuously update file state to show step progress\n if (fileStatus) {\n // Emit event when status changes\n if (file.status !== fileStatus.status) {\n file.status = fileStatus.status;\n file.internalStatusReasonCode = this.fallbackError(fileStatus.internalStatusReasonCode);\n file.statusReasonInformation = fileStatus.statusReasonInformation;\n file.uploadState = this.determineUploadState(fileStatus.status);\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'));\n }\n }\n }), \n // Remove validation state\n filter((apiFile) => !!apiFile &&\n this.determineUploadState(apiFile.status) !== 'uploaded' &&\n this.determineUploadState(apiFile.status) !== 'validating'), \n // Take first state after validation\n take(1))\n .subscribe({\n next: () => {\n if (this.allValidationDone(this.files)) {\n this.setComponentStateDone();\n }\n },\n error: (err) => {\n console.warn(err);\n file.uploadState = 'aborted';\n file.status = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM001';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode'));\n this.setComponentStateDone();\n },\n });\n }\n fallbackError(code) {\n if (this.errorCodes == null || (code && this.errorCodes.includes(code))) {\n return code ?? null;\n }\n else {\n return 'MFEFHM001';\n }\n }\n /**\n * Check so that no files are still validating\n */\n allValidationDone(files) {\n return Array.from(files.values()).every((file) => file.uploadState !== 'validating');\n }\n /**\n * Check so that no files are still uploading\n */\n allUploadingDone(files) {\n return Array.from(files.values()).every((file) => file.uploadState !== 'uploading');\n }\n /**\n * Helper to update the component state to done and then back to normal\n */\n setComponentStateDone() {\n if (!this.list)\n this.componentState = 'done';\n setTimeout(() => {\n if (this.componentState === 'done')\n this.componentState = 'normal';\n }, 3000);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.9\", type: NggvDragDropComponent, isStandalone: false, selector: \"nggv-drag-drop\", inputs: { thook: \"thook\", service: \"service\", accept: \"accept\", disableRemove: \"disableRemove\", fileLimit: \"fileLimit\", multiple: \"multiple\", list: \"list\", throttle: \"throttle\", retryAttempts: \"retryAttempts\", selectable: \"selectable\", stateMap: \"stateMap\", fetchStatuses: \"fetchStatuses\", errorCodes: \"errorCodes\" }, outputs: { stateChange: \"stateChange\", detailsClick: \"detailsClick\" }, host: { listeners: { \"window:beforeunload\": \"onBeforeUnload($event)\" }, properties: { \"attr.data-thook\": \"this.thook\" } }, viewQueries: [{ propertyName: \"deleteModalRef\", first: true, predicate: [\"deleteModalRef\"], descendants: true }], ngImport: i0, template: \"<ng-container *transloco=\\\"let t\\\">\\n <form enctype=\\\"multipart/form-data\\\" #dragDropForm>\\n <div class=\\\"gds-drag-drop\\\">\\n <input\\n class=\\\"gds-drag-drop__input\\\"\\n id=\\\"drag-drop\\\"\\n type=\\\"file\\\"\\n [accept]=\\\"accept\\\"\\n [multiple]=\\\"multiple && list\\\"\\n (change)=\\\"onDrop($event)\\\"\\n />\\n <label\\n [ngClass]=\\\"{\\n 'gds-drag-drop__label': true,\\n 'gds-drag-drop__label--above': componentState === 'over',\\n }\\\"\\n for=\\\"drag-drop\\\"\\n [attr.data-thook]=\\\"thook + '-picker'\\\"\\n [attr.aria-busy]=\\\"loading\\\"\\n (dragenter)=\\\"onDragEnter($event)\\\"\\n (dragover)=\\\"onDragEnter($event)\\\"\\n (dragleave)=\\\"onDragLeave($event)\\\"\\n (dragend)=\\\"onDragLeave($event)\\\"\\n (drop)=\\\"onDrop($event)\\\"\\n [ngSwitch]=\\\"componentState\\\"\\n >\\n <!-- COMPONENT STATE NORMAL -->\\n <ng-template [ngSwitchCase]=\\\"'normal'\\\">\\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\\n ><em>{{ t('dragDrop.label.fileChoose') }}</em>\\n <ng-template [ngIf]=\\\"isDragDropAvailable\\\">\\n {{ t('dragDrop.label.fileDrag') }}</ng-template\\n >\\n </ng-template>\\n\\n <!-- COMPONENT STATE OVER -->\\n <ng-template [ngSwitchCase]=\\\"'over'\\\">\\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\\n >{{ t('dragDrop.label.fileDrop') }}\\n </ng-template>\\n\\n <!-- COMPONENT STATE UPLOADING -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <strong class=\\\"filename\\\">{{ lastFile?.fileName }}</strong>\\n\\n <!-- UPLOADING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n </ng-template>\\n\\n <!-- COMPONENT STATE DONE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\\n </ng-template>\\n </label>\\n\\n <!-- LIST -->\\n <table\\n class=\\\"gds-table file-list\\\"\\n [attr.data-thook]=\\\"thook + '-file-list'\\\"\\n *ngIf=\\\"list\\\"\\n >\\n <thead>\\n <tr>\\n <th *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n id=\\\"select-all\\\"\\n />\\n <label for=\\\"select-all\\\"></label>\\n </div>\\n </th>\\n <th class=\\\"gds-table__primary-col col-name\\\">\\n {{ t('dragDrop.label.fileName') }}\\n </th>\\n <th class=\\\"col-status\\\">\\n {{ t('dragDrop.label.fileStatus') }}\\n </th>\\n <th class=\\\"col-actions\\\"></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n [attr.data-thook]=\\\"thook + '-file'\\\"\\n *ngFor=\\\"let file of files | value\\\"\\n >\\n <td *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n [id]=\\\"'file-checkbox-' + file.id\\\"\\n />\\n <label [for]=\\\"'file-checkbox-' + file.id\\\"></label>\\n </div>\\n </td>\\n <td\\n class=\\\"gds-table__primary-col\\\"\\n [attr.data-thook]=\\\"thook + '-file-name'\\\"\\n >\\n {{ file.fileName }}\\n </td>\\n <td\\n [attr.data-thook]=\\\"thook + '-file-status'\\\"\\n [ngSwitch]=\\\"file.uploadState\\\"\\n >\\n <!-- UPLOADING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- ABORTED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'aborted'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n </ng-template>\\n\\n <!-- ERROR STATE -->\\n <ng-template [ngSwitchCase]=\\\"'error'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n <br />\\n <a\\n (click)=\\\"detailsClick.emit(file)\\\"\\n style=\\\"cursor: pointer\\\"\\n *ngIf=\\\"\\n file.statusReasonInformation &&\\n file.statusReasonInformation.length\\n \\\"\\n >\\n {{ t('dragDrop.link.viewDetails') }}\\n </a>\\n </ng-template>\\n\\n <!-- DONE STATE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n <span class=\\\"success-text\\\">{{\\n t('dragDrop.text.fileStateDone')\\n }}</span>\\n </ng-template>\\n </td>\\n\\n <td class=\\\"gds-table__numeric-col\\\">\\n <a\\n class=\\\"remove\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"onRemove(file.id, file.uploadState)\\\"\\n *ngIf=\\\"!disableRemove.includes(file.uploadState)\\\"\\n >\\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\\n </a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </form>\\n\\n <nggv-dialog\\n #deleteModalRef\\n [title]=\\\"t('dragDrop.text.fileCancelModalTitle')\\\"\\n [content]=\\\"\\n t('dragDrop.text.fileCancelModalContent', {\\n name: markedForDeletion?.fileName,\\n })\\n \\\"\\n [payload]=\\\"markedForDeletion\\\"\\n [buttons]=\\\"{\\n negative: 'dragDrop.text.fileCancelConfirm',\\n positive: 'dragDrop.text.fileCancelDeny',\\n }\\\"\\n (nggvNegativeEvent)=\\\"onConfirmRemove($any($event))\\\"\\n ></nggv-dialog>\\n\\n <!-- PROGRESS TEMPLATE -->\\n\\n <ng-template\\n #progressTemplate\\n let-file=\\\"\\n file\\\"\\n let-text=\\\"text\\\"\\n >\\n <div class=\\\"progress-wrapper\\\">\\n <progress\\n class=\\\"gds-progress-bar progress\\\"\\n max=\\\"100\\\"\\n [value]=\\\"file.progress\\\"\\n >\\n {{\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </progress>\\n <ng-template [ngIf]=\\\"stateMap.validating.length\\\">\\n <div\\n class=\\\"gds-progress-indicator indicator\\\"\\n *ngIf=\\\"uploadStateIsArray(stateMap.validating); else singleValidation\\\"\\n >\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"i <= stateMap.validating.indexOf(file.status)\\\"\\n *ngFor=\\\"let state of stateMap.validating; let i = index\\\"\\n ></div>\\n </div>\\n </ng-template>\\n <ng-template #singleValidation>\\n <div class=\\\"gds-progress-indicator indicator\\\">\\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"file.status == stateMap.validating\\\"\\n ></div>\\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\\n </div>\\n </ng-template>\\n </div>\\n <span class=\\\"progress-text\\\">\\n {{\\n text ||\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </span>\\n </ng-template>\\n</ng-container>\\n\", styles: [\":host .gds-drag-drop{width:100%}:host .gds-drag-drop__input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}:host .gds-drag-drop__label{display:flex;justify-content:center;align-items:center;gap:.5rem;border:2px dashed #868686;font-weight:500;padding:2.25em 1.5em;overflow-wrap:anywhere}:host .gds-drag-drop__input+.gds-drag-drop__label em{font-style:normal;color:#0092e1;cursor:pointer}:host .gds-drag-drop table,:host .gds-drag-drop .gds-table{margin-top:2.25em}:host .gds-table{width:100%;font-family:SEBSansSerif,Arial,sans-serif;border-spacing:0}:host .gds-table th,:host .gds-table td{text-align:left;border-bottom:1px solid #e9e9e9}:host .gds-table thead{color:#333;font-size:1em}:host .gds-table thead tr{min-height:2em}:host .gds-table thead th,:host .gds-table thead td{border-bottom:1px solid #cecece;font-weight:500}:host .gds-table tbody{font-size:1em}:host .gds-table tbody tr{height:2.5em;border-bottom:1px solid #adadad}:host .gds-table tbody tr:hover td,:host .gds-table tbody tr:hover th{background-color:#f8f8f8}:host .gds-table tfoot{font-weight:500;font-size:1em}:host .gds-table tfoot tr{height:2.5em}:host .gds-table tfoot td{border-top:1px solid #cecece;border-bottom-width:0}:host tr .gds-table__numeric-col{text-align:right}:host tr .gds-table__negative-col{color:#bb000c}:host tr .gds-table__primary-col{color:#000}:host .gds-table__sortable-col{cursor:pointer;white-space:nowrap;margin-left:.5em}:host .gds-table__sortable-col:after{content:\\\"\\\";display:inline-block;background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;margin-left:.25rem;width:.625rem;height:1rem;vertical-align:text-bottom}:host .gds-table__sortable-col:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23007ac7' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%2341b0ee' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23007ac7' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%2341b0ee' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table .gds-field-checkbox-wrap{width:2.5rem}:host .gds-table .gds-field-checkbox-wrap label{box-shadow:none!important}:host .gds-table--fixed-l-col{overflow:auto;display:block;position:relative;max-width:100%}:host .gds-table--fixed-l-col td,:host .gds-table--fixed-l-col th{width:auto!important;min-width:150px}:host .gds-table--fixed-l-col td:first-child,:host .gds-table--fixed-l-col th:first-child{position:sticky;left:0;background-color:#fff;border-right:1px solid #e9e9e9}:host .gds-table--fixed-l-col thead th{top:0;z-index:1;position:sticky;background-color:#fff}:host .gds-table--fixed-l-col thead th:first-child{z-index:2}:host .gds-progress-bar{appearance:none;height:.3125rem;width:100%;position:relative;overflow:hidden;color:#45b400;border-width:0;background-color:#e9e9e9}:host .gds-progress-bar:before{display:block;position:absolute;content:\\\"\\\";left:-200px;width:200px;height:.3125rem;background-color:#45b400;animation:gds-progressbar-loading 2s linear infinite}:host .gds-progress-bar::-webkit-progress-value{background-color:transparent}:host .gds-progress-bar::-moz-progress-bar{background-color:transparent}:host .gds-progress-bar::-ms-fill{background-color:transparent;border-width:0}:host .gds-progress-bar::-webkit-progress-bar{background-color:#e9e9e9}@keyframes gds-progressbar-loading{0%{left:-30%;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}:host .gds-progress-bar[value]:before{content:none}:host .gds-progress-bar[value]::-webkit-progress-value{background-color:#45b400}:host .gds-progress-bar[value]::-moz-progress-bar{background-color:#45b400}:host .gds-progress-bar[value]::-ms-fill{background-color:#45b400}:host .gds-progress-indicator{display:flex;width:100%}:host .gds-progress-indicator__step{flex-grow:1;height:.5rem;margin-right:.125rem;background-color:#e9e9e9}:host .gds-progress-indicator__step.-done{background-color:#45b400}:host .gds-progress-indicator__step:last-child{margin-right:0}:host .file-list th:first-child,:host .file-list td:first-child{width:auto}:host .filename{display:block;margin-bottom:.5rem}:host .col-name{width:40%}:host .col-status{width:30%}:host .col-actions{width:.1%}:host .progress-wrapper{display:flex}:host .progress,:host .indicator{height:.5rem}:host .gds-progress-indicator__step{margin-right:0}:host .progress{color:#45b400}:host .progress::-webkit-progress-value{background-color:#45b400}:host .progress::-moz-progress-bar{background-color:#45b400}:host .progress::-ms-fill{background-color:#45b400}:host .progress-text{display:block;margin-top:.125rem}:host .error-text{color:#bb000c}:host .success-text{color:#308800}:host .remove{padding:0 .5rem;font-size:1.5em;color:#868686;cursor:pointer;display:grid;place-content:center}:host .remove:hover,:host .remove:focus{color:#bb000c}\\n\"], dependencies: [{ kind: \"directive\", type: i1.TranslocoDirective, selector: \"[transloco]\", inputs: [\"transloco\", \"translocoParams\", \"translocoScope\", \"translocoRead\", \"translocoPrefix\", \"translocoLang\", \"translocoLoadingTpl\"] }, { kind: \"component\", type: i2.NggvDialogComponent, selector: \"nggv-dialog\", inputs: [\"thook\", \"shown\", \"initiallyShown\", \"heading\", \"title\", \"content\", \"autoClose\", \"payload\", \"dialogTitleId\", \"dialogBodyId\", \"closeModalOnEscape\", \"closeButtonAriaLabel\", \"buttons\"], outputs: [\"nggvCloseEvent\", \"nggvPositiveEvent\", \"nggvNeutralEvent\", \"nggvNegativeEvent\", \"nggvDangerEvent\"], exportAs: [\"dialog\"] }, { kind: \"directive\", type: i3.NggCoreElementDirective, selector: \"[nggCoreElement]\" }, { kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"pipe\", type: i4.DecimalPipe, name: \"number\" }, { kind: \"pipe\", type: i5.ValuePipe, name: \"value\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropComponent, decorators: [{\n type: Component,\n args: [{ selector: 'nggv-drag-drop', standalone: false, template: \"<ng-container *transloco=\\\"let t\\\">\\n <form enctype=\\\"multipart/form-data\\\" #dragDropForm>\\n <div class=\\\"gds-drag-drop\\\">\\n <input\\n class=\\\"gds-drag-drop__input\\\"\\n id=\\\"drag-drop\\\"\\n type=\\\"file\\\"\\n [accept]=\\\"accept\\\"\\n [multiple]=\\\"multiple && list\\\"\\n (change)=\\\"onDrop($event)\\\"\\n />\\n <label\\n [ngClass]=\\\"{\\n 'gds-drag-drop__label': true,\\n 'gds-drag-drop__label--above': componentState === 'over',\\n }\\\"\\n for=\\\"drag-drop\\\"\\n [attr.data-thook]=\\\"thook + '-picker'\\\"\\n [attr.aria-busy]=\\\"loading\\\"\\n (dragenter)=\\\"onDragEnter($event)\\\"\\n (dragover)=\\\"onDragEnter($event)\\\"\\n (dragleave)=\\\"onDragLeave($event)\\\"\\n (dragend)=\\\"onDragLeave($event)\\\"\\n (drop)=\\\"onDrop($event)\\\"\\n [ngSwitch]=\\\"componentState\\\"\\n >\\n <!-- COMPONENT STATE NORMAL -->\\n <ng-template [ngSwitchCase]=\\\"'normal'\\\">\\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\\n ><em>{{ t('dragDrop.label.fileChoose') }}</em>\\n <ng-template [ngIf]=\\\"isDragDropAvailable\\\">\\n {{ t('dragDrop.label.fileDrag') }}</ng-template\\n >\\n </ng-template>\\n\\n <!-- COMPONENT STATE OVER -->\\n <ng-template [ngSwitchCase]=\\\"'over'\\\">\\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\\n >{{ t('dragDrop.label.fileDrop') }}\\n </ng-template>\\n\\n <!-- COMPONENT STATE UPLOADING -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <strong class=\\\"filename\\\">{{ lastFile?.fileName }}</strong>\\n\\n <!-- UPLOADING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n </ng-template>\\n\\n <!-- COMPONENT STATE DONE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\\n </ng-template>\\n </label>\\n\\n <!-- LIST -->\\n <table\\n class=\\\"gds-table file-list\\\"\\n [attr.data-thook]=\\\"thook + '-file-list'\\\"\\n *ngIf=\\\"list\\\"\\n >\\n <thead>\\n <tr>\\n <th *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n id=\\\"select-all\\\"\\n />\\n <label for=\\\"select-all\\\"></label>\\n </div>\\n </th>\\n <th class=\\\"gds-table__primary-col col-name\\\">\\n {{ t('dragDrop.label.fileName') }}\\n </th>\\n <th class=\\\"col-status\\\">\\n {{ t('dragDrop.label.fileStatus') }}\\n </th>\\n <th class=\\\"col-actions\\\"></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n [attr.data-thook]=\\\"thook + '-file'\\\"\\n *ngFor=\\\"let file of files | value\\\"\\n >\\n <td *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n [id]=\\\"'file-checkbox-' + file.id\\\"\\n />\\n <label [for]=\\\"'file-checkbox-' + file.id\\\"></label>\\n </div>\\n </td>\\n <td\\n class=\\\"gds-table__primary-col\\\"\\n [attr.data-thook]=\\\"thook + '-file-name'\\\"\\n >\\n {{ file.fileName }}\\n </td>\\n <td\\n [attr.data-thook]=\\\"thook + '-file-status'\\\"\\n [ngSwitch]=\\\"file.uploadState\\\"\\n >\\n <!-- UPLOADING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- ABORTED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'aborted'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n </ng-template>\\n\\n <!-- ERROR STATE -->\\n <ng-template [ngSwitchCase]=\\\"'error'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n <br />\\n <a\\n (click)=\\\"detailsClick.emit(file)\\\"\\n style=\\\"cursor: pointer\\\"\\n *ngIf=\\\"\\n file.statusReasonInformation &&\\n file.statusReasonInformation.length\\n \\\"\\n >\\n {{ t('dragDrop.link.viewDetails') }}\\n </a>\\n </ng-template>\\n\\n <!-- DONE STATE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n <span class=\\\"success-text\\\">{{\\n t('dragDrop.text.fileStateDone')\\n }}</span>\\n </ng-template>\\n </td>\\n\\n <td class=\\\"gds-table__numeric-col\\\">\\n <a\\n class=\\\"remove\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"onRemove(file.id, file.uploadState)\\\"\\n *ngIf=\\\"!disableRemove.includes(file.uploadState)\\\"\\n >\\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\\n </a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </form>\\n\\n <nggv-dialog\\n #deleteModalRef\\n [title]=\\\"t('dragDrop.text.fileCancelModalTitle')\\\"\\n [content]=\\\"\\n t('dragDrop.text.fileCancelModalContent', {\\n name: markedForDeletion?.fileName,\\n })\\n \\\"\\n [payload]=\\\"markedForDeletion\\\"\\n [buttons]=\\\"{\\n negative: 'dragDrop.text.fileCancelConfirm',\\n positive: 'dragDrop.text.fileCancelDeny',\\n }\\\"\\n (nggvNegativeEvent)=\\\"onConfirmRemove($any($event))\\\"\\n ></nggv-dialog>\\n\\n <!-- PROGRESS TEMPLATE -->\\n\\n <ng-template\\n #progressTemplate\\n let-file=\\\"\\n file\\\"\\n let-text=\\\"text\\\"\\n >\\n <div class=\\\"progress-wrapper\\\">\\n <progress\\n class=\\\"gds-progress-bar progress\\\"\\n max=\\\"100\\\"\\n [value]=\\\"file.progress\\\"\\n >\\n {{\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </progress>\\n <ng-template [ngIf]=\\\"stateMap.validating.length\\\">\\n <div\\n class=\\\"gds-progress-indicator indicator\\\"\\n *ngIf=\\\"uploadStateIsArray(stateMap.validating); else singleValidation\\\"\\n >\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"i <= stateMap.validating.indexOf(file.status)\\\"\\n *ngFor=\\\"let state of stateMap.validating; let i = index\\\"\\n ></div>\\n </div>\\n </ng-template>\\n <ng-template #singleValidation>\\n <div class=\\\"gds-progress-indicator indicator\\\">\\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"file.status == stateMap.validating\\\"\\n ></div>\\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\\n </div>\\n </ng-template>\\n </div>\\n <span class=\\\"progress-text\\\">\\n {{\\n text ||\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </span>\\n </ng-template>\\n</ng-container>\\n\", styles: [\":host .gds-drag-drop{width:100%}:host .gds-drag-drop__input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}:host .gds-drag-drop__label{display:flex;justify-content:center;align-items:center;gap:.5rem;border:2px dashed #868686;font-weight:500;padding:2.25em 1.5em;overflow-wrap:anywhere}:host .gds-drag-drop__input+.gds-drag-drop__label em{font-style:normal;color:#0092e1;cursor:pointer}:host .gds-drag-drop table,:host .gds-drag-drop .gds-table{margin-top:2.25em}:host .gds-table{width:100%;font-family:SEBSansSerif,Arial,sans-serif;border-spacing:0}:host .gds-table th,:host .gds-table td{text-align:left;border-bottom:1px solid #e9e9e9}:host .gds-table thead{color:#333;font-size:1em}:host .gds-table thead tr{min-height:2em}:host .gds-table thead th,:host .gds-table thead td{border-bottom:1px solid #cecece;font-weight:500}:host .gds-table tbody{font-size:1em}:host .gds-table tbody tr{height:2.5em;border-bottom:1px solid #adadad}:host .gds-table tbody tr:hover td,:host .gds-table tbody tr:hover th{background-color:#f8f8f8}:host .gds-table tfoot{font-weight:500;font-size:1em}:host .gds-table tfoot tr{height:2.5em}:host .gds-table tfoot td{border-top:1px solid #cecece;border-bottom-width:0}:host tr .gds-table__numeric-col{text-align:right}:host tr .gds-table__negative-col{color:#bb000c}:host tr .gds-table__primary-col{color:#000}:host .gds-table__sortable-col{cursor:pointer;white-space:nowrap;margin-left:.5em}:host .gds-table__sortable-col:after{content:\\\"\\\";display:inline-block;background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;margin-left:.25rem;width:.625rem;height:1rem;vertical-align:text-bottom}:host .gds-table__sortable-col:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23007ac7' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%2341b0ee' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23007ac7' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%2341b0ee' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table .gds-field-checkbox-wrap{width:2.5rem}:host .gds-table .gds-field-checkbox-wrap label{box-shadow:none!important}:host .gds-table--fixed-l-col{overflow:auto;display:block;position:relative;max-width:100%}:host .gds-table--fixed-l-col td,:host .gds-table--fixed-l-col th{width:auto!important;min-width:150px}:host .gds-table--fixed-l-col td:first-child,:host .gds-table--fixed-l-col th:first-child{position:sticky;left:0;background-color:#fff;border-right:1px solid #e9e9e9}:host .gds-table--fixed-l-col thead th{top:0;z-index:1;position:sticky;background-color:#fff}:host .gds-table--fixed-l-col thead th:first-child{z-index:2}:host .gds-progress-bar{appearance:none;height:.3125rem;width:100%;position:relative;overflow:hidden;color:#45b400;border-width:0;background-color:#e9e9e9}:host .gds-progress-bar:before{display:block;position:absolute;content:\\\"\\\";left:-200px;width:200px;height:.3125rem;background-color:#45b400;animation:gds-progressbar-loading 2s linear infinite}:host .gds-progress-bar::-webkit-progress-value{background-color:transparent}:host .gds-progress-bar::-moz-progress-bar{background-color:transparent}:host .gds-progress-bar::-ms-fill{background-color:transparent;border-width:0}:host .gds-progress-bar::-webkit-progress-bar{background-color:#e9e9e9}@keyframes gds-progressbar-loading{0%{left:-30%;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}:host .gds-progress-bar[value]:before{content:none}:host .gds-progress-bar[value]::-webkit-progress-value{background-color:#45b400}:host .gds-progress-bar[value]::-moz-progress-bar{background-color:#45b400}:host .gds-progress-bar[value]::-ms-fill{background-color:#45b400}:host .gds-progress-indicator{display:flex;width:100%}:host .gds-progress-indicator__step{flex-grow:1;height:.5rem;margin-right:.125rem;background-color:#e9e9e9}:host .gds-progress-indicator__step.-done{background-color:#45b400}:host .gds-progress-indicator__step:last-child{margin-right:0}:host .file-list th:first-child,:host .file-list td:first-child{width:auto}:host .filename{display:block;margin-bottom:.5rem}:host .col-name{width:40%}:host .col-status{width:30%}:host .col-actions{width:.1%}:host .progress-wrapper{display:flex}:host .progress,:host .indicator{height:.5rem}:host .gds-progress-indicator__step{margin-right:0}:host .progress{color:#45b400}:host .progress::-webkit-progress-value{background-color:#45b400}:host .progress::-moz-progress-bar{background-color:#45b400}:host .progress::-ms-fill{background-color:#45b400}:host .progress-text{display:block;margin-top:.125rem}:host .error-text{color:#bb000c}:host .success-text{color:#308800}:host .remove{padding:0 .5rem;font-size:1.5em;color:#868686;cursor:pointer;display:grid;place-content:center}:host .remove:hover,:host .remove:focus{color:#bb000c}\\n\"] }]\n }], propDecorators: { deleteModalRef: [{\n type: ViewChild,\n args: ['deleteModalRef']\n }], thook: [{\n type: HostBinding,\n args: ['attr.data-thook']\n }, {\n type: Input\n }], service: [{\n type: Input\n }], accept: [{\n type: Input\n }], disableRemove: [{\n type: Input\n }], fileLimit: [{\n type: Input\n }], multiple: [{\n type: Input\n }], list: [{\n type: Input\n }], throttle: [{\n type: Input\n }], retryAttempts: [{\n type: Input\n }], selectable: [{\n type: Input\n }], stateMap: [{\n type: Input\n }], fetchStatuses: [{\n type: Input\n }], errorCodes: [{\n type: Input\n }], stateChange: [{\n type: Output\n }], detailsClick: [{\n type: Output\n }], onBeforeUnload: [{\n type: HostListener,\n args: ['window:beforeunload', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RyYWctZHJvcC9kcmFnLWRyb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJhZy1kcm9wL2RyYWctZHJvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXhFLE9BQU8sRUFFTCxtQkFBbUIsR0FDcEIsTUFBTSw2Q0FBNkMsQ0FBQTtBQUNwRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLG1CQUFtQixDQUFBO0FBVzFCLE9BQU8sNERBQTRELENBQUE7QUFDbkUsT0FBTywyREFBMkQsQ0FBQTtBQUNsRSxPQUFPLHlEQUF5RCxDQUFBOzs7Ozs7O0FBVWhFLE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFVRSxvRkFBb0Y7UUFDM0MsVUFBSyxHQUM1QyxXQUFXLENBQUE7UUFRYiw4SUFBOEk7UUFDckksa0JBQWEsR0FBa0IsRUFBRSxDQUFBO1FBRTFDLHFDQUFxQztRQUM1QixjQUFTLEdBQVcsR0FBRyxHQUFHLElB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TTtnQkFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQTtRQUNwRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDVixDQUFDOzhHQWpsQlUscUJBQXFCO2tHQUFyQixxQkFBcUIsNnJCQ2pEbEMsZzJVQWlUQTs7MkZEaFFhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxnQkFBZ0IsY0FHZCxLQUFLOztzQkFJbEIsU0FBUzt1QkFBQyxnQkFBZ0I7O3NCQUcxQixXQUFXO3VCQUFDLGlCQUFpQjs7c0JBQUcsS0FBSzs7c0JBSXJDLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQU1MLEtBQUs7O3NCQUdMLEtBQUs7O3NCQVlMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLE1BQU07O3NCQUdOLE1BQU07O3NCQW1GTixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0aW1lciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBmaWx0ZXIsIHJldHJ5V2hlbiwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgRGlhbG9nRXZlbnQsXG4gIE5nZ3ZEaWFsb2dDb21wb25lbnQsXG59IGZyb20gJ0BzZWJncm91cC9ncmVlbi1hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwnXG5pbXBvcnQge1xuICBleHRlbmRGaWxlLFxuICBpc0RyYWdEcm9wQXZhaWxhYmxlLFxuICBwaWNrLFxuICByZXRyeVN0cmF0ZWd5LFxuICB2ZXJpZnlBY2NlcHQsXG59IGZyb20gJy4vZHJhZy1kcm9wLnV0aWxzJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFQSUZpbGUsXG4gIEV2ZW50U3RhdGVDaGFuZ2UsXG4gIEZpbGVTZXJ2aWNlLFxuICBMb2NhbEZpbGUsXG4gIFN0YXRlTWFwLFxuICBVcGxvYWRTdGF0ZSxcbn0gZnJvbSAnLi9kcmFnLWRyb3AubW9kZWxzJ1xuXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jbG91ZC11cGxvYWQuanMnXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jcm9zcy1zbWFsbC5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL2NoZWNrbWFyay5qcydcblxuZXhwb3J0IHR5cGUgRHJhZ0Ryb3BTdGF0ZSA9ICdub3JtYWwnIHwgJ292ZXInIHwgJ3VwbG9hZGluZycgfCAnZG9uZSdcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ2d2LWRyYWctZHJvcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyYWctZHJvcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJhZy1kcm9wLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTmdndkRyYWdEcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogQGludGVybmFsICovXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZU1vZGFsUmVmJykgZGVsZXRlTW9kYWxSZWYhOiBOZ2d2RGlhbG9nQ29tcG9uZW50XG5cbiAgLyoqIFNwZWNpYWwgcHJvcGVydHkgdXNlZCBmb3Igc2VsZWN0aW5nIERPTSBlbGVtZW50cyBkdXJpbmcgYXV0b21hdGVkIFVJIHRlc3RpbmcuICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXRob29rJykgQElucHV0KCkgdGhvb2s6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICdkcmFnLWRyb3AnXG5cbiAgLyoqIEFsbG93aW5nIHNlbGVjdGluZyBvciBkcm9wcGluZyBtdWx0aXBsZSBmaWxlcy4gKi9cbiAgQElucHV0KCkgc2VydmljZTogRmlsZVNlcnZpY2UgfCB1bmRlZmluZWRcblxuICAvKiogTWltZSB0eXBlcyBhbGxvd2VkLiAqL1xuICBASW5wdXQoKSBhY2NlcHQ/OiBzdHJpbmdcblxuICAvKiogRGlzYWJsZXMgZGVsZXRpb24gb3IgY2FuY2VsbGF0aW9uIGR1cmluZyBkZWZpbmVkIHN0YXRlcyBbbG9jYWwgfCB1cGxvYWRpbmcgfCBhYm9ydGVkIHwgdXBsb2FkZWQgfCB2YWxpZGF0aW5nIHwgZXJyb3IgfCBkZWxldGVkIHwgZG9uZV0uICovXG4gIEBJbnB1dCgpIGRpc2FibGVSZW1vdmU6IFVwbG9hZFN0YXRlW10gPSBbXVxuXG4gIC8qKiBGaWxlIHNpemUgbGltaXQgaW4gbWVnYSBieXRlcy4gKi9cbiAgQElucHV0KCkgZmlsZUxpbWl0OiBudW1iZXIgPSAyNTAgKiAxMDI0ICogMTAyNFxuXG4gIC8qKiBBbGxvd2luZyBzZWxlY3Rpbmcgb3IgZHJvcHBpbmcgbXVsdGlwbGUgZmlsZXMuICovXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gdHJ1ZVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIGxpc3Qgc2hvdWxkIGJlIHNob3duIHVuZGVyIHVwbG9hZCwgZGlzYWJsaW5nIGxpc3QgZGlzYWJsZXMgbXVsdGlwbGUgdXBsb2FkLiAqL1xuICBASW5wdXQoKSBsaXN0ID0gdHJ1ZVxuXG4gIC8qKiBGcmVxdWVuY3kgb2YgcmVxdWVzdHMgd2hpY2ggdG8gc2VuZCB0byB0aGUgQVBJIHJlcXVlc3Rpbmcgc3RhdHVzIHVwZGF0ZXMuICovXG4gIEBJbnB1dCgpIHRocm90dGxlID0gNTAwMFxuXG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyB0byByZXF1ZXN0IGEgc3RhdHVzIHVwZGF0ZSBmcm9tIHRoZSBBUEkgaWYgc2VydmljZSBpcyB1bnJlYWNoYWJsZS4gKi9cbiAgQElucHV0KCkgcmV0cnlBdHRlbXB0cyA9IDVcblxuICAvKiogSWYgc2VsZWN0aW9uIG9mIG11bHRpcGxlIGZpbGUgc2hvdWxkIGJlIHBvc3NpYmxlIHdpdGggYSBjaGVja2JveC5cbiAgICogQGV4cGVyaW1lbnRhbCB3b3JrIGluIHByb2dyZXNzIGFuZCBzaG91bGQgbm90IHlldCBiZSB1c2VkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZVxuXG4gIC8qKiBBbGxvd3MgbXVsdGlwbGUgdmFsdWVzIGZyb20gYGFwaUZpbGUuc3RhdHVzYCB0byBiZSBtYXBwZWQgdG8gYSBzaW5nbGUgZmlsZSB1cGxvYWQgc3RhdGUuICovXG4gIEBJbnB1dCgpIHN0YXRlTWFwOiBTdGF0ZU1hcCA9IHtcbiAgICBsb2NhbDogJ2xvY2FsJyxcbiAgICB1cGxvYWRpbmc6ICd1cGxvYWRpbmcnLFxuICAgIGFib3J0ZWQ6ICdhYm9ydGVkJyxcbiAgICB1cGxvYWRlZDogJ3VwbG9hZGVkJyxcbiAgICB2YWxpZGF0aW5nOiAndmFsaWRhdGluZycsXG4gICAgZXJyb3I6ICdlcnJvcicsXG4gICAgZGVsZXRlZDogJ2RlbGV0ZWQnLFxuICAgIGRvbmU6ICdkb25lJyxcbiAgfVxuXG4gIC8qKiBTdGF0dXNlcyBhbGxvd2VkIHRvIGJlIGZldGNoIGR1cmluZyB0aGUgaW5pdGlhbCBsb2FkLiBVc2VkIHRvIGhpZGUgXCJkb25lXCIgc3RhdGVzIGZyb20gbGlzdC4gKi9cbiAgQElucHV0KCkgZmV0Y2hTdGF0dXNlczogc3RyaW5nW10gPSBbXVxuXG4gIC8qKiBTdGF0dXNlcyBhbGxvd2VkIGJlIHNob3duIHdoZW4gc3RhdHVzIGlzIFwicmVqZWN0ZWRcIi4gV2lsbCBmYWxsYmFjayB0byBnZW5lcmljIG1lc3NhZ2UuIGBudWxsYCBhbGxvd3MgYWxsLiAqL1xuICBASW5wdXQoKSBlcnJvckNvZGVzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG5cbiAgLyoqIEV2ZW50IHRyaWdnZXJlZCBvbiBpbml0aWFsaXphdGlvbiBhbmQgZXZlcnkgdGltZSB0aGUgXCJ1cGxvYWRTdGF0ZVwiIGZvciBhIGZpbGUgY2hhbmdlcy4gKi9cbiAgQE91dHB1dCgpIHN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudFN0YXRlQ2hhbmdlPigpXG5cbiAgLyoqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIHZpZXcgZGV0YWlscyBpcyBjbGlja2VkLiAqL1xuICBAT3V0cHV0KCkgZGV0YWlsc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxMb2NhbEZpbGUgJiBBUElGaWxlPigpXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBpc0RyYWdEcm9wQXZhaWxhYmxlID0gaXNEcmFnRHJvcEF2YWlsYWJsZSgpXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgY29tcG9uZW50U3RhdGU6IERyYWdEcm9wU3RhdGUgPSAnbm9ybWFsJ1xuICAvKiogQGludGVybmFsICovXG4gIGZpbGVzOiBNYXA8c3RyaW5nLCBMb2NhbEZpbGUgJiBBUElGaWxlPiA9IG5ldyBNYXAoKVxuICAvKiogQGludGVybmFsICovXG4gIGxhc3RGaWxlOiAoTG9jYWxGaWxlICYgQVBJRmlsZSkgfCB1bmRlZmluZWRcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBzZWxlY3RlZDogc3RyaW5nW10gPSBbXVxuICAvKiogQGludGVybmFsICovXG4gIGxvYWRpbmcgPSBmYWxzZVxuICAvKiogQGludGVybmFsICovXG4gIG1hcmtlZEZvckRlbGV0aW9uOiBBUElGaWxlIHwgdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudCBhbmQgd2FybiBpZiBzZXJ2aWNlIGlzIG5vdCBkZWZpbmVkLiBXaWxsIGFsc28gZmV0Y2ggZmlsZXMgZm9yIHRoZSBsaXN0IGlmIGVuYWJsZWQuXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdEcmFnIGFuZCBkcm9wIGNvbXBvbmVudCB3aWxsIG5vdCB3b3JrIHdpdGhvdXQgdGhlIFtzZXJ2aWNlXSBwcm9wZXJ0eSBkZWZpbmVkIScsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmZldGNoRmlsZXModGhpcy5mZXRjaFN0YXR1c2VzKS5zdWJzY3JpYmUoKGFwaUZpbGVzKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgYXBpRmlsZSBvZiBhcGlGaWxlcykge1xuICAgICAgICAgIGNvbnN0IGV4dGVuZGVkRmlsZSA9IGV4dGVuZEZpbGUodW5kZWZpbmVkLCBhcGlGaWxlLCB7XG4gICAgICAgICAgICBwcm9ncmVzczogMTAwLFxuICAgICAgICAgICAgdXBsb2FkU3RhdGU6IHRoaXMuZGV0ZXJtaW5lVXBsb2FkU3RhdGUoYXBpRmlsZS5zdGF0dXMpLFxuICAgICAgICAgICAgaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlOiB0aGlzLmZhbGxiYWNrRXJyb3IoXG4gICAgICAgICAgICAgIGFwaUZpbGUuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRoaXMuZmlsZXMuc2V0KGV4dGVuZGVkRmlsZS5pZCwgZXh0ZW5kZWRGaWxlKVxuICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdChcbiAgICAgICAgICAgIHBpY2soXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlsZSxcbiAgICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICAgICAnc3RhdHVzUmVhc29uSW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICAvLyBDaGVjayBpZiB2YWxpZGF0aW9uIGlzIHJlcXVpcmVkLCB0aGVuIHN0YXJ0IHBvbGxpbmdcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBleHRlbmRlZEZpbGUudXBsb2FkU3RhdGUgPT09ICd1cGxvYWRlZCcgfHxcbiAgICAgICAgICAgIGV4dGVuZGVkRmlsZS51cGxvYWRTdGF0ZSA9PT0gJ3ZhbGlkYXRpbmcnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoZXh0ZW5kZWRGaWxlLCB0aGlzLnRocm90dGxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKiogRGVzdHJveSBhbGwgZXZlbnQgbGlzdGVuZXJzIGFuZCBwb2xsaW5nIHJ1bm5pbmcgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBmaWxlLnVwbG9hZFJlcXVlc3RzPy51bnN1YnNjcmliZSgpXG4gICAgICBpZiAoZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ3VwbG9hZGluZycpIHtcbiAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICBmaWxlLmludGVybmFsU3RhdHVzUmVhc29uQ29kZSA9ICdNRkVGSE0wMDQnXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdChcbiAgICAgICAgICBwaWNrKFxuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICd1cGxvYWRTdGF0ZScsXG4gICAgICAgICAgICAnZmlsZU5hbWUnLFxuICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAnaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlJyxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgV2FybiB1c2VyIHRyeWluZyB0byBsZWF2ZSBwYWdlIGJlZm9yZSBhbGwgdXBsb2FkcyBhcmUgZG9uZS4gQ3VzdG9tIG1lc3NhZ2Ugb25seSB3b3JrcyBpbiBvbGRlciBicm93c2Vycy4gKi9cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXG4gIG9uQmVmb3JlVW5sb2FkKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5hbGxVcGxvYWRpbmdEb25lKHRoaXMuZmlsZXMpKSB7XG4gICAgICBjb25zdCBjb25maXJtYXRpb25NZXNzYWdlID0gYFlvdSBzdGlsbCBoYXZlIGZpbGVzIHVwbG9hZGluZywgYXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT9gXG4gICAgICA7KChldmVudCBhcyBhbnkpIHx8ICh3aW5kb3cuZXZlbnQgYXMgYW55KSkucmV0dXJuVmFsdWUgPVxuICAgICAgICBjb25maXJtYXRpb25NZXNzYWdlXG4gICAgICByZXR1cm4gY29uZmlybWF0aW9uTWVzc2FnZVxuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIERyYWcgJiBEcm9wIEV2ZW50cyAqL1xuXG4gIC8qKiBAaW50ZXJuYWwgRXZlbnQgaGFuZGxlciBmb3Igd2hlbiBhIGZpbGUgaXMgaGVsZCBvdmVyIHRoZSBkcm9wIGFyZWEgKi9cbiAgb25EcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXJ2aWNlKSByZXR1cm5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgLy8gVXBkYXRlIHRoZSB2aXN1YWwgc3RhdGVcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlID0gJ292ZXInXG4gIH1cblxuICAvKiogQGludGVybmFsIEV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gYSBmaWxlIGxlYXZlcyB0aGUgZHJvcCBhcmVhICovXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkgcmV0dXJuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGUgPSAnbm9ybWFsJ1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCBFdmVudCBoYW5kbGVyIGZvciB3aGVuIGEgZmlsZSBpcyBkcm9wcGVkIG9uIHRoZSBkcm9wIGFyZWEgb3Igd2hlbiBgaW5wdXRgIGZpbGVzIGFyZSBzZWxlY3RlZCAqL1xuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCB8IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHJldHVyblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlID0gJ25vcm1hbCdcblxuICAgIGxldCBmaWxlczogRmlsZUxpc3QgfCB1bmRlZmluZWRcblxuICAgIC8vIERldGVybWluZSBpZiBmaWxlcyBhcmUgZnJvbSB0aGUgZHJvcCBldmVudCBvciBpbnB1dCBlbGVtZW50XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgRHJhZ0V2ZW50ICYmIGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmXG4gICAgICBldmVudC50YXJnZXQuZmlsZXNcbiAgICApIHtcbiAgICAgIGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzXG4gICAgfVxuXG4gICAgaWYgKGZpbGVzKSB7XG4gICAgICBjb25zdCBleHRlbmRlZEZpbGVzID0gQXJyYXkuZnJvbShmaWxlcywgKGZpbGUpID0+IHtcbiAgICAgICAgbGV0IGFib3J0ID0gZmFsc2VcbiAgICAgICAgbGV0IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICAgICAgIC8vIENoZWNrIGlmIGZpbGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiBsaW1pdFxuICAgICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5maWxlTGltaXQpIHtcbiAgICAgICAgICBhYm9ydCA9IHRydWVcbiAgICAgICAgICBzdGF0dXNDb2RlID0gJ01GRUZITTAwMydcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiBmaWxlIHR5cGUgaXMgbm90IGFjY2VwdGFibGVcbiAgICAgICAgaWYgKCF2ZXJpZnlBY2NlcHQoZmlsZS50eXBlLCB0aGlzLmFjY2VwdCkpIHtcbiAgICAgICAgICBhYm9ydCA9IHRydWVcbiAgICAgICAgICBzdGF0dXNDb2RlID0gJ01GRUZITTAwMidcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgZGVmYXVsdCB2YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIEFQSVxuICAgICAgICBjb25zdCBleHRlbmRlZEZpbGUgPSBleHRlbmRGaWxlKGZpbGUsIHtcbiAgICAgICAgICBpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGU6IHN0YXR1c0NvZGUsXG4gICAgICAgICAgdXBsb2FkU3RhdGU6IChhYm9ydCA/ICdhYm9ydGVkJyA6ICdsb2NhbCcpIGFzIFVwbG9hZFN0YXRlLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEVtaXQgaW5pdGlhbCBsb2NhbCB1cGxvYWQgZXZlbnRcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICB1cGxvYWRTdGF0ZTogJ2xvY2FsJyxcbiAgICAgICAgICBmaWxlTmFtZTogZXh0ZW5kZWRGaWxlLmZpbGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChhYm9ydCkge1xuICAgICAgICAgIC8vIEVtaXQgYWJvcnRlZCB1cGxvYWQgZXZlbnRcbiAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgdXBsb2FkU3RhdGU6ICdhYm9ydGVkJyxcbiAgICAgICAgICAgIGZpbGVOYW1lOiBleHRlbmRlZEZpbGUuZmlsZU5hbWUsXG4gICAgICAgICAgICBzdGF0dXM6ICdhYm9ydGVkJyxcbiAgICAgICAgICAgIGludGVybmFsU3RhdHVzUmVhc29uQ29kZTogc3RhdHVzQ29kZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4dGVuZGVkRmlsZVxuICAgICAgfSlcblxuICAgICAgLy8gQXBwZW5kIHRvIHByZXZpb3VzIGZpbGVzXG4gICAgICBsZXQgaSA9IDBcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBleHRlbmRlZEZpbGVzKSB7XG4gICAgICAgIC8vIElmIG11bHRpcGxlIG9yIGxpc3QgaXMgZmFsc2UgYXBwZW5kIG9ubHkgZmlsZSB0aGVuIGJyZWFrIGxvb3BcbiAgICAgICAgaWYgKCghdGhpcy5tdWx0aXBsZSB8fCAhdGhpcy5saXN0KSAmJiBpID49IDEpIGJyZWFrXG4gICAgICAgIHRoaXMubGFzdEZpbGUgPSBmaWxlXG4gICAgICAgIHRoaXMuZmlsZXMuc2V0KGZpbGUuaWQsIGZpbGUpXG4gICAgICAgIGkrK1xuICAgICAgfVxuXG4gICAgICAvLyBDbGVhciBmaWxlIGlucHV0IHNvIHRoYXQgc2FtZSBmaWxlIGNhbiBiZSB1cGxvYWRlZFxuICAgICAgaWYgKFxuICAgICAgICBldmVudC50YXJnZXQgJiZcbiAgICAgICAgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICAgICBldmVudC50YXJnZXQuZmlsZXNcbiAgICAgICkge1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJ1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uU3VibWl0KClcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsIEV2ZW50IHRyaWdnZXIgZm9yIHdoZW4gZGVsZXRlIGJ1dHRvbiBpcyBwcmVzc2VkICovXG4gIG9uUmVtb3ZlKGlkOiBzdHJpbmcsIHN0YXRlOiBVcGxvYWRTdGF0ZSk6IHZvaWQge1xuICAgIC8vIE9ubHkgYWxsb3cgcmVtb3ZhbCBpbiBjZXJ0YWluIHN0YXRlc1xuICAgIGlmICghdGhpcy5zZXJ2aWNlIHx8IHRoaXMuZGlzYWJsZVJlbW92ZS5pbmNsdWRlcyhzdGF0ZSkpIHJldHVyblxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVzLmdldChpZClcbiAgICBpZiAoIWZpbGUpIHJldHVyblxuICAgIC8vIFNraXAgY29uZmlybWF0aW9uIGZvciBhYm9ydGVkIGFuZCBkZWxldGVkIGZpbGVzXG4gICAgaWYgKFxuICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ2Fib3J0ZWQnIHx8XG4gICAgICBmaWxlLnVwbG9hZFN0YXRlID09PSAnZGVsZXRlZCdcbiAgICApIHtcbiAgICAgIHRoaXMub25Db25maXJtUmVtb3ZlKHsgb3JpZ2luYWw6IHVuZGVmaW5lZCwgcGF5bG9hZDogZmlsZSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcmtlZEZvckRlbGV0aW9uID0gZmlsZVxuICAgICAgdGhpcy5kZWxldGVNb2RhbFJlZi5vcGVuKClcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uQ29uZmlybVJlbW92ZShldmVudDogRGlhbG9nRXZlbnQ8TG9jYWxGaWxlICYgQVBJRmlsZT4pIHtcbiAgICBjb25zdCB7IHBheWxvYWQ6IGZpbGUgfSA9IGV2ZW50XG4gICAgaWYgKCFmaWxlIHx8ICF0aGlzLnNlcnZpY2UpIHJldHVyblxuXG4gICAgLy8gQWJvcnQgdXBsb2FkIGFuZCBzZXQgbG9jYWwgc3RhdGUgdG8gYWJvcnRlZCB0byBpbmZvcm0gdXNlclxuICAgIHN3aXRjaCAoZmlsZS51cGxvYWRTdGF0ZSkge1xuICAgICAgY2FzZSAnbG9jYWwnOlxuICAgICAgY2FzZSAndXBsb2FkaW5nJzpcbiAgICAgICAgZmlsZS51cGxvYWRSZXF1ZXN0cz8udW5zdWJzY3JpYmUoKVxuICAgICAgICBmaWxlLnVwbG9hZFN0YXRlID0gJ2Fib3J0ZWQnXG4gICAgICAgIGZpbGUuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlID0gJ01GRUZITTAwNCdcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KFxuICAgICAgICAgIHBpY2soXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICdmaWxlTmFtZScsXG4gICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcblxuICAgICAgLy8gUmVtb3ZlIGZpbGUgZnJvbSBzZXJ2aWNlIHRoZW4gc2V0IGxvY2FsIHN0YXRlIHRvIGFib3J0ZWQgdG8gaW5mb3JtIHVzZXJcbiAgICAgIGNhc2UgJ3VwbG9hZGVkJzpcbiAgICAgIGNhc2UgJ3ZhbGlkYXRpbmcnOlxuICAgICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAucmVtb3ZlRmlsZShmaWxlLmlkKVxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUud2FybixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gQWJvcnQgcmVnYXJkbGVzcyBvZiByZXNwb25zZSBmcm9tIHNlcnZlclxuICAgICAgICAgICAgZmlsZS51cGxvYWRSZXF1ZXN0cz8udW5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICAgICAgZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUgPSAnTUZFRkhNMDA1J1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KFxuICAgICAgICAgICAgICBwaWNrKFxuICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICAgICAnZmlsZU5hbWUnLFxuICAgICAgICAgICAgICAgICdzdGF0dXMnLFxuICAgICAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIFJlbW92ZSBmaWxlIGZyb20gc2VydmljZSB0aGVuIGxvY2FsbHkgZm9yIFwiY29tcGxldGVkXCIgc3RhdGVzXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICBjYXNlICdkb25lJzpcbiAgICAgICAgOyh0aGlzLnNlcnZpY2UucmVtb3ZlRmlsZUZvclxuICAgICAgICAgID8gdGhpcy5zZXJ2aWNlLnJlbW92ZUZpbGVGb3IoZmlsZSlcbiAgICAgICAgICA6IHRoaXMuc2VydmljZS5yZW1vdmVGaWxlKGZpbGUuaWQpXG4gICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLndhcm4sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgIC8vIFJlbW92ZSByZWdhcmRsZXNzIG9mIHJlc3BvbnNlIGZyb20gc2VydmVyXG4gICAgICAgICAgICB0aGlzLmZpbGVzLmRlbGV0ZShmaWxlLmlkKVxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBwaWNrKFxuICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAndXBsb2FkU3RhdGUnLFxuICAgICAgICAgICAgICAnZmlsZU5hbWUnLFxuICAgICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgJ2ludGVybmFsU3RhdHVzUmVhc29uQ29kZScsXG4gICAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBldmVudC51cGxvYWRTdGF0ZSA9ICdkZWxldGVkJ1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIEp1c3QgcmVtb3ZlIHRoZSBmaWxlIGxvY2FsbHkgdG8gY2xlYW4gdXBcbiAgICAgIGNhc2UgJ2Fib3J0ZWQnOlxuICAgICAgY2FzZSAnZGVsZXRlZCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZpbGVzLmRlbGV0ZShmaWxlLmlkKVxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIC4uLnBpY2soXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICdmaWxlTmFtZScsXG4gICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAnaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlJyxcbiAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGxvYWRTdGF0ZTogJ2RlbGV0ZWQnLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgRXZlbnQgaGFuZGxlciBmb3Igd2hlbiB0aGUgZmlsZXMgc2hvdWxkIGJlIHVwbG9hZGVkICovXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICghdGhpcy5maWxlcyB8fCAhdGhpcy5zZXJ2aWNlKSByZXR1cm5cbiAgICAvLyBJZiBsaXN0IGlzIG5vdCBlbmFibGVkIHVwZGF0ZSB0aGUgY29tcG9uZW50IHN0YXRlIHRvIHNob3cgcHJvZ3Jlc3NcbiAgICBpZiAoIXRoaXMubGlzdCkgdGhpcy5jb21wb25lbnRTdGF0ZSA9ICd1cGxvYWRpbmcnXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIHRoaXMuZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgLy8gRmlsdGVyIG91dCBhbGwgZmlsZXMgdGhhdCBhcmVuJ3QgY3VycmVudGx5IGNvbnNpZGVyZWQgbG9jYWxcbiAgICAgIGlmICghZmlsZS5yYXcgfHwgZmlsZS51cGxvYWRTdGF0ZSAhPT0gJ2xvY2FsJykgcmV0dXJuXG4gICAgICBmaWxlLnVwbG9hZFJlcXVlc3RzID0gdGhpcy5zZXJ2aWNlIS51cGxvYWRGaWxlKGZpbGUucmF3ISkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSB1cGxvYWQgcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgaWYgKGZpbGUudXBsb2FkU3RhdGUgIT09ICd1cGxvYWRpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICd1cGxvYWRpbmcnXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHBpY2soZmlsZSwgJ3VwbG9hZFN0YXRlJywgJ2ZpbGVOYW1lJykpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyAoZXZlbnQudG90YWwgfHwgMTAwKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmaWxlLnVwbG9hZFN0YXRlID0gJ3VwbG9hZGluZydcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICBpZiAoZXZlbnQuYm9keT8uaWQpIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGZpbGUgaWRcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLmRlbGV0ZShmaWxlLmlkKVxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBmaWxlIHdpdGggaW5mb3JtYXRpb24gZnJvbSB0aGUgQVBJXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihmaWxlLCBldmVudC5ib2R5KVxuICAgICAgICAgICAgICAgIGZpbGUucHJvZ3Jlc3MgPSAxMDBcbiAgICAgICAgICAgICAgICBmaWxlLnVwbG9hZFN0YXRlID0gdGhpcy5kZXRlcm1pbmVVcGxvYWRTdGF0ZShmaWxlLnN0YXR1cylcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgd2l0aCBuZXcgZmlsZSBpZFxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMuc2V0KGZpbGUuaWQsIGZpbGUpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICAgICAgcGljayhcbiAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAndXBsb2FkU3RhdGUnLFxuICAgICAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIC8vIENoZWNrIGlmIHZhbGlkYXRpb24gaXMgcmVxdWlyZWQsIHRoZW4gc3RhcnQgcG9sbGluZ1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ3VwbG9hZGVkJyB8fFxuICAgICAgICAgICAgICAgIGZpbGUudXBsb2FkU3RhdGUgPT09ICd2YWxpZGF0aW5nJ1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoZmlsZSwgdGhpcy50aHJvdHRsZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2V0Q29tcG9uZW50U3RhdGVEb25lKClcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpXG4gICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICAgIGZpbGUuc3RhdHVzID0gJ2Fib3J0ZWQnXG4gICAgICAgICAgLy8gdG9kbzogd3JvbmdcbiAgICAgICAgICBmaWxlLnN0YXR1c1JlYXNvbkluZm9ybWF0aW9uID0gW1xuICAgICAgICAgICAgeyBvcmlnaW5hdG9ySWQ6ICdsb2NhbCcsIHJlYXNvbjogJ2RyYWdEcm9wLmVycm9yLk1GRUZITTAwMScgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KFxuICAgICAgICAgICAgcGljayhcbiAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBVc2luZyB0aGUgc3RhdGUgbWFwIGNvbnZlcnQgYGFwaUZpbGUuc3RhdGVgIHRvIG9uZSBvZiB7QGxpbmsgVXBsb2FkU3RhdGV9XG4gICAqIEBwYXJhbSBhcGlTdGF0ZSB0aGUgc3RhdGUgZ2l2ZW4gYnkgdGhlIGZpbGUgdG8gYmUgdXNlZCBmb3IgbWFwcGluZ1xuICAgKi9cbiAgZGV0ZXJtaW5lVXBsb2FkU3RhdGUoYXBpU3RhdGU6IHN0cmluZyk6IFVwbG9hZFN0YXRlIHtcbiAgICAvLyBSZXZlcnNlIHNvIHRoYXQgbGF0ZXIgc3RhdGVzIG92ZXJyaWRlIGVhcmxpZXJcbiAgICBjb25zdCBzdGF0ZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLnN0YXRlTWFwKS5yZXZlcnNlKClcbiAgICBmb3IgKGNvbnN0IFt1cGxvYWRTdGF0ZSwgYXBpU3RhdGVzXSBvZiBzdGF0ZUVudHJpZXMpIHtcbiAgICAgIGlmICh0aGlzLnVwbG9hZFN0YXRlSXNBcnJheShhcGlTdGF0ZXMpKSB7XG4gICAgICAgIGlmIChhcGlTdGF0ZXMuaW5jbHVkZXMoYXBpU3RhdGUpKSByZXR1cm4gdXBsb2FkU3RhdGUgYXMgYW55XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXBpU3RhdGVzID09PSBhcGlTdGF0ZSkgcmV0dXJuIHVwbG9hZFN0YXRlIGFzIGFueVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ2Vycm9yJ1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICB1cGxvYWRTdGF0ZUlzQXJyYXkoc3RhdGU6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RhdGUgaXMgc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHN0YXRlKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCB1c2VkIGZvciB0cmFuc2xhdGlvbiB0ZW1wbGF0aW5nIHBhcmFtZXRlcnMgKi9cbiAgdHJhbnNsYXRlUGFyYW1zKGZpbGU6IExvY2FsRmlsZSAmIEFQSUZpbGUpIHtcbiAgICByZXR1cm4geyAuLi5maWxlLCBmaWxlTGltaXQ6ICh0aGlzLmZpbGVMaW1pdCAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDMpIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQb2xsIHRoZSBzdGF0dXMgZW5kcG9pbnQgdG8gZGV0ZXJtaW5lIHdoZW4gZmlsZSBpcyB2YWxpZFxuICAgKiBAcGFyYW0gZmlsZSBmaWxlIHVzZWQgdG8gY2hlY2sgc3RhdGUgYW5kIHVwZGF0ZVxuICAgKiBAcGFyYW0gZGVsYXkgaG93IGxvbmcgZWFjaCBpbnRlcnZhbCBzaG91bGQgd2FpdCBiZWZvcmUgc2VuZGluZyBhIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWxpZGl0eShmaWxlOiBMb2NhbEZpbGUgJiBBUElGaWxlLCBkZWxheTogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHJldHVyblxuICAgIGZpbGUudXBsb2FkUmVxdWVzdHMgPSB0aW1lcigwLCBkZWxheSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzeW5jRmV0Y2hTdGF0dXMgPVxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlICYmIHRoaXMuc2VydmljZS5mZXRjaFN0YXR1c0ZvclxuICAgICAgICAgICAgICA/IHRoaXMuc2VydmljZS5mZXRjaFN0YXR1c0ZvcihmaWxlKVxuICAgICAgICAgICAgICA6IHRoaXMuc2VydmljZSEuZmV0Y2hTdGF0dXMoZmlsZS5pZClcbiAgICAgICAgICByZXR1cm4gYXN5bmNGZXRjaFN0YXR1c1xuICAgICAgICB9KSxcbiAgICAgICAgcmV0cnlXaGVuKFxuICAgICAgICAgIHJldHJ5U3RyYXRlZ3koe1xuICAgICAgICAgICAgbWF4UmV0cnlBdHRlbXB0czogdGhpcy5yZXRyeUF0dGVtcHRzLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgICB0YXAoKGZpbGVTdGF0dXMpID0+IHtcbiAgICAgICAgICAvLyBDb250aW51b3VzbHkgdXBkYXRlIGZpbGUgc3RhdGUgdG8gc2hvdyBzdGVwIHByb2dyZXNzXG4gICAgICAgICAgaWYgKGZpbGVTdGF0dXMpIHtcbiAgICAgICAgICAgIC8vIEVtaXQgZXZlbnQgd2hlbiBzdGF0dXMgY2hhbmdlc1xuICAgICAgICAgICAgaWYgKGZpbGUuc3RhdHVzICE9PSBmaWxlU3RhdHVzLnN0YXR1cykge1xuICAgICAgICAgICAgICBmaWxlLnN0YXR1cyA9IGZpbGVTdGF0dXMuc3RhdHVzXG4gICAgICAgICAgICAgIGZpbGUuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlID0gdGhpcy5mYWxsYmFja0Vycm9yKFxuICAgICAgICAgICAgICAgIGZpbGVTdGF0dXMuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZpbGUuc3RhdHVzUmVhc29uSW5mb3JtYXRpb24gPSBmaWxlU3RhdHVzLnN0YXR1c1JlYXNvbkluZm9ybWF0aW9uXG4gICAgICAgICAgICAgIGZpbGUudXBsb2FkU3RhdGUgPSB0aGlzLmRldGVybWluZVVwbG9hZFN0YXRlKGZpbGVTdGF0dXMuc3RhdHVzKVxuICAgICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICAgICAgcGljayhcbiAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAndXBsb2FkU3RhdGUnLFxuICAgICAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICAgICAgICAgJ3N0YXR1c1JlYXNvbkluZm9ybWF0aW9uJyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gUmVtb3ZlIHZhbGlkYXRpb24gc3RhdGVcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChhcGlGaWxlKSA9PlxuICAgICAgICAgICAgISFhcGlGaWxlICYmXG4gICAgICAgICAgICB0aGlzLmRldGVybWluZVVwbG9hZFN0YXRlKGFwaUZpbGUuc3RhdHVzKSAhPT0gJ3VwbG9hZGVkJyAmJlxuICAgICAgICAgICAgdGhpcy5kZXRlcm1pbmVVcGxvYWRTdGF0ZShhcGlGaWxlLnN0YXR1cykgIT09ICd2YWxpZGF0aW5nJyxcbiAgICAgICAgKSxcbiAgICAgICAgLy8gVGFrZSBmaXJzdCBzdGF0ZSBhZnRlciB2YWxpZGF0aW9uXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmFsbFZhbGlkYXRpb25Eb25lKHRoaXMuZmlsZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvbXBvbmVudFN0YXRlRG9uZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlcnIpXG4gICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICAgIGZpbGUuc3RhdHVzID0gJ2Fib3J0ZWQnXG4gICAgICAgICAgZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUgPSAnTUZFRkhNMDAxJ1xuICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdChcbiAgICAgICAgICAgIHBpY2soXG4gICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICd1cGxvYWRTdGF0ZScsXG4gICAgICAgICAgICAgICdmaWxlTmFtZScsXG4gICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICdzdGF0dXMnLFxuICAgICAgICAgICAgICAnaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlJyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgIHRoaXMuc2V0Q29tcG9uZW50U3RhdGVEb25lKClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGZhbGxiYWNrRXJyb3IoY29kZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmVycm9yQ29kZXMgPT0gbnVsbCB8fCAoY29kZSAmJiB0aGlzLmVycm9yQ29kZXMuaW5jbHVkZXMoY29kZSkpKSB7XG4gICAgICByZXR1cm4gY29kZSA/PyBudWxsXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnTUZFRkhNMDAxJ1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBzbyB0aGF0IG5vIGZpbGVzIGFyZSBzdGlsbCB2YWxpZGF0aW5nXG4gICAqL1xuICBwcml2YXRlIGFsbFZhbGlkYXRpb25Eb25lKGZpbGVzOiBNYXA8c3RyaW5nLCBMb2NhbEZpbGU+KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMudmFsdWVzKCkpLmV2ZXJ5KFxuICAgICAgKGZpbGUpID0+IGZpbGUudXBsb2FkU3RhdGUgIT09ICd2YWxpZGF0aW5nJyxcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgc28gdGhhdCBubyBmaWxlcyBhcmUgc3RpbGwgdXBsb2FkaW5nXG4gICAqL1xuICBwcml2YXRlIGFsbFVwbG9hZGluZ0RvbmUoZmlsZXM6IE1hcDxzdHJpbmcsIExvY2FsRmlsZT4pIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaWxlcy52YWx1ZXMoKSkuZXZlcnkoXG4gICAgICAoZmlsZSkgPT4gZmlsZS51cGxvYWRTdGF0ZSAhPT0gJ3VwbG9hZGluZycsXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byB1cGRhdGUgdGhlIGNvbXBvbmVudCBzdGF0ZSB0byBkb25lIGFuZCB0aGVuIGJhY2sgdG8gbm9ybWFsXG4gICAqL1xuICBwcml2YXRlIHNldENvbXBvbmVudFN0YXRlRG9uZSgpIHtcbiAgICBpZiAoIXRoaXMubGlzdCkgdGhpcy5jb21wb25lbnRTdGF0ZSA9ICdkb25lJ1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50U3RhdGUgPT09ICdkb25lJykgdGhpcy5jb21wb25lbnRTdGF0ZSA9ICdub3JtYWwnXG4gICAgfSwgMzAwMClcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgPGZvcm0gZW5jdHlwZT1cIm11bHRpcGFydC9mb3JtLWRhdGFcIiAjZHJhZ0Ryb3BGb3JtPlxuICAgIDxkaXYgY2xhc3M9XCJnZHMtZHJhZy1kcm9wXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJnZHMtZHJhZy1kcm9wX19pbnB1dFwiXG4gICAgICAgIGlkPVwiZHJhZy1kcm9wXCJcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZSAmJiBsaXN0XCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnZ2RzLWRyYWctZHJvcF9fbGFiZWwnOiB0cnVlLFxuICAgICAgICAgICdnZHMtZHJhZy1kcm9wX19sYWJlbC0tYWJvdmUnOiBjb21wb25lbnRTdGF0ZSA9PT0gJ292ZXInLFxuICAgICAgICB9XCJcbiAgICAgICAgZm9yPVwiZHJhZy1kcm9wXCJcbiAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctcGlja2VyJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJsb2FkaW5nXCJcbiAgICAgICAgKGRyYWdlbnRlcik9XCJvbkRyYWdFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cIm9uRHJhZ0VudGVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAoZHJhZ2VuZCk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxuICAgICAgICBbbmdTd2l0Y2hdPVwiY29tcG9uZW50U3RhdGVcIlxuICAgICAgPlxuICAgICAgICA8IS0tIENPTVBPTkVOVCBTVEFURSBOT1JNQUwgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidub3JtYWwnXCI+XG4gICAgICAgICAgPGdkcy1pY29uLWNsb3VkLXVwbG9hZCAqbmdnQ29yZUVsZW1lbnQ+PC9nZHMtaWNvbi1jbG91ZC11cGxvYWRcbiAgICAgICAgICA+PGVtPnt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVDaG9vc2UnKSB9fTwvZW0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzRHJhZ0Ryb3BBdmFpbGFibGVcIj5cbiAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVEcmFnJykgfX08L25nLXRlbXBsYXRlXG4gICAgICAgICAgPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gQ09NUE9ORU5UIFNUQVRFIE9WRVIgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidvdmVyJ1wiPlxuICAgICAgICAgIDxnZHMtaWNvbi1jbG91ZC11cGxvYWQgKm5nZ0NvcmVFbGVtZW50PjwvZ2RzLWljb24tY2xvdWQtdXBsb2FkXG4gICAgICAgICAgPnt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVEcm9wJykgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8IS0tIENPTVBPTkVOVCBTVEFURSBVUExPQURJTkcgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIid1cGxvYWRpbmcnXCI+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImZpbGVuYW1lXCI+e3sgbGFzdEZpbGU/LmZpbGVOYW1lIH19PC9zdHJvbmc+XG5cbiAgICAgICAgICA8IS0tIFVQTE9BRElORyBTVEFURSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwibGFzdEZpbGU/LnVwbG9hZFN0YXRlID09PSAndXBsb2FkaW5nJ1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIGZpbGU6IGxhc3RGaWxlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8IS0tIFVQTE9BREVEIFNUQVRFIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJsYXN0RmlsZT8udXBsb2FkU3RhdGUgPT09ICd1cGxvYWRlZCdcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBmaWxlOiBsYXN0RmlsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0KCdkcmFnRHJvcC50ZXh0LmZpbGVTdGF0ZVVwbG9hZGVkJyksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwhLS0gVkFMSURBVElORyBTVEFURSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwibGFzdEZpbGU/LnVwbG9hZFN0YXRlID09PSAndmFsaWRhdGluZydcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBmaWxlOiBsYXN0RmlsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0KCdkcmFnRHJvcC50ZXh0LmZpbGVTdGF0ZVZhbGlkYXRpbmcnKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gQ09NUE9ORU5UIFNUQVRFIERPTkUgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidkb25lJ1wiPlxuICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVVcGxvYWRlZCcsIHsgZmlsZW5hbWU6IGxhc3RGaWxlPy5maWxlTmFtZSB9KVxuICAgICAgICAgIH19PGdkcy1pY29uLWNoZWNrbWFyayAqbmdnQ29yZUVsZW1lbnQ+PC9nZHMtaWNvbi1jaGVja21hcms+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8IS0tIExJU1QgLS0+XG4gICAgICA8dGFibGVcbiAgICAgICAgY2xhc3M9XCJnZHMtdGFibGUgZmlsZS1saXN0XCJcbiAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZmlsZS1saXN0J1wiXG4gICAgICAgICpuZ0lmPVwibGlzdFwiXG4gICAgICA+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3RhYmxlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtZmllbGQtY2hlY2tib3gtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJGaWVsZCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNlbGVjdC1hbGxcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJnZHMtdGFibGVfX3ByaW1hcnktY29sIGNvbC1uYW1lXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVOYW1lJykgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtc3RhdHVzXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVTdGF0dXMnKSB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImNvbC1hY3Rpb25zXCI+PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy1maWxlJ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlcyB8IHZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtZmllbGQtY2hlY2tib3gtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJGaWVsZCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZpbGUtY2hlY2tib3gtJyArIGZpbGUuaWRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2ZpbGUtY2hlY2tib3gtJyArIGZpbGUuaWRcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJnZHMtdGFibGVfX3ByaW1hcnktY29sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZmlsZS1uYW1lJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZpbGUuZmlsZU5hbWUgfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZmlsZS1zdGF0dXMnXCJcbiAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImZpbGUudXBsb2FkU3RhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8IS0tIFVQTE9BRElORyBTVEFURSAtLT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1N3aXRjaENhc2VdPVwiJ3VwbG9hZGluZydcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgIDwhLS0gVVBMT0FERUQgU1RBVEUgLS0+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIid1cGxvYWRlZCdcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdCgnZHJhZ0Ryb3AudGV4dC5maWxlU3RhdGVVcGxvYWRlZCcpLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgPCEtLSBWQUxJREFUSU5HIFNUQVRFIC0tPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nU3dpdGNoQ2FzZV09XCIndmFsaWRhdGluZydcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdCgnZHJhZ0Ryb3AudGV4dC5maWxlU3RhdGVWYWxpZGF0aW5nJyksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICA8IS0tIEFCT1JURUQgU1RBVEUgLS0+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidhYm9ydGVkJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLXRleHRcIlxuICAgICAgICAgICAgICAgICAgW3RyYW5zbG9jb109XCJcbiAgICAgICAgICAgICAgICAgICAgJ2RyYWdEcm9wLmVycm9yLicgKyBmaWxlLmludGVybmFsU3RhdHVzUmVhc29uQ29kZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFt0cmFuc2xvY29QYXJhbXNdPVwidHJhbnNsYXRlUGFyYW1zKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGVcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgPCEtLSBFUlJPUiBTVEFURSAtLT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1N3aXRjaENhc2VdPVwiJ2Vycm9yJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLXRleHRcIlxuICAgICAgICAgICAgICAgICAgW3RyYW5zbG9jb109XCJcbiAgICAgICAgICAgICAgICAgICAgJ2RyYWdEcm9wLmVycm9yLicgKyBmaWxlLmludGVybmFsU3RhdHVzUmVhc29uQ29kZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFt0cmFuc2xvY29QYXJhbXNdPVwidHJhbnNsYXRlUGFyYW1zKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGVcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXRhaWxzQ2xpY2suZW1pdChmaWxlKVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1c1JlYXNvbkluZm9ybWF0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzUmVhc29uSW5mb3JtYXRpb24ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxpbmsudmlld0RldGFpbHMnKSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICA8IS0tIERPTkUgU1RBVEUgLS0+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidkb25lJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VjY2Vzcy10ZXh0XCI+e3tcbiAgICAgICAgICAgICAgICAgIHQoJ2RyYWdEcm9wLnRleHQuZmlsZVN0YXRlRG9uZScpXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnZHMtdGFibGVfX251bWVyaWMtY29sXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVtb3ZlKGZpbGUuaWQsIGZpbGUudXBsb2FkU3RhdGUpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlUmVtb3ZlLmluY2x1ZGVzKGZpbGUudXBsb2FkU3RhdGUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxnZHMtaWNvbi1jcm9zcy1zbWFsbCAqbmdnQ29yZUVsZW1lbnQ+PC9nZHMtaWNvbi1jcm9zcy1zbWFsbD5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuXG4gIDxuZ2d2LWRpYWxvZ1xuICAgICNkZWxldGVNb2RhbFJlZlxuICAgIFt0aXRsZV09XCJ0KCdkcmFnRHJvcC50ZXh0LmZpbGVDYW5jZWxNb2RhbFRpdGxlJylcIlxuICAgIFtjb250ZW50XT1cIlxuICAgICAgdCgnZHJhZ0Ryb3AudGV4dC5maWxlQ2FuY2VsTW9kYWxDb250ZW50Jywge1xuICAgICAgICBuYW1lOiBtYXJrZWRGb3JEZWxldGlvbj8uZmlsZU5hbWUsXG4gICAgICB9KVxuICAgIFwiXG4gICAgW3BheWxvYWRdPVwibWFya2VkRm9yRGVsZXRpb25cIlxuICAgIFtidXR0b25zXT1cIntcbiAgICAgIG5lZ2F0aXZlOiAnZHJhZ0Ryb3AudGV4dC5maWxlQ2FuY2VsQ29uZmlybScsXG4gICAgICBwb3NpdGl2ZTogJ2RyYWdEcm9wLnRleHQuZmlsZUNhbmNlbERlbnknLFxuICAgIH1cIlxuICAgIChuZ2d2TmVnYXRpdmVFdmVudCk9XCJvbkNvbmZpcm1SZW1vdmUoJGFueSgkZXZlbnQpKVwiXG4gID48L25nZ3YtZGlhbG9nPlxuXG4gIDwhLS0gUFJPR1JFU1MgVEVNUExBVEUgLS0+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI3Byb2dyZXNzVGVtcGxhdGVcbiAgICBsZXQtZmlsZT1cIlxuICAgIGZpbGVcIlxuICAgIGxldC10ZXh0PVwidGV4dFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtd3JhcHBlclwiPlxuICAgICAgPHByb2dyZXNzXG4gICAgICAgIGNsYXNzPVwiZ2RzLXByb2dyZXNzLWJhciBwcm9ncmVzc1wiXG4gICAgICAgIG1heD1cIjEwMFwiXG4gICAgICAgIFt2YWx1ZV09XCJmaWxlLnByb2dyZXNzXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICB0KCdkcmFnRHJvcC50ZXh0LmZpbGVTdGF0ZVVwbG9hZGluZycsIHtcbiAgICAgICAgICAgIHVwbG9hZGVkOlxuICAgICAgICAgICAgICAoZmlsZS5yYXc/LnNpemUgKiAoZmlsZS5wcm9ncmVzcyAvIDEwMCkpIC8gMTAyNCB8IG51bWJlcjogJzAuMC0wJyxcbiAgICAgICAgICAgIHNpemU6IGZpbGUucmF3Py5zaXplIC8gMTAyNCB8IG51bWJlcjogJzAuMC0wJyxcbiAgICAgICAgICAgIHByb2dyZXNzOiBmaWxlLnByb2dyZXNzLFxuICAgICAgICAgICAgdW5pdDogJ2tCJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9fVxuICAgICAgPC9wcm9ncmVzcz5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0ZU1hcC52YWxpZGF0aW5nLmxlbmd0aFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnZHMtcHJvZ3Jlc3MtaW5kaWNhdG9yIGluZGljYXRvclwiXG4gICAgICAgICAgKm5nSWY9XCJ1cGxvYWRTdGF0ZUlzQXJyYXkoc3RhdGVNYXAudmFsaWRhdGluZyk7IGVsc2Ugc2luZ2xlVmFsaWRhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImdkcy1wcm9ncmVzcy1pbmRpY2F0b3JfX3N0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLi1kb25lXT1cImkgPD0gc3RhdGVNYXAudmFsaWRhdGluZy5pbmRleE9mKGZpbGUuc3RhdHVzKVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RhdGUgb2Ygc3RhdGVNYXAudmFsaWRhdGluZzsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVZhbGlkYXRpb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtcHJvZ3Jlc3MtaW5kaWNhdG9yIGluZGljYXRvclwiPlxuICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2VxZXFlcSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImdkcy1wcm9ncmVzcy1pbmRpY2F0b3JfX3N0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLi1kb25lXT1cImZpbGUuc3RhdHVzID09IHN0YXRlTWFwLnZhbGlkYXRpbmdcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8IS0tIGVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2VxZXFlcSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtdGV4dFwiPlxuICAgICAge3tcbiAgICAgICAgdGV4dCB8fFxuICAgICAgICAgIHQoJ2RyYWdEcm9wLnRleHQuZmlsZVN0YXRlVXBsb2FkaW5nJywge1xuICAgICAgICAgICAgdXBsb2FkZWQ6XG4gICAgICAgICAgICAgIChmaWxlLnJhdz8uc2l6ZSAqIChmaWxlLnByb2dyZXNzIC8gMTAwKSkgLyAxMDI0IHwgbnVtYmVyOiAnMC4wLTAnLFxuICAgICAgICAgICAgc2l6ZTogZmlsZS5yYXc/LnNpemUgLyAxMDI0IHwgbnVtYmVyOiAnMC4wLTAnLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IGZpbGUucHJvZ3Jlc3MsXG4gICAgICAgICAgICB1bml0OiAna0InLFxuICAgICAgICAgIH0pXG4gICAgICB9fVxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco';\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared';\nimport { NggvModalModule } from '@sebgroup/green-angular/src/v-angular/modal';\nimport { NggvDragDropComponent } from './drag-drop.component';\nimport { ValuePipe } from './drag-drop.pipes';\nimport * as i0 from \"@angular/core\";\nexport class NggvDragDropModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, declarations: [ValuePipe, NggvDragDropComponent], imports: [HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule], exports: [NggvDragDropComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: 'dragDrop',\n },\n ], imports: [HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule,\n ],\n declarations: [ValuePipe, NggvDragDropComponent],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: 'dragDrop',\n },\n ],\n exports: [NggvDragDropComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RyYWctZHJvcC9kcmFnLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7QUFvQjdDLE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLGlCQVZkLFNBQVMsRUFBRSxxQkFBcUIsYUFON0MsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixlQUFlO1lBQ2Ysb0JBQW9CO1lBQ3BCLFlBQVksYUFTSixxQkFBcUI7K0dBR3BCLGtCQUFrQixhQVRsQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixRQUFRLEVBQUUsVUFBVTthQUNyQjtTQUNGLFlBWkMsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixlQUFlO1lBQ2Ysb0JBQW9CO1lBQ3BCLFlBQVk7OzJGQVlILGtCQUFrQjtrQkFsQjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDYjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUM7b0JBQ2hELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFVBQVU7eUJBQ3JCO3FCQUNGO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUUkFOU0xPQ09fU0NPUEUsIFRyYW5zbG9jb01vZHVsZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbydcblxuaW1wb3J0IHsgTmdnQ29yZVdyYXBwZXJNb2R1bGUgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvbGliL3NoYXJlZCdcbmltcG9ydCB7IE5nZ3ZNb2RhbE1vZHVsZSB9IGZyb20gJ0BzZWJncm91cC9ncmVlbi1hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwnXG5pbXBvcnQgeyBOZ2d2RHJhZ0Ryb3BDb21wb25lbnQgfSBmcm9tICcuL2RyYWctZHJvcC5jb21wb25lbnQnXG5pbXBvcnQgeyBWYWx1ZVBpcGUgfSBmcm9tICcuL2RyYWctZHJvcC5waXBlcydcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgVHJhbnNsb2NvTW9kdWxlLFxuICAgIE5nZ3ZNb2RhbE1vZHVsZSxcbiAgICBOZ2dDb3JlV3JhcHBlck1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1ZhbHVlUGlwZSwgTmdndkRyYWdEcm9wQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogVFJBTlNMT0NPX1NDT1BFLFxuICAgICAgdXNlVmFsdWU6ICdkcmFnRHJvcCcsXG4gICAgfSxcbiAgXSxcbiAgZXhwb3J0czogW05nZ3ZEcmFnRHJvcENvbXBvbmVudF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdndkRyYWdEcm9wTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci1zcmMtdi1hbmd1bGFyLWRyYWctZHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RyYWctZHJvcC9zZWJncm91cC1ncmVlbi1hbmd1bGFyLXNyYy12LWFuZ3VsYXItZHJhZy1kcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i5.ValuePipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sebgroup-green-angular-src-v-angular-drag-drop.mjs","sources":["../tmp-esm2022/src/v-angular/drag-drop/drag-drop.utils.js","../tmp-esm2022/src/v-angular/drag-drop/drag-drop.pipes.js","../tmp-esm2022/src/v-angular/drag-drop/drag-drop.component.js","../tmp-esm2022/src/v-angular/drag-drop/drag-drop.module.js","../tmp-esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { throwError, timer } from 'rxjs';\nimport { finalize, mergeMap } from 'rxjs/operators';\n/**\n * Helper to extend the base file with {@link APIFile} defaults\n * @param file file base that will be extended with {@link APIFile} defaults\n * @param data extra data to override defaults\n */\nexport const extendFile = (file, ...data) => {\n return Object.assign({\n id: file ? btoa(file.name) : '',\n fileName: file ? file.name : 'na',\n status: '',\n statusReasonInformation: null,\n principal: '',\n uploadDate: (file\n ? new Date(file.lastModified)\n : new Date()).toISOString(),\n registrarId: '',\n registrarName: '',\n progress: 0,\n uploadState: 'local',\n uploadRequests: undefined,\n raw: file,\n }, ...data);\n};\n/**\n * Checks if file matches allowed mime types\n * @param type file mime type\n * @param accept allowed mime types\n */\nexport const verifyAccept = (type, accept) => {\n if (!accept)\n return true;\n const regex = new RegExp(accept.replace(/\\*/g, '.*').replace(/\\s*,\\s*/g, '|'));\n return regex.test(type);\n};\n/**\n * Determines if browser supports drag and drop\n */\nexport const isDragDropAvailable = () => {\n const div = document.createElement('div');\n return (('draggable' in div || ('ondragstart' in div && 'ondrop' in div)) &&\n 'FormData' in window &&\n 'FileReader' in window);\n};\n/**\n * Pick only specified keys from a given object\n * @param keys keys to pick from a given object\n * @param object to extract keys from\n */\nexport const pick = (object, ...keys) => {\n const copy = {};\n keys.forEach((key) => {\n copy[key] = object[key];\n });\n return copy;\n};\n/**\n * Will retry running the observable when an error occurs to a maximum limit, increasing delay between executions.\n * @param options specifies number of retries, scaling duration and statuses to exclude\n */\nexport const retryStrategy = ({ maxRetryAttempts = 3, scalingDuration = 1000, excludedStatusCodes = [], } = {}) => (attempts) => {\n return attempts.pipe(mergeMap((error, i) => {\n const retryAttempt = i + 1;\n // if maximum number of retries have been met\n // or response is a status code we don't wish to retry, throw error\n if (retryAttempt > maxRetryAttempts ||\n excludedStatusCodes.find((e) => e === error.status)) {\n return throwError(() => error);\n }\n console.warn(`Attempt ${retryAttempt}: retrying in ${retryAttempt * scalingDuration}ms`);\n return timer(retryAttempt * scalingDuration);\n }), finalize(() => console.warn(`Failed after ${maxRetryAttempts} retry attempts, standing down.`)));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJhZy1kcm9wL2RyYWctZHJvcC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFjLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUluRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQXNCLEVBQ3RCLEdBQUcsSUFBc0QsRUFDcEMsRUFBRTtJQUN2QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQ2xCO1FBQ0UsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ2pDLE1BQU0sRUFBRSxFQUFFO1FBQ1YsdUJBQXVCLEVBQUUsSUFBSTtRQUM3QixTQUFTLEVBQUUsRUFBRTtRQUNiLFVBQVUsRUFBRSxDQUFDLElBQUk7WUFDZixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FDYixDQUFDLFdBQVcsRUFBRTtRQUNmLFdBQVcsRUFBRSxFQUFFO1FBQ2YsYUFBYSxFQUFFLEVBQUU7UUFDakIsUUFBUSxFQUFFLENBQUM7UUFDWCxXQUFXLEVBQUUsT0FBTztRQUNwQixjQUFjLEVBQUUsU0FBUztRQUN6QixHQUFHLEVBQUUsSUFBSTtLQUNhLEVBQ3hCLEdBQUcsSUFBSSxDQUNSLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFFLE1BQWUsRUFBRSxFQUFFO0lBQzVELElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzlFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN6QixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsRUFBRTtJQUN0QyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pDLE9BQU8sQ0FDTCxDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksR0FBRyxJQUFJLFFBQVEsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNqRSxVQUFVLElBQUksTUFBTTtRQUNwQixZQUFZLElBQUksTUFBTSxDQUN2QixDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUNsQixNQUFTLEVBQ1QsR0FBRyxJQUFTLEVBQ0EsRUFBRTtJQUNkLE1BQU0sSUFBSSxHQUFRLEVBQUUsQ0FBQTtJQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNGLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUN4QixDQUFDLEVBQ0MsZ0JBQWdCLEdBQUcsQ0FBQyxFQUNwQixlQUFlLEdBQUcsSUFBSSxFQUN0QixtQkFBbUIsR0FBRyxFQUFFLE1BS3RCLEVBQUUsRUFBRSxFQUFFLENBQ1YsQ0FBQyxRQUF5QixFQUFFLEVBQUU7SUFDNUIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDcEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMxQiw2Q0FBNkM7UUFDN0MsbUVBQW1FO1FBQ25FLElBQ0UsWUFBWSxHQUFHLGdCQUFnQjtZQUMvQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ25ELENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVixXQUFXLFlBQVksaUJBQWlCLFlBQVksR0FBRyxlQUFlLElBQUksQ0FDM0UsQ0FBQTtRQUNELE9BQU8sS0FBSyxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFLENBQ1osT0FBTyxDQUFDLElBQUksQ0FDVixnQkFBZ0IsZ0JBQWdCLGlDQUFpQyxDQUNsRSxDQUNGLENBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGZpbmFsaXplLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBBUElGaWxlLCBMb2NhbEZpbGUgfSBmcm9tICcuL2RyYWctZHJvcC5tb2RlbHMnXG5cbi8qKlxuICogSGVscGVyIHRvIGV4dGVuZCB0aGUgYmFzZSBmaWxlIHdpdGgge0BsaW5rIEFQSUZpbGV9IGRlZmF1bHRzXG4gKiBAcGFyYW0gZmlsZSBmaWxlIGJhc2UgdGhhdCB3aWxsIGJlIGV4dGVuZGVkIHdpdGgge0BsaW5rIEFQSUZpbGV9IGRlZmF1bHRzXG4gKiBAcGFyYW0gZGF0YSBleHRyYSBkYXRhIHRvIG92ZXJyaWRlIGRlZmF1bHRzXG4gKi9cbmV4cG9ydCBjb25zdCBleHRlbmRGaWxlID0gKFxuICBmaWxlOiBGaWxlIHwgdW5kZWZpbmVkLFxuICAuLi5kYXRhOiBBcnJheTxQYXJ0aWFsPE9taXQ8TG9jYWxGaWxlLCAncmF3Jz4gJiBBUElGaWxlPj5cbik6IExvY2FsRmlsZSAmIEFQSUZpbGUgPT4ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICB7XG4gICAgICBpZDogZmlsZSA/IGJ0b2EoZmlsZS5uYW1lKSA6ICcnLFxuICAgICAgZmlsZU5hbWU6IGZpbGUgPyBmaWxlLm5hbWUgOiAnbmEnLFxuICAgICAgc3RhdHVzOiAnJyxcbiAgICAgIHN0YXR1c1JlYXNvbkluZm9ybWF0aW9uOiBudWxsLFxuICAgICAgcHJpbmNpcGFsOiAnJyxcbiAgICAgIHVwbG9hZERhdGU6IChmaWxlXG4gICAgICAgID8gbmV3IERhdGUoZmlsZS5sYXN0TW9kaWZpZWQpXG4gICAgICAgIDogbmV3IERhdGUoKVxuICAgICAgKS50b0lTT1N0cmluZygpLFxuICAgICAgcmVnaXN0cmFySWQ6ICcnLFxuICAgICAgcmVnaXN0cmFyTmFtZTogJycsXG4gICAgICBwcm9ncmVzczogMCxcbiAgICAgIHVwbG9hZFN0YXRlOiAnbG9jYWwnLFxuICAgICAgdXBsb2FkUmVxdWVzdHM6IHVuZGVmaW5lZCxcbiAgICAgIHJhdzogZmlsZSxcbiAgICB9IGFzIExvY2FsRmlsZSAmIEFQSUZpbGUsXG4gICAgLi4uZGF0YSxcbiAgKVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBmaWxlIG1hdGNoZXMgYWxsb3dlZCBtaW1lIHR5cGVzXG4gKiBAcGFyYW0gdHlwZSBmaWxlIG1pbWUgdHlwZVxuICogQHBhcmFtIGFjY2VwdCBhbGxvd2VkIG1pbWUgdHlwZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHZlcmlmeUFjY2VwdCA9ICh0eXBlOiBzdHJpbmcsIGFjY2VwdD86IHN0cmluZykgPT4ge1xuICBpZiAoIWFjY2VwdCkgcmV0dXJuIHRydWVcbiAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGFjY2VwdC5yZXBsYWNlKC9cXCovZywgJy4qJykucmVwbGFjZSgvXFxzKixcXHMqL2csICd8JykpXG4gIHJldHVybiByZWdleC50ZXN0KHR5cGUpXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBicm93c2VyIHN1cHBvcnRzIGRyYWcgYW5kIGRyb3BcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRHJhZ0Ryb3BBdmFpbGFibGUgPSAoKSA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIHJldHVybiAoXG4gICAgKCdkcmFnZ2FibGUnIGluIGRpdiB8fCAoJ29uZHJhZ3N0YXJ0JyBpbiBkaXYgJiYgJ29uZHJvcCcgaW4gZGl2KSkgJiZcbiAgICAnRm9ybURhdGEnIGluIHdpbmRvdyAmJlxuICAgICdGaWxlUmVhZGVyJyBpbiB3aW5kb3dcbiAgKVxufVxuXG4vKipcbiAqIFBpY2sgb25seSBzcGVjaWZpZWQga2V5cyBmcm9tIGEgZ2l2ZW4gb2JqZWN0XG4gKiBAcGFyYW0ga2V5cyBrZXlzIHRvIHBpY2sgZnJvbSBhIGdpdmVuIG9iamVjdFxuICogQHBhcmFtIG9iamVjdCB0byBleHRyYWN0IGtleXMgZnJvbVxuICovXG5leHBvcnQgY29uc3QgcGljayA9IDxULCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gIG9iamVjdDogVCxcbiAgLi4ua2V5czogS1tdXG4pOiBQaWNrPFQsIEs+ID0+IHtcbiAgY29uc3QgY29weTogYW55ID0ge31cbiAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb3B5W2tleV0gPSBvYmplY3Rba2V5XVxuICB9KVxuICByZXR1cm4gY29weVxufVxuXG4vKipcbiAqIFdpbGwgcmV0cnkgcnVubmluZyB0aGUgb2JzZXJ2YWJsZSB3aGVuIGFuIGVycm9yIG9jY3VycyB0byBhIG1heGltdW0gbGltaXQsIGluY3JlYXNpbmcgZGVsYXkgYmV0d2VlbiBleGVjdXRpb25zLlxuICogQHBhcmFtIG9wdGlvbnMgc3BlY2lmaWVzIG51bWJlciBvZiByZXRyaWVzLCBzY2FsaW5nIGR1cmF0aW9uIGFuZCBzdGF0dXNlcyB0byBleGNsdWRlXG4gKi9cbmV4cG9ydCBjb25zdCByZXRyeVN0cmF0ZWd5ID1cbiAgKHtcbiAgICBtYXhSZXRyeUF0dGVtcHRzID0gMyxcbiAgICBzY2FsaW5nRHVyYXRpb24gPSAxMDAwLFxuICAgIGV4Y2x1ZGVkU3RhdHVzQ29kZXMgPSBbXSxcbiAgfToge1xuICAgIG1heFJldHJ5QXR0ZW1wdHM/OiBudW1iZXJcbiAgICBzY2FsaW5nRHVyYXRpb24/OiBudW1iZXJcbiAgICBleGNsdWRlZFN0YXR1c0NvZGVzPzogbnVtYmVyW11cbiAgfSA9IHt9KSA9PlxuICAoYXR0ZW1wdHM6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgIHJldHVybiBhdHRlbXB0cy5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGVycm9yLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IHJldHJ5QXR0ZW1wdCA9IGkgKyAxXG4gICAgICAgIC8vIGlmIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgaGF2ZSBiZWVuIG1ldFxuICAgICAgICAvLyBvciByZXNwb25zZSBpcyBhIHN0YXR1cyBjb2RlIHdlIGRvbid0IHdpc2ggdG8gcmV0cnksIHRocm93IGVycm9yXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXRyeUF0dGVtcHQgPiBtYXhSZXRyeUF0dGVtcHRzIHx8XG4gICAgICAgICAgZXhjbHVkZWRTdGF0dXNDb2Rlcy5maW5kKChlKSA9PiBlID09PSBlcnJvci5zdGF0dXMpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQXR0ZW1wdCAke3JldHJ5QXR0ZW1wdH06IHJldHJ5aW5nIGluICR7cmV0cnlBdHRlbXB0ICogc2NhbGluZ0R1cmF0aW9ufW1zYCxcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gdGltZXIocmV0cnlBdHRlbXB0ICogc2NhbGluZ0R1cmF0aW9uKVxuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PlxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEZhaWxlZCBhZnRlciAke21heFJldHJ5QXR0ZW1wdHN9IHJldHJ5IGF0dGVtcHRzLCBzdGFuZGluZyBkb3duLmAsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgfVxuIl19","import { inject, KeyValueDiffers, Pipe, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.values = [];\n }\n transform(input) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n if (differChanges) {\n this.values = [];\n differChanges.forEachItem((r) => {\n this.values.push(r.currentValue);\n });\n }\n return this.values;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: ValuePipe, isStandalone: false, name: \"value\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValuePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'value', pure: false,\n standalone: false\n }]\n }], ctorParameters: () => [{ type: i0.KeyValueDiffers }] });\n/**\n * Stand-alone version of existing value pipe.\n *\n * Impure flag needed due to keep track of changes in complex values (such as objects or arrays).\n */\nexport class ValueImpurePipe {\n constructor() {\n this.differs = inject(KeyValueDiffers);\n this.values = [];\n }\n transform(input) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n if (differChanges) {\n this.values = [];\n differChanges.forEachItem(({ currentValue }) => {\n this.values.push(currentValue);\n });\n }\n return this.values;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValueImpurePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: ValueImpurePipe, isStandalone: true, name: \"valueImpure\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ValueImpurePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'valueImpure',\n pure: false,\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLnBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJhZy1kcm9wL2RyYWctZHJvcC5waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUlOLGVBQWUsRUFDZixJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUE7O0FBTXRCLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQTZCLE9BQXdCO1FBQXhCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBRzdDLFdBQU0sR0FBZSxFQUFFLENBQUE7SUFIeUIsQ0FBQztJQVl6RCxTQUFTLENBQ1AsS0FBZ0U7UUFFaEUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksR0FBRyxDQUFDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ2pELENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBaUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2xFLEtBQVksQ0FDYixDQUFBO1FBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtZQUNoQixhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBNkIsRUFBRSxFQUFFO2dCQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDbEMsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7OEdBcENVLFNBQVM7NEdBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFKckIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO29CQUMxQixVQUFVLEVBQUUsS0FBSztpQkFDcEI7O0FBd0NEOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1tQixZQUFPLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRzFDLFdBQU0sR0FBZSxFQUFFLENBQUE7S0FtQ2hDO0lBMUJDLFNBQVMsQ0FDUCxLQUFnRTtRQUVoRSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxHQUFHLENBQUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDakQsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFpQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbEUsS0FBWSxDQUNiLENBQUE7UUFFRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1lBQ2hCLGFBQWEsQ0FBQyxXQUFXLENBQ3ZCLENBQUMsRUFBRSxZQUFZLEVBQThCLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDaEMsQ0FBQyxDQUNGLENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7OEdBdENVLGVBQWU7NEdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFMM0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW5qZWN0LFxuICBLZXlWYWx1ZUNoYW5nZVJlY29yZCxcbiAgS2V5VmFsdWVDaGFuZ2VzLFxuICBLZXlWYWx1ZURpZmZlcixcbiAgS2V5VmFsdWVEaWZmZXJzLFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3ZhbHVlJywgcHVyZTogZmFsc2UsXG4gICAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzKSB7fVxuXG4gIHByaXZhdGUgZGlmZmVyITogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+XG4gIHByaXZhdGUgdmFsdWVzOiBBcnJheTxhbnk+ID0gW11cblxuICB0cmFuc2Zvcm08SywgVj4oaW5wdXQ6IG51bGwpOiBudWxsXG4gIHRyYW5zZm9ybTxWPihpbnB1dDogeyBba2V5OiBzdHJpbmddOiBWIH0gfCBNYXA8c3RyaW5nLCBWPik6IEFycmF5PFY+XG4gIHRyYW5zZm9ybTxWPihcbiAgICBpbnB1dDogeyBba2V5OiBzdHJpbmddOiBWIH0gfCBNYXA8c3RyaW5nLCBWPiB8IG51bGwsXG4gICk6IEFycmF5PFY+IHwgbnVsbFxuICB0cmFuc2Zvcm08SywgVj4oaW5wdXQ6IE1hcDxLLCBWPik6IEFycmF5PFY+XG4gIHRyYW5zZm9ybTxLLCBWPihpbnB1dDogTWFwPEssIFY+IHwgbnVsbCk6IEFycmF5PFY+IHwgbnVsbFxuICB0cmFuc2Zvcm08SywgVj4oXG4gICAgaW5wdXQ6IG51bGwgfCB7IFtrZXk6IHN0cmluZ106IFY7IFtrZXk6IG51bWJlcl06IFYgfSB8IE1hcDxLLCBWPixcbiAgKTogQXJyYXk8Vj4gfCBudWxsIHtcbiAgICBpZiAoIWlucHV0IHx8ICghKGlucHV0IGluc3RhbmNlb2YgTWFwKSAmJiB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGlmZmVyKSB7XG4gICAgICAvLyBtYWtlIGEgZGlmZmVyIGZvciB3aGF0ZXZlciB0eXBlIHdlJ3ZlIGJlZW4gcGFzc2VkIGluXG4gICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKGlucHV0KS5jcmVhdGUoKVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZlckNoYW5nZXM6IEtleVZhbHVlQ2hhbmdlczxLLCBWPiB8IG51bGwgPSB0aGlzLmRpZmZlci5kaWZmKFxuICAgICAgaW5wdXQgYXMgYW55LFxuICAgIClcblxuICAgIGlmIChkaWZmZXJDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IFtdXG4gICAgICBkaWZmZXJDaGFuZ2VzLmZvckVhY2hJdGVtKChyOiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxLLCBWPikgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHIuY3VycmVudFZhbHVlKVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzXG4gIH1cbn1cblxuLyoqXG4gKiBTdGFuZC1hbG9uZSB2ZXJzaW9uIG9mIGV4aXN0aW5nIHZhbHVlIHBpcGUuXG4gKlxuICogSW1wdXJlIGZsYWcgbmVlZGVkIGR1ZSB0byBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgaW4gY29tcGxleCB2YWx1ZXMgKHN1Y2ggYXMgb2JqZWN0cyBvciBhcnJheXMpLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICd2YWx1ZUltcHVyZScsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBWYWx1ZUltcHVyZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkaWZmZXJzID0gaW5qZWN0KEtleVZhbHVlRGlmZmVycylcblxuICBwcml2YXRlIGRpZmZlciE6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PlxuICBwcml2YXRlIHZhbHVlczogQXJyYXk8YW55PiA9IFtdXG5cbiAgdHJhbnNmb3JtPEssIFY+KGlucHV0OiBudWxsKTogbnVsbFxuICB0cmFuc2Zvcm08Vj4oaW5wdXQ6IHsgW2tleTogc3RyaW5nXTogViB9IHwgTWFwPHN0cmluZywgVj4pOiBBcnJheTxWPlxuICB0cmFuc2Zvcm08Vj4oXG4gICAgaW5wdXQ6IHsgW2tleTogc3RyaW5nXTogViB9IHwgTWFwPHN0cmluZywgVj4gfCBudWxsLFxuICApOiBBcnJheTxWPiB8IG51bGxcbiAgdHJhbnNmb3JtPEssIFY+KGlucHV0OiBNYXA8SywgVj4pOiBBcnJheTxWPlxuICB0cmFuc2Zvcm08SywgVj4oaW5wdXQ6IE1hcDxLLCBWPiB8IG51bGwpOiBBcnJheTxWPiB8IG51bGxcbiAgdHJhbnNmb3JtPEssIFY+KFxuICAgIGlucHV0OiBudWxsIHwgeyBba2V5OiBzdHJpbmddOiBWOyBba2V5OiBudW1iZXJdOiBWIH0gfCBNYXA8SywgVj4sXG4gICk6IEFycmF5PFY+IHwgbnVsbCB7XG4gICAgaWYgKCFpbnB1dCB8fCAoIShpbnB1dCBpbnN0YW5jZW9mIE1hcCkgJiYgdHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0JykpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRpZmZlcikge1xuICAgICAgLy8gbWFrZSBhIGRpZmZlciBmb3Igd2hhdGV2ZXIgdHlwZSB3ZSd2ZSBiZWVuIHBhc3NlZCBpblxuICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChpbnB1dCkuY3JlYXRlKClcbiAgICB9XG5cbiAgICBjb25zdCBkaWZmZXJDaGFuZ2VzOiBLZXlWYWx1ZUNoYW5nZXM8SywgVj4gfCBudWxsID0gdGhpcy5kaWZmZXIuZGlmZihcbiAgICAgIGlucHV0IGFzIGFueSxcbiAgICApXG5cbiAgICBpZiAoZGlmZmVyQ2hhbmdlcykge1xuICAgICAgdGhpcy52YWx1ZXMgPSBbXVxuICAgICAgZGlmZmVyQ2hhbmdlcy5mb3JFYWNoSXRlbShcbiAgICAgICAgKHsgY3VycmVudFZhbHVlIH06IEtleVZhbHVlQ2hhbmdlUmVjb3JkPEssIFY+KSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMucHVzaChjdXJyZW50VmFsdWUpXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnZhbHVlc1xuICB9XG59XG4iXX0=","/* eslint-disable no-console */\nimport { HttpEventType } from '@angular/common/http';\nimport { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, } from '@angular/core';\nimport { timer } from 'rxjs';\nimport { filter, retryWhen, switchMap, take, tap } from 'rxjs/operators';\nimport { NggvDialogComponent, } from '@sebgroup/green-angular/src/v-angular/modal';\nimport { extendFile, isDragDropAvailable, pick, retryStrategy, verifyAccept, } from './drag-drop.utils';\nimport '@sebgroup/green-core/components/icon/icons/cloud-upload.js';\nimport '@sebgroup/green-core/components/icon/icons/cross-small.js';\nimport '@sebgroup/green-core/components/icon/icons/checkmark.js';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@jsverse/transloco\";\nimport * as i2 from \"@sebgroup/green-angular/src/v-angular/modal\";\nimport * as i3 from \"@sebgroup/green-angular/src/lib/shared\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"./drag-drop.pipes\";\nexport class NggvDragDropComponent {\n constructor() {\n /** Special property used for selecting DOM elements during automated UI testing. */\n this.thook = 'drag-drop';\n /** Disables deletion or cancellation during defined states [local | uploading | aborted | uploaded | validating | error | deleted | done]. */\n this.disableRemove = [];\n /** File size limit in mega bytes. */\n this.fileLimit = 250 * 1024 * 1024;\n /** Allowing selecting or dropping multiple files. */\n this.multiple = true;\n /** Determines if list should be shown under upload, disabling list disables multiple upload. */\n this.list = true;\n /** Frequency of requests which to send to the API requesting status updates. */\n this.throttle = 5000;\n /** Maximum number of attempts to request a status update from the API if service is unreachable. */\n this.retryAttempts = 5;\n /** If selection of multiple file should be possible with a checkbox.\n * @experimental work in progress and should not yet be used.\n * @internal\n */\n this.selectable = false;\n /** Allows multiple values from `apiFile.status` to be mapped to a single file upload state. */\n this.stateMap = {\n local: 'local',\n uploading: 'uploading',\n aborted: 'aborted',\n uploaded: 'uploaded',\n validating: 'validating',\n error: 'error',\n deleted: 'deleted',\n done: 'done',\n };\n /** Statuses allowed to be fetch during the initial load. Used to hide \"done\" states from list. */\n this.fetchStatuses = [];\n /** Statuses allowed be shown when status is \"rejected\". Will fallback to generic message. `null` allows all. */\n this.errorCodes = null;\n /** Event triggered on initialization and every time the \"uploadState\" for a file changes. */\n this.stateChange = new EventEmitter();\n /** Event triggered when view details is clicked. */\n this.detailsClick = new EventEmitter();\n /** @internal */\n this.isDragDropAvailable = isDragDropAvailable();\n /** @internal */\n this.componentState = 'normal';\n /** @internal */\n this.files = new Map();\n /** @internal */\n this.selected = [];\n /** @internal */\n this.loading = false;\n }\n /**\n * Initialize the component and warn if service is not defined. Will also fetch files for the list if enabled.\n */\n ngOnInit() {\n if (!this.service) {\n return console.error('Drag and drop component will not work without the [service] property defined!');\n }\n if (this.list) {\n this.service.fetchFiles(this.fetchStatuses).subscribe((apiFiles) => {\n for (const apiFile of apiFiles) {\n const extendedFile = extendFile(undefined, apiFile, {\n progress: 100,\n uploadState: this.determineUploadState(apiFile.status),\n internalStatusReasonCode: this.fallbackError(apiFile.internalStatusReasonCode),\n });\n this.files.set(extendedFile.id, extendedFile);\n this.stateChange.emit(pick(extendedFile, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'));\n // Check if validation is required, then start polling\n if (extendedFile.uploadState === 'uploaded' ||\n extendedFile.uploadState === 'validating') {\n this.checkValidity(extendedFile, this.throttle);\n }\n }\n });\n }\n }\n /** Destroy all event listeners and polling running */\n ngOnDestroy() {\n this.files.forEach((file) => {\n file.uploadRequests?.unsubscribe();\n if (file.uploadState === 'uploading') {\n file.uploadState = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM004';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));\n }\n });\n }\n /** @internal Warn user trying to leave page before all uploads are done. Custom message only works in older browsers. */\n onBeforeUnload(event) {\n if (!this.allUploadingDone(this.files)) {\n const confirmationMessage = `You still have files uploading, are you sure you want to leave this page?`;\n (event || window.event).returnValue =\n confirmationMessage;\n return confirmationMessage;\n }\n return;\n }\n /* Drag & Drop Events */\n /** @internal Event handler for when a file is held over the drop area */\n onDragEnter(event) {\n if (!this.service)\n return;\n event.preventDefault();\n // Update the visual state\n this.componentState = 'over';\n }\n /** @internal Event handler for when a file leaves the drop area */\n onDragLeave(event) {\n if (!this.service)\n return;\n event.preventDefault();\n this.componentState = 'normal';\n }\n /** @internal Event handler for when a file is dropped on the drop area or when `input` files are selected */\n onDrop(event) {\n if (!this.service)\n return;\n event.preventDefault();\n this.componentState = 'normal';\n let files;\n // Determine if files are from the drop event or input element\n if (event instanceof DragEvent && event.dataTransfer) {\n files = event.dataTransfer.files;\n }\n else if (event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files) {\n files = event.target.files;\n }\n if (files) {\n const extendedFiles = Array.from(files, (file) => {\n let abort = false;\n let statusCode = null;\n // Check if file size is larger than limit\n if (file.size > this.fileLimit) {\n abort = true;\n statusCode = 'MFEFHM003';\n }\n // Check if file type is not acceptable\n if (!verifyAccept(file.type, this.accept)) {\n abort = true;\n statusCode = 'MFEFHM002';\n }\n // Add default values expected by the API\n const extendedFile = extendFile(file, {\n internalStatusReasonCode: statusCode,\n uploadState: (abort ? 'aborted' : 'local'),\n });\n // Emit initial local upload event\n this.stateChange.emit({\n uploadState: 'local',\n fileName: extendedFile.fileName,\n });\n if (abort) {\n // Emit aborted upload event\n this.stateChange.emit({\n uploadState: 'aborted',\n fileName: extendedFile.fileName,\n status: 'aborted',\n internalStatusReasonCode: statusCode,\n });\n }\n return extendedFile;\n });\n // Append to previous files\n let i = 0;\n for (const file of extendedFiles) {\n // If multiple or list is false append only file then break loop\n if ((!this.multiple || !this.list) && i >= 1)\n break;\n this.lastFile = file;\n this.files.set(file.id, file);\n i++;\n }\n // Clear file input so that same file can be uploaded\n if (event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files) {\n event.target.value = '';\n }\n this.onSubmit();\n }\n }\n /** @internal Event trigger for when delete button is pressed */\n onRemove(id, state) {\n // Only allow removal in certain states\n if (!this.service || this.disableRemove.includes(state))\n return;\n const file = this.files.get(id);\n if (!file)\n return;\n // Skip confirmation for aborted and deleted files\n if (file.uploadState === 'error' ||\n file.uploadState === 'aborted' ||\n file.uploadState === 'deleted') {\n this.onConfirmRemove({ original: undefined, payload: file });\n }\n else {\n this.markedForDeletion = file;\n this.deleteModalRef.open();\n }\n }\n /** @internal */\n onConfirmRemove(event) {\n const { payload: file } = event;\n if (!file || !this.service)\n return;\n // Abort upload and set local state to aborted to inform user\n switch (file.uploadState) {\n case 'local':\n case 'uploading':\n file.uploadRequests?.unsubscribe();\n file.uploadState = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM004';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));\n break;\n // Remove file from service then set local state to aborted to inform user\n case 'uploaded':\n case 'validating':\n this.service\n .removeFile(file.id)\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Abort regardless of response from server\n file.uploadRequests?.unsubscribe();\n file.uploadState = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM005';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'status', 'internalStatusReasonCode'));\n });\n break;\n // Remove file from service then locally for \"completed\" states\n case 'error':\n case 'done':\n ;\n (this.service.removeFileFor\n ? this.service.removeFileFor(file)\n : this.service.removeFile(file.id))\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Remove regardless of response from server\n this.files.delete(file.id);\n const event = pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation');\n event.uploadState = 'deleted';\n this.stateChange.emit(event);\n });\n break;\n // Just remove the file locally to clean up\n case 'aborted':\n case 'deleted':\n default:\n this.files.delete(file.id);\n this.stateChange.emit({\n ...pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'),\n uploadState: 'deleted',\n });\n break;\n }\n }\n /** @internal Event handler for when the files should be uploaded */\n onSubmit() {\n if (!this.files || !this.service)\n return;\n // If list is not enabled update the component state to show progress\n if (!this.list)\n this.componentState = 'uploading';\n this.loading = true;\n this.files.forEach((file) => {\n // Filter out all files that aren't currently considered local\n if (!file.raw || file.uploadState !== 'local')\n return;\n file.uploadRequests = this.service.uploadFile(file.raw).subscribe({\n next: (event) => {\n switch (event.type) {\n case HttpEventType.UploadProgress:\n // Update upload progress\n if (file.uploadState !== 'uploading') {\n file.uploadState = 'uploading';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName'));\n }\n file.progress = Math.round((100 * event.loaded) / (event.total || 100));\n file.uploadState = 'uploading';\n break;\n case HttpEventType.Response:\n if (event.body?.id) {\n // Remove old file id\n this.files.delete(file.id);\n // Update file with information from the API\n Object.assign(file, event.body);\n file.progress = 100;\n file.uploadState = this.determineUploadState(file.status);\n // Update with new file id\n this.files.set(file.id, file);\n }\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'statusReasonInformation'));\n // Check if validation is required, then start polling\n if (file.uploadState === 'uploaded' ||\n file.uploadState === 'validating') {\n this.checkValidity(file, this.throttle);\n }\n else\n this.setComponentStateDone();\n this.loading = false;\n break;\n }\n },\n error: (error) => {\n console.warn(error);\n file.uploadState = 'aborted';\n file.status = 'aborted';\n // todo: wrong\n file.statusReasonInformation = [\n { originatorId: 'local', reason: 'dragDrop.error.MFEFHM001' },\n ];\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'statusReasonInformation'));\n this.loading = false;\n },\n });\n });\n }\n /**\n * @internal\n * Using the state map convert `apiFile.state` to one of {@link UploadState}\n * @param apiState the state given by the file to be used for mapping\n */\n determineUploadState(apiState) {\n // Reverse so that later states override earlier\n const stateEntries = Object.entries(this.stateMap).reverse();\n for (const [uploadState, apiStates] of stateEntries) {\n if (this.uploadStateIsArray(apiStates)) {\n if (apiStates.includes(apiState))\n return uploadState;\n }\n else {\n if (apiStates === apiState)\n return uploadState;\n }\n }\n return 'error';\n }\n /** @internal */\n uploadStateIsArray(state) {\n return Array.isArray(state);\n }\n /** @internal used for translation templating parameters */\n translateParams(file) {\n return { ...file, fileLimit: (this.fileLimit / 1024 / 1024).toFixed(3) };\n }\n /**\n * Poll the status endpoint to determine when file is valid\n * @param file file used to check state and update\n * @param delay how long each interval should wait before sending a request\n */\n checkValidity(file, delay) {\n if (!this.service)\n return;\n file.uploadRequests = timer(0, delay)\n .pipe(switchMap(() => {\n const asyncFetchStatus = this.service && this.service.fetchStatusFor\n ? this.service.fetchStatusFor(file)\n : this.service.fetchStatus(file.id);\n return asyncFetchStatus;\n }), retryWhen(retryStrategy({\n maxRetryAttempts: this.retryAttempts,\n })), tap((fileStatus) => {\n // Continuously update file state to show step progress\n if (fileStatus) {\n // Emit event when status changes\n if (file.status !== fileStatus.status) {\n file.status = fileStatus.status;\n file.internalStatusReasonCode = this.fallbackError(fileStatus.internalStatusReasonCode);\n file.statusReasonInformation = fileStatus.statusReasonInformation;\n file.uploadState = this.determineUploadState(fileStatus.status);\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode', 'statusReasonInformation'));\n }\n }\n }), \n // Remove validation state\n filter((apiFile) => !!apiFile &&\n this.determineUploadState(apiFile.status) !== 'uploaded' &&\n this.determineUploadState(apiFile.status) !== 'validating'), \n // Take first state after validation\n take(1))\n .subscribe({\n next: () => {\n if (this.allValidationDone(this.files)) {\n this.setComponentStateDone();\n }\n },\n error: (err) => {\n console.warn(err);\n file.uploadState = 'aborted';\n file.status = 'aborted';\n file.internalStatusReasonCode = 'MFEFHM001';\n this.stateChange.emit(pick(file, 'uploadState', 'fileName', 'id', 'status', 'internalStatusReasonCode'));\n this.setComponentStateDone();\n },\n });\n }\n fallbackError(code) {\n if (this.errorCodes == null || (code && this.errorCodes.includes(code))) {\n return code ?? null;\n }\n else {\n return 'MFEFHM001';\n }\n }\n /**\n * Check so that no files are still validating\n */\n allValidationDone(files) {\n return Array.from(files.values()).every((file) => file.uploadState !== 'validating');\n }\n /**\n * Check so that no files are still uploading\n */\n allUploadingDone(files) {\n return Array.from(files.values()).every((file) => file.uploadState !== 'uploading');\n }\n /**\n * Helper to update the component state to done and then back to normal\n */\n setComponentStateDone() {\n if (!this.list)\n this.componentState = 'done';\n setTimeout(() => {\n if (this.componentState === 'done')\n this.componentState = 'normal';\n }, 3000);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.9\", type: NggvDragDropComponent, isStandalone: false, selector: \"nggv-drag-drop\", inputs: { thook: \"thook\", service: \"service\", accept: \"accept\", disableRemove: \"disableRemove\", fileLimit: \"fileLimit\", multiple: \"multiple\", list: \"list\", throttle: \"throttle\", retryAttempts: \"retryAttempts\", selectable: \"selectable\", stateMap: \"stateMap\", fetchStatuses: \"fetchStatuses\", errorCodes: \"errorCodes\" }, outputs: { stateChange: \"stateChange\", detailsClick: \"detailsClick\" }, host: { listeners: { \"window:beforeunload\": \"onBeforeUnload($event)\" }, properties: { \"attr.data-thook\": \"this.thook\" } }, viewQueries: [{ propertyName: \"deleteModalRef\", first: true, predicate: [\"deleteModalRef\"], descendants: true }], ngImport: i0, template: \"<ng-container *transloco=\\\"let t\\\">\\n <form enctype=\\\"multipart/form-data\\\" #dragDropForm>\\n <div class=\\\"gds-drag-drop\\\">\\n <input\\n class=\\\"gds-drag-drop__input\\\"\\n id=\\\"drag-drop\\\"\\n type=\\\"file\\\"\\n [accept]=\\\"accept\\\"\\n [multiple]=\\\"multiple && list\\\"\\n (change)=\\\"onDrop($event)\\\"\\n />\\n <label\\n [ngClass]=\\\"{\\n 'gds-drag-drop__label': true,\\n 'gds-drag-drop__label--above': componentState === 'over',\\n }\\\"\\n for=\\\"drag-drop\\\"\\n [attr.data-thook]=\\\"thook + '-picker'\\\"\\n [attr.aria-busy]=\\\"loading\\\"\\n (dragenter)=\\\"onDragEnter($event)\\\"\\n (dragover)=\\\"onDragEnter($event)\\\"\\n (dragleave)=\\\"onDragLeave($event)\\\"\\n (dragend)=\\\"onDragLeave($event)\\\"\\n (drop)=\\\"onDrop($event)\\\"\\n [ngSwitch]=\\\"componentState\\\"\\n >\\n <!-- COMPONENT STATE NORMAL -->\\n <ng-template [ngSwitchCase]=\\\"'normal'\\\">\\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload>\\n <div>\\n <div>\\n <em>{{ t('dragDrop.label.fileChoose') }}</em>\\n <ng-template [ngIf]=\\\"isDragDropAvailable\\\">{{\\n t('dragDrop.label.fileDrag')\\n }}</ng-template>\\n </div>\\n <div class=\\\"file-types\\\">\\n {{ t('dragDrop.label.fileTypes') }}\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- COMPONENT STATE UPLOADING -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <strong class=\\\"filename\\\">{{ lastFile?.fileName }}</strong>\\n\\n <!-- UPLOADING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n </ng-template>\\n\\n <!-- COMPONENT STATE DONE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\\n </ng-template>\\n </label>\\n\\n <!-- LIST -->\\n <table\\n class=\\\"gds-table file-list\\\"\\n [attr.data-thook]=\\\"thook + '-file-list'\\\"\\n *ngIf=\\\"list\\\"\\n >\\n <thead>\\n <tr>\\n <th *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n id=\\\"select-all\\\"\\n />\\n <label for=\\\"select-all\\\"></label>\\n </div>\\n </th>\\n <th class=\\\"gds-table__primary-col col-name\\\">\\n {{ t('dragDrop.label.fileName') }}\\n </th>\\n <th class=\\\"col-status\\\">\\n {{ t('dragDrop.label.fileStatus') }}\\n </th>\\n <th class=\\\"col-actions\\\"></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n [attr.data-thook]=\\\"thook + '-file'\\\"\\n *ngFor=\\\"let file of files | value\\\"\\n >\\n <td *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n [id]=\\\"'file-checkbox-' + file.id\\\"\\n />\\n <label [for]=\\\"'file-checkbox-' + file.id\\\"></label>\\n </div>\\n </td>\\n <td\\n class=\\\"gds-table__primary-col\\\"\\n [attr.data-thook]=\\\"thook + '-file-name'\\\"\\n >\\n {{ file.fileName }}\\n </td>\\n <td\\n [attr.data-thook]=\\\"thook + '-file-status'\\\"\\n [ngSwitch]=\\\"file.uploadState\\\"\\n >\\n <!-- UPLOADING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- ABORTED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'aborted'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n </ng-template>\\n\\n <!-- ERROR STATE -->\\n <ng-template [ngSwitchCase]=\\\"'error'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n <br />\\n <a\\n (click)=\\\"detailsClick.emit(file)\\\"\\n style=\\\"cursor: pointer\\\"\\n *ngIf=\\\"\\n file.statusReasonInformation &&\\n file.statusReasonInformation.length\\n \\\"\\n >\\n {{ t('dragDrop.link.viewDetails') }}\\n </a>\\n </ng-template>\\n\\n <!-- DONE STATE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n <span class=\\\"success-text\\\">{{\\n t('dragDrop.text.fileStateDone')\\n }}</span>\\n </ng-template>\\n </td>\\n\\n <td class=\\\"gds-table__numeric-col\\\">\\n <a\\n class=\\\"remove\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"onRemove(file.id, file.uploadState)\\\"\\n *ngIf=\\\"!disableRemove.includes(file.uploadState)\\\"\\n >\\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\\n </a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </form>\\n\\n <nggv-dialog\\n #deleteModalRef\\n [title]=\\\"t('dragDrop.text.fileCancelModalTitle')\\\"\\n [content]=\\\"\\n t('dragDrop.text.fileCancelModalContent', {\\n name: markedForDeletion?.fileName,\\n })\\n \\\"\\n [payload]=\\\"markedForDeletion\\\"\\n [buttons]=\\\"{\\n negative: 'dragDrop.text.fileCancelConfirm',\\n positive: 'dragDrop.text.fileCancelDeny',\\n }\\\"\\n (nggvNegativeEvent)=\\\"onConfirmRemove($any($event))\\\"\\n ></nggv-dialog>\\n\\n <!-- PROGRESS TEMPLATE -->\\n\\n <ng-template\\n #progressTemplate\\n let-file=\\\"\\n file\\\"\\n let-text=\\\"text\\\"\\n >\\n <div class=\\\"progress-wrapper\\\">\\n <progress\\n class=\\\"gds-progress-bar progress\\\"\\n max=\\\"100\\\"\\n [value]=\\\"file.progress\\\"\\n >\\n {{\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </progress>\\n <ng-template [ngIf]=\\\"stateMap.validating.length\\\">\\n <div\\n class=\\\"gds-progress-indicator indicator\\\"\\n *ngIf=\\\"uploadStateIsArray(stateMap.validating); else singleValidation\\\"\\n >\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"i <= stateMap.validating.indexOf(file.status)\\\"\\n *ngFor=\\\"let state of stateMap.validating; let i = index\\\"\\n ></div>\\n </div>\\n </ng-template>\\n <ng-template #singleValidation>\\n <div class=\\\"gds-progress-indicator indicator\\\">\\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"file.status == stateMap.validating\\\"\\n ></div>\\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\\n </div>\\n </ng-template>\\n </div>\\n <span class=\\\"progress-text\\\">\\n {{\\n text ||\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </span>\\n </ng-template>\\n</ng-container>\\n\", styles: [\":host .gds-drag-drop{width:100%}:host .gds-drag-drop__input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}:host .gds-drag-drop__label{display:flex;justify-content:center;align-items:center;gap:.5rem;border:2px dashed #868686;font-weight:500;padding:2.25em 1.5em;overflow-wrap:anywhere}:host .gds-drag-drop__input+.gds-drag-drop__label em{font-style:normal;color:#0092e1;cursor:pointer;margin-right:.25rem}:host .file-types{font-weight:400}:host .gds-drag-drop table,:host .gds-drag-drop .gds-table{margin-top:2.25em}:host .gds-table{width:100%;font-family:SEBSansSerif,Arial,sans-serif;border-spacing:0}:host .gds-table th,:host .gds-table td{text-align:left;border-bottom:1px solid #e9e9e9}:host .gds-table thead{color:#333;font-size:1em}:host .gds-table thead tr{min-height:2em}:host .gds-table thead th,:host .gds-table thead td{border-bottom:1px solid #cecece;font-weight:500}:host .gds-table tbody{font-size:1em}:host .gds-table tbody tr{height:2.5em;border-bottom:1px solid #adadad}:host .gds-table tbody tr:hover td,:host .gds-table tbody tr:hover th{background-color:#f8f8f8}:host .gds-table tfoot{font-weight:500;font-size:1em}:host .gds-table tfoot tr{height:2.5em}:host .gds-table tfoot td{border-top:1px solid #cecece;border-bottom-width:0}:host tr .gds-table__numeric-col{text-align:right}:host tr .gds-table__negative-col{color:#bb000c}:host tr .gds-table__primary-col{color:#000}:host .gds-table__sortable-col{cursor:pointer;white-space:nowrap;margin-left:.5em}:host .gds-table__sortable-col:after{content:\\\"\\\";display:inline-block;background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;margin-left:.25rem;width:.625rem;height:1rem;vertical-align:text-bottom}:host .gds-table__sortable-col:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23007ac7' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%2341b0ee' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23007ac7' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%2341b0ee' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table .gds-field-checkbox-wrap{width:2.5rem}:host .gds-table .gds-field-checkbox-wrap label{box-shadow:none!important}:host .gds-table--fixed-l-col{overflow:auto;display:block;position:relative;max-width:100%}:host .gds-table--fixed-l-col td,:host .gds-table--fixed-l-col th{width:auto!important;min-width:150px}:host .gds-table--fixed-l-col td:first-child,:host .gds-table--fixed-l-col th:first-child{position:sticky;left:0;background-color:#fff;border-right:1px solid #e9e9e9}:host .gds-table--fixed-l-col thead th{top:0;z-index:1;position:sticky;background-color:#fff}:host .gds-table--fixed-l-col thead th:first-child{z-index:2}:host .gds-progress-bar{appearance:none;height:.3125rem;width:100%;position:relative;overflow:hidden;color:#45b400;border-width:0;background-color:#e9e9e9}:host .gds-progress-bar:before{display:block;position:absolute;content:\\\"\\\";left:-200px;width:200px;height:.3125rem;background-color:#45b400;animation:gds-progressbar-loading 2s linear infinite}:host .gds-progress-bar::-webkit-progress-value{background-color:transparent}:host .gds-progress-bar::-moz-progress-bar{background-color:transparent}:host .gds-progress-bar::-ms-fill{background-color:transparent;border-width:0}:host .gds-progress-bar::-webkit-progress-bar{background-color:#e9e9e9}@keyframes gds-progressbar-loading{0%{left:-30%;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}:host .gds-progress-bar[value]:before{content:none}:host .gds-progress-bar[value]::-webkit-progress-value{background-color:#45b400}:host .gds-progress-bar[value]::-moz-progress-bar{background-color:#45b400}:host .gds-progress-bar[value]::-ms-fill{background-color:#45b400}:host .gds-progress-indicator{display:flex;width:100%}:host .gds-progress-indicator__step{flex-grow:1;height:.5rem;margin-right:.125rem;background-color:#e9e9e9}:host .gds-progress-indicator__step.-done{background-color:#45b400}:host .gds-progress-indicator__step:last-child{margin-right:0}:host .file-list th:first-child,:host .file-list td:first-child{width:auto}:host .filename{display:block}:host .col-name{width:40%}:host .col-status{width:30%}:host .col-actions{width:.1%}:host .progress-wrapper{display:flex}:host .progress,:host .indicator{height:.5rem}:host .gds-progress-indicator__step{margin-right:0}:host .progress{color:#45b400}:host .progress::-webkit-progress-value{background-color:#45b400}:host .progress::-moz-progress-bar{background-color:#45b400}:host .progress::-ms-fill{background-color:#45b400}:host .progress-text{display:block;margin-top:.125rem}:host .error-text{color:#bb000c}:host .success-text{color:#308800}:host .remove{padding:0 .5rem;font-size:1.5em;color:#868686;cursor:pointer;display:grid;place-content:center}:host .remove:hover,:host .remove:focus{color:#bb000c}\\n\"], dependencies: [{ kind: \"directive\", type: i1.TranslocoDirective, selector: \"[transloco]\", inputs: [\"transloco\", \"translocoParams\", \"translocoScope\", \"translocoRead\", \"translocoPrefix\", \"translocoLang\", \"translocoLoadingTpl\"] }, { kind: \"component\", type: i2.NggvDialogComponent, selector: \"nggv-dialog\", inputs: [\"thook\", \"shown\", \"initiallyShown\", \"heading\", \"title\", \"content\", \"autoClose\", \"payload\", \"dialogTitleId\", \"dialogBodyId\", \"closeModalOnEscape\", \"closeButtonAriaLabel\", \"buttons\"], outputs: [\"nggvCloseEvent\", \"nggvPositiveEvent\", \"nggvNeutralEvent\", \"nggvNegativeEvent\", \"nggvDangerEvent\"], exportAs: [\"dialog\"] }, { kind: \"directive\", type: i3.NggCoreElementDirective, selector: \"[nggCoreElement]\" }, { kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i4.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i4.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i4.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"pipe\", type: i4.DecimalPipe, name: \"number\" }, { kind: \"pipe\", type: i5.ValuePipe, name: \"value\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropComponent, decorators: [{\n type: Component,\n args: [{ selector: 'nggv-drag-drop', standalone: false, template: \"<ng-container *transloco=\\\"let t\\\">\\n <form enctype=\\\"multipart/form-data\\\" #dragDropForm>\\n <div class=\\\"gds-drag-drop\\\">\\n <input\\n class=\\\"gds-drag-drop__input\\\"\\n id=\\\"drag-drop\\\"\\n type=\\\"file\\\"\\n [accept]=\\\"accept\\\"\\n [multiple]=\\\"multiple && list\\\"\\n (change)=\\\"onDrop($event)\\\"\\n />\\n <label\\n [ngClass]=\\\"{\\n 'gds-drag-drop__label': true,\\n 'gds-drag-drop__label--above': componentState === 'over',\\n }\\\"\\n for=\\\"drag-drop\\\"\\n [attr.data-thook]=\\\"thook + '-picker'\\\"\\n [attr.aria-busy]=\\\"loading\\\"\\n (dragenter)=\\\"onDragEnter($event)\\\"\\n (dragover)=\\\"onDragEnter($event)\\\"\\n (dragleave)=\\\"onDragLeave($event)\\\"\\n (dragend)=\\\"onDragLeave($event)\\\"\\n (drop)=\\\"onDrop($event)\\\"\\n [ngSwitch]=\\\"componentState\\\"\\n >\\n <!-- COMPONENT STATE NORMAL -->\\n <ng-template [ngSwitchCase]=\\\"'normal'\\\">\\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload>\\n <div>\\n <div>\\n <em>{{ t('dragDrop.label.fileChoose') }}</em>\\n <ng-template [ngIf]=\\\"isDragDropAvailable\\\">{{\\n t('dragDrop.label.fileDrag')\\n }}</ng-template>\\n </div>\\n <div class=\\\"file-types\\\">\\n {{ t('dragDrop.label.fileTypes') }}\\n </div>\\n </div>\\n </ng-template>\\n\\n <!-- COMPONENT STATE UPLOADING -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <strong class=\\\"filename\\\">{{ lastFile?.fileName }}</strong>\\n\\n <!-- UPLOADING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngIf]=\\\"lastFile?.uploadState === 'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: lastFile,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n </ng-template>\\n\\n <!-- COMPONENT STATE DONE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\\n </ng-template>\\n </label>\\n\\n <!-- LIST -->\\n <table\\n class=\\\"gds-table file-list\\\"\\n [attr.data-thook]=\\\"thook + '-file-list'\\\"\\n *ngIf=\\\"list\\\"\\n >\\n <thead>\\n <tr>\\n <th *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n id=\\\"select-all\\\"\\n />\\n <label for=\\\"select-all\\\"></label>\\n </div>\\n </th>\\n <th class=\\\"gds-table__primary-col col-name\\\">\\n {{ t('dragDrop.label.fileName') }}\\n </th>\\n <th class=\\\"col-status\\\">\\n {{ t('dragDrop.label.fileStatus') }}\\n </th>\\n <th class=\\\"col-actions\\\"></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n [attr.data-thook]=\\\"thook + '-file'\\\"\\n *ngFor=\\\"let file of files | value\\\"\\n >\\n <td *ngIf=\\\"selectable\\\">\\n <div class=\\\"gds-field-checkbox-wrap\\\">\\n <input\\n type=\\\"checkbox\\\"\\n aria-label=\\\"Field label\\\"\\n [id]=\\\"'file-checkbox-' + file.id\\\"\\n />\\n <label [for]=\\\"'file-checkbox-' + file.id\\\"></label>\\n </div>\\n </td>\\n <td\\n class=\\\"gds-table__primary-col\\\"\\n [attr.data-thook]=\\\"thook + '-file-name'\\\"\\n >\\n {{ file.fileName }}\\n </td>\\n <td\\n [attr.data-thook]=\\\"thook + '-file-status'\\\"\\n [ngSwitch]=\\\"file.uploadState\\\"\\n >\\n <!-- UPLOADING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploading'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- UPLOADED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'uploaded'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateUploaded'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- VALIDATING STATE -->\\n <ng-template [ngSwitchCase]=\\\"'validating'\\\">\\n <ng-template\\n [ngTemplateOutlet]=\\\"progressTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{\\n file: file,\\n text: t('dragDrop.text.fileStateValidating'),\\n }\\\"\\n ></ng-template>\\n </ng-template>\\n\\n <!-- ABORTED STATE -->\\n <ng-template [ngSwitchCase]=\\\"'aborted'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n </ng-template>\\n\\n <!-- ERROR STATE -->\\n <ng-template [ngSwitchCase]=\\\"'error'\\\">\\n <span\\n class=\\\"error-text\\\"\\n [transloco]=\\\"\\n 'dragDrop.error.' + file.internalStatusReasonCode\\n \\\"\\n [translocoParams]=\\\"translateParams(file)\\\"\\n *ngIf=\\\"file.internalStatusReasonCode\\\"\\n ></span>\\n <br />\\n <a\\n (click)=\\\"detailsClick.emit(file)\\\"\\n style=\\\"cursor: pointer\\\"\\n *ngIf=\\\"\\n file.statusReasonInformation &&\\n file.statusReasonInformation.length\\n \\\"\\n >\\n {{ t('dragDrop.link.viewDetails') }}\\n </a>\\n </ng-template>\\n\\n <!-- DONE STATE -->\\n <ng-template [ngSwitchCase]=\\\"'done'\\\">\\n <span class=\\\"success-text\\\">{{\\n t('dragDrop.text.fileStateDone')\\n }}</span>\\n </ng-template>\\n </td>\\n\\n <td class=\\\"gds-table__numeric-col\\\">\\n <a\\n class=\\\"remove\\\"\\n tabindex=\\\"0\\\"\\n (click)=\\\"onRemove(file.id, file.uploadState)\\\"\\n *ngIf=\\\"!disableRemove.includes(file.uploadState)\\\"\\n >\\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\\n </a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </form>\\n\\n <nggv-dialog\\n #deleteModalRef\\n [title]=\\\"t('dragDrop.text.fileCancelModalTitle')\\\"\\n [content]=\\\"\\n t('dragDrop.text.fileCancelModalContent', {\\n name: markedForDeletion?.fileName,\\n })\\n \\\"\\n [payload]=\\\"markedForDeletion\\\"\\n [buttons]=\\\"{\\n negative: 'dragDrop.text.fileCancelConfirm',\\n positive: 'dragDrop.text.fileCancelDeny',\\n }\\\"\\n (nggvNegativeEvent)=\\\"onConfirmRemove($any($event))\\\"\\n ></nggv-dialog>\\n\\n <!-- PROGRESS TEMPLATE -->\\n\\n <ng-template\\n #progressTemplate\\n let-file=\\\"\\n file\\\"\\n let-text=\\\"text\\\"\\n >\\n <div class=\\\"progress-wrapper\\\">\\n <progress\\n class=\\\"gds-progress-bar progress\\\"\\n max=\\\"100\\\"\\n [value]=\\\"file.progress\\\"\\n >\\n {{\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </progress>\\n <ng-template [ngIf]=\\\"stateMap.validating.length\\\">\\n <div\\n class=\\\"gds-progress-indicator indicator\\\"\\n *ngIf=\\\"uploadStateIsArray(stateMap.validating); else singleValidation\\\"\\n >\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"i <= stateMap.validating.indexOf(file.status)\\\"\\n *ngFor=\\\"let state of stateMap.validating; let i = index\\\"\\n ></div>\\n </div>\\n </ng-template>\\n <ng-template #singleValidation>\\n <div class=\\\"gds-progress-indicator indicator\\\">\\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\\n <div\\n class=\\\"gds-progress-indicator__step\\\"\\n [class.-done]=\\\"file.status == stateMap.validating\\\"\\n ></div>\\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\\n </div>\\n </ng-template>\\n </div>\\n <span class=\\\"progress-text\\\">\\n {{\\n text ||\\n t('dragDrop.text.fileStateUploading', {\\n uploaded:\\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\\n size: file.raw?.size / 1024 | number: '0.0-0',\\n progress: file.progress,\\n unit: 'kB',\\n })\\n }}\\n </span>\\n </ng-template>\\n</ng-container>\\n\", styles: [\":host .gds-drag-drop{width:100%}:host .gds-drag-drop__input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}:host .gds-drag-drop__label{display:flex;justify-content:center;align-items:center;gap:.5rem;border:2px dashed #868686;font-weight:500;padding:2.25em 1.5em;overflow-wrap:anywhere}:host .gds-drag-drop__input+.gds-drag-drop__label em{font-style:normal;color:#0092e1;cursor:pointer;margin-right:.25rem}:host .file-types{font-weight:400}:host .gds-drag-drop table,:host .gds-drag-drop .gds-table{margin-top:2.25em}:host .gds-table{width:100%;font-family:SEBSansSerif,Arial,sans-serif;border-spacing:0}:host .gds-table th,:host .gds-table td{text-align:left;border-bottom:1px solid #e9e9e9}:host .gds-table thead{color:#333;font-size:1em}:host .gds-table thead tr{min-height:2em}:host .gds-table thead th,:host .gds-table thead td{border-bottom:1px solid #cecece;font-weight:500}:host .gds-table tbody{font-size:1em}:host .gds-table tbody tr{height:2.5em;border-bottom:1px solid #adadad}:host .gds-table tbody tr:hover td,:host .gds-table tbody tr:hover th{background-color:#f8f8f8}:host .gds-table tfoot{font-weight:500;font-size:1em}:host .gds-table tfoot tr{height:2.5em}:host .gds-table tfoot td{border-top:1px solid #cecece;border-bottom-width:0}:host tr .gds-table__numeric-col{text-align:right}:host tr .gds-table__negative-col{color:#bb000c}:host tr .gds-table__primary-col{color:#000}:host .gds-table__sortable-col{cursor:pointer;white-space:nowrap;margin-left:.5em}:host .gds-table__sortable-col:after{content:\\\"\\\";display:inline-block;background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;margin-left:.25rem;width:.625rem;height:1rem;vertical-align:text-bottom}:host .gds-table__sortable-col:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23adadad' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23007ac7' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--asc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23cecece' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%2341b0ee' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%23007ac7' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23adadad' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table__sortable-col--desc:hover:after{background-image:url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 644'%3E%3Cpath fill='%2341b0ee' transform='translate(0 260)' d='M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z'/%3E%3Cpath fill='%23cecece' transform='translate(0 -120)' d='M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z'/%3E%3C/svg%3E\\\")}:host .gds-table .gds-field-checkbox-wrap{width:2.5rem}:host .gds-table .gds-field-checkbox-wrap label{box-shadow:none!important}:host .gds-table--fixed-l-col{overflow:auto;display:block;position:relative;max-width:100%}:host .gds-table--fixed-l-col td,:host .gds-table--fixed-l-col th{width:auto!important;min-width:150px}:host .gds-table--fixed-l-col td:first-child,:host .gds-table--fixed-l-col th:first-child{position:sticky;left:0;background-color:#fff;border-right:1px solid #e9e9e9}:host .gds-table--fixed-l-col thead th{top:0;z-index:1;position:sticky;background-color:#fff}:host .gds-table--fixed-l-col thead th:first-child{z-index:2}:host .gds-progress-bar{appearance:none;height:.3125rem;width:100%;position:relative;overflow:hidden;color:#45b400;border-width:0;background-color:#e9e9e9}:host .gds-progress-bar:before{display:block;position:absolute;content:\\\"\\\";left:-200px;width:200px;height:.3125rem;background-color:#45b400;animation:gds-progressbar-loading 2s linear infinite}:host .gds-progress-bar::-webkit-progress-value{background-color:transparent}:host .gds-progress-bar::-moz-progress-bar{background-color:transparent}:host .gds-progress-bar::-ms-fill{background-color:transparent;border-width:0}:host .gds-progress-bar::-webkit-progress-bar{background-color:#e9e9e9}@keyframes gds-progressbar-loading{0%{left:-30%;width:30%}50%{width:30%}70%{width:70%}80%{left:50%}95%{left:120%}to{left:100%}}:host .gds-progress-bar[value]:before{content:none}:host .gds-progress-bar[value]::-webkit-progress-value{background-color:#45b400}:host .gds-progress-bar[value]::-moz-progress-bar{background-color:#45b400}:host .gds-progress-bar[value]::-ms-fill{background-color:#45b400}:host .gds-progress-indicator{display:flex;width:100%}:host .gds-progress-indicator__step{flex-grow:1;height:.5rem;margin-right:.125rem;background-color:#e9e9e9}:host .gds-progress-indicator__step.-done{background-color:#45b400}:host .gds-progress-indicator__step:last-child{margin-right:0}:host .file-list th:first-child,:host .file-list td:first-child{width:auto}:host .filename{display:block}:host .col-name{width:40%}:host .col-status{width:30%}:host .col-actions{width:.1%}:host .progress-wrapper{display:flex}:host .progress,:host .indicator{height:.5rem}:host .gds-progress-indicator__step{margin-right:0}:host .progress{color:#45b400}:host .progress::-webkit-progress-value{background-color:#45b400}:host .progress::-moz-progress-bar{background-color:#45b400}:host .progress::-ms-fill{background-color:#45b400}:host .progress-text{display:block;margin-top:.125rem}:host .error-text{color:#bb000c}:host .success-text{color:#308800}:host .remove{padding:0 .5rem;font-size:1.5em;color:#868686;cursor:pointer;display:grid;place-content:center}:host .remove:hover,:host .remove:focus{color:#bb000c}\\n\"] }]\n }], propDecorators: { deleteModalRef: [{\n type: ViewChild,\n args: ['deleteModalRef']\n }], thook: [{\n type: HostBinding,\n args: ['attr.data-thook']\n }, {\n type: Input\n }], service: [{\n type: Input\n }], accept: [{\n type: Input\n }], disableRemove: [{\n type: Input\n }], fileLimit: [{\n type: Input\n }], multiple: [{\n type: Input\n }], list: [{\n type: Input\n }], throttle: [{\n type: Input\n }], retryAttempts: [{\n type: Input\n }], selectable: [{\n type: Input\n }], stateMap: [{\n type: Input\n }], fetchStatuses: [{\n type: Input\n }], errorCodes: [{\n type: Input\n }], stateChange: [{\n type: Output\n }], detailsClick: [{\n type: Output\n }], onBeforeUnload: [{\n type: HostListener,\n args: ['window:beforeunload', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RyYWctZHJvcC9kcmFnLWRyb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZHJhZy1kcm9wL2RyYWctZHJvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3BELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXhFLE9BQU8sRUFFTCxtQkFBbUIsR0FDcEIsTUFBTSw2Q0FBNkMsQ0FBQTtBQUNwRCxPQUFPLEVBQ0wsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixJQUFJLEVBQ0osYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLG1CQUFtQixDQUFBO0FBVzFCLE9BQU8sNERBQTRELENBQUE7QUFDbkUsT0FBTywyREFBMkQsQ0FBQTtBQUNsRSxPQUFPLHlEQUF5RCxDQUFBOzs7Ozs7O0FBVWhFLE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFVRSxvRkFBb0Y7UUFDM0MsVUFBSyxHQUM1QyxXQUFXLENBQUE7UUFRYiw4SUFBOEk7UUFDckksa0JBQWEsR0FBa0IsRUFBRSxDQUFBO1FBRTFDLHFDQUFxQztRQUM1QixjQUFTLEdBQVcsR0FBRyxHQUFHLElB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TTtnQkFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQTtRQUNwRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDVixDQUFDOzhHQWpsQlUscUJBQXFCO2tHQUFyQixxQkFBcUIsNnJCQ2pEbEMsNHpVQWtUQTs7MkZEalFhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxnQkFBZ0IsY0FHZCxLQUFLOztzQkFJbEIsU0FBUzt1QkFBQyxnQkFBZ0I7O3NCQUcxQixXQUFXO3VCQUFDLGlCQUFpQjs7c0JBQUcsS0FBSzs7c0JBSXJDLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQU1MLEtBQUs7O3NCQUdMLEtBQUs7O3NCQVlMLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLE1BQU07O3NCQUdOLE1BQU07O3NCQW1GTixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0aW1lciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBmaWx0ZXIsIHJldHJ5V2hlbiwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgRGlhbG9nRXZlbnQsXG4gIE5nZ3ZEaWFsb2dDb21wb25lbnQsXG59IGZyb20gJ0BzZWJncm91cC9ncmVlbi1hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwnXG5pbXBvcnQge1xuICBleHRlbmRGaWxlLFxuICBpc0RyYWdEcm9wQXZhaWxhYmxlLFxuICBwaWNrLFxuICByZXRyeVN0cmF0ZWd5LFxuICB2ZXJpZnlBY2NlcHQsXG59IGZyb20gJy4vZHJhZy1kcm9wLnV0aWxzJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFQSUZpbGUsXG4gIEV2ZW50U3RhdGVDaGFuZ2UsXG4gIEZpbGVTZXJ2aWNlLFxuICBMb2NhbEZpbGUsXG4gIFN0YXRlTWFwLFxuICBVcGxvYWRTdGF0ZSxcbn0gZnJvbSAnLi9kcmFnLWRyb3AubW9kZWxzJ1xuXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jbG91ZC11cGxvYWQuanMnXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jcm9zcy1zbWFsbC5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL2NoZWNrbWFyay5qcydcblxuZXhwb3J0IHR5cGUgRHJhZ0Ryb3BTdGF0ZSA9ICdub3JtYWwnIHwgJ292ZXInIHwgJ3VwbG9hZGluZycgfCAnZG9uZSdcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ2d2LWRyYWctZHJvcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyYWctZHJvcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHJhZy1kcm9wLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTmdndkRyYWdEcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogQGludGVybmFsICovXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZU1vZGFsUmVmJykgZGVsZXRlTW9kYWxSZWYhOiBOZ2d2RGlhbG9nQ29tcG9uZW50XG5cbiAgLyoqIFNwZWNpYWwgcHJvcGVydHkgdXNlZCBmb3Igc2VsZWN0aW5nIERPTSBlbGVtZW50cyBkdXJpbmcgYXV0b21hdGVkIFVJIHRlc3RpbmcuICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXRob29rJykgQElucHV0KCkgdGhvb2s6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPVxuICAgICdkcmFnLWRyb3AnXG5cbiAgLyoqIEFsbG93aW5nIHNlbGVjdGluZyBvciBkcm9wcGluZyBtdWx0aXBsZSBmaWxlcy4gKi9cbiAgQElucHV0KCkgc2VydmljZTogRmlsZVNlcnZpY2UgfCB1bmRlZmluZWRcblxuICAvKiogTWltZSB0eXBlcyBhbGxvd2VkLiAqL1xuICBASW5wdXQoKSBhY2NlcHQ/OiBzdHJpbmdcblxuICAvKiogRGlzYWJsZXMgZGVsZXRpb24gb3IgY2FuY2VsbGF0aW9uIGR1cmluZyBkZWZpbmVkIHN0YXRlcyBbbG9jYWwgfCB1cGxvYWRpbmcgfCBhYm9ydGVkIHwgdXBsb2FkZWQgfCB2YWxpZGF0aW5nIHwgZXJyb3IgfCBkZWxldGVkIHwgZG9uZV0uICovXG4gIEBJbnB1dCgpIGRpc2FibGVSZW1vdmU6IFVwbG9hZFN0YXRlW10gPSBbXVxuXG4gIC8qKiBGaWxlIHNpemUgbGltaXQgaW4gbWVnYSBieXRlcy4gKi9cbiAgQElucHV0KCkgZmlsZUxpbWl0OiBudW1iZXIgPSAyNTAgKiAxMDI0ICogMTAyNFxuXG4gIC8qKiBBbGxvd2luZyBzZWxlY3Rpbmcgb3IgZHJvcHBpbmcgbXVsdGlwbGUgZmlsZXMuICovXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gdHJ1ZVxuXG4gIC8qKiBEZXRlcm1pbmVzIGlmIGxpc3Qgc2hvdWxkIGJlIHNob3duIHVuZGVyIHVwbG9hZCwgZGlzYWJsaW5nIGxpc3QgZGlzYWJsZXMgbXVsdGlwbGUgdXBsb2FkLiAqL1xuICBASW5wdXQoKSBsaXN0ID0gdHJ1ZVxuXG4gIC8qKiBGcmVxdWVuY3kgb2YgcmVxdWVzdHMgd2hpY2ggdG8gc2VuZCB0byB0aGUgQVBJIHJlcXVlc3Rpbmcgc3RhdHVzIHVwZGF0ZXMuICovXG4gIEBJbnB1dCgpIHRocm90dGxlID0gNTAwMFxuXG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBhdHRlbXB0cyB0byByZXF1ZXN0IGEgc3RhdHVzIHVwZGF0ZSBmcm9tIHRoZSBBUEkgaWYgc2VydmljZSBpcyB1bnJlYWNoYWJsZS4gKi9cbiAgQElucHV0KCkgcmV0cnlBdHRlbXB0cyA9IDVcblxuICAvKiogSWYgc2VsZWN0aW9uIG9mIG11bHRpcGxlIGZpbGUgc2hvdWxkIGJlIHBvc3NpYmxlIHdpdGggYSBjaGVja2JveC5cbiAgICogQGV4cGVyaW1lbnRhbCB3b3JrIGluIHByb2dyZXNzIGFuZCBzaG91bGQgbm90IHlldCBiZSB1c2VkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZVxuXG4gIC8qKiBBbGxvd3MgbXVsdGlwbGUgdmFsdWVzIGZyb20gYGFwaUZpbGUuc3RhdHVzYCB0byBiZSBtYXBwZWQgdG8gYSBzaW5nbGUgZmlsZSB1cGxvYWQgc3RhdGUuICovXG4gIEBJbnB1dCgpIHN0YXRlTWFwOiBTdGF0ZU1hcCA9IHtcbiAgICBsb2NhbDogJ2xvY2FsJyxcbiAgICB1cGxvYWRpbmc6ICd1cGxvYWRpbmcnLFxuICAgIGFib3J0ZWQ6ICdhYm9ydGVkJyxcbiAgICB1cGxvYWRlZDogJ3VwbG9hZGVkJyxcbiAgICB2YWxpZGF0aW5nOiAndmFsaWRhdGluZycsXG4gICAgZXJyb3I6ICdlcnJvcicsXG4gICAgZGVsZXRlZDogJ2RlbGV0ZWQnLFxuICAgIGRvbmU6ICdkb25lJyxcbiAgfVxuXG4gIC8qKiBTdGF0dXNlcyBhbGxvd2VkIHRvIGJlIGZldGNoIGR1cmluZyB0aGUgaW5pdGlhbCBsb2FkLiBVc2VkIHRvIGhpZGUgXCJkb25lXCIgc3RhdGVzIGZyb20gbGlzdC4gKi9cbiAgQElucHV0KCkgZmV0Y2hTdGF0dXNlczogc3RyaW5nW10gPSBbXVxuXG4gIC8qKiBTdGF0dXNlcyBhbGxvd2VkIGJlIHNob3duIHdoZW4gc3RhdHVzIGlzIFwicmVqZWN0ZWRcIi4gV2lsbCBmYWxsYmFjayB0byBnZW5lcmljIG1lc3NhZ2UuIGBudWxsYCBhbGxvd3MgYWxsLiAqL1xuICBASW5wdXQoKSBlcnJvckNvZGVzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG5cbiAgLyoqIEV2ZW50IHRyaWdnZXJlZCBvbiBpbml0aWFsaXphdGlvbiBhbmQgZXZlcnkgdGltZSB0aGUgXCJ1cGxvYWRTdGF0ZVwiIGZvciBhIGZpbGUgY2hhbmdlcy4gKi9cbiAgQE91dHB1dCgpIHN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudFN0YXRlQ2hhbmdlPigpXG5cbiAgLyoqIEV2ZW50IHRyaWdnZXJlZCB3aGVuIHZpZXcgZGV0YWlscyBpcyBjbGlja2VkLiAqL1xuICBAT3V0cHV0KCkgZGV0YWlsc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxMb2NhbEZpbGUgJiBBUElGaWxlPigpXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBpc0RyYWdEcm9wQXZhaWxhYmxlID0gaXNEcmFnRHJvcEF2YWlsYWJsZSgpXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgY29tcG9uZW50U3RhdGU6IERyYWdEcm9wU3RhdGUgPSAnbm9ybWFsJ1xuICAvKiogQGludGVybmFsICovXG4gIGZpbGVzOiBNYXA8c3RyaW5nLCBMb2NhbEZpbGUgJiBBUElGaWxlPiA9IG5ldyBNYXAoKVxuICAvKiogQGludGVybmFsICovXG4gIGxhc3RGaWxlOiAoTG9jYWxGaWxlICYgQVBJRmlsZSkgfCB1bmRlZmluZWRcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBzZWxlY3RlZDogc3RyaW5nW10gPSBbXVxuICAvKiogQGludGVybmFsICovXG4gIGxvYWRpbmcgPSBmYWxzZVxuICAvKiogQGludGVybmFsICovXG4gIG1hcmtlZEZvckRlbGV0aW9uOiBBUElGaWxlIHwgdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudCBhbmQgd2FybiBpZiBzZXJ2aWNlIGlzIG5vdCBkZWZpbmVkLiBXaWxsIGFsc28gZmV0Y2ggZmlsZXMgZm9yIHRoZSBsaXN0IGlmIGVuYWJsZWQuXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICdEcmFnIGFuZCBkcm9wIGNvbXBvbmVudCB3aWxsIG5vdCB3b3JrIHdpdGhvdXQgdGhlIFtzZXJ2aWNlXSBwcm9wZXJ0eSBkZWZpbmVkIScsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmZldGNoRmlsZXModGhpcy5mZXRjaFN0YXR1c2VzKS5zdWJzY3JpYmUoKGFwaUZpbGVzKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgYXBpRmlsZSBvZiBhcGlGaWxlcykge1xuICAgICAgICAgIGNvbnN0IGV4dGVuZGVkRmlsZSA9IGV4dGVuZEZpbGUodW5kZWZpbmVkLCBhcGlGaWxlLCB7XG4gICAgICAgICAgICBwcm9ncmVzczogMTAwLFxuICAgICAgICAgICAgdXBsb2FkU3RhdGU6IHRoaXMuZGV0ZXJtaW5lVXBsb2FkU3RhdGUoYXBpRmlsZS5zdGF0dXMpLFxuICAgICAgICAgICAgaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlOiB0aGlzLmZhbGxiYWNrRXJyb3IoXG4gICAgICAgICAgICAgIGFwaUZpbGUuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRoaXMuZmlsZXMuc2V0KGV4dGVuZGVkRmlsZS5pZCwgZXh0ZW5kZWRGaWxlKVxuICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdChcbiAgICAgICAgICAgIHBpY2soXG4gICAgICAgICAgICAgIGV4dGVuZGVkRmlsZSxcbiAgICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICAgICAnc3RhdHVzUmVhc29uSW5mb3JtYXRpb24nLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICAvLyBDaGVjayBpZiB2YWxpZGF0aW9uIGlzIHJlcXVpcmVkLCB0aGVuIHN0YXJ0IHBvbGxpbmdcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBleHRlbmRlZEZpbGUudXBsb2FkU3RhdGUgPT09ICd1cGxvYWRlZCcgfHxcbiAgICAgICAgICAgIGV4dGVuZGVkRmlsZS51cGxvYWRTdGF0ZSA9PT0gJ3ZhbGlkYXRpbmcnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoZXh0ZW5kZWRGaWxlLCB0aGlzLnRocm90dGxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKiogRGVzdHJveSBhbGwgZXZlbnQgbGlzdGVuZXJzIGFuZCBwb2xsaW5nIHJ1bm5pbmcgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBmaWxlLnVwbG9hZFJlcXVlc3RzPy51bnN1YnNjcmliZSgpXG4gICAgICBpZiAoZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ3VwbG9hZGluZycpIHtcbiAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICBmaWxlLmludGVybmFsU3RhdHVzUmVhc29uQ29kZSA9ICdNRkVGSE0wMDQnXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdChcbiAgICAgICAgICBwaWNrKFxuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICd1cGxvYWRTdGF0ZScsXG4gICAgICAgICAgICAnZmlsZU5hbWUnLFxuICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAnaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlJyxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgV2FybiB1c2VyIHRyeWluZyB0byBsZWF2ZSBwYWdlIGJlZm9yZSBhbGwgdXBsb2FkcyBhcmUgZG9uZS4gQ3VzdG9tIG1lc3NhZ2Ugb25seSB3b3JrcyBpbiBvbGRlciBicm93c2Vycy4gKi9cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXG4gIG9uQmVmb3JlVW5sb2FkKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5hbGxVcGxvYWRpbmdEb25lKHRoaXMuZmlsZXMpKSB7XG4gICAgICBjb25zdCBjb25maXJtYXRpb25NZXNzYWdlID0gYFlvdSBzdGlsbCBoYXZlIGZpbGVzIHVwbG9hZGluZywgYXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHRoaXMgcGFnZT9gXG4gICAgICA7KChldmVudCBhcyBhbnkpIHx8ICh3aW5kb3cuZXZlbnQgYXMgYW55KSkucmV0dXJuVmFsdWUgPVxuICAgICAgICBjb25maXJtYXRpb25NZXNzYWdlXG4gICAgICByZXR1cm4gY29uZmlybWF0aW9uTWVzc2FnZVxuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIC8qIERyYWcgJiBEcm9wIEV2ZW50cyAqL1xuXG4gIC8qKiBAaW50ZXJuYWwgRXZlbnQgaGFuZGxlciBmb3Igd2hlbiBhIGZpbGUgaXMgaGVsZCBvdmVyIHRoZSBkcm9wIGFyZWEgKi9cbiAgb25EcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXJ2aWNlKSByZXR1cm5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgLy8gVXBkYXRlIHRoZSB2aXN1YWwgc3RhdGVcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlID0gJ292ZXInXG4gIH1cblxuICAvKiogQGludGVybmFsIEV2ZW50IGhhbmRsZXIgZm9yIHdoZW4gYSBmaWxlIGxlYXZlcyB0aGUgZHJvcCBhcmVhICovXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkgcmV0dXJuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMuY29tcG9uZW50U3RhdGUgPSAnbm9ybWFsJ1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCBFdmVudCBoYW5kbGVyIGZvciB3aGVuIGEgZmlsZSBpcyBkcm9wcGVkIG9uIHRoZSBkcm9wIGFyZWEgb3Igd2hlbiBgaW5wdXRgIGZpbGVzIGFyZSBzZWxlY3RlZCAqL1xuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCB8IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHJldHVyblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB0aGlzLmNvbXBvbmVudFN0YXRlID0gJ25vcm1hbCdcblxuICAgIGxldCBmaWxlczogRmlsZUxpc3QgfCB1bmRlZmluZWRcblxuICAgIC8vIERldGVybWluZSBpZiBmaWxlcyBhcmUgZnJvbSB0aGUgZHJvcCBldmVudCBvciBpbnB1dCBlbGVtZW50XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgRHJhZ0V2ZW50ICYmIGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZXZlbnQudGFyZ2V0ICYmXG4gICAgICBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmXG4gICAgICBldmVudC50YXJnZXQuZmlsZXNcbiAgICApIHtcbiAgICAgIGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzXG4gICAgfVxuXG4gICAgaWYgKGZpbGVzKSB7XG4gICAgICBjb25zdCBleHRlbmRlZEZpbGVzID0gQXJyYXkuZnJvbShmaWxlcywgKGZpbGUpID0+IHtcbiAgICAgICAgbGV0IGFib3J0ID0gZmFsc2VcbiAgICAgICAgbGV0IHN0YXR1c0NvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICAgICAgIC8vIENoZWNrIGlmIGZpbGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiBsaW1pdFxuICAgICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5maWxlTGltaXQpIHtcbiAgICAgICAgICBhYm9ydCA9IHRydWVcbiAgICAgICAgICBzdGF0dXNDb2RlID0gJ01GRUZITTAwMydcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBpZiBmaWxlIHR5cGUgaXMgbm90IGFjY2VwdGFibGVcbiAgICAgICAgaWYgKCF2ZXJpZnlBY2NlcHQoZmlsZS50eXBlLCB0aGlzLmFjY2VwdCkpIHtcbiAgICAgICAgICBhYm9ydCA9IHRydWVcbiAgICAgICAgICBzdGF0dXNDb2RlID0gJ01GRUZITTAwMidcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgZGVmYXVsdCB2YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIEFQSVxuICAgICAgICBjb25zdCBleHRlbmRlZEZpbGUgPSBleHRlbmRGaWxlKGZpbGUsIHtcbiAgICAgICAgICBpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGU6IHN0YXR1c0NvZGUsXG4gICAgICAgICAgdXBsb2FkU3RhdGU6IChhYm9ydCA/ICdhYm9ydGVkJyA6ICdsb2NhbCcpIGFzIFVwbG9hZFN0YXRlLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEVtaXQgaW5pdGlhbCBsb2NhbCB1cGxvYWQgZXZlbnRcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICB1cGxvYWRTdGF0ZTogJ2xvY2FsJyxcbiAgICAgICAgICBmaWxlTmFtZTogZXh0ZW5kZWRGaWxlLmZpbGVOYW1lLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChhYm9ydCkge1xuICAgICAgICAgIC8vIEVtaXQgYWJvcnRlZCB1cGxvYWQgZXZlbnRcbiAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgdXBsb2FkU3RhdGU6ICdhYm9ydGVkJyxcbiAgICAgICAgICAgIGZpbGVOYW1lOiBleHRlbmRlZEZpbGUuZmlsZU5hbWUsXG4gICAgICAgICAgICBzdGF0dXM6ICdhYm9ydGVkJyxcbiAgICAgICAgICAgIGludGVybmFsU3RhdHVzUmVhc29uQ29kZTogc3RhdHVzQ29kZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4dGVuZGVkRmlsZVxuICAgICAgfSlcblxuICAgICAgLy8gQXBwZW5kIHRvIHByZXZpb3VzIGZpbGVzXG4gICAgICBsZXQgaSA9IDBcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBleHRlbmRlZEZpbGVzKSB7XG4gICAgICAgIC8vIElmIG11bHRpcGxlIG9yIGxpc3QgaXMgZmFsc2UgYXBwZW5kIG9ubHkgZmlsZSB0aGVuIGJyZWFrIGxvb3BcbiAgICAgICAgaWYgKCghdGhpcy5tdWx0aXBsZSB8fCAhdGhpcy5saXN0KSAmJiBpID49IDEpIGJyZWFrXG4gICAgICAgIHRoaXMubGFzdEZpbGUgPSBmaWxlXG4gICAgICAgIHRoaXMuZmlsZXMuc2V0KGZpbGUuaWQsIGZpbGUpXG4gICAgICAgIGkrK1xuICAgICAgfVxuXG4gICAgICAvLyBDbGVhciBmaWxlIGlucHV0IHNvIHRoYXQgc2FtZSBmaWxlIGNhbiBiZSB1cGxvYWRlZFxuICAgICAgaWYgKFxuICAgICAgICBldmVudC50YXJnZXQgJiZcbiAgICAgICAgZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJlxuICAgICAgICBldmVudC50YXJnZXQuZmlsZXNcbiAgICAgICkge1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJ1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uU3VibWl0KClcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsIEV2ZW50IHRyaWdnZXIgZm9yIHdoZW4gZGVsZXRlIGJ1dHRvbiBpcyBwcmVzc2VkICovXG4gIG9uUmVtb3ZlKGlkOiBzdHJpbmcsIHN0YXRlOiBVcGxvYWRTdGF0ZSk6IHZvaWQge1xuICAgIC8vIE9ubHkgYWxsb3cgcmVtb3ZhbCBpbiBjZXJ0YWluIHN0YXRlc1xuICAgIGlmICghdGhpcy5zZXJ2aWNlIHx8IHRoaXMuZGlzYWJsZVJlbW92ZS5pbmNsdWRlcyhzdGF0ZSkpIHJldHVyblxuICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVzLmdldChpZClcbiAgICBpZiAoIWZpbGUpIHJldHVyblxuICAgIC8vIFNraXAgY29uZmlybWF0aW9uIGZvciBhYm9ydGVkIGFuZCBkZWxldGVkIGZpbGVzXG4gICAgaWYgKFxuICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ2Fib3J0ZWQnIHx8XG4gICAgICBmaWxlLnVwbG9hZFN0YXRlID09PSAnZGVsZXRlZCdcbiAgICApIHtcbiAgICAgIHRoaXMub25Db25maXJtUmVtb3ZlKHsgb3JpZ2luYWw6IHVuZGVmaW5lZCwgcGF5bG9hZDogZmlsZSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcmtlZEZvckRlbGV0aW9uID0gZmlsZVxuICAgICAgdGhpcy5kZWxldGVNb2RhbFJlZi5vcGVuKClcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uQ29uZmlybVJlbW92ZShldmVudDogRGlhbG9nRXZlbnQ8TG9jYWxGaWxlICYgQVBJRmlsZT4pIHtcbiAgICBjb25zdCB7IHBheWxvYWQ6IGZpbGUgfSA9IGV2ZW50XG4gICAgaWYgKCFmaWxlIHx8ICF0aGlzLnNlcnZpY2UpIHJldHVyblxuXG4gICAgLy8gQWJvcnQgdXBsb2FkIGFuZCBzZXQgbG9jYWwgc3RhdGUgdG8gYWJvcnRlZCB0byBpbmZvcm0gdXNlclxuICAgIHN3aXRjaCAoZmlsZS51cGxvYWRTdGF0ZSkge1xuICAgICAgY2FzZSAnbG9jYWwnOlxuICAgICAgY2FzZSAndXBsb2FkaW5nJzpcbiAgICAgICAgZmlsZS51cGxvYWRSZXF1ZXN0cz8udW5zdWJzY3JpYmUoKVxuICAgICAgICBmaWxlLnVwbG9hZFN0YXRlID0gJ2Fib3J0ZWQnXG4gICAgICAgIGZpbGUuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlID0gJ01GRUZITTAwNCdcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KFxuICAgICAgICAgIHBpY2soXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICdmaWxlTmFtZScsXG4gICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgYnJlYWtcblxuICAgICAgLy8gUmVtb3ZlIGZpbGUgZnJvbSBzZXJ2aWNlIHRoZW4gc2V0IGxvY2FsIHN0YXRlIHRvIGFib3J0ZWQgdG8gaW5mb3JtIHVzZXJcbiAgICAgIGNhc2UgJ3VwbG9hZGVkJzpcbiAgICAgIGNhc2UgJ3ZhbGlkYXRpbmcnOlxuICAgICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgICAucmVtb3ZlRmlsZShmaWxlLmlkKVxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUud2FybixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gQWJvcnQgcmVnYXJkbGVzcyBvZiByZXNwb25zZSBmcm9tIHNlcnZlclxuICAgICAgICAgICAgZmlsZS51cGxvYWRSZXF1ZXN0cz8udW5zdWJzY3JpYmUoKVxuICAgICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICAgICAgZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUgPSAnTUZFRkhNMDA1J1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KFxuICAgICAgICAgICAgICBwaWNrKFxuICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICAgICAnZmlsZU5hbWUnLFxuICAgICAgICAgICAgICAgICdzdGF0dXMnLFxuICAgICAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIFJlbW92ZSBmaWxlIGZyb20gc2VydmljZSB0aGVuIGxvY2FsbHkgZm9yIFwiY29tcGxldGVkXCIgc3RhdGVzXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICBjYXNlICdkb25lJzpcbiAgICAgICAgOyh0aGlzLnNlcnZpY2UucmVtb3ZlRmlsZUZvclxuICAgICAgICAgID8gdGhpcy5zZXJ2aWNlLnJlbW92ZUZpbGVGb3IoZmlsZSlcbiAgICAgICAgICA6IHRoaXMuc2VydmljZS5yZW1vdmVGaWxlKGZpbGUuaWQpXG4gICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLndhcm4sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWRkKCgpID0+IHtcbiAgICAgICAgICAgIC8vIFJlbW92ZSByZWdhcmRsZXNzIG9mIHJlc3BvbnNlIGZyb20gc2VydmVyXG4gICAgICAgICAgICB0aGlzLmZpbGVzLmRlbGV0ZShmaWxlLmlkKVxuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBwaWNrKFxuICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAndXBsb2FkU3RhdGUnLFxuICAgICAgICAgICAgICAnZmlsZU5hbWUnLFxuICAgICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgJ2ludGVybmFsU3RhdHVzUmVhc29uQ29kZScsXG4gICAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBldmVudC51cGxvYWRTdGF0ZSA9ICdkZWxldGVkJ1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIEp1c3QgcmVtb3ZlIHRoZSBmaWxlIGxvY2FsbHkgdG8gY2xlYW4gdXBcbiAgICAgIGNhc2UgJ2Fib3J0ZWQnOlxuICAgICAgY2FzZSAnZGVsZXRlZCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmZpbGVzLmRlbGV0ZShmaWxlLmlkKVxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIC4uLnBpY2soXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICdmaWxlTmFtZScsXG4gICAgICAgICAgICAnaWQnLFxuICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAnaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlJyxcbiAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgKSxcbiAgICAgICAgICB1cGxvYWRTdGF0ZTogJ2RlbGV0ZWQnLFxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgRXZlbnQgaGFuZGxlciBmb3Igd2hlbiB0aGUgZmlsZXMgc2hvdWxkIGJlIHVwbG9hZGVkICovXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICghdGhpcy5maWxlcyB8fCAhdGhpcy5zZXJ2aWNlKSByZXR1cm5cbiAgICAvLyBJZiBsaXN0IGlzIG5vdCBlbmFibGVkIHVwZGF0ZSB0aGUgY29tcG9uZW50IHN0YXRlIHRvIHNob3cgcHJvZ3Jlc3NcbiAgICBpZiAoIXRoaXMubGlzdCkgdGhpcy5jb21wb25lbnRTdGF0ZSA9ICd1cGxvYWRpbmcnXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIHRoaXMuZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgLy8gRmlsdGVyIG91dCBhbGwgZmlsZXMgdGhhdCBhcmVuJ3QgY3VycmVudGx5IGNvbnNpZGVyZWQgbG9jYWxcbiAgICAgIGlmICghZmlsZS5yYXcgfHwgZmlsZS51cGxvYWRTdGF0ZSAhPT0gJ2xvY2FsJykgcmV0dXJuXG4gICAgICBmaWxlLnVwbG9hZFJlcXVlc3RzID0gdGhpcy5zZXJ2aWNlIS51cGxvYWRGaWxlKGZpbGUucmF3ISkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSB1cGxvYWQgcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgaWYgKGZpbGUudXBsb2FkU3RhdGUgIT09ICd1cGxvYWRpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICd1cGxvYWRpbmcnXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHBpY2soZmlsZSwgJ3VwbG9hZFN0YXRlJywgJ2ZpbGVOYW1lJykpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICAgKDEwMCAqIGV2ZW50LmxvYWRlZCkgLyAoZXZlbnQudG90YWwgfHwgMTAwKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmaWxlLnVwbG9hZFN0YXRlID0gJ3VwbG9hZGluZydcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICBpZiAoZXZlbnQuYm9keT8uaWQpIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGZpbGUgaWRcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLmRlbGV0ZShmaWxlLmlkKVxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBmaWxlIHdpdGggaW5mb3JtYXRpb24gZnJvbSB0aGUgQVBJXG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihmaWxlLCBldmVudC5ib2R5KVxuICAgICAgICAgICAgICAgIGZpbGUucHJvZ3Jlc3MgPSAxMDBcbiAgICAgICAgICAgICAgICBmaWxlLnVwbG9hZFN0YXRlID0gdGhpcy5kZXRlcm1pbmVVcGxvYWRTdGF0ZShmaWxlLnN0YXR1cylcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgd2l0aCBuZXcgZmlsZSBpZFxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMuc2V0KGZpbGUuaWQsIGZpbGUpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICAgICAgcGljayhcbiAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAndXBsb2FkU3RhdGUnLFxuICAgICAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIC8vIENoZWNrIGlmIHZhbGlkYXRpb24gaXMgcmVxdWlyZWQsIHRoZW4gc3RhcnQgcG9sbGluZ1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9PT0gJ3VwbG9hZGVkJyB8fFxuICAgICAgICAgICAgICAgIGZpbGUudXBsb2FkU3RhdGUgPT09ICd2YWxpZGF0aW5nJ1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsaWRpdHkoZmlsZSwgdGhpcy50aHJvdHRsZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2V0Q29tcG9uZW50U3RhdGVEb25lKClcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpXG4gICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICAgIGZpbGUuc3RhdHVzID0gJ2Fib3J0ZWQnXG4gICAgICAgICAgLy8gdG9kbzogd3JvbmdcbiAgICAgICAgICBmaWxlLnN0YXR1c1JlYXNvbkluZm9ybWF0aW9uID0gW1xuICAgICAgICAgICAgeyBvcmlnaW5hdG9ySWQ6ICdsb2NhbCcsIHJlYXNvbjogJ2RyYWdEcm9wLmVycm9yLk1GRUZITTAwMScgfSxcbiAgICAgICAgICBdXG4gICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KFxuICAgICAgICAgICAgcGljayhcbiAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgJ3VwbG9hZFN0YXRlJyxcbiAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICAgICAgICdzdGF0dXNSZWFzb25JbmZvcm1hdGlvbicsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBVc2luZyB0aGUgc3RhdGUgbWFwIGNvbnZlcnQgYGFwaUZpbGUuc3RhdGVgIHRvIG9uZSBvZiB7QGxpbmsgVXBsb2FkU3RhdGV9XG4gICAqIEBwYXJhbSBhcGlTdGF0ZSB0aGUgc3RhdGUgZ2l2ZW4gYnkgdGhlIGZpbGUgdG8gYmUgdXNlZCBmb3IgbWFwcGluZ1xuICAgKi9cbiAgZGV0ZXJtaW5lVXBsb2FkU3RhdGUoYXBpU3RhdGU6IHN0cmluZyk6IFVwbG9hZFN0YXRlIHtcbiAgICAvLyBSZXZlcnNlIHNvIHRoYXQgbGF0ZXIgc3RhdGVzIG92ZXJyaWRlIGVhcmxpZXJcbiAgICBjb25zdCBzdGF0ZUVudHJpZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLnN0YXRlTWFwKS5yZXZlcnNlKClcbiAgICBmb3IgKGNvbnN0IFt1cGxvYWRTdGF0ZSwgYXBpU3RhdGVzXSBvZiBzdGF0ZUVudHJpZXMpIHtcbiAgICAgIGlmICh0aGlzLnVwbG9hZFN0YXRlSXNBcnJheShhcGlTdGF0ZXMpKSB7XG4gICAgICAgIGlmIChhcGlTdGF0ZXMuaW5jbHVkZXMoYXBpU3RhdGUpKSByZXR1cm4gdXBsb2FkU3RhdGUgYXMgYW55XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXBpU3RhdGVzID09PSBhcGlTdGF0ZSkgcmV0dXJuIHVwbG9hZFN0YXRlIGFzIGFueVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ2Vycm9yJ1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICB1cGxvYWRTdGF0ZUlzQXJyYXkoc3RhdGU6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RhdGUgaXMgc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHN0YXRlKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCB1c2VkIGZvciB0cmFuc2xhdGlvbiB0ZW1wbGF0aW5nIHBhcmFtZXRlcnMgKi9cbiAgdHJhbnNsYXRlUGFyYW1zKGZpbGU6IExvY2FsRmlsZSAmIEFQSUZpbGUpIHtcbiAgICByZXR1cm4geyAuLi5maWxlLCBmaWxlTGltaXQ6ICh0aGlzLmZpbGVMaW1pdCAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDMpIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQb2xsIHRoZSBzdGF0dXMgZW5kcG9pbnQgdG8gZGV0ZXJtaW5lIHdoZW4gZmlsZSBpcyB2YWxpZFxuICAgKiBAcGFyYW0gZmlsZSBmaWxlIHVzZWQgdG8gY2hlY2sgc3RhdGUgYW5kIHVwZGF0ZVxuICAgKiBAcGFyYW0gZGVsYXkgaG93IGxvbmcgZWFjaCBpbnRlcnZhbCBzaG91bGQgd2FpdCBiZWZvcmUgc2VuZGluZyBhIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgY2hlY2tWYWxpZGl0eShmaWxlOiBMb2NhbEZpbGUgJiBBUElGaWxlLCBkZWxheTogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHJldHVyblxuICAgIGZpbGUudXBsb2FkUmVxdWVzdHMgPSB0aW1lcigwLCBkZWxheSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzeW5jRmV0Y2hTdGF0dXMgPVxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlICYmIHRoaXMuc2VydmljZS5mZXRjaFN0YXR1c0ZvclxuICAgICAgICAgICAgICA/IHRoaXMuc2VydmljZS5mZXRjaFN0YXR1c0ZvcihmaWxlKVxuICAgICAgICAgICAgICA6IHRoaXMuc2VydmljZSEuZmV0Y2hTdGF0dXMoZmlsZS5pZClcbiAgICAgICAgICByZXR1cm4gYXN5bmNGZXRjaFN0YXR1c1xuICAgICAgICB9KSxcbiAgICAgICAgcmV0cnlXaGVuKFxuICAgICAgICAgIHJldHJ5U3RyYXRlZ3koe1xuICAgICAgICAgICAgbWF4UmV0cnlBdHRlbXB0czogdGhpcy5yZXRyeUF0dGVtcHRzLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgICB0YXAoKGZpbGVTdGF0dXMpID0+IHtcbiAgICAgICAgICAvLyBDb250aW51b3VzbHkgdXBkYXRlIGZpbGUgc3RhdGUgdG8gc2hvdyBzdGVwIHByb2dyZXNzXG4gICAgICAgICAgaWYgKGZpbGVTdGF0dXMpIHtcbiAgICAgICAgICAgIC8vIEVtaXQgZXZlbnQgd2hlbiBzdGF0dXMgY2hhbmdlc1xuICAgICAgICAgICAgaWYgKGZpbGUuc3RhdHVzICE9PSBmaWxlU3RhdHVzLnN0YXR1cykge1xuICAgICAgICAgICAgICBmaWxlLnN0YXR1cyA9IGZpbGVTdGF0dXMuc3RhdHVzXG4gICAgICAgICAgICAgIGZpbGUuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlID0gdGhpcy5mYWxsYmFja0Vycm9yKFxuICAgICAgICAgICAgICAgIGZpbGVTdGF0dXMuaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZpbGUuc3RhdHVzUmVhc29uSW5mb3JtYXRpb24gPSBmaWxlU3RhdHVzLnN0YXR1c1JlYXNvbkluZm9ybWF0aW9uXG4gICAgICAgICAgICAgIGZpbGUudXBsb2FkU3RhdGUgPSB0aGlzLmRldGVybWluZVVwbG9hZFN0YXRlKGZpbGVTdGF0dXMuc3RhdHVzKVxuICAgICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICAgICAgcGljayhcbiAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAndXBsb2FkU3RhdGUnLFxuICAgICAgICAgICAgICAgICAgJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICAgICAnc3RhdHVzJyxcbiAgICAgICAgICAgICAgICAgICdpbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUnLFxuICAgICAgICAgICAgICAgICAgJ3N0YXR1c1JlYXNvbkluZm9ybWF0aW9uJyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gUmVtb3ZlIHZhbGlkYXRpb24gc3RhdGVcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChhcGlGaWxlKSA9PlxuICAgICAgICAgICAgISFhcGlGaWxlICYmXG4gICAgICAgICAgICB0aGlzLmRldGVybWluZVVwbG9hZFN0YXRlKGFwaUZpbGUuc3RhdHVzKSAhPT0gJ3VwbG9hZGVkJyAmJlxuICAgICAgICAgICAgdGhpcy5kZXRlcm1pbmVVcGxvYWRTdGF0ZShhcGlGaWxlLnN0YXR1cykgIT09ICd2YWxpZGF0aW5nJyxcbiAgICAgICAgKSxcbiAgICAgICAgLy8gVGFrZSBmaXJzdCBzdGF0ZSBhZnRlciB2YWxpZGF0aW9uXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmFsbFZhbGlkYXRpb25Eb25lKHRoaXMuZmlsZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvbXBvbmVudFN0YXRlRG9uZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlcnIpXG4gICAgICAgICAgZmlsZS51cGxvYWRTdGF0ZSA9ICdhYm9ydGVkJ1xuICAgICAgICAgIGZpbGUuc3RhdHVzID0gJ2Fib3J0ZWQnXG4gICAgICAgICAgZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGUgPSAnTUZFRkhNMDAxJ1xuICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdChcbiAgICAgICAgICAgIHBpY2soXG4gICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICd1cGxvYWRTdGF0ZScsXG4gICAgICAgICAgICAgICdmaWxlTmFtZScsXG4gICAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAgICdzdGF0dXMnLFxuICAgICAgICAgICAgICAnaW50ZXJuYWxTdGF0dXNSZWFzb25Db2RlJyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgIHRoaXMuc2V0Q29tcG9uZW50U3RhdGVEb25lKClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGZhbGxiYWNrRXJyb3IoY29kZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLmVycm9yQ29kZXMgPT0gbnVsbCB8fCAoY29kZSAmJiB0aGlzLmVycm9yQ29kZXMuaW5jbHVkZXMoY29kZSkpKSB7XG4gICAgICByZXR1cm4gY29kZSA/PyBudWxsXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnTUZFRkhNMDAxJ1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBzbyB0aGF0IG5vIGZpbGVzIGFyZSBzdGlsbCB2YWxpZGF0aW5nXG4gICAqL1xuICBwcml2YXRlIGFsbFZhbGlkYXRpb25Eb25lKGZpbGVzOiBNYXA8c3RyaW5nLCBMb2NhbEZpbGU+KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMudmFsdWVzKCkpLmV2ZXJ5KFxuICAgICAgKGZpbGUpID0+IGZpbGUudXBsb2FkU3RhdGUgIT09ICd2YWxpZGF0aW5nJyxcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgc28gdGhhdCBubyBmaWxlcyBhcmUgc3RpbGwgdXBsb2FkaW5nXG4gICAqL1xuICBwcml2YXRlIGFsbFVwbG9hZGluZ0RvbmUoZmlsZXM6IE1hcDxzdHJpbmcsIExvY2FsRmlsZT4pIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaWxlcy52YWx1ZXMoKSkuZXZlcnkoXG4gICAgICAoZmlsZSkgPT4gZmlsZS51cGxvYWRTdGF0ZSAhPT0gJ3VwbG9hZGluZycsXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byB1cGRhdGUgdGhlIGNvbXBvbmVudCBzdGF0ZSB0byBkb25lIGFuZCB0aGVuIGJhY2sgdG8gbm9ybWFsXG4gICAqL1xuICBwcml2YXRlIHNldENvbXBvbmVudFN0YXRlRG9uZSgpIHtcbiAgICBpZiAoIXRoaXMubGlzdCkgdGhpcy5jb21wb25lbnRTdGF0ZSA9ICdkb25lJ1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50U3RhdGUgPT09ICdkb25lJykgdGhpcy5jb21wb25lbnRTdGF0ZSA9ICdub3JtYWwnXG4gICAgfSwgMzAwMClcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgPGZvcm0gZW5jdHlwZT1cIm11bHRpcGFydC9mb3JtLWRhdGFcIiAjZHJhZ0Ryb3BGb3JtPlxuICAgIDxkaXYgY2xhc3M9XCJnZHMtZHJhZy1kcm9wXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJnZHMtZHJhZy1kcm9wX19pbnB1dFwiXG4gICAgICAgIGlkPVwiZHJhZy1kcm9wXCJcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZSAmJiBsaXN0XCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnZ2RzLWRyYWctZHJvcF9fbGFiZWwnOiB0cnVlLFxuICAgICAgICAgICdnZHMtZHJhZy1kcm9wX19sYWJlbC0tYWJvdmUnOiBjb21wb25lbnRTdGF0ZSA9PT0gJ292ZXInLFxuICAgICAgICB9XCJcbiAgICAgICAgZm9yPVwiZHJhZy1kcm9wXCJcbiAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctcGlja2VyJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtYnVzeV09XCJsb2FkaW5nXCJcbiAgICAgICAgKGRyYWdlbnRlcik9XCJvbkRyYWdFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cIm9uRHJhZ0VudGVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAoZHJhZ2VuZCk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxuICAgICAgICBbbmdTd2l0Y2hdPVwiY29tcG9uZW50U3RhdGVcIlxuICAgICAgPlxuICAgICAgICA8IS0tIENPTVBPTkVOVCBTVEFURSBOT1JNQUwgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidub3JtYWwnXCI+XG4gICAgICAgICAgPGdkcy1pY29uLWNsb3VkLXVwbG9hZCAqbmdnQ29yZUVsZW1lbnQ+PC9nZHMtaWNvbi1jbG91ZC11cGxvYWQ+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxlbT57eyB0KCdkcmFnRHJvcC5sYWJlbC5maWxlQ2hvb3NlJykgfX08L2VtPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNEcmFnRHJvcEF2YWlsYWJsZVwiPnt7XG4gICAgICAgICAgICAgICAgdCgnZHJhZ0Ryb3AubGFiZWwuZmlsZURyYWcnKVxuICAgICAgICAgICAgICB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXR5cGVzXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVUeXBlcycpIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8IS0tIENPTVBPTkVOVCBTVEFURSBVUExPQURJTkcgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIid1cGxvYWRpbmcnXCI+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImZpbGVuYW1lXCI+e3sgbGFzdEZpbGU/LmZpbGVOYW1lIH19PC9zdHJvbmc+XG5cbiAgICAgICAgICA8IS0tIFVQTE9BRElORyBTVEFURSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwibGFzdEZpbGU/LnVwbG9hZFN0YXRlID09PSAndXBsb2FkaW5nJ1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIGZpbGU6IGxhc3RGaWxlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8IS0tIFVQTE9BREVEIFNUQVRFIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJsYXN0RmlsZT8udXBsb2FkU3RhdGUgPT09ICd1cGxvYWRlZCdcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBmaWxlOiBsYXN0RmlsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0KCdkcmFnRHJvcC50ZXh0LmZpbGVTdGF0ZVVwbG9hZGVkJyksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwhLS0gVkFMSURBVElORyBTVEFURSAtLT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwibGFzdEZpbGU/LnVwbG9hZFN0YXRlID09PSAndmFsaWRhdGluZydcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICBmaWxlOiBsYXN0RmlsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiB0KCdkcmFnRHJvcC50ZXh0LmZpbGVTdGF0ZVZhbGlkYXRpbmcnKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gQ09NUE9ORU5UIFNUQVRFIERPTkUgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidkb25lJ1wiPlxuICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVVcGxvYWRlZCcsIHsgZmlsZW5hbWU6IGxhc3RGaWxlPy5maWxlTmFtZSB9KVxuICAgICAgICAgIH19PGdkcy1pY29uLWNoZWNrbWFyayAqbmdnQ29yZUVsZW1lbnQ+PC9nZHMtaWNvbi1jaGVja21hcms+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8IS0tIExJU1QgLS0+XG4gICAgICA8dGFibGVcbiAgICAgICAgY2xhc3M9XCJnZHMtdGFibGUgZmlsZS1saXN0XCJcbiAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZmlsZS1saXN0J1wiXG4gICAgICAgICpuZ0lmPVwibGlzdFwiXG4gICAgICA+XG4gICAgICAgIDx0aGVhZD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggKm5nSWY9XCJzZWxlY3RhYmxlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtZmllbGQtY2hlY2tib3gtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJGaWVsZCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgICBpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInNlbGVjdC1hbGxcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJnZHMtdGFibGVfX3ByaW1hcnktY29sIGNvbC1uYW1lXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVOYW1lJykgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtc3RhdHVzXCI+XG4gICAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxhYmVsLmZpbGVTdGF0dXMnKSB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImNvbC1hY3Rpb25zXCI+PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cInRob29rICsgJy1maWxlJ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlcyB8IHZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtZmllbGQtY2hlY2tib3gtd3JhcFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJGaWVsZCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZpbGUtY2hlY2tib3gtJyArIGZpbGUuaWRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2ZpbGUtY2hlY2tib3gtJyArIGZpbGUuaWRcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgY2xhc3M9XCJnZHMtdGFibGVfX3ByaW1hcnktY29sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZmlsZS1uYW1lJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZpbGUuZmlsZU5hbWUgfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZmlsZS1zdGF0dXMnXCJcbiAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImZpbGUudXBsb2FkU3RhdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8IS0tIFVQTE9BRElORyBTVEFURSAtLT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1N3aXRjaENhc2VdPVwiJ3VwbG9hZGluZydcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgIDwhLS0gVVBMT0FERUQgU1RBVEUgLS0+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIid1cGxvYWRlZCdcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdCgnZHJhZ0Ryb3AudGV4dC5maWxlU3RhdGVVcGxvYWRlZCcpLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgPCEtLSBWQUxJREFUSU5HIFNUQVRFIC0tPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nU3dpdGNoQ2FzZV09XCIndmFsaWRhdGluZydcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdCgnZHJhZ0Ryb3AudGV4dC5maWxlU3RhdGVWYWxpZGF0aW5nJyksXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICA8IS0tIEFCT1JURUQgU1RBVEUgLS0+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidhYm9ydGVkJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLXRleHRcIlxuICAgICAgICAgICAgICAgICAgW3RyYW5zbG9jb109XCJcbiAgICAgICAgICAgICAgICAgICAgJ2RyYWdEcm9wLmVycm9yLicgKyBmaWxlLmludGVybmFsU3RhdHVzUmVhc29uQ29kZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFt0cmFuc2xvY29QYXJhbXNdPVwidHJhbnNsYXRlUGFyYW1zKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGVcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgPCEtLSBFUlJPUiBTVEFURSAtLT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1N3aXRjaENhc2VdPVwiJ2Vycm9yJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLXRleHRcIlxuICAgICAgICAgICAgICAgICAgW3RyYW5zbG9jb109XCJcbiAgICAgICAgICAgICAgICAgICAgJ2RyYWdEcm9wLmVycm9yLicgKyBmaWxlLmludGVybmFsU3RhdHVzUmVhc29uQ29kZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFt0cmFuc2xvY29QYXJhbXNdPVwidHJhbnNsYXRlUGFyYW1zKGZpbGUpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsZS5pbnRlcm5hbFN0YXR1c1JlYXNvbkNvZGVcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXRhaWxzQ2xpY2suZW1pdChmaWxlKVwiXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICBmaWxlLnN0YXR1c1JlYXNvbkluZm9ybWF0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbGUuc3RhdHVzUmVhc29uSW5mb3JtYXRpb24ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHQoJ2RyYWdEcm9wLmxpbmsudmlld0RldGFpbHMnKSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICA8IS0tIERPTkUgU1RBVEUgLS0+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdTd2l0Y2hDYXNlXT1cIidkb25lJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VjY2Vzcy10ZXh0XCI+e3tcbiAgICAgICAgICAgICAgICAgIHQoJ2RyYWdEcm9wLnRleHQuZmlsZVN0YXRlRG9uZScpXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnZHMtdGFibGVfX251bWVyaWMtY29sXCI+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmVcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVtb3ZlKGZpbGUuaWQsIGZpbGUudXBsb2FkU3RhdGUpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFkaXNhYmxlUmVtb3ZlLmluY2x1ZGVzKGZpbGUudXBsb2FkU3RhdGUpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxnZHMtaWNvbi1jcm9zcy1zbWFsbCAqbmdnQ29yZUVsZW1lbnQ+PC9nZHMtaWNvbi1jcm9zcy1zbWFsbD5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuXG4gIDxuZ2d2LWRpYWxvZ1xuICAgICNkZWxldGVNb2RhbFJlZlxuICAgIFt0aXRsZV09XCJ0KCdkcmFnRHJvcC50ZXh0LmZpbGVDYW5jZWxNb2RhbFRpdGxlJylcIlxuICAgIFtjb250ZW50XT1cIlxuICAgICAgdCgnZHJhZ0Ryb3AudGV4dC5maWxlQ2FuY2VsTW9kYWxDb250ZW50Jywge1xuICAgICAgICBuYW1lOiBtYXJrZWRGb3JEZWxldGlvbj8uZmlsZU5hbWUsXG4gICAgICB9KVxuICAgIFwiXG4gICAgW3BheWxvYWRdPVwibWFya2VkRm9yRGVsZXRpb25cIlxuICAgIFtidXR0b25zXT1cIntcbiAgICAgIG5lZ2F0aXZlOiAnZHJhZ0Ryb3AudGV4dC5maWxlQ2FuY2VsQ29uZmlybScsXG4gICAgICBwb3NpdGl2ZTogJ2RyYWdEcm9wLnRleHQuZmlsZUNhbmNlbERlbnknLFxuICAgIH1cIlxuICAgIChuZ2d2TmVnYXRpdmVFdmVudCk9XCJvbkNvbmZpcm1SZW1vdmUoJGFueSgkZXZlbnQpKVwiXG4gID48L25nZ3YtZGlhbG9nPlxuXG4gIDwhLS0gUFJPR1JFU1MgVEVNUExBVEUgLS0+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI3Byb2dyZXNzVGVtcGxhdGVcbiAgICBsZXQtZmlsZT1cIlxuICAgIGZpbGVcIlxuICAgIGxldC10ZXh0PVwidGV4dFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtd3JhcHBlclwiPlxuICAgICAgPHByb2dyZXNzXG4gICAgICAgIGNsYXNzPVwiZ2RzLXByb2dyZXNzLWJhciBwcm9ncmVzc1wiXG4gICAgICAgIG1heD1cIjEwMFwiXG4gICAgICAgIFt2YWx1ZV09XCJmaWxlLnByb2dyZXNzXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICB0KCdkcmFnRHJvcC50ZXh0LmZpbGVTdGF0ZVVwbG9hZGluZycsIHtcbiAgICAgICAgICAgIHVwbG9hZGVkOlxuICAgICAgICAgICAgICAoZmlsZS5yYXc/LnNpemUgKiAoZmlsZS5wcm9ncmVzcyAvIDEwMCkpIC8gMTAyNCB8IG51bWJlcjogJzAuMC0wJyxcbiAgICAgICAgICAgIHNpemU6IGZpbGUucmF3Py5zaXplIC8gMTAyNCB8IG51bWJlcjogJzAuMC0wJyxcbiAgICAgICAgICAgIHByb2dyZXNzOiBmaWxlLnByb2dyZXNzLFxuICAgICAgICAgICAgdW5pdDogJ2tCJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9fVxuICAgICAgPC9wcm9ncmVzcz5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0ZU1hcC52YWxpZGF0aW5nLmxlbmd0aFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnZHMtcHJvZ3Jlc3MtaW5kaWNhdG9yIGluZGljYXRvclwiXG4gICAgICAgICAgKm5nSWY9XCJ1cGxvYWRTdGF0ZUlzQXJyYXkoc3RhdGVNYXAudmFsaWRhdGluZyk7IGVsc2Ugc2luZ2xlVmFsaWRhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImdkcy1wcm9ncmVzcy1pbmRpY2F0b3JfX3N0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLi1kb25lXT1cImkgPD0gc3RhdGVNYXAudmFsaWRhdGluZy5pbmRleE9mKGZpbGUuc3RhdHVzKVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgc3RhdGUgb2Ygc3RhdGVNYXAudmFsaWRhdGluZzsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVZhbGlkYXRpb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnZHMtcHJvZ3Jlc3MtaW5kaWNhdG9yIGluZGljYXRvclwiPlxuICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2VxZXFlcSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImdkcy1wcm9ncmVzcy1pbmRpY2F0b3JfX3N0ZXBcIlxuICAgICAgICAgICAgW2NsYXNzLi1kb25lXT1cImZpbGUuc3RhdHVzID09IHN0YXRlTWFwLnZhbGlkYXRpbmdcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8IS0tIGVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2VxZXFlcSAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtdGV4dFwiPlxuICAgICAge3tcbiAgICAgICAgdGV4dCB8fFxuICAgICAgICAgIHQoJ2RyYWdEcm9wLnRleHQuZmlsZVN0YXRlVXBsb2FkaW5nJywge1xuICAgICAgICAgICAgdXBsb2FkZWQ6XG4gICAgICAgICAgICAgIChmaWxlLnJhdz8uc2l6ZSAqIChmaWxlLnByb2dyZXNzIC8gMTAwKSkgLyAxMDI0IHwgbnVtYmVyOiAnMC4wLTAnLFxuICAgICAgICAgICAgc2l6ZTogZmlsZS5yYXc/LnNpemUgLyAxMDI0IHwgbnVtYmVyOiAnMC4wLTAnLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6IGZpbGUucHJvZ3Jlc3MsXG4gICAgICAgICAgICB1bml0OiAna0InLFxuICAgICAgICAgIH0pXG4gICAgICB9fVxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco';\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared';\nimport { NggvModalModule } from '@sebgroup/green-angular/src/v-angular/modal';\nimport { NggvDragDropComponent } from './drag-drop.component';\nimport { ValuePipe } from './drag-drop.pipes';\nimport * as i0 from \"@angular/core\";\nexport class NggvDragDropModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, declarations: [ValuePipe, NggvDragDropComponent], imports: [HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule], exports: [NggvDragDropComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: 'dragDrop',\n },\n ], imports: [HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDragDropModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule,\n ],\n declarations: [ValuePipe, NggvDragDropComponent],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: 'dragDrop',\n },\n ],\n exports: [NggvDragDropComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RyYWctZHJvcC9kcmFnLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTs7QUFvQjdDLE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLGlCQVZkLFNBQVMsRUFBRSxxQkFBcUIsYUFON0MsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixlQUFlO1lBQ2Ysb0JBQW9CO1lBQ3BCLFlBQVksYUFTSixxQkFBcUI7K0dBR3BCLGtCQUFrQixhQVRsQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixRQUFRLEVBQUUsVUFBVTthQUNyQjtTQUNGLFlBWkMsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixlQUFlO1lBQ2Ysb0JBQW9CO1lBQ3BCLFlBQVk7OzJGQVlILGtCQUFrQjtrQkFsQjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDYjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUM7b0JBQ2hELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLFVBQVU7eUJBQ3JCO3FCQUNGO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBUUkFOU0xPQ09fU0NPUEUsIFRyYW5zbG9jb01vZHVsZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbydcblxuaW1wb3J0IHsgTmdnQ29yZVdyYXBwZXJNb2R1bGUgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvbGliL3NoYXJlZCdcbmltcG9ydCB7IE5nZ3ZNb2RhbE1vZHVsZSB9IGZyb20gJ0BzZWJncm91cC9ncmVlbi1hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwnXG5pbXBvcnQgeyBOZ2d2RHJhZ0Ryb3BDb21wb25lbnQgfSBmcm9tICcuL2RyYWctZHJvcC5jb21wb25lbnQnXG5pbXBvcnQgeyBWYWx1ZVBpcGUgfSBmcm9tICcuL2RyYWctZHJvcC5waXBlcydcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgVHJhbnNsb2NvTW9kdWxlLFxuICAgIE5nZ3ZNb2RhbE1vZHVsZSxcbiAgICBOZ2dDb3JlV3JhcHBlck1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1ZhbHVlUGlwZSwgTmdndkRyYWdEcm9wQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogVFJBTlNMT0NPX1NDT1BFLFxuICAgICAgdXNlVmFsdWU6ICdkcmFnRHJvcCcsXG4gICAgfSxcbiAgXSxcbiAgZXhwb3J0czogW05nZ3ZEcmFnRHJvcENvbXBvbmVudF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdndkRyYWdEcm9wTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci1zcmMtdi1hbmd1bGFyLWRyYWctZHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RyYWctZHJvcC9zZWJncm91cC1ncmVlbi1hbmd1bGFyLXNyYy12LWFuZ3VsYXItZHJhZy1kcm9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i5.ValuePipe"],"mappings":"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"}
|