@colijnit/corecomponents_v12 259.1.0 → 259.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/colijnit-corecomponents_v12.umd.js +137 -247
- package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
- package/colijnit-corecomponents_v12-259.1.0.tgz +0 -0
- package/colijnit-corecomponents_v12.metadata.json +1 -1
- package/esm2015/lib/components/grid-toolbar/grid-toolbar.component.js +2 -2
- package/esm2015/lib/components/simple-grid/simple-grid.component.js +242 -193
- package/esm2015/lib/core/utils/file-utils.js +2 -2
- package/fesm2015/colijnit-corecomponents_v12.js +254 -333
- package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
- package/lib/components/simple-grid/simple-grid.component.d.ts +5 -2
- package/lib/components/simple-grid/style/_layout.scss +1 -0
- package/lib/core/utils/file-utils.d.ts +1 -1
- package/package.json +1 -1
- package/esm2015/lib/core/enum/co-document-image-display-kind.enum.js +0 -7
- package/esm2015/lib/core/enum/object-right-type.enum.js +0 -7
- package/esm2015/lib/core/enum/table-name.enum.js +0 -81
- package/esm2015/lib/core/model/co-document-right.bo.js +0 -3
- package/esm2015/lib/core/model/co-document.bo.js +0 -121
- package/lib/core/enum/co-document-image-display-kind.enum.d.ts +0 -5
- package/lib/core/enum/object-right-type.enum.d.ts +0 -5
- package/lib/core/enum/table-name.enum.d.ts +0 -79
- package/lib/core/model/co-document-right.bo.d.ts +0 -6
- package/lib/core/model/co-document.bo.d.ts +0 -61
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { FileTypeInternal } from '../enum/file-type-internal.enum';
|
|
3
|
-
import { CoDocument } from '../model/co-document.bo';
|
|
4
3
|
import { CoDocumentType } from '../enum/co-document-type.enum';
|
|
5
4
|
import { FileType } from '../enum/file-type.enum';
|
|
6
5
|
import { StringUtils } from './string-utils';
|
|
7
6
|
import { NumberUtils } from './number-utils';
|
|
7
|
+
import { CoDocument } from '@colijnit/mainapi/build/model/co-document.bo';
|
|
8
8
|
const MaxUploadSize = 3145728; // 3Mb
|
|
9
9
|
// @dynamic
|
|
10
10
|
export class FileUtils {
|
|
@@ -264,4 +264,4 @@ export class FileUtils {
|
|
|
264
264
|
document.body.removeChild(link);
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29yZS91dGlscy9maWxlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sYUFBYSxHQUFXLE9BQU8sQ0FBQyxDQUFDLE1BQU07QUFFN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxTQUFTO0lBRWxCLHNDQUFzQztJQUMvQixNQUFNLEtBQUssaUJBQWlCO1FBQy9CLE9BQU8sYUFBYSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxZQUFvQixFQUFFLFFBQWdCO1FBQ3RFLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5RyxDQUFDO0lBRUQsc0hBQXNIO0lBQy9HLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxRQUFnQjtRQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7U0FDckM7UUFDRCxNQUFNLFdBQVcsR0FBYSxRQUFRLENBQUMsS0FB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LENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRXBGLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDdkI7WUFDTCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsT0FBZTtRQUNqRCxNQUFNLElBQUksR0FBVyxPQUFPLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxNQUFNLENBQUMsZ0NBQWdDLENBQUMsT0FBZTtRQUMxRCxNQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsT0FBTyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBZSxFQUFFLFFBQWdCO1FBQy9ELE1BQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZVR5cGVJbnRlcm5hbCB9IGZyb20gJy4uL2VudW0vZmlsZS10eXBlLWludGVybmFsLmVudW0nO1xyXG5pbXBvcnQgeyBDb0RvY3VtZW50IH0gZnJvbSAnLi4vbW9kZWwvY28tZG9jdW1lbnQuYm8nO1xyXG5pbXBvcnQgeyBDb0RvY3VtZW50VHlwZSB9IGZyb20gJy4uL2VudW0vY28tZG9jdW1lbnQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgRmlsZVR5cGUgfSBmcm9tICcuLi9lbnVtL2ZpbGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICcuL3N0cmluZy11dGlscyc7XHJcbmltcG9ydCB7IE51bWJlclV0aWxzIH0gZnJvbSAnLi9udW1iZXItdXRpbHMnO1xyXG5cclxuY29uc3QgTWF4VXBsb2FkU2l6ZTogbnVtYmVyID0gMzE0NTcyODsgLy8gM01iXHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgRmlsZVV0aWxzIHtcclxuXHJcbiAgICAvLyBSZXR1cm5zIE1heFVwbG9hZFNpemUgaW4gTWVnYWJ5dGVzLlxyXG4gICAgcHVibGljIHN0YXRpYyBnZXQgTWF4VXBsb2FkU2l6ZUluTWIoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTWF4VXBsb2FkU2l6ZSAvIDEwMjQgLyAxMDI0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgRG9jdW1lbnRCb2R5VG9EYXRhVXJpKGRvY3VtZW50Qm9keTogc3RyaW5nLCBtaW1lVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gU3RyaW5nVXRpbHMuSXNTdHJpbmdXaXRoTGVuZ3RoKGRvY3VtZW50Qm9keSkgPyBcImRhdGE6XCIgKyBtaW1lVHlwZSArIFwiO2Jhc2U2NCxcIiArIGRvY3VtZW50Qm9keSA6IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJucyB0aGUgZmlsZSB0eXBlIG9mIHRoZSBnaXZlbiBmaWxlLCBieSBsb29raW5nIGF0IGl0cyBleHRlbnNpb24uIFJldHVybnMgRmlsZVR5cGUuVW5kZWZpbmVkIGlmIG5vdCByZWNvZ25pc2VkLlxyXG4gICAgcHVibGljIHN0YXRpYyBGaWxlTmFtZVRvRmlsZVR5cGVJbnRlcm5hbChmaWxlTmFtZTogc3RyaW5nKTogRmlsZVR5cGVJbnRlcm5hbCB7XHJcbiAgICAgICAgaWYgKCFmaWxlTmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5VbmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0cmluZ1BhcnRzOiBzdHJpbmdbXSA9IGZpbGVOYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBjb25zdCBleHRlbnNpb246IHN0cmluZyA9IHN0cmluZ1BhcnRzW3N0cmluZ1BhcnRzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIHN3aXRjaCAoZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgY2FzZSBcInBkblwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiYm1wXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJnaWZcIjpcclxuICAgICAgICAgICAgY2FzZSBcImpwZ1wiOlxyXG4gICAgICAgICAgICBjYXNlIFwianBlZ1wiOlxyXG4gICAgICAgICAgICBjYXNlIFwianBlXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJqZmlmXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJwbmdcIjpcclxuICAgICAgICAgICAgY2FzZSBcInRpZlwiOlxyXG4gICAgICAgICAgICBjYXNlIFwidGlmZlwiOlxyXG4gICAgICAgICAgICBjYXNlIFwidGdhXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkZHNcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLkltYWdlO1xyXG4gICAgICAgICAgICBjYXNlIFwic3dmXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5Td2Y7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ4bHNcIjpcclxuICAgICAgICAgICAgY2FzZSBcInhsc3hcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLkV4Y2VsU2hlZXQ7XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb2NcIjpcclxuICAgICAgICAgICAgY2FzZSBcImRvY3hcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLldvcmREb2N1bWVudDtcclxuICAgICAgICAgICAgY2FzZSBcInBkZlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuUGRmO1xyXG4gICAgICAgICAgICBjYXNlIFwidHh0XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5UZXh0RmlsZTtcclxuICAgICAgICAgICAgY2FzZSBcImV4ZVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuRXhlY3V0YWJsZTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLlVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2tzIGlmIGZpbGV0eXBlIG9mIGdpdmVuIGZpbGUgaXMgb2YgdHlwZSBpbWFnZS4gUG9zc2libGUgZmlsZXR5cGVzOiBpbWFnZS9wbmcsIGltYWdlL2JtcCwgaW1hZ2UvanBlZywgZXRjLlxyXG4gICAgcHVibGljIHN0YXRpYyBJc0ltYWdlRmlsZShmaWxlOiBGaWxlIHwgQ29Eb2N1bWVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghZmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBmaWxlTmFtZTogc3RyaW5nO1xyXG4gICAgICAgIGxldCBtaW1lVHlwZTogc3RyaW5nO1xyXG4gICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgQ29Eb2N1bWVudCkge1xyXG4gICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICAgIG1pbWVUeXBlID0gZmlsZS5taW1lVHlwZUludGVybmFsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lID0gZmlsZS5uYW1lO1xyXG4gICAgICAgICAgICBtaW1lVHlwZSA9IGZpbGUudHlwZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1pbWVUeXBlICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKEZpbGVVdGlscy5GaWxlTmFtZVRvRmlsZVR5cGVJbnRlcm5hbChmaWxlTmFtZSkgPT09IEZpbGVUeXBlSW50ZXJuYWwuSW1hZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBmaWxlIHR5cGUgb2YgZ2l2ZW4gZG9jdW1lbnQuIEZpcnN0IGF0dGVtcHQgaXMgYnkgZmlsZXR5cGUsIHNlY29uZCBieSBmaWxlIG5hbWUuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldEdsb2JhbEZpbGVUeXBlKGRvY3VtZW50OiBDb0RvY3VtZW50KTogRmlsZVR5cGVJbnRlcm5hbCB7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5VbmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkb2N1bWVudC5taW1lVHlwZSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGRvY3VtZW50Lm1pbWVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXBwbGljYXRpb24vcGRmXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuUGRmO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL21zd29yZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLldvcmREb2N1bWVudDtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9leGNlbFwiOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiOlxyXG4gICAgICAgICAgICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3gtZXhjZWxcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi94LW1zZXhjZWxcIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5FeGNlbFNoZWV0O1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcInRleHQvcGxhaW5cIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9wbGFpblwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLlRleHRGaWxlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5VbmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gRmlsZVV0aWxzLkZpbGVOYW1lVG9GaWxlVHlwZUludGVybmFsKGRvY3VtZW50LmZpbGVOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2tzIGZpbGVzaXplIG9mIGdpdmVuIGZpbGUgYW5kIHJldHVybnMgZmFsc2UgaWYgc2l6ZSBleGNlZWRzIG1heGltdW0gdXBsb2FkIHNpemUuXHJcbiAgICBwdWJsaWMgc3RhdGljIENoZWNrTWF4VXBsb2FkU2l6ZShmaWxlOiBDb0RvY3VtZW50IHwgRmlsZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBmaWxlU2l6ZTogbnVtYmVyID0gMDtcclxuICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIENvRG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgZmlsZVNpemUgPSBOdW1iZXJVdGlscy5QYXJzZUludChmaWxlLmZpbGVTaXplKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGZpbGUuc2l6ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChmaWxlU2l6ZSA8PSBNYXhVcGxvYWRTaXplKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIENvbnZlcnRGaWxlVG9EYXRhVXJpKGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlUmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoPHN0cmluZz4gZmlsZVJlYWRlci5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdGhlIGdpdmVuIGRhdGFVcmkgc3RyaW5nIHN0cmlwcGVkIG9mIHRoZSBtaW1ldHlwZSBwYXJ0LlxyXG4gICAgcHVibGljIHN0YXRpYyBTdHJpcE1pbWVTdHJpbmdGcm9tRGF0YVVyaShkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghZGF0YVVyaSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG1pbWVTdHJpbmc6IHN0cmluZyA9IHRoaXMuR2V0TWltZVN0cmluZ0Zyb21EYXRhVXJpKGRhdGFVcmkpO1xyXG4gICAgICAgIHJldHVybiBkYXRhVXJpLnN1YnN0cihtaW1lU3RyaW5nLmxlbmd0aCArIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0TWltZVN0cmluZ0Zyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCFkYXRhVXJpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGRhdGFVcmkuc3BsaXQoJywnKVswXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0cyBnaXZlbiBzdHJpbmcgZGF0YSB0byBhbiBBcnJheUJ1ZmZlci5cclxuICAgIHB1YmxpYyBzdGF0aWMgQ29udmVydFN0cmluZ1RvQXJyYXlCdWZmZXIoc3RyaW5nRGF0YTogc3RyaW5nKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgaWYgKCFzdHJpbmdEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyOiBBcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihzdHJpbmdEYXRhLmxlbmd0aCk7XHJcbiAgICAgICAgY29uc3QgYnVmVmlldzogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwLCBsZW46IG51bWJlciA9IHN0cmluZ0RhdGEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgYnVmVmlld1tpXSA9IHN0cmluZ0RhdGEuY2hhckNvZGVBdChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGJ1ZlZpZXc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBDb252ZXJ0Qnl0ZUFycmF5VG9TdHJpbmcoYnl0ZUFycmF5OiBudW1iZXJbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHN0cjogc3RyaW5nID0gXCJcIjtcclxuICAgICAgICBpZiAoYnl0ZUFycmF5KSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjogbnVtYmVyID0gYnl0ZUFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlQXJyYXlbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJucyB0cnVlIGlmIGdpdmVuIHN0cmluZyBjb250YWlucyBhIGRhdGEtdXJpL2Jhc2U2NC5cclxuICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nQ29udGFpbnNEYXRhVXJpKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFzdHIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBtaW1lU3RyaW5nOiBzdHJpbmcgPSBzdHIuc3BsaXQoJywnKVswXTtcclxuICAgICAgICByZXR1cm4gbWltZVN0cmluZy5pbmRleE9mKCdiYXNlNjQnKSA+IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlcmUgaXMgc29tZSBkaXNjcmVwYW5jeSByZWdhcmRpbmcgbG9jYXRpb25zIG9mIGgzZCBvYmplY3RzXHJcbiAgICAgKiBUaGVyZWZvciB3ZSBuZWVkIHRvICh0ZW1wb3JhcmlseT8hKSBmaXggdGhlIGNvbnRlbnQgdXJsXHJcbiAgICAgKiBBbHNvIHdlIG5lZWQgdG8gY2hhbmdlIHNvbWUgYWRkaXRpb25hbHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBGaXhBc3NldFVybChhc3NldFVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIWFzc2V0VXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZml4ZWRVcmw6IHN0cmluZztcclxuICAgICAgICBpZiAoYXNzZXRVcmwuaW5kZXhPZignX3dlYnBsYXllcicpID09PSAtMSkge1xyXG4gICAgICAgICAgICBmaXhlZFVybCA9IGFzc2V0VXJsLnJlcGxhY2UoJy51bml0eTNkJywgJ193ZWJwbGF5ZXIuaW9uZTNkJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZml4ZWRVcmwgPSBhc3NldFVybC5yZXBsYWNlKCdfd2VicGxheWVyLnVuaXR5M2QnLCAnX3dlYnBsYXllci5pb25lM2QnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZml4ZWRVcmwgPSBmaXhlZFVybC5yZXBsYWNlKCdjb250ZW50LycsICdjb250ZW50NDMvJyk7XHJcbiAgICAgICAgaWYgKCFmaXhlZFVybC5lbmRzV2l0aCgnLmd6JykpIHtcclxuICAgICAgICAgICAgZml4ZWRVcmwgPSBmaXhlZFVybC5jb25jYXQoJy5neicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZml4ZWRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJuIHRoZSBtaW1ldHlwZSBvZiB0aGUgZ2l2ZW4gZmlsZW5hbWUuXHJcbiAgICBwdWJsaWMgc3RhdGljIE1pbWVUeXBlRnJvbUZpbGVuYW1lKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHJlZ0V4OiBSZWdFeHAgPSAvKD86XFwuKFteLl0rKSk/JC87IC8vIHJlZ2V4IHRvIGZpbmQgZXh0ZW5zaW9uXHJcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uOiBhbnkgPSByZWdFeC5leGVjKGZpbGVOYW1lKVsxXTtcclxuICAgICAgICBzd2l0Y2ggKGV4dGVuc2lvbikge1xyXG4gICAgICAgICAgICBjYXNlIFwianBnXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJqcGVnXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpbWFnZS9qcGVnXCI7XHJcbiAgICAgICAgICAgIGNhc2UgXCJwbmdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImltYWdlL3BuZ1wiO1xyXG4gICAgICAgICAgICBjYXNlIFwiYm1wXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpbWFnZS9ibXBcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBEb3dubG9hZEZpbGUoXHJcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcclxuICAgICAgICBjb250ZW50OiBzdHJpbmcsXHJcbiAgICAgICAgbWltZVR5cGU6IHN0cmluZyA9IFwidGV4dC9wbGFpblwiXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImhyZWZcIiwgXCJkYXRhOlwiICsgbWltZVR5cGUgKyBcIjtjaGFyc2V0PXV0Zi04LFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpKTtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShcImRvd25sb2FkXCIsIGZpbGVOYW1lKTtcclxuXHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcclxuXHJcbiAgICAgICAgZWxlbWVudC5jbGljaygpO1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGdpdmVuIGZpbGUgYXMgYSB0ZXh0IHN0cmluZy5cclxuICAgIHB1YmxpYyBzdGF0aWMgUmVhZEFzVGV4dChmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZTogRnVuY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlID09PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShldmVudC50YXJnZXQucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlYWRGaWxlQXNOZXdDb0RvY3VtZW50KGZpbGU6IEZpbGUpOiBQcm9taXNlPENvRG9jdW1lbnQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8Q29Eb2N1bWVudD4oKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvRG9jdW1lbnQ6IENvRG9jdW1lbnQgPSBuZXcgQ29Eb2N1bWVudCgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50LmZpbGVTaXplID0gZmlsZS5zaXplLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29Eb2N1bWVudC5taW1lVHlwZUludGVybmFsID0gZmlsZS50eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQubWltZVR5cGUgPSBmaWxlLnR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29Eb2N1bWVudC5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50LmRvY3VtZW50VHlwZSA9IENvRG9jdW1lbnRUeXBlLlNhdmVBc0RvY3VtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQuZmlsZVR5cGUgPSBGaWxlVXRpbHMuSXNJbWFnZUZpbGUoZmlsZSkgPyBGaWxlVHlwZS5JbWFnZSA6IEZpbGVUeXBlLkRvY3VtZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQuZGVzY3JpcHRpb24gPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29Eb2N1bWVudC5kb2N1bWVudEJvZHkgPSBGaWxlVXRpbHMuU3RyaXBNaW1lU3RyaW5nRnJvbURhdGFVcmkoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoY29Eb2N1bWVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBHZXRFeHRlbnNpb25Gcm9tRGF0YVVyaShkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IHN0cmluZyA9IGRhdGFVcmk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGEucmVwbGFjZSgvKGRhdGE6aW1hZ2VcXC8pKC4qPykoO2Jhc2U2NC4qKS9naSwgJyQyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBDcmVhdGVEb3dubG9hZEZpbGVOYW1lRnJvbUJhc2U2NChkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGV4dDogc3RyaW5nID0gdGhpcy5HZXRFeHRlbnNpb25Gcm9tRGF0YVVyaShkYXRhVXJpKTtcclxuICAgICAgICByZXR1cm4gJ3ByZXZpZXcuJyArIGV4dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIERvd25sb2FkRnJvbURhdGFVcmkoZGF0YVVyaTogc3RyaW5nLCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGluazogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IGRhdGFVcmk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29yZS91dGlscy9maWxlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXhFLE1BQU0sYUFBYSxHQUFXLE9BQU8sQ0FBQyxDQUFDLE1BQU07QUFFN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxTQUFTO0lBRWxCLHNDQUFzQztJQUMvQixNQUFNLEtBQUssaUJBQWlCO1FBQy9CLE9BQU8sYUFBYSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxZQUFvQixFQUFFLFFBQWdCO1FBQ3RFLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5RyxDQUFDO0lBRUQsc0hBQXNIO0lBQy9HLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxRQUFnQjtRQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7U0FDckM7UUFDRCxNQUFNLFdBQVcsR0FBYSxRQUFRLENBQUMsS0FB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LENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRXBGLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDdkI7WUFDTCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsT0FBZTtRQUNqRCxNQUFNLElBQUksR0FBVyxPQUFPLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxNQUFNLENBQUMsZ0NBQWdDLENBQUMsT0FBZTtRQUMxRCxNQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsT0FBTyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBZSxFQUFFLFFBQWdCO1FBQy9ELE1BQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZVR5cGVJbnRlcm5hbCB9IGZyb20gJy4uL2VudW0vZmlsZS10eXBlLWludGVybmFsLmVudW0nO1xyXG5pbXBvcnQgeyBDb0RvY3VtZW50VHlwZSB9IGZyb20gJy4uL2VudW0vY28tZG9jdW1lbnQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgRmlsZVR5cGUgfSBmcm9tICcuLi9lbnVtL2ZpbGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICcuL3N0cmluZy11dGlscyc7XHJcbmltcG9ydCB7IE51bWJlclV0aWxzIH0gZnJvbSAnLi9udW1iZXItdXRpbHMnO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50LmJvJztcclxuXHJcbmNvbnN0IE1heFVwbG9hZFNpemU6IG51bWJlciA9IDMxNDU3Mjg7IC8vIDNNYlxyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEZpbGVVdGlscyB7XHJcblxyXG4gICAgLy8gUmV0dXJucyBNYXhVcGxvYWRTaXplIGluIE1lZ2FieXRlcy5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IE1heFVwbG9hZFNpemVJbk1iKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE1heFVwbG9hZFNpemUgLyAxMDI0IC8gMTAyNDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIERvY3VtZW50Qm9keVRvRGF0YVVyaShkb2N1bWVudEJvZHk6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aChkb2N1bWVudEJvZHkpID8gXCJkYXRhOlwiICsgbWltZVR5cGUgKyBcIjtiYXNlNjQsXCIgKyBkb2N1bWVudEJvZHkgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdGhlIGZpbGUgdHlwZSBvZiB0aGUgZ2l2ZW4gZmlsZSwgYnkgbG9va2luZyBhdCBpdHMgZXh0ZW5zaW9uLiBSZXR1cm5zIEZpbGVUeXBlLlVuZGVmaW5lZCBpZiBub3QgcmVjb2duaXNlZC5cclxuICAgIHB1YmxpYyBzdGF0aWMgRmlsZU5hbWVUb0ZpbGVUeXBlSW50ZXJuYWwoZmlsZU5hbWU6IHN0cmluZyk6IEZpbGVUeXBlSW50ZXJuYWwge1xyXG4gICAgICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdHJpbmdQYXJ0czogc3RyaW5nW10gPSBmaWxlTmFtZS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uOiBzdHJpbmcgPSBzdHJpbmdQYXJ0c1tzdHJpbmdQYXJ0cy5sZW5ndGggLSAxXTtcclxuICAgICAgICBzd2l0Y2ggKGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJwZG5cIjpcclxuICAgICAgICAgICAgY2FzZSBcImJtcFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiZ2lmXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJqcGdcIjpcclxuICAgICAgICAgICAgY2FzZSBcImpwZWdcIjpcclxuICAgICAgICAgICAgY2FzZSBcImpwZVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiamZpZlwiOlxyXG4gICAgICAgICAgICBjYXNlIFwicG5nXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0aWZcIjpcclxuICAgICAgICAgICAgY2FzZSBcInRpZmZcIjpcclxuICAgICAgICAgICAgY2FzZSBcInRnYVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiZGRzXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5JbWFnZTtcclxuICAgICAgICAgICAgY2FzZSBcInN3ZlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuU3dmO1xyXG4gICAgICAgICAgICBjYXNlIFwieGxzXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJ4bHN4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5FeGNlbFNoZWV0O1xyXG4gICAgICAgICAgICBjYXNlIFwiZG9jXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb2N4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5Xb3JkRG9jdW1lbnQ7XHJcbiAgICAgICAgICAgIGNhc2UgXCJwZGZcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLlBkZjtcclxuICAgICAgICAgICAgY2FzZSBcInR4dFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVGV4dEZpbGU7XHJcbiAgICAgICAgICAgIGNhc2UgXCJleGVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLkV4ZWN1dGFibGU7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5VbmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrcyBpZiBmaWxldHlwZSBvZiBnaXZlbiBmaWxlIGlzIG9mIHR5cGUgaW1hZ2UuIFBvc3NpYmxlIGZpbGV0eXBlczogaW1hZ2UvcG5nLCBpbWFnZS9ibXAsIGltYWdlL2pwZWcsIGV0Yy5cclxuICAgIHB1YmxpYyBzdGF0aWMgSXNJbWFnZUZpbGUoZmlsZTogRmlsZSB8IENvRG9jdW1lbnQpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWZpbGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICBsZXQgbWltZVR5cGU6IHN0cmluZztcclxuICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIENvRG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlLmZpbGVOYW1lO1xyXG4gICAgICAgICAgICBtaW1lVHlwZSA9IGZpbGUubWltZVR5cGVJbnRlcm5hbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgICAgICAgICAgbWltZVR5cGUgPSBmaWxlLnR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtaW1lVHlwZSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbWltZVR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChGaWxlVXRpbHMuRmlsZU5hbWVUb0ZpbGVUeXBlSW50ZXJuYWwoZmlsZU5hbWUpID09PSBGaWxlVHlwZUludGVybmFsLkltYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgZmlsZSB0eXBlIG9mIGdpdmVuIGRvY3VtZW50LiBGaXJzdCBhdHRlbXB0IGlzIGJ5IGZpbGV0eXBlLCBzZWNvbmQgYnkgZmlsZSBuYW1lLlxyXG4gICAgcHVibGljIHN0YXRpYyBHZXRHbG9iYWxGaWxlVHlwZShkb2N1bWVudDogQ29Eb2N1bWVudCk6IEZpbGVUeXBlSW50ZXJuYWwge1xyXG4gICAgICAgIGlmICghZG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZG9jdW1lbnQubWltZVR5cGUgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChkb2N1bWVudC5taW1lVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3BkZlwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLlBkZjtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5Xb3JkRG9jdW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXBwbGljYXRpb24vZXhjZWxcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi94LWV4Y2VsXCI6XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXBwbGljYXRpb24veC1tc2V4Y2VsXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuRXhjZWxTaGVldDtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0ZXh0L3BsYWluXCI6XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXBwbGljYXRpb24vcGxhaW5cIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5UZXh0RmlsZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIEZpbGVVdGlscy5GaWxlTmFtZVRvRmlsZVR5cGVJbnRlcm5hbChkb2N1bWVudC5maWxlTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrcyBmaWxlc2l6ZSBvZiBnaXZlbiBmaWxlIGFuZCByZXR1cm5zIGZhbHNlIGlmIHNpemUgZXhjZWVkcyBtYXhpbXVtIHVwbG9hZCBzaXplLlxyXG4gICAgcHVibGljIHN0YXRpYyBDaGVja01heFVwbG9hZFNpemUoZmlsZTogQ29Eb2N1bWVudCB8IEZpbGUpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgZmlsZVNpemU6IG51bWJlciA9IDA7XHJcbiAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBDb0RvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIGZpbGVTaXplID0gTnVtYmVyVXRpbHMuUGFyc2VJbnQoZmlsZS5maWxlU2l6ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsZVNpemUgPSBmaWxlLnNpemU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoZmlsZVNpemUgPD0gTWF4VXBsb2FkU2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBDb252ZXJ0RmlsZVRvRGF0YVVyaShmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKDxzdHJpbmc+IGZpbGVSZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBkYXRhVXJpIHN0cmluZyBzdHJpcHBlZCBvZiB0aGUgbWltZXR5cGUgcGFydC5cclxuICAgIHB1YmxpYyBzdGF0aWMgU3RyaXBNaW1lU3RyaW5nRnJvbURhdGFVcmkoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIWRhdGFVcmkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBtaW1lU3RyaW5nOiBzdHJpbmcgPSB0aGlzLkdldE1pbWVTdHJpbmdGcm9tRGF0YVVyaShkYXRhVXJpKTtcclxuICAgICAgICByZXR1cm4gZGF0YVVyaS5zdWJzdHIobWltZVN0cmluZy5sZW5ndGggKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldE1pbWVTdHJpbmdGcm9tRGF0YVVyaShkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghZGF0YVVyaSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRhVXJpLnNwbGl0KCcsJylbMF07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29udmVydHMgZ2l2ZW4gc3RyaW5nIGRhdGEgdG8gYW4gQXJyYXlCdWZmZXIuXHJcbiAgICBwdWJsaWMgc3RhdGljIENvbnZlcnRTdHJpbmdUb0FycmF5QnVmZmVyKHN0cmluZ0RhdGE6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgIGlmICghc3RyaW5nRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhcnJheUJ1ZmZlcjogQXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc3RyaW5nRGF0YS5sZW5ndGgpO1xyXG4gICAgICAgIGNvbnN0IGJ1ZlZpZXc6IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMCwgbGVuOiBudW1iZXIgPSBzdHJpbmdEYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGJ1ZlZpZXdbaV0gPSBzdHJpbmdEYXRhLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBidWZWaWV3O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgQ29udmVydEJ5dGVBcnJheVRvU3RyaW5nKGJ5dGVBcnJheTogbnVtYmVyW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzdHI6IHN0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGJ5dGVBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwLCBsZW46IG51bWJlciA9IGJ5dGVBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBnaXZlbiBzdHJpbmcgY29udGFpbnMgYSBkYXRhLXVyaS9iYXNlNjQuXHJcbiAgICBwdWJsaWMgc3RhdGljIFN0cmluZ0NvbnRhaW5zRGF0YVVyaShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbWltZVN0cmluZzogc3RyaW5nID0gc3RyLnNwbGl0KCcsJylbMF07XHJcbiAgICAgICAgcmV0dXJuIG1pbWVTdHJpbmcuaW5kZXhPZignYmFzZTY0JykgPiAtMTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZXJlIGlzIHNvbWUgZGlzY3JlcGFuY3kgcmVnYXJkaW5nIGxvY2F0aW9ucyBvZiBoM2Qgb2JqZWN0c1xyXG4gICAgICogVGhlcmVmb3Igd2UgbmVlZCB0byAodGVtcG9yYXJpbHk/ISkgZml4IHRoZSBjb250ZW50IHVybFxyXG4gICAgICogQWxzbyB3ZSBuZWVkIHRvIGNoYW5nZSBzb21lIGFkZGl0aW9uYWxzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgRml4QXNzZXRVcmwoYXNzZXRVcmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCFhc3NldFVybCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpeGVkVXJsOiBzdHJpbmc7XHJcbiAgICAgICAgaWYgKGFzc2V0VXJsLmluZGV4T2YoJ193ZWJwbGF5ZXInKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgZml4ZWRVcmwgPSBhc3NldFVybC5yZXBsYWNlKCcudW5pdHkzZCcsICdfd2VicGxheWVyLmlvbmUzZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpeGVkVXJsID0gYXNzZXRVcmwucmVwbGFjZSgnX3dlYnBsYXllci51bml0eTNkJywgJ193ZWJwbGF5ZXIuaW9uZTNkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpeGVkVXJsID0gZml4ZWRVcmwucmVwbGFjZSgnY29udGVudC8nLCAnY29udGVudDQzLycpO1xyXG4gICAgICAgIGlmICghZml4ZWRVcmwuZW5kc1dpdGgoJy5neicpKSB7XHJcbiAgICAgICAgICAgIGZpeGVkVXJsID0gZml4ZWRVcmwuY29uY2F0KCcuZ3onKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpeGVkVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybiB0aGUgbWltZXR5cGUgb2YgdGhlIGdpdmVuIGZpbGVuYW1lLlxyXG4gICAgcHVibGljIHN0YXRpYyBNaW1lVHlwZUZyb21GaWxlbmFtZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdFeDogUmVnRXhwID0gLyg/OlxcLihbXi5dKykpPyQvOyAvLyByZWdleCB0byBmaW5kIGV4dGVuc2lvblxyXG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbjogYW55ID0gcmVnRXguZXhlYyhmaWxlTmFtZSlbMV07XHJcbiAgICAgICAgc3dpdGNoIChleHRlbnNpb24pIHtcclxuICAgICAgICAgICAgY2FzZSBcImpwZ1wiOlxyXG4gICAgICAgICAgICBjYXNlIFwianBlZ1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaW1hZ2UvanBlZ1wiO1xyXG4gICAgICAgICAgICBjYXNlIFwicG5nXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpbWFnZS9wbmdcIjtcclxuICAgICAgICAgICAgY2FzZSBcImJtcFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaW1hZ2UvYm1wXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgRG93bmxvYWRGaWxlKFxyXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgY29udGVudDogc3RyaW5nLFxyXG4gICAgICAgIG1pbWVUeXBlOiBzdHJpbmcgPSBcInRleHQvcGxhaW5cIlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudDogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIFwiZGF0YTpcIiArIG1pbWVUeXBlICsgXCI7Y2hhcnNldD11dGYtOCxcIiArIGVuY29kZVVSSUNvbXBvbmVudChjb250ZW50KSk7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBmaWxlTmFtZSk7XHJcblxyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGVsZW1lbnQuY2xpY2soKTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIHRoZSBjb250ZW50cyBvZiBnaXZlbiBmaWxlIGFzIGEgdGV4dCBzdHJpbmcuXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlYWRBc1RleHQoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBSZWFkRmlsZUFzTmV3Q29Eb2N1bWVudChmaWxlOiBGaWxlKTogUHJvbWlzZTxDb0RvY3VtZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPENvRG9jdW1lbnQ+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb0RvY3VtZW50OiBDb0RvY3VtZW50ID0gbmV3IENvRG9jdW1lbnQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29Eb2N1bWVudC5maWxlU2l6ZSA9IGZpbGUuc2l6ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQubWltZVR5cGVJbnRlcm5hbCA9IGZpbGUudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50Lm1pbWVUeXBlID0gZmlsZS50eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29Eb2N1bWVudC5kb2N1bWVudFR5cGUgPSBDb0RvY3VtZW50VHlwZS5TYXZlQXNEb2N1bWVudDtcclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50LmZpbGVUeXBlID0gRmlsZVV0aWxzLklzSW1hZ2VGaWxlKGZpbGUpID8gRmlsZVR5cGUuSW1hZ2UgOiBGaWxlVHlwZS5Eb2N1bWVudDtcclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50LmRlc2NyaXB0aW9uID0gZmlsZS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQuZG9jdW1lbnRCb2R5ID0gRmlsZVV0aWxzLlN0cmlwTWltZVN0cmluZ0Zyb21EYXRhVXJpKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGNvRG9jdW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0RXh0ZW5zaW9uRnJvbURhdGFVcmkoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBkYXRhOiBzdHJpbmcgPSBkYXRhVXJpO1xyXG4gICAgICAgIHJldHVybiBkYXRhLnJlcGxhY2UoLyhkYXRhOmltYWdlXFwvKSguKj8pKDtiYXNlNjQuKikvZ2ksICckMicpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgQ3JlYXRlRG93bmxvYWRGaWxlTmFtZUZyb21CYXNlNjQoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBleHQ6IHN0cmluZyA9IHRoaXMuR2V0RXh0ZW5zaW9uRnJvbURhdGFVcmkoZGF0YVVyaSk7XHJcbiAgICAgICAgcmV0dXJuICdwcmV2aWV3LicgKyBleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBEb3dubG9hZEZyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICBsaW5rLmhyZWYgPSBkYXRhVXJpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgICB9XHJcbn1cclxuIl19
|