payload 2.24.2 → 2.26.0
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/dist/admin/components/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/admin/components/elements/DatePicker/DatePicker.js +11 -8
- package/dist/admin/components/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DeleteMany/index.js +10 -4
- package/dist/admin/components/elements/ReactSelect/ValueContainer/index.scss +1 -0
- package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.js +5 -5
- package/dist/admin/components/forms/field-types/Relationship/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Relationship/index.js +13 -8
- package/dist/admin/components/forms/field-types/Text/index.scss +6 -0
- package/dist/admin/components/views/Global/Default.js +2 -2
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
- package/dist/admin/components/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +44 -21
- package/dist/admin/components/views/Version/Version.d.ts.map +1 -1
- package/dist/admin/components/views/Version/Version.js +15 -11
- package/dist/admin/components/views/Versions/columns.d.ts.map +1 -1
- package/dist/admin/components/views/Versions/columns.js +12 -6
- package/dist/admin/components/views/Versions/index.d.ts.map +1 -1
- package/dist/admin/components/views/Versions/index.js +15 -11
- package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
- package/dist/admin/components/views/collections/Edit/Default.js +2 -1
- package/dist/admin/components/views/collections/List/Cell/field-types/Array/index.d.ts.map +1 -1
- package/dist/admin/components/views/collections/List/Cell/field-types/Array/index.js +2 -2
- package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.d.ts +2 -2
- package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.d.ts.map +1 -1
- package/dist/admin/components/views/collections/List/Cell/field-types/Relationship/index.js +17 -2
- package/dist/admin/components/views/collections/List/Cell/field-types/index.d.ts +2 -2
- package/dist/admin/components/views/collections/List/Cell/index.d.ts.map +1 -1
- package/dist/admin/components/views/collections/List/Cell/index.js +10 -7
- package/dist/admin/components/views/collections/List/Cell/types.d.ts +1 -0
- package/dist/admin/components/views/collections/List/Cell/types.d.ts.map +1 -1
- package/dist/admin/components/views/collections/List/Default.js +2 -2
- package/dist/collections/config/schema.d.ts.map +1 -1
- package/dist/collections/config/schema.js +4 -2
- package/dist/collections/operations/updateByID.js +4 -3
- package/dist/database/getLocalizedPaths.d.ts.map +1 -1
- package/dist/database/getLocalizedPaths.js +2 -2
- package/dist/express/middleware/index.js +3 -2
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +2 -1
- package/dist/fields/config/types.d.ts +4 -2
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +11 -11
- package/dist/translations/hr.json +47 -47
- package/dist/uploads/cropImage.d.ts +5 -1
- package/dist/uploads/cropImage.d.ts.map +1 -1
- package/dist/uploads/cropImage.js +10 -4
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +13 -4
- package/dist/uploads/imageResizer.d.ts +3 -1
- package/dist/uploads/imageResizer.d.ts.map +1 -1
- package/dist/uploads/imageResizer.js +16 -5
- package/dist/uploads/mimeTypeValidator.spec.js +1 -1
- package/dist/uploads/optionallyAppendMetadata.d.ts +12 -0
- package/dist/uploads/optionallyAppendMetadata.d.ts.map +1 -0
- package/dist/uploads/optionallyAppendMetadata.js +25 -0
- package/dist/uploads/types.d.ts +5 -0
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/utilities/deepCopyObject.d.ts.map +1 -1
- package/dist/utilities/deepCopyObject.js +8 -1
- package/package.json +4 -4
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { UploadedFile } from 'express-fileupload';
|
|
3
|
+
import type { PayloadRequest } from 'payload/types';
|
|
3
4
|
import sharp from 'sharp';
|
|
4
5
|
import type { UploadEdits } from './types';
|
|
6
|
+
import { type WithMetadata } from './optionallyAppendMetadata';
|
|
5
7
|
export declare const percentToPixel: (value: any, dimension: any) => number;
|
|
6
8
|
type CropImageArgs = {
|
|
7
9
|
cropData: UploadEdits['crop'];
|
|
@@ -11,9 +13,11 @@ type CropImageArgs = {
|
|
|
11
13
|
};
|
|
12
14
|
file: UploadedFile;
|
|
13
15
|
heightInPixels: number;
|
|
16
|
+
req?: PayloadRequest;
|
|
14
17
|
widthInPixels: number;
|
|
18
|
+
withMetadata?: WithMetadata;
|
|
15
19
|
};
|
|
16
|
-
export declare function cropImage({ cropData, dimensions, file, heightInPixels, widthInPixels, }: CropImageArgs): Promise<{
|
|
20
|
+
export declare function cropImage({ cropData, dimensions, file, heightInPixels, req, widthInPixels, withMetadata, }: CropImageArgs): Promise<{
|
|
17
21
|
data: Buffer;
|
|
18
22
|
info: sharp.OutputInfo;
|
|
19
23
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGnD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,4BAA4B,CAAA;AAExF,eAAO,MAAM,cAAc,kCAAuB,MAGjD,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,IAAI,EAAE,YAAY,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AACD,wBAAsB,SAAS,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,cAAc,EACd,GAAG,EACH,aAAa,EACb,YAAY,GACb,EAAE,aAAa;;;GAgCf"}
|
|
@@ -17,6 +17,7 @@ _export(exports, {
|
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
19
|
const _sharp = /*#__PURE__*/ _interop_require_default(require("sharp"));
|
|
20
|
+
const _optionallyAppendMetadata = require("./optionallyAppendMetadata");
|
|
20
21
|
function _interop_require_default(obj) {
|
|
21
22
|
return obj && obj.__esModule ? obj : {
|
|
22
23
|
default: obj
|
|
@@ -26,7 +27,7 @@ const percentToPixel = (value, dimension)=>{
|
|
|
26
27
|
if (!value) return 0;
|
|
27
28
|
return Math.floor(parseFloat(value) / 100 * dimension);
|
|
28
29
|
};
|
|
29
|
-
async function cropImage({ cropData, dimensions, file, heightInPixels, widthInPixels }) {
|
|
30
|
+
async function cropImage({ cropData, dimensions, file, heightInPixels, req, widthInPixels, withMetadata }) {
|
|
30
31
|
try {
|
|
31
32
|
const { x, y } = cropData;
|
|
32
33
|
const fileIsAnimatedType = [
|
|
@@ -42,8 +43,13 @@ async function cropImage({ cropData, dimensions, file, heightInPixels, widthInPi
|
|
|
42
43
|
top: percentToPixel(y, dimensions.height),
|
|
43
44
|
width: Number(widthInPixels)
|
|
44
45
|
};
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
let cropped = (0, _sharp.default)(file.tempFilePath || file.data, sharpOptions).extract(formattedCropData);
|
|
47
|
+
cropped = await (0, _optionallyAppendMetadata.optionallyAppendMetadata)({
|
|
48
|
+
req,
|
|
49
|
+
sharpFile: cropped,
|
|
50
|
+
withMetadata
|
|
51
|
+
});
|
|
52
|
+
return await cropped.withMetadata().toBuffer({
|
|
47
53
|
resolveWithObject: true
|
|
48
54
|
});
|
|
49
55
|
} catch (error) {
|
|
@@ -52,4 +58,4 @@ async function cropImage({ cropData, dimensions, file, heightInPixels, widthInPi
|
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
60
|
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2Nyb3BJbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFVwbG9hZEVkaXRzIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgdHlwZSBXaXRoTWV0YWRhdGEsIG9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSB9IGZyb20gJy4vb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhJ1xuXG5leHBvcnQgY29uc3QgcGVyY2VudFRvUGl4ZWwgPSAodmFsdWUsIGRpbWVuc2lvbik6IG51bWJlciA9PiB7XG4gIGlmICghdmFsdWUpIHJldHVybiAwXG4gIHJldHVybiBNYXRoLmZsb29yKChwYXJzZUZsb2F0KHZhbHVlKSAvIDEwMCkgKiBkaW1lbnNpb24pXG59XG5cbnR5cGUgQ3JvcEltYWdlQXJncyA9IHtcbiAgY3JvcERhdGE6IFVwbG9hZEVkaXRzWydjcm9wJ11cbiAgZGltZW5zaW9uczogeyBoZWlnaHQ6IG51bWJlcjsgd2lkdGg6IG51bWJlciB9XG4gIGZpbGU6IFVwbG9hZGVkRmlsZVxuICBoZWlnaHRJblBpeGVsczogbnVtYmVyXG4gIHJlcT86IFBheWxvYWRSZXF1ZXN0XG4gIHdpZHRoSW5QaXhlbHM6IG51bWJlclxuICB3aXRoTWV0YWRhdGE/OiBXaXRoTWV0YWRhdGFcbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcm9wSW1hZ2Uoe1xuICBjcm9wRGF0YSxcbiAgZGltZW5zaW9ucyxcbiAgZmlsZSxcbiAgaGVpZ2h0SW5QaXhlbHMsXG4gIHJlcSxcbiAgd2lkdGhJblBpeGVscyxcbiAgd2l0aE1ldGFkYXRhLFxufTogQ3JvcEltYWdlQXJncykge1xuICB0cnkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gY3JvcERhdGFcblxuICAgIGNvbnN0IGZpbGVJc0FuaW1hdGVkVHlwZSA9IFsnaW1hZ2UvYXZpZicsICdpbWFnZS9naWYnLCAnaW1hZ2Uvd2VicCddLmluY2x1ZGVzKGZpbGUubWltZXR5cGUpXG5cbiAgICBjb25zdCBzaGFycE9wdGlvbnM6IFNoYXJwT3B0aW9ucyA9IHt9XG5cbiAgICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSBzaGFycE9wdGlvbnMuYW5pbWF0ZWQgPSB0cnVlXG5cbiAgICBjb25zdCBmb3JtYXR0ZWRDcm9wRGF0YSA9IHtcbiAgICAgIGhlaWdodDogTnVtYmVyKGhlaWdodEluUGl4ZWxzKSxcbiAgICAgIGxlZnQ6IHBlcmNlbnRUb1BpeGVsKHgsIGRpbWVuc2lvbnMud2lkdGgpLFxuICAgICAgdG9wOiBwZXJjZW50VG9QaXhlbCh5LCBkaW1lbnNpb25zLmhlaWdodCksXG4gICAgICB3aWR0aDogTnVtYmVyKHdpZHRoSW5QaXhlbHMpLFxuICAgIH1cblxuICAgIGxldCBjcm9wcGVkID0gc2hhcnAoZmlsZS50ZW1wRmlsZVBhdGggfHwgZmlsZS5kYXRhLCBzaGFycE9wdGlvbnMpLmV4dHJhY3QoZm9ybWF0dGVkQ3JvcERhdGEpXG5cbiAgICBjcm9wcGVkID0gYXdhaXQgb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhKHtcbiAgICAgIHJlcSxcbiAgICAgIHNoYXJwRmlsZTogY3JvcHBlZCxcbiAgICAgIHdpdGhNZXRhZGF0YSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyb3BwZWQud2l0aE1ldGFkYXRhKCkudG9CdWZmZXIoe1xuICAgICAgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUsXG4gICAgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGBFcnJvciBjcm9wcGluZyBpbWFnZTpgLCBlcnJvcilcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG4iXSwibmFtZXMiOlsiY3JvcEltYWdlIiwicGVyY2VudFRvUGl4ZWwiLCJ2YWx1ZSIsImRpbWVuc2lvbiIsIk1hdGgiLCJmbG9vciIsInBhcnNlRmxvYXQiLCJjcm9wRGF0YSIsImRpbWVuc2lvbnMiLCJmaWxlIiwiaGVpZ2h0SW5QaXhlbHMiLCJyZXEiLCJ3aWR0aEluUGl4ZWxzIiwid2l0aE1ldGFkYXRhIiwieCIsInkiLCJmaWxlSXNBbmltYXRlZFR5cGUiLCJpbmNsdWRlcyIsIm1pbWV0eXBlIiwic2hhcnBPcHRpb25zIiwiYW5pbWF0ZWQiLCJmb3JtYXR0ZWRDcm9wRGF0YSIsImhlaWdodCIsIk51bWJlciIsImxlZnQiLCJ3aWR0aCIsInRvcCIsImNyb3BwZWQiLCJzaGFycCIsInRlbXBGaWxlUGF0aCIsImRhdGEiLCJleHRyYWN0Iiwib3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhIiwic2hhcnBGaWxlIiwidG9CdWZmZXIiLCJyZXNvbHZlV2l0aE9iamVjdCIsImVycm9yIiwiY29uc29sZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQXdCc0JBLFNBQVM7ZUFBVEE7O0lBZFRDLGNBQWM7ZUFBZEE7Ozs4REFOSzswQ0FJMEM7Ozs7OztBQUVyRCxNQUFNQSxpQkFBaUIsQ0FBQ0MsT0FBT0M7SUFDcEMsSUFBSSxDQUFDRCxPQUFPLE9BQU87SUFDbkIsT0FBT0UsS0FBS0MsS0FBSyxDQUFDLEFBQUNDLFdBQVdKLFNBQVMsTUFBT0M7QUFDaEQ7QUFXTyxlQUFlSCxVQUFVLEVBQzlCTyxRQUFRLEVBQ1JDLFVBQVUsRUFDVkMsSUFBSSxFQUNKQyxjQUFjLEVBQ2RDLEdBQUcsRUFDSEMsYUFBYSxFQUNiQyxZQUFZLEVBQ0U7SUFDZCxJQUFJO1FBQ0YsTUFBTSxFQUFFQyxDQUFDLEVBQUVDLENBQUMsRUFBRSxHQUFHUjtRQUVqQixNQUFNUyxxQkFBcUI7WUFBQztZQUFjO1lBQWE7U0FBYSxDQUFDQyxRQUFRLENBQUNSLEtBQUtTLFFBQVE7UUFFM0YsTUFBTUMsZUFBNkIsQ0FBQztRQUVwQyxJQUFJSCxvQkFBb0JHLGFBQWFDLFFBQVEsR0FBRztRQUVoRCxNQUFNQyxvQkFBb0I7WUFDeEJDLFFBQVFDLE9BQU9iO1lBQ2ZjLE1BQU12QixlQUFlYSxHQUFHTixXQUFXaUIsS0FBSztZQUN4Q0MsS0FBS3pCLGVBQWVjLEdBQUdQLFdBQVdjLE1BQU07WUFDeENHLE9BQU9GLE9BQU9YO1FBQ2hCO1FBRUEsSUFBSWUsVUFBVUMsSUFBQUEsY0FBSyxFQUFDbkIsS0FBS29CLFlBQVksSUFBSXBCLEtBQUtxQixJQUFJLEVBQUVYLGNBQWNZLE9BQU8sQ0FBQ1Y7UUFFMUVNLFVBQVUsTUFBTUssSUFBQUEsa0RBQXdCLEVBQUM7WUFDdkNyQjtZQUNBc0IsV0FBV047WUFDWGQ7UUFDRjtRQUVBLE9BQU8sTUFBTWMsUUFBUWQsWUFBWSxHQUFHcUIsUUFBUSxDQUFDO1lBQzNDQyxtQkFBbUI7UUFDckI7SUFDRixFQUFFLE9BQU9DLE9BQU87UUFDZEMsUUFBUUQsS0FBSyxDQUFDLENBQUMscUJBQXFCLENBQUMsRUFBRUE7UUFDdkMsTUFBTUE7SUFDUjtBQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,UAAU,EAAgC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,UAAU,EAAgC,MAAM,SAAS,CAAA;AAcjF,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,WAAW,CAAC,EAAE,CAAC,CAAA;IACf,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,iKA8Q5B,CAAA"}
|
|
@@ -24,6 +24,7 @@ const _getImageSize = /*#__PURE__*/ _interop_require_default(require("./getImage
|
|
|
24
24
|
const _getSafeFilename = /*#__PURE__*/ _interop_require_default(require("./getSafeFilename"));
|
|
25
25
|
const _imageResizer = /*#__PURE__*/ _interop_require_default(require("./imageResizer"));
|
|
26
26
|
const _isImage = /*#__PURE__*/ _interop_require_default(require("./isImage"));
|
|
27
|
+
const _optionallyAppendMetadata = require("./optionallyAppendMetadata");
|
|
27
28
|
function _interop_require_default(obj) {
|
|
28
29
|
return obj && obj.__esModule ? obj : {
|
|
29
30
|
default: obj
|
|
@@ -43,7 +44,7 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
43
44
|
originalDoc,
|
|
44
45
|
req
|
|
45
46
|
});
|
|
46
|
-
const { disableLocalStorage, focalPoint: focalPointEnabled, formatOptions, imageSizes, resizeOptions, staticDir, trimOptions } = collectionConfig.upload;
|
|
47
|
+
const { disableLocalStorage, focalPoint: focalPointEnabled, formatOptions, imageSizes, resizeOptions, staticDir, trimOptions, withMetadata } = collectionConfig.upload;
|
|
47
48
|
let staticPath = staticDir;
|
|
48
49
|
if (staticDir.indexOf('/') !== 0) {
|
|
49
50
|
staticPath = _path.default.resolve(config.paths.configDir, staticDir);
|
|
@@ -127,6 +128,11 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
127
128
|
}
|
|
128
129
|
if (sharpFile) {
|
|
129
130
|
const metadata = await sharpFile.metadata();
|
|
131
|
+
sharpFile = await (0, _optionallyAppendMetadata.optionallyAppendMetadata)({
|
|
132
|
+
req,
|
|
133
|
+
sharpFile,
|
|
134
|
+
withMetadata
|
|
135
|
+
});
|
|
130
136
|
fileBuffer = await sharpFile.toBuffer({
|
|
131
137
|
resolveWithObject: true
|
|
132
138
|
});
|
|
@@ -170,7 +176,9 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
170
176
|
dimensions,
|
|
171
177
|
file,
|
|
172
178
|
heightInPixels: uploadEdits.heightInPixels,
|
|
173
|
-
|
|
179
|
+
req,
|
|
180
|
+
widthInPixels: uploadEdits.widthInPixels,
|
|
181
|
+
withMetadata
|
|
174
182
|
});
|
|
175
183
|
filesToSave.push({
|
|
176
184
|
buffer: croppedImage,
|
|
@@ -228,7 +236,8 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
228
236
|
req,
|
|
229
237
|
savedFilename: fsSafeName || file.name,
|
|
230
238
|
staticPath,
|
|
231
|
-
uploadEdits
|
|
239
|
+
uploadEdits,
|
|
240
|
+
withMetadata
|
|
232
241
|
});
|
|
233
242
|
fileData.sizes = sizeData;
|
|
234
243
|
fileData.focalX = focalPoint?.x;
|
|
@@ -282,4 +291,4 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
282
291
|
return uploadEdits;
|
|
283
292
|
}
|
|
284
293
|
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSwgVXBsb2FkRWRpdHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIE1pc3NpbmdGaWxlIH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IEZpbGVSZXRyaWV2YWxFcnJvciBmcm9tICcuLi9lcnJvcnMvRmlsZVJldHJpZXZhbEVycm9yJ1xuaW1wb3J0IGNhblJlc2l6ZUltYWdlIGZyb20gJy4vY2FuUmVzaXplSW1hZ2UnXG5pbXBvcnQgeyBjcm9wSW1hZ2UgfSBmcm9tICcuL2Nyb3BJbWFnZSdcbmltcG9ydCB7IGdldEV4dGVybmFsRmlsZSB9IGZyb20gJy4vZ2V0RXh0ZXJuYWxGaWxlJ1xuaW1wb3J0IGdldEZpbGVCeVBhdGggZnJvbSAnLi9nZXRGaWxlQnlQYXRoJ1xuaW1wb3J0IGdldEltYWdlU2l6ZSBmcm9tICcuL2dldEltYWdlU2l6ZSdcbmltcG9ydCBnZXRTYWZlRmlsZU5hbWUgZnJvbSAnLi9nZXRTYWZlRmlsZW5hbWUnXG5pbXBvcnQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyBmcm9tICcuL2ltYWdlUmVzaXplcidcbmltcG9ydCBpc0ltYWdlIGZyb20gJy4vaXNJbWFnZSdcblxudHlwZSBBcmdzPFQ+ID0ge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIGRhdGE6IFRcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG9yaWdpbmFsRG9jPzogVFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzPzogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHRocm93T25NaXNzaW5nRmlsZT86IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQ8VD4gPSBQcm9taXNlPHtcbiAgZGF0YTogVFxuICBmaWxlczogRmlsZVRvU2F2ZVtdXG59PlxuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVGaWxlRGF0YSA9IGFzeW5jIDxUPih7XG4gIGNvbGxlY3Rpb246IHsgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnIH0sXG4gIGNvbmZpZyxcbiAgZGF0YSxcbiAgb3BlcmF0aW9uLFxuICBvcmlnaW5hbERvYyxcbiAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyxcbiAgcmVxLFxuICB0aHJvd09uTWlzc2luZ0ZpbGUsXG59OiBBcmdzPFQ+KTogUmVzdWx0PFQ+ID0+IHtcbiAgaWYgKCFjb2xsZWN0aW9uQ29uZmlnLnVwbG9hZCkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZmlsZXM6IFtdLFxuICAgIH1cbiAgfVxuXG4gIGxldCBmaWxlID0gcmVxLmZpbGVzPy5maWxlIHx8IHVuZGVmaW5lZFxuXG4gIGNvbnN0IHVwbG9hZEVkaXRzID0gcGFyc2VVcGxvYWRFZGl0c0Zyb21SZXFPckluY29taW5nRGF0YSh7XG4gICAgZGF0YSxcbiAgICBvcGVyYXRpb24sXG4gICAgb3JpZ2luYWxEb2MsXG4gICAgcmVxLFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBkaXNhYmxlTG9jYWxTdG9yYWdlLFxuICAgIGZvY2FsUG9pbnQ6IGZvY2FsUG9pbnRFbmFibGVkLFxuICAgIGZvcm1hdE9wdGlvbnMsXG4gICAgaW1hZ2VTaXplcyxcbiAgICByZXNpemVPcHRpb25zLFxuICAgIHN0YXRpY0RpcixcbiAgICB0cmltT3B0aW9ucyxcbiAgfSA9IGNvbGxlY3Rpb25Db25maWcudXBsb2FkXG5cbiAgbGV0IHN0YXRpY1BhdGggPSBzdGF0aWNEaXJcbiAgaWYgKHN0YXRpY0Rpci5pbmRleE9mKCcvJykgIT09IDApIHtcbiAgICBzdGF0aWNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5wYXRocy5jb25maWdEaXIsIHN0YXRpY0RpcilcbiAgfVxuXG4gIGlmICghZmlsZSAmJiB1cGxvYWRFZGl0cyAmJiBkYXRhKSB7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gPSBkYXRhIGFzIEZpbGVEYXRhXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnLycpICYmICFkaXNhYmxlTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0RmlsZUJ5UGF0aChmaWxlUGF0aClcbiAgICAgICAgZmlsZSA9IHJlc3BvbnNlIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChmaWxlbmFtZSAmJiB1cmwpIHtcbiAgICAgICAgZmlsZSA9IChhd2FpdCBnZXRFeHRlcm5hbEZpbGUoe1xuICAgICAgICAgIGRhdGE6IGRhdGEgYXMgRmlsZURhdGEsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHVwbG9hZENvbmZpZzogY29sbGVjdGlvbkNvbmZpZy51cGxvYWQsXG4gICAgICAgIH0pKSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRmlsZVJldHJpZXZhbEVycm9yKHJlcS50LCBlcnIubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWZpbGUpIHtcbiAgICBpZiAodGhyb3dPbk1pc3NpbmdGaWxlKSB0aHJvdyBuZXcgTWlzc2luZ0ZpbGUocmVxLnQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGZpbGVzOiBbXSxcbiAgICB9XG4gIH1cblxuICBpZiAoIWRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICBta2RpcnAuc3luYyhzdGF0aWNQYXRoKVxuICB9XG5cbiAgbGV0IG5ld0RhdGEgPSBkYXRhXG4gIGNvbnN0IGZpbGVzVG9TYXZlOiBGaWxlVG9TYXZlW10gPSBbXVxuICBjb25zdCBmaWxlRGF0YTogUGFydGlhbDxGaWxlRGF0YT4gPSB7fVxuICBjb25zdCBmaWxlSXNBbmltYXRlZFR5cGUgPSBbJ2ltYWdlL2F2aWYnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL3dlYnAnXS5pbmNsdWRlcyhmaWxlLm1pbWV0eXBlKVxuICBjb25zdCBjcm9wRGF0YSA9XG4gICAgdHlwZW9mIHVwbG9hZEVkaXRzID09PSAnb2JqZWN0JyAmJiAnY3JvcCcgaW4gdXBsb2FkRWRpdHMgPyB1cGxvYWRFZGl0cy5jcm9wIDogdW5kZWZpbmVkXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlU3VwcG9ydHNSZXNpemUgPSBjYW5SZXNpemVJbWFnZShmaWxlLm1pbWV0eXBlKVxuICAgIGxldCBmc1NhZmVOYW1lOiBzdHJpbmdcbiAgICBsZXQgc2hhcnBGaWxlOiBTaGFycCB8IHVuZGVmaW5lZFxuICAgIGxldCBkaW1lbnNpb25zOiBQcm9iZWRJbWFnZVNpemUgfCB1bmRlZmluZWRcbiAgICBsZXQgZmlsZUJ1ZmZlcjogeyBkYXRhOiBCdWZmZXI7IGluZm86IE91dHB1dEluZm8gfVxuICAgIGxldCBleHRcbiAgICBsZXQgbWltZTogc3RyaW5nXG4gICAgY29uc3QgZmlsZUhhc0FkanVzdG1lbnRzID1cbiAgICAgIGZpbGVTdXBwb3J0c1Jlc2l6ZSAmJlxuICAgICAgQm9vbGVhbihyZXNpemVPcHRpb25zIHx8IGZvcm1hdE9wdGlvbnMgfHwgaW1hZ2VTaXplcyB8fCB0cmltT3B0aW9ucyB8fCBmaWxlLnRlbXBGaWxlUGF0aClcblxuICAgIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICAgIGlmIChmaWxlSXNBbmltYXRlZFR5cGUpIHNoYXJwT3B0aW9ucy5hbmltYXRlZCA9IHRydWVcblxuICAgIGlmIChzaGFycCAmJiAoZmlsZUlzQW5pbWF0ZWRUeXBlIHx8IGZpbGVIYXNBZGp1c3RtZW50cykpIHtcbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVIYXNBZGp1c3RtZW50cykge1xuICAgICAgICBpZiAocmVzaXplT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS5yZXNpemUocmVzaXplT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50b0Zvcm1hdChmb3JtYXRPcHRpb25zLmZvcm1hdCwgZm9ybWF0T3B0aW9ucy5vcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0cmltT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50cmltKHRyaW1PcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpbGVTdXBwb3J0c1Jlc2l6ZSB8fCBpc0ltYWdlKGZpbGUubWltZXR5cGUpKSB7XG4gICAgICBkaW1lbnNpb25zID0gYXdhaXQgZ2V0SW1hZ2VTaXplKGZpbGUpXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuXG4gICAgaWYgKHNoYXJwRmlsZSkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBzaGFycEZpbGUubWV0YWRhdGEoKVxuICAgICAgZmlsZUJ1ZmZlciA9IGF3YWl0IHNoYXJwRmlsZS50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG4gICAgICA7KHsgZXh0LCBtaW1lIH0gPSBhd2FpdCBmcm9tQnVmZmVyKGZpbGVCdWZmZXIuZGF0YSkpIC8vIFRoaXMgaXMgZ2V0dGluZyBhbiBpbmNvcnJlY3QgZ2lmIGhlaWdodCBiYWNrLlxuICAgICAgZmlsZURhdGEud2lkdGggPSBmaWxlQnVmZmVyLmluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGZpbGVCdWZmZXIuaW5mby5oZWlnaHRcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5pbmZvLnNpemVcblxuICAgICAgLy8gQW5pbWF0ZWQgR0lGcyArIFdlYlAgYWdncmVnYXRlIHRoZSBoZWlnaHQgZnJvbSBldmVyeSBmcmFtZSwgc28gd2UgbmVlZCB0byB1c2UgZGl2aWRlIGJ5IG51bWJlciBvZiBwYWdlc1xuICAgICAgaWYgKG1ldGFkYXRhLnBhZ2VzKSB7XG4gICAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGZpbGVCdWZmZXIuaW5mby5oZWlnaHQgLyBtZXRhZGF0YS5wYWdlc1xuICAgICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGZpbGVCdWZmZXIuZGF0YS5sZW5ndGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWltZSA9IGZpbGUubWltZXR5cGVcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZS5zaXplXG5cbiAgICAgIGlmIChmaWxlLm5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICBleHQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKS5zcGxpdCgnPycpWzBdXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHQgPSAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkanVzdCBTVkcgbWltZSB0eXBlLiBmcm9tQnVmZmVyIG1vZGlmaWVzIGl0LlxuICAgIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24veG1sJyAmJiBleHQgPT09ICdzdmcnKSBtaW1lID0gJ2ltYWdlL3N2Zyt4bWwnXG4gICAgZmlsZURhdGEubWltZVR5cGUgPSBtaW1lXG5cbiAgICBjb25zdCBiYXNlRmlsZW5hbWUgPSBzYW5pdGl6ZShmaWxlLm5hbWUuc3Vic3RyaW5nKDAsIGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKSB8fCBmaWxlLm5hbWUpXG4gICAgZnNTYWZlTmFtZSA9IGAke2Jhc2VGaWxlbmFtZX0ke2V4dCA/IGAuJHtleHR9YCA6ICcnfWBcblxuICAgIGlmICghb3ZlcndyaXRlRXhpc3RpbmdGaWxlcykge1xuICAgICAgZnNTYWZlTmFtZSA9IGF3YWl0IGdldFNhZmVGaWxlTmFtZSh7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICAgIGRlc2lyZWRGaWxlbmFtZTogZnNTYWZlTmFtZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBzdGF0aWNQYXRoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmaWxlRGF0YS5maWxlbmFtZSA9IGZzU2FmZU5hbWVcbiAgICBsZXQgZmlsZUZvclJlc2l6ZSA9IGZpbGVcblxuICAgIGlmIChjcm9wRGF0YSkge1xuICAgICAgY29uc3QgeyBkYXRhOiBjcm9wcGVkSW1hZ2UsIGluZm8gfSA9IGF3YWl0IGNyb3BJbWFnZSh7XG4gICAgICAgIGNyb3BEYXRhLFxuICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICBmaWxlLFxuICAgICAgICBoZWlnaHRJblBpeGVsczogdXBsb2FkRWRpdHMuaGVpZ2h0SW5QaXhlbHMsXG4gICAgICAgIHdpZHRoSW5QaXhlbHM6IHVwbG9hZEVkaXRzLndpZHRoSW5QaXhlbHMsXG4gICAgICB9KVxuXG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKHtcbiAgICAgICAgYnVmZmVyOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgZmlsZUZvclJlc2l6ZSA9IHtcbiAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgZGF0YTogY3JvcHBlZEltYWdlLFxuICAgICAgICBzaXplOiBpbmZvLnNpemUsXG4gICAgICB9XG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGluZm8uaGVpZ2h0XG4gICAgICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgc2hhcnBGaWxlLm1ldGFkYXRhKClcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gbWV0YWRhdGEucGFnZXMgPyBpbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzIDogaW5mby5oZWlnaHRcbiAgICAgIH1cbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gaW5mby5zaXplXG5cbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGNyb3BwZWRJbWFnZSkgLy8gd3JpdGUgZmlsZUJ1ZmZlciB0byB0aGUgdGVtcCBwYXRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEuZmlsZXMuZmlsZSA9IGZpbGVGb3JSZXNpemVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgLy8gSWYgdXNpbmcgdGVtcCBmaWxlcyBhbmQgdGhlIGltYWdlIGlzIGJlaW5nIHJlc2l6ZWQsIHdyaXRlIHRoZSBmaWxlIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgIGlmIChmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShmaWxlLnRlbXBGaWxlUGF0aCwgZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFzc2lnbiB0aGUgX3Bvc3NpYmx5IG1vZGlmaWVkXyBmaWxlIHRvIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgIHJlcS5maWxlcy5maWxlID0ge1xuICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICAgICAgc2l6ZTogZmlsZUJ1ZmZlcj8uaW5mby5zaXplLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWxlU3VwcG9ydHNSZXNpemUgJiYgKEFycmF5LmlzQXJyYXkoaW1hZ2VTaXplcykgfHwgZm9jYWxQb2ludEVuYWJsZWQgIT09IGZhbHNlKSkge1xuICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplcyA9IHt9XG4gICAgICBjb25zdCB7IGZvY2FsUG9pbnQsIHNpemVEYXRhLCBzaXplc1RvU2F2ZSB9ID0gYXdhaXQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gICAgICAgIGNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgZGltZW5zaW9uczogIWNyb3BEYXRhXG4gICAgICAgICAgPyBkaW1lbnNpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmRpbWVuc2lvbnMsXG4gICAgICAgICAgICAgIGhlaWdodDogZmlsZURhdGEuaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogZmlsZURhdGEud2lkdGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICBmaWxlOiBmaWxlRm9yUmVzaXplLFxuICAgICAgICBtaW1lVHlwZTogZmlsZURhdGEubWltZVR5cGUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2F2ZWRGaWxlbmFtZTogZnNTYWZlTmFtZSB8fCBmaWxlLm5hbWUsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICAgIHVwbG9hZEVkaXRzLFxuICAgICAgfSlcblxuICAgICAgZmlsZURhdGEuc2l6ZXMgPSBzaXplRGF0YVxuICAgICAgZmlsZURhdGEuZm9jYWxYID0gZm9jYWxQb2ludD8ueFxuICAgICAgZmlsZURhdGEuZm9jYWxZID0gZm9jYWxQb2ludD8ueVxuICAgICAgZmlsZXNUb1NhdmUucHVzaCguLi5zaXplc1RvU2F2ZSlcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJlcS5wYXlsb2FkLmxvZ2dlci5lcnJvcih7IGVyciwgbXNnOiAnRXJyb3IgdXBsb2FkaW5nIGZpbGUnIH0pXG4gICAgdGhyb3cgbmV3IEZpbGVVcGxvYWRFcnJvcihyZXEudClcbiAgfVxuXG4gIG5ld0RhdGEgPSB7XG4gICAgLi4ubmV3RGF0YSxcbiAgICAuLi5maWxlRGF0YSxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGF0YTogbmV3RGF0YSxcbiAgICBmaWxlczogZmlsZXNUb1NhdmUsXG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSB1cGxvYWQgZWRpdHMgZnJvbSByZXEgb3IgaW5jb21pbmcgZGF0YVxuICovXG5mdW5jdGlvbiBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKGFyZ3M6IHtcbiAgZGF0YTogdW5rbm93blxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M6IHVua25vd25cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxufSk6IFVwbG9hZEVkaXRzIHtcbiAgY29uc3QgeyBkYXRhLCBvcGVyYXRpb24sIG9yaWdpbmFsRG9jLCByZXEgfSA9IGFyZ3NcblxuICAvLyBHZXQgaW50ZW5kZWQgZm9jYWwgcG9pbnQgY2hhbmdlIGZyb20gcXVlcnkgc3RyaW5nIG9yIGluY29taW5nIGRhdGFcbiAgY29uc3QgdXBsb2FkRWRpdHMgPVxuICAgIHJlcS5xdWVyeT8udXBsb2FkRWRpdHMgJiYgdHlwZW9mIHJlcS5xdWVyeS51cGxvYWRFZGl0cyA9PT0gJ29iamVjdCdcbiAgICAgID8gKHJlcS5xdWVyeS51cGxvYWRFZGl0cyBhcyBVcGxvYWRFZGl0cylcbiAgICAgIDoge31cblxuICBpZiAodXBsb2FkRWRpdHMuZm9jYWxQb2ludCkgcmV0dXJuIHVwbG9hZEVkaXRzXG5cbiAgY29uc3QgaW5jb21pbmdEYXRhID0gZGF0YSBhcyBGaWxlRGF0YVxuICBjb25zdCBvcmlnRG9jID0gb3JpZ2luYWxEb2MgYXMgRmlsZURhdGFcblxuICAvLyBJZiBubyBjaGFuZ2UgaW4gZm9jYWwgcG9pbnQsIHJldHVybiB1bmRlZmluZWQuXG4gIC8vIFRoaXMgcHJldmVudHMgYSByZWZvY2FsIG9wZXJhdGlvbiB0cmlnZ2VyZWQgZnJvbSBhZG1pbiwgYmVjYXVzZSBpdCBhbHdheXMgc2VuZHMgdGhlIGZvY2FsIHBvaW50LlxuICBpZiAob3JpZ0RvYyAmJiBpbmNvbWluZ0RhdGEuZm9jYWxYID09PSBvcmlnRG9jLmZvY2FsWCAmJiBpbmNvbWluZ0RhdGEuZm9jYWxZID09PSBvcmlnRG9jLmZvY2FsWSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGlmIChpbmNvbWluZ0RhdGEuZm9jYWxYICYmIGluY29taW5nRGF0YS5mb2NhbFkpIHtcbiAgICB1cGxvYWRFZGl0cy5mb2NhbFBvaW50ID0ge1xuICAgICAgeDogaW5jb21pbmdEYXRhLmZvY2FsWCxcbiAgICAgIHk6IGluY29taW5nRGF0YS5mb2NhbFksXG4gICAgfVxuICAgIHJldHVybiB1cGxvYWRFZGl0c1xuICB9XG5cbiAgLy8gSWYgbm8gZm9jYWwgcG9pbnQgaXMgc2V0LCBkZWZhdWx0IHRvIGNlbnRlclxuICBpZiAob3BlcmF0aW9uID09PSAnY3JlYXRlJykge1xuICAgIHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQgPSB7XG4gICAgICB4OiA1MCxcbiAgICAgIHk6IDUwLFxuICAgIH1cbiAgfVxuICByZXR1cm4gdXBsb2FkRWRpdHNcbn1cbiJdLCJuYW1lcyI6WyJnZW5lcmF0ZUZpbGVEYXRhIiwiY29sbGVjdGlvbiIsImNvbmZpZyIsImNvbGxlY3Rpb25Db25maWciLCJkYXRhIiwib3BlcmF0aW9uIiwib3JpZ2luYWxEb2MiLCJvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzIiwicmVxIiwidGhyb3dPbk1pc3NpbmdGaWxlIiwidXBsb2FkIiwiZmlsZXMiLCJmaWxlIiwidW5kZWZpbmVkIiwidXBsb2FkRWRpdHMiLCJwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhIiwiZGlzYWJsZUxvY2FsU3RvcmFnZSIsImZvY2FsUG9pbnQiLCJmb2NhbFBvaW50RW5hYmxlZCIsImZvcm1hdE9wdGlvbnMiLCJpbWFnZVNpemVzIiwicmVzaXplT3B0aW9ucyIsInN0YXRpY0RpciIsInRyaW1PcHRpb25zIiwic3RhdGljUGF0aCIsImluZGV4T2YiLCJwYXRoIiwicmVzb2x2ZSIsInBhdGhzIiwiY29uZmlnRGlyIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdGFydHNXaXRoIiwiZmlsZVBhdGgiLCJyZXNwb25zZSIsImdldEZpbGVCeVBhdGgiLCJnZXRFeHRlcm5hbEZpbGUiLCJ1cGxvYWRDb25maWciLCJlcnIiLCJFcnJvciIsIkZpbGVSZXRyaWV2YWxFcnJvciIsInQiLCJtZXNzYWdlIiwiTWlzc2luZ0ZpbGUiLCJta2RpcnAiLCJzeW5jIiwibmV3RGF0YSIsImZpbGVzVG9TYXZlIiwiZmlsZURhdGEiLCJmaWxlSXNBbmltYXRlZFR5cGUiLCJpbmNsdWRlcyIsIm1pbWV0eXBlIiwiY3JvcERhdGEiLCJjcm9wIiwiZmlsZVN1cHBvcnRzUmVzaXplIiwiY2FuUmVzaXplSW1hZ2UiLCJmc1NhZmVOYW1lIiwic2hhcnBGaWxlIiwiZGltZW5zaW9ucyIsImZpbGVCdWZmZXIiLCJleHQiLCJtaW1lIiwiZmlsZUhhc0FkanVzdG1lbnRzIiwiQm9vbGVhbiIsInRlbXBGaWxlUGF0aCIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnAiLCJyb3RhdGUiLCJyZXNpemUiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltIiwiaXNJbWFnZSIsImdldEltYWdlU2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWV0YWRhdGEiLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiZnJvbUJ1ZmZlciIsImluZm8iLCJmaWxlc2l6ZSIsInNpemUiLCJwYWdlcyIsImxlbmd0aCIsIm5hbWUiLCJzcGxpdCIsInBvcCIsIm1pbWVUeXBlIiwiYmFzZUZpbGVuYW1lIiwic2FuaXRpemUiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImdldFNhZmVGaWxlTmFtZSIsImNvbGxlY3Rpb25TbHVnIiwic2x1ZyIsImRlc2lyZWRGaWxlbmFtZSIsImZpbGVGb3JSZXNpemUiLCJjcm9wcGVkSW1hZ2UiLCJjcm9wSW1hZ2UiLCJoZWlnaHRJblBpeGVscyIsIndpZHRoSW5QaXhlbHMiLCJwdXNoIiwiYnVmZmVyIiwiZnMiLCJwcm9taXNlcyIsIndyaXRlRmlsZSIsIkFycmF5IiwiaXNBcnJheSIsInBheWxvYWRVcGxvYWRTaXplcyIsInNpemVEYXRhIiwic2l6ZXNUb1NhdmUiLCJyZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIiwic2F2ZWRGaWxlbmFtZSIsInNpemVzIiwiZm9jYWxYIiwieCIsImZvY2FsWSIsInkiLCJwYXlsb2FkIiwibG9nZ2VyIiwiZXJyb3IiLCJtc2ciLCJGaWxlVXBsb2FkRXJyb3IiLCJhcmdzIiwicXVlcnkiLCJpbmNvbWluZ0RhdGEiLCJvcmlnRG9jIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkEwQ2FBOzs7ZUFBQUE7OzswQkF2Q2M7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
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSwgVXBsb2FkRWRpdHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIE1pc3NpbmdGaWxlIH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IEZpbGVSZXRyaWV2YWxFcnJvciBmcm9tICcuLi9lcnJvcnMvRmlsZVJldHJpZXZhbEVycm9yJ1xuaW1wb3J0IGNhblJlc2l6ZUltYWdlIGZyb20gJy4vY2FuUmVzaXplSW1hZ2UnXG5pbXBvcnQgeyBjcm9wSW1hZ2UgfSBmcm9tICcuL2Nyb3BJbWFnZSdcbmltcG9ydCB7IGdldEV4dGVybmFsRmlsZSB9IGZyb20gJy4vZ2V0RXh0ZXJuYWxGaWxlJ1xuaW1wb3J0IGdldEZpbGVCeVBhdGggZnJvbSAnLi9nZXRGaWxlQnlQYXRoJ1xuaW1wb3J0IGdldEltYWdlU2l6ZSBmcm9tICcuL2dldEltYWdlU2l6ZSdcbmltcG9ydCBnZXRTYWZlRmlsZU5hbWUgZnJvbSAnLi9nZXRTYWZlRmlsZW5hbWUnXG5pbXBvcnQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyBmcm9tICcuL2ltYWdlUmVzaXplcidcbmltcG9ydCBpc0ltYWdlIGZyb20gJy4vaXNJbWFnZSdcbmltcG9ydCB7IG9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSB9IGZyb20gJy4vb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogVFxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M/OiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvcGVyYXRpb24sXG4gIG9yaWdpbmFsRG9jLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgdXBsb2FkRWRpdHMgPSBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKHtcbiAgICBkYXRhLFxuICAgIG9wZXJhdGlvbixcbiAgICBvcmlnaW5hbERvYyxcbiAgICByZXEsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGRpc2FibGVMb2NhbFN0b3JhZ2UsXG4gICAgZm9jYWxQb2ludDogZm9jYWxQb2ludEVuYWJsZWQsXG4gICAgZm9ybWF0T3B0aW9ucyxcbiAgICBpbWFnZVNpemVzLFxuICAgIHJlc2l6ZU9wdGlvbnMsXG4gICAgc3RhdGljRGlyLFxuICAgIHRyaW1PcHRpb25zLFxuICAgIHdpdGhNZXRhZGF0YSxcbiAgfSA9IGNvbGxlY3Rpb25Db25maWcudXBsb2FkXG5cbiAgbGV0IHN0YXRpY1BhdGggPSBzdGF0aWNEaXJcbiAgaWYgKHN0YXRpY0Rpci5pbmRleE9mKCcvJykgIT09IDApIHtcbiAgICBzdGF0aWNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5wYXRocy5jb25maWdEaXIsIHN0YXRpY0RpcilcbiAgfVxuXG4gIGlmICghZmlsZSAmJiB1cGxvYWRFZGl0cyAmJiBkYXRhKSB7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gPSBkYXRhIGFzIEZpbGVEYXRhXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnLycpICYmICFkaXNhYmxlTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0RmlsZUJ5UGF0aChmaWxlUGF0aClcbiAgICAgICAgZmlsZSA9IHJlc3BvbnNlIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChmaWxlbmFtZSAmJiB1cmwpIHtcbiAgICAgICAgZmlsZSA9IChhd2FpdCBnZXRFeHRlcm5hbEZpbGUoe1xuICAgICAgICAgIGRhdGE6IGRhdGEgYXMgRmlsZURhdGEsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHVwbG9hZENvbmZpZzogY29sbGVjdGlvbkNvbmZpZy51cGxvYWQsXG4gICAgICAgIH0pKSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRmlsZVJldHJpZXZhbEVycm9yKHJlcS50LCBlcnIubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWZpbGUpIHtcbiAgICBpZiAodGhyb3dPbk1pc3NpbmdGaWxlKSB0aHJvdyBuZXcgTWlzc2luZ0ZpbGUocmVxLnQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGZpbGVzOiBbXSxcbiAgICB9XG4gIH1cblxuICBpZiAoIWRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICBta2RpcnAuc3luYyhzdGF0aWNQYXRoKVxuICB9XG5cbiAgbGV0IG5ld0RhdGEgPSBkYXRhXG4gIGNvbnN0IGZpbGVzVG9TYXZlOiBGaWxlVG9TYXZlW10gPSBbXVxuICBjb25zdCBmaWxlRGF0YTogUGFydGlhbDxGaWxlRGF0YT4gPSB7fVxuICBjb25zdCBmaWxlSXNBbmltYXRlZFR5cGUgPSBbJ2ltYWdlL2F2aWYnLCAnaW1hZ2UvZ2lmJywgJ2ltYWdlL3dlYnAnXS5pbmNsdWRlcyhmaWxlLm1pbWV0eXBlKVxuICBjb25zdCBjcm9wRGF0YSA9XG4gICAgdHlwZW9mIHVwbG9hZEVkaXRzID09PSAnb2JqZWN0JyAmJiAnY3JvcCcgaW4gdXBsb2FkRWRpdHMgPyB1cGxvYWRFZGl0cy5jcm9wIDogdW5kZWZpbmVkXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlU3VwcG9ydHNSZXNpemUgPSBjYW5SZXNpemVJbWFnZShmaWxlLm1pbWV0eXBlKVxuICAgIGxldCBmc1NhZmVOYW1lOiBzdHJpbmdcbiAgICBsZXQgc2hhcnBGaWxlOiBTaGFycCB8IHVuZGVmaW5lZFxuICAgIGxldCBkaW1lbnNpb25zOiBQcm9iZWRJbWFnZVNpemUgfCB1bmRlZmluZWRcbiAgICBsZXQgZmlsZUJ1ZmZlcjogeyBkYXRhOiBCdWZmZXI7IGluZm86IE91dHB1dEluZm8gfVxuICAgIGxldCBleHRcbiAgICBsZXQgbWltZTogc3RyaW5nXG4gICAgY29uc3QgZmlsZUhhc0FkanVzdG1lbnRzID1cbiAgICAgIGZpbGVTdXBwb3J0c1Jlc2l6ZSAmJlxuICAgICAgQm9vbGVhbihyZXNpemVPcHRpb25zIHx8IGZvcm1hdE9wdGlvbnMgfHwgaW1hZ2VTaXplcyB8fCB0cmltT3B0aW9ucyB8fCBmaWxlLnRlbXBGaWxlUGF0aClcblxuICAgIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICAgIGlmIChmaWxlSXNBbmltYXRlZFR5cGUpIHNoYXJwT3B0aW9ucy5hbmltYXRlZCA9IHRydWVcblxuICAgIGlmIChzaGFycCAmJiAoZmlsZUlzQW5pbWF0ZWRUeXBlIHx8IGZpbGVIYXNBZGp1c3RtZW50cykpIHtcbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVIYXNBZGp1c3RtZW50cykge1xuICAgICAgICBpZiAocmVzaXplT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS5yZXNpemUocmVzaXplT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybWF0T3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50b0Zvcm1hdChmb3JtYXRPcHRpb25zLmZvcm1hdCwgZm9ybWF0T3B0aW9ucy5vcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0cmltT3B0aW9ucykge1xuICAgICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50cmltKHRyaW1PcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpbGVTdXBwb3J0c1Jlc2l6ZSB8fCBpc0ltYWdlKGZpbGUubWltZXR5cGUpKSB7XG4gICAgICBkaW1lbnNpb25zID0gYXdhaXQgZ2V0SW1hZ2VTaXplKGZpbGUpXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuXG4gICAgaWYgKHNoYXJwRmlsZSkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBzaGFycEZpbGUubWV0YWRhdGEoKVxuICAgICAgc2hhcnBGaWxlID0gYXdhaXQgb3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhKHtcbiAgICAgICAgcmVxLFxuICAgICAgICBzaGFycEZpbGUsXG4gICAgICAgIHdpdGhNZXRhZGF0YSxcbiAgICAgIH0pXG4gICAgICBmaWxlQnVmZmVyID0gYXdhaXQgc2hhcnBGaWxlLnRvQnVmZmVyKHsgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUgfSlcbiAgICAgIDsoeyBleHQsIG1pbWUgfSA9IGF3YWl0IGZyb21CdWZmZXIoZmlsZUJ1ZmZlci5kYXRhKSkgLy8gVGhpcyBpcyBnZXR0aW5nIGFuIGluY29ycmVjdCBnaWYgaGVpZ2h0IGJhY2suXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGZpbGVCdWZmZXIuaW5mby53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodFxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlQnVmZmVyLmluZm8uc2l6ZVxuXG4gICAgICAvLyBBbmltYXRlZCBHSUZzICsgV2ViUCBhZ2dyZWdhdGUgdGhlIGhlaWdodCBmcm9tIGV2ZXJ5IGZyYW1lLCBzbyB3ZSBuZWVkIHRvIHVzZSBkaXZpZGUgYnkgbnVtYmVyIG9mIHBhZ2VzXG4gICAgICBpZiAobWV0YWRhdGEucGFnZXMpIHtcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gZmlsZUJ1ZmZlci5pbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzXG4gICAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5kYXRhLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtaW1lID0gZmlsZS5taW1ldHlwZVxuICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlLnNpemVcblxuICAgICAgaWYgKGZpbGUubmFtZS5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpLnNwbGl0KCc/JylbMF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dCA9ICcnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IFNWRyBtaW1lIHR5cGUuIGZyb21CdWZmZXIgbW9kaWZpZXMgaXQuXG4gICAgaWYgKG1pbWUgPT09ICdhcHBsaWNhdGlvbi94bWwnICYmIGV4dCA9PT0gJ3N2ZycpIG1pbWUgPSAnaW1hZ2Uvc3ZnK3htbCdcbiAgICBmaWxlRGF0YS5taW1lVHlwZSA9IG1pbWVcblxuICAgIGNvbnN0IGJhc2VGaWxlbmFtZSA9IHNhbml0aXplKGZpbGUubmFtZS5zdWJzdHJpbmcoMCwgZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpIHx8IGZpbGUubmFtZSlcbiAgICBmc1NhZmVOYW1lID0gYCR7YmFzZUZpbGVuYW1lfSR7ZXh0ID8gYC4ke2V4dH1gIDogJyd9YFxuXG4gICAgaWYgKCFvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzKSB7XG4gICAgICBmc1NhZmVOYW1lID0gYXdhaXQgZ2V0U2FmZUZpbGVOYW1lKHtcbiAgICAgICAgY29sbGVjdGlvblNsdWc6IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgZGVzaXJlZEZpbGVuYW1lOiBmc1NhZmVOYW1lLFxuICAgICAgICByZXEsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZpbGVEYXRhLmZpbGVuYW1lID0gZnNTYWZlTmFtZVxuICAgIGxldCBmaWxlRm9yUmVzaXplID0gZmlsZVxuXG4gICAgaWYgKGNyb3BEYXRhKSB7XG4gICAgICBjb25zdCB7IGRhdGE6IGNyb3BwZWRJbWFnZSwgaW5mbyB9ID0gYXdhaXQgY3JvcEltYWdlKHtcbiAgICAgICAgY3JvcERhdGEsXG4gICAgICAgIGRpbWVuc2lvbnMsXG4gICAgICAgIGZpbGUsXG4gICAgICAgIGhlaWdodEluUGl4ZWxzOiB1cGxvYWRFZGl0cy5oZWlnaHRJblBpeGVscyxcbiAgICAgICAgcmVxLFxuICAgICAgICB3aWR0aEluUGl4ZWxzOiB1cGxvYWRFZGl0cy53aWR0aEluUGl4ZWxzLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKHtcbiAgICAgICAgYnVmZmVyOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgZmlsZUZvclJlc2l6ZSA9IHtcbiAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgZGF0YTogY3JvcHBlZEltYWdlLFxuICAgICAgICBzaXplOiBpbmZvLnNpemUsXG4gICAgICB9XG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGluZm8uaGVpZ2h0XG4gICAgICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgc2hhcnBGaWxlLm1ldGFkYXRhKClcbiAgICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gbWV0YWRhdGEucGFnZXMgPyBpbmZvLmhlaWdodCAvIG1ldGFkYXRhLnBhZ2VzIDogaW5mby5oZWlnaHRcbiAgICAgIH1cbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gaW5mby5zaXplXG5cbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGNyb3BwZWRJbWFnZSkgLy8gd3JpdGUgZmlsZUJ1ZmZlciB0byB0aGUgdGVtcCBwYXRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEuZmlsZXMuZmlsZSA9IGZpbGVGb3JSZXNpemVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgLy8gSWYgdXNpbmcgdGVtcCBmaWxlcyBhbmQgdGhlIGltYWdlIGlzIGJlaW5nIHJlc2l6ZWQsIHdyaXRlIHRoZSBmaWxlIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgIGlmIChmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShmaWxlLnRlbXBGaWxlUGF0aCwgZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFzc2lnbiB0aGUgX3Bvc3NpYmx5IG1vZGlmaWVkXyBmaWxlIHRvIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgIHJlcS5maWxlcy5maWxlID0ge1xuICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICAgICAgc2l6ZTogZmlsZUJ1ZmZlcj8uaW5mby5zaXplLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWxlU3VwcG9ydHNSZXNpemUgJiYgKEFycmF5LmlzQXJyYXkoaW1hZ2VTaXplcykgfHwgZm9jYWxQb2ludEVuYWJsZWQgIT09IGZhbHNlKSkge1xuICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplcyA9IHt9XG4gICAgICBjb25zdCB7IGZvY2FsUG9pbnQsIHNpemVEYXRhLCBzaXplc1RvU2F2ZSB9ID0gYXdhaXQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gICAgICAgIGNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgZGltZW5zaW9uczogIWNyb3BEYXRhXG4gICAgICAgICAgPyBkaW1lbnNpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmRpbWVuc2lvbnMsXG4gICAgICAgICAgICAgIGhlaWdodDogZmlsZURhdGEuaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogZmlsZURhdGEud2lkdGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICBmaWxlOiBmaWxlRm9yUmVzaXplLFxuICAgICAgICBtaW1lVHlwZTogZmlsZURhdGEubWltZVR5cGUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2F2ZWRGaWxlbmFtZTogZnNTYWZlTmFtZSB8fCBmaWxlLm5hbWUsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICAgIHVwbG9hZEVkaXRzLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBmaWxlRGF0YS5zaXplcyA9IHNpemVEYXRhXG4gICAgICBmaWxlRGF0YS5mb2NhbFggPSBmb2NhbFBvaW50Py54XG4gICAgICBmaWxlRGF0YS5mb2NhbFkgPSBmb2NhbFBvaW50Py55XG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKC4uLnNpemVzVG9TYXZlKVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmVxLnBheWxvYWQubG9nZ2VyLmVycm9yKHsgZXJyLCBtc2c6ICdFcnJvciB1cGxvYWRpbmcgZmlsZScgfSlcbiAgICB0aHJvdyBuZXcgRmlsZVVwbG9hZEVycm9yKHJlcS50KVxuICB9XG5cbiAgbmV3RGF0YSA9IHtcbiAgICAuLi5uZXdEYXRhLFxuICAgIC4uLmZpbGVEYXRhLFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBuZXdEYXRhLFxuICAgIGZpbGVzOiBmaWxlc1RvU2F2ZSxcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIHVwbG9hZCBlZGl0cyBmcm9tIHJlcSBvciBpbmNvbWluZyBkYXRhXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVXBsb2FkRWRpdHNGcm9tUmVxT3JJbmNvbWluZ0RhdGEoYXJnczoge1xuICBkYXRhOiB1bmtub3duXG4gIG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJ1xuICBvcmlnaW5hbERvYzogdW5rbm93blxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59KTogVXBsb2FkRWRpdHMge1xuICBjb25zdCB7IGRhdGEsIG9wZXJhdGlvbiwgb3JpZ2luYWxEb2MsIHJlcSB9ID0gYXJnc1xuXG4gIC8vIEdldCBpbnRlbmRlZCBmb2NhbCBwb2ludCBjaGFuZ2UgZnJvbSBxdWVyeSBzdHJpbmcgb3IgaW5jb21pbmcgZGF0YVxuICBjb25zdCB1cGxvYWRFZGl0cyA9XG4gICAgcmVxLnF1ZXJ5Py51cGxvYWRFZGl0cyAmJiB0eXBlb2YgcmVxLnF1ZXJ5LnVwbG9hZEVkaXRzID09PSAnb2JqZWN0J1xuICAgICAgPyAocmVxLnF1ZXJ5LnVwbG9hZEVkaXRzIGFzIFVwbG9hZEVkaXRzKVxuICAgICAgOiB7fVxuXG4gIGlmICh1cGxvYWRFZGl0cy5mb2NhbFBvaW50KSByZXR1cm4gdXBsb2FkRWRpdHNcblxuICBjb25zdCBpbmNvbWluZ0RhdGEgPSBkYXRhIGFzIEZpbGVEYXRhXG4gIGNvbnN0IG9yaWdEb2MgPSBvcmlnaW5hbERvYyBhcyBGaWxlRGF0YVxuXG4gIC8vIElmIG5vIGNoYW5nZSBpbiBmb2NhbCBwb2ludCwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgLy8gVGhpcyBwcmV2ZW50cyBhIHJlZm9jYWwgb3BlcmF0aW9uIHRyaWdnZXJlZCBmcm9tIGFkbWluLCBiZWNhdXNlIGl0IGFsd2F5cyBzZW5kcyB0aGUgZm9jYWwgcG9pbnQuXG4gIGlmIChvcmlnRG9jICYmIGluY29taW5nRGF0YS5mb2NhbFggPT09IG9yaWdEb2MuZm9jYWxYICYmIGluY29taW5nRGF0YS5mb2NhbFkgPT09IG9yaWdEb2MuZm9jYWxZKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgaWYgKGluY29taW5nRGF0YS5mb2NhbFggJiYgaW5jb21pbmdEYXRhLmZvY2FsWSkge1xuICAgIHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQgPSB7XG4gICAgICB4OiBpbmNvbWluZ0RhdGEuZm9jYWxYLFxuICAgICAgeTogaW5jb21pbmdEYXRhLmZvY2FsWSxcbiAgICB9XG4gICAgcmV0dXJuIHVwbG9hZEVkaXRzXG4gIH1cblxuICAvLyBJZiBubyBmb2NhbCBwb2ludCBpcyBzZXQsIGRlZmF1bHQgdG8gY2VudGVyXG4gIGlmIChvcGVyYXRpb24gPT09ICdjcmVhdGUnKSB7XG4gICAgdXBsb2FkRWRpdHMuZm9jYWxQb2ludCA9IHtcbiAgICAgIHg6IDUwLFxuICAgICAgeTogNTAsXG4gICAgfVxuICB9XG4gIHJldHVybiB1cGxvYWRFZGl0c1xufVxuIl0sIm5hbWVzIjpbImdlbmVyYXRlRmlsZURhdGEiLCJjb2xsZWN0aW9uIiwiY29uZmlnIiwiY29sbGVjdGlvbkNvbmZpZyIsImRhdGEiLCJvcGVyYXRpb24iLCJvcmlnaW5hbERvYyIsIm92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMiLCJyZXEiLCJ0aHJvd09uTWlzc2luZ0ZpbGUiLCJ1cGxvYWQiLCJmaWxlcyIsImZpbGUiLCJ1bmRlZmluZWQiLCJ1cGxvYWRFZGl0cyIsInBhcnNlVXBsb2FkRWRpdHNGcm9tUmVxT3JJbmNvbWluZ0RhdGEiLCJkaXNhYmxlTG9jYWxTdG9yYWdlIiwiZm9jYWxQb2ludCIsImZvY2FsUG9pbnRFbmFibGVkIiwiZm9ybWF0T3B0aW9ucyIsImltYWdlU2l6ZXMiLCJyZXNpemVPcHRpb25zIiwic3RhdGljRGlyIiwidHJpbU9wdGlvbnMiLCJ3aXRoTWV0YWRhdGEiLCJzdGF0aWNQYXRoIiwiaW5kZXhPZiIsInBhdGgiLCJyZXNvbHZlIiwicGF0aHMiLCJjb25maWdEaXIiLCJmaWxlbmFtZSIsInVybCIsInN0YXJ0c1dpdGgiLCJmaWxlUGF0aCIsInJlc3BvbnNlIiwiZ2V0RmlsZUJ5UGF0aCIsImdldEV4dGVybmFsRmlsZSIsInVwbG9hZENvbmZpZyIsImVyciIsIkVycm9yIiwiRmlsZVJldHJpZXZhbEVycm9yIiwidCIsIm1lc3NhZ2UiLCJNaXNzaW5nRmlsZSIsIm1rZGlycCIsInN5bmMiLCJuZXdEYXRhIiwiZmlsZXNUb1NhdmUiLCJmaWxlRGF0YSIsImZpbGVJc0FuaW1hdGVkVHlwZSIsImluY2x1ZGVzIiwibWltZXR5cGUiLCJjcm9wRGF0YSIsImNyb3AiLCJmaWxlU3VwcG9ydHNSZXNpemUiLCJjYW5SZXNpemVJbWFnZSIsImZzU2FmZU5hbWUiLCJzaGFycEZpbGUiLCJkaW1lbnNpb25zIiwiZmlsZUJ1ZmZlciIsImV4dCIsIm1pbWUiLCJmaWxlSGFzQWRqdXN0bWVudHMiLCJCb29sZWFuIiwidGVtcEZpbGVQYXRoIiwic2hhcnBPcHRpb25zIiwiYW5pbWF0ZWQiLCJzaGFycCIsInJvdGF0ZSIsInJlc2l6ZSIsInRvRm9ybWF0IiwiZm9ybWF0Iiwib3B0aW9ucyIsInRyaW0iLCJpc0ltYWdlIiwiZ2V0SW1hZ2VTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJtZXRhZGF0YSIsIm9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSIsInRvQnVmZmVyIiwicmVzb2x2ZVdpdGhPYmplY3QiLCJmcm9tQnVmZmVyIiwiaW5mbyIsImZpbGVzaXplIiwic2l6ZSIsInBhZ2VzIiwibGVuZ3RoIiwibmFtZSIsInNwbGl0IiwicG9wIiwibWltZVR5cGUiLCJiYXNlRmlsZW5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0U2FmZUZpbGVOYW1lIiwiY29sbGVjdGlvblNsdWciLCJzbHVnIiwiZGVzaXJlZEZpbGVuYW1lIiwiZmlsZUZvclJlc2l6ZSIsImNyb3BwZWRJbWFnZSIsImNyb3BJbWFnZSIsImhlaWdodEluUGl4ZWxzIiwid2lkdGhJblBpeGVscyIsInB1c2giLCJidWZmZXIiLCJmcyIsInByb21pc2VzIiwid3JpdGVGaWxlIiwiQXJyYXkiLCJpc0FycmF5IiwicGF5bG9hZFVwbG9hZFNpemVzIiwic2l6ZURhdGEiLCJzaXplc1RvU2F2ZSIsInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJzYXZlZEZpbGVuYW1lIiwic2l6ZXMiLCJmb2NhbFgiLCJ4IiwiZm9jYWxZIiwieSIsInBheWxvYWQiLCJsb2dnZXIiLCJlcnJvciIsIm1zZyIsIkZpbGVVcGxvYWRFcnJvciIsImFyZ3MiLCJxdWVyeSIsImluY29taW5nRGF0YSIsIm9yaWdEb2MiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -2,6 +2,7 @@ import type { UploadedFile } from 'express-fileupload';
|
|
|
2
2
|
import type { SanitizedCollectionConfig } from '../collections/config/types';
|
|
3
3
|
import type { PayloadRequest } from '../express/types';
|
|
4
4
|
import type { FileSizes, FileToSave, ProbedImageSize, UploadEdits } from './types';
|
|
5
|
+
import { type WithMetadata } from './optionallyAppendMetadata';
|
|
5
6
|
type ResizeArgs = {
|
|
6
7
|
config: SanitizedCollectionConfig;
|
|
7
8
|
dimensions: ProbedImageSize;
|
|
@@ -11,6 +12,7 @@ type ResizeArgs = {
|
|
|
11
12
|
savedFilename: string;
|
|
12
13
|
staticPath: string;
|
|
13
14
|
uploadEdits?: UploadEdits;
|
|
15
|
+
withMetadata?: WithMetadata;
|
|
14
16
|
};
|
|
15
17
|
/** Result from resizing and transforming the requested image sizes */
|
|
16
18
|
type ImageSizesResult = {
|
|
@@ -32,6 +34,6 @@ type ImageSizesResult = {
|
|
|
32
34
|
* @param resizeConfig - the resize config
|
|
33
35
|
* @returns the result of the resize operation(s)
|
|
34
36
|
*/
|
|
35
|
-
export default function resizeAndTransformImageSizes({ config, dimensions, file, mimeType, req, savedFilename, staticPath, uploadEdits, }: ResizeArgs): Promise<ImageSizesResult>;
|
|
37
|
+
export default function resizeAndTransformImageSizes({ config, dimensions, file, mimeType, req, savedFilename, staticPath, uploadEdits, withMetadata, }: ResizeArgs): Promise<ImageSizesResult>;
|
|
36
38
|
export {};
|
|
37
39
|
//# sourceMappingURL=imageResizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageResizer.d.ts","sourceRoot":"","sources":["../../src/uploads/imageResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAEV,SAAS,EACT,UAAU,EAEV,eAAe,EACf,WAAW,EACZ,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"imageResizer.d.ts","sourceRoot":"","sources":["../../src/uploads/imageResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAEV,SAAS,EACT,UAAU,EAEV,eAAe,EACf,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,4BAA4B,CAAA;AAExF,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,yBAAyB,CAAA;IACjC,UAAU,EAAE,eAAe,CAAA;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,sEAAsE;AACtE,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B,CAAA;AAmND;;;;;;;;;;;;;GAaG;AACH,wBAA8B,4BAA4B,CAAC,EACzD,MAAM,EACN,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,GACb,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwMxC"}
|
|
@@ -27,6 +27,7 @@ const _sanitizefilename = /*#__PURE__*/ _interop_require_default(require("saniti
|
|
|
27
27
|
const _sharp = /*#__PURE__*/ _interop_require_default(require("sharp"));
|
|
28
28
|
const _isNumber = require("../utilities/isNumber");
|
|
29
29
|
const _fileExists = /*#__PURE__*/ _interop_require_default(require("./fileExists"));
|
|
30
|
+
const _optionallyAppendMetadata = require("./optionallyAppendMetadata");
|
|
30
31
|
function _interop_require_default(obj) {
|
|
31
32
|
return obj && obj.__esModule ? obj : {
|
|
32
33
|
default: obj
|
|
@@ -157,7 +158,7 @@ const createImageName = ({ extension, height, outputImageName, width })=>{
|
|
|
157
158
|
}
|
|
158
159
|
return sharpMetadata.height;
|
|
159
160
|
}
|
|
160
|
-
async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType, req, savedFilename, staticPath, uploadEdits }) {
|
|
161
|
+
async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType, req, savedFilename, staticPath, uploadEdits, withMetadata }) {
|
|
161
162
|
const { focalPoint: focalPointEnabled = true, imageSizes } = config.upload;
|
|
162
163
|
// Focal point adjustments
|
|
163
164
|
const incomingFocalPoint = uploadEdits?.focalPoint ? {
|
|
@@ -220,8 +221,13 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
220
221
|
height: prioritizeHeight ? resizeHeight : undefined,
|
|
221
222
|
width: prioritizeHeight ? undefined : resizeWidth
|
|
222
223
|
});
|
|
223
|
-
|
|
224
|
-
|
|
224
|
+
const metadataAppendedFile = await (0, _optionallyAppendMetadata.optionallyAppendMetadata)({
|
|
225
|
+
req,
|
|
226
|
+
sharpFile: resized,
|
|
227
|
+
withMetadata
|
|
228
|
+
});
|
|
229
|
+
// Must read from buffer, resized.metadata will return the original image metadata
|
|
230
|
+
const { info } = await metadataAppendedFile.toBuffer({
|
|
225
231
|
resolveWithObject: true
|
|
226
232
|
});
|
|
227
233
|
resizeImageMeta.height = extractHeightFromImage({
|
|
@@ -268,7 +274,12 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
268
274
|
if (imageResizeConfig.trimOptions) {
|
|
269
275
|
resized = resized.trim(imageResizeConfig.trimOptions);
|
|
270
276
|
}
|
|
271
|
-
const
|
|
277
|
+
const metadataAppendedFile = await (0, _optionallyAppendMetadata.optionallyAppendMetadata)({
|
|
278
|
+
req,
|
|
279
|
+
sharpFile: resized,
|
|
280
|
+
withMetadata
|
|
281
|
+
});
|
|
282
|
+
const { data: bufferData, info: bufferInfo } = await metadataAppendedFile.toBuffer({
|
|
272
283
|
resolveWithObject: true
|
|
273
284
|
});
|
|
274
285
|
const sanitizedImage = getSanitizedImageData(savedFilename);
|
|
@@ -318,4 +329,4 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
|
|
|
318
329
|
});
|
|
319
330
|
}
|
|
320
331
|
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgU2hhcnAsIE1ldGFkYXRhIGFzIFNoYXJwTWV0YWRhdGEsIFNoYXJwT3B0aW9ucyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgRmlsZVNpemUsXG4gIEZpbGVTaXplcyxcbiAgRmlsZVRvU2F2ZSxcbiAgSW1hZ2VTaXplLFxuICBQcm9iZWRJbWFnZVNpemUsXG4gIFVwbG9hZEVkaXRzLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gJy4vZmlsZUV4aXN0cydcblxudHlwZSBSZXNpemVBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGZpbGU6IFVwbG9hZGVkRmlsZVxuICBtaW1lVHlwZTogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2F2ZWRGaWxlbmFtZTogc3RyaW5nXG4gIHN0YXRpY1BhdGg6IHN0cmluZ1xuICB1cGxvYWRFZGl0cz86IFVwbG9hZEVkaXRzXG59XG5cbi8qKiBSZXN1bHQgZnJvbSByZXNpemluZyBhbmQgdHJhbnNmb3JtaW5nIHRoZSByZXF1ZXN0ZWQgaW1hZ2Ugc2l6ZXMgKi9cbnR5cGUgSW1hZ2VTaXplc1Jlc3VsdCA9IHtcbiAgZm9jYWxQb2ludD86IFVwbG9hZEVkaXRzWydmb2NhbFBvaW50J11cbiAgc2l6ZURhdGE6IEZpbGVTaXplc1xuICBzaXplc1RvU2F2ZTogRmlsZVRvU2F2ZVtdXG59XG5cbnR5cGUgU2FuaXRpemVkSW1hZ2VEYXRhID0ge1xuICBleHQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSB0aGUgaW1hZ2UgbmFtZSBhbmQgZXh0cmFjdCB0aGUgZXh0ZW5zaW9uIGZyb20gdGhlIHNvdXJjZSBpbWFnZVxuICpcbiAqIEBwYXJhbSBzb3VyY2VJbWFnZSAtIHRoZSBzb3VyY2UgaW1hZ2VcbiAqIEByZXR1cm5zIHRoZSBzYW5pdGl6ZWQgbmFtZSBhbmQgZXh0ZW5zaW9uXG4gKi9cbmNvbnN0IGdldFNhbml0aXplZEltYWdlRGF0YSA9IChzb3VyY2VJbWFnZTogc3RyaW5nKTogU2FuaXRpemVkSW1hZ2VEYXRhID0+IHtcbiAgY29uc3QgZXh0ZW5zaW9uID0gc291cmNlSW1hZ2Uuc3BsaXQoJy4nKS5wb3AoKVxuICBjb25zdCBuYW1lID0gc2FuaXRpemUoc291cmNlSW1hZ2Uuc3Vic3RyaW5nKDAsIHNvdXJjZUltYWdlLmxhc3RJbmRleE9mKCcuJykpIHx8IHNvdXJjZUltYWdlKVxuICByZXR1cm4geyBuYW1lLCBleHQ6IGV4dGVuc2lvbiB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGltYWdlIG5hbWUgYmFzZWQgb24gdGhlIG91dHB1dCBpbWFnZSBuYW1lLCB0aGUgZGltZW5zaW9ucyBhbmRcbiAqIHRoZSBleHRlbnNpb24uXG4gKlxuICogSWdub3JlIHRoZSBmYWN0IHRoYXQgZHVwbGljYXRlIG5hbWVzIGNvdWxkIGhhcHBlbiBpZiB0aGUgdGhlcmUgaXMgb25lXG4gKiBzaXplIHdpdGggYHdpZHRoIEFORCBoZWlnaHRgIGFuZCBvbmUgd2l0aCBvbmx5IGBoZWlnaHQgT1Igd2lkdGhgLiBCZWNhdXNlXG4gKiBzcGFjZSBpcyBleHBlbnNpdmUsIHdlIHdpbGwgcmV1c2UgdGhlIHNhbWUgaW1hZ2UgZm9yIGJvdGggc2l6ZXMuXG4gKlxuICogQHBhcmFtIG91dHB1dEltYWdlTmFtZSAtIHRoZSBzYW5pdGl6ZWQgaW1hZ2UgbmFtZVxuICogQHBhcmFtIGJ1ZmZlckluZm8gLSB0aGUgYnVmZmVyIGluZm9cbiAqIEBwYXJhbSBleHRlbnNpb24gLSB0aGUgZXh0ZW5zaW9uIHRvIHVzZVxuICogQHJldHVybnMgdGhlIG5ldyBpbWFnZSBuYW1lIHRoYXQgaXMgbm90IHRha2VuXG4gKi9cblxudHlwZSBDcmVhdGVJbWFnZU5hbWVBcmdzID0ge1xuICBleHRlbnNpb246IHN0cmluZ1xuICBoZWlnaHQ6IG51bWJlclxuICBvdXRwdXRJbWFnZU5hbWU6IHN0cmluZ1xuICB3aWR0aDogbnVtYmVyXG59XG5jb25zdCBjcmVhdGVJbWFnZU5hbWUgPSAoe1xuICBleHRlbnNpb24sXG4gIGhlaWdodCxcbiAgb3V0cHV0SW1hZ2VOYW1lLFxuICB3aWR0aCxcbn06IENyZWF0ZUltYWdlTmFtZUFyZ3MpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYCR7b3V0cHV0SW1hZ2VOYW1lfS0ke3dpZHRofXgke2hlaWdodH0uJHtleHRlbnNpb259YFxufVxuXG50eXBlIENyZWF0ZVJlc3VsdEFyZ3MgPSB7XG4gIGZpbGVuYW1lPzogRmlsZVNpemVbJ2ZpbGVuYW1lJ11cbiAgZmlsZXNpemU/OiBGaWxlU2l6ZVsnZmlsZXNpemUnXVxuICBoZWlnaHQ/OiBGaWxlU2l6ZVsnaGVpZ2h0J11cbiAgbWltZVR5cGU/OiBGaWxlU2l6ZVsnbWltZVR5cGUnXVxuICBuYW1lOiBzdHJpbmdcbiAgc2l6ZXNUb1NhdmU/OiBGaWxlVG9TYXZlW11cbiAgd2lkdGg/OiBGaWxlU2l6ZVsnd2lkdGgnXVxufVxuXG4vKipcbiAqIENyZWF0ZSB0aGUgcmVzdWx0IG9iamVjdCBmb3IgdGhlIGltYWdlIHJlc2l6ZSBvcGVyYXRpb24gYmFzZWQgb24gdGhlXG4gKiBwcm92aWRlZCBwYXJhbWV0ZXJzLiBJZiB0aGUgbmFtZSBpcyBub3QgcHJvdmlkZWQsIGFuIGVtcHR5IHJlc3VsdCBvYmplY3RcbiAqIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZW5hbWUgLSB0aGUgZmlsZW5hbWUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gd2lkdGggLSB0aGUgd2lkdGggb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gaGVpZ2h0IC0gdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAqIEBwYXJhbSBmaWxlc2l6ZSAtIHRoZSBmaWxlc2l6ZSBvZiB0aGUgaW1hZ2VcbiAqIEBwYXJhbSBtaW1lVHlwZSAtIHRoZSBtaW1lIHR5cGUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gc2l6ZXNUb1NhdmUgLSB0aGUgc2l6ZXMgdG8gc2F2ZVxuICogQHJldHVybnMgdGhlIHJlc3VsdCBvYmplY3RcbiAqL1xuY29uc3QgY3JlYXRlUmVzdWx0ID0gKHtcbiAgbmFtZSxcbiAgZmlsZW5hbWUgPSBudWxsLFxuICBmaWxlc2l6ZSA9IG51bGwsXG4gIGhlaWdodCA9IG51bGwsXG4gIG1pbWVUeXBlID0gbnVsbCxcbiAgc2l6ZXNUb1NhdmUgPSBbXSxcbiAgd2lkdGggPSBudWxsLFxufTogQ3JlYXRlUmVzdWx0QXJncyk6IEltYWdlU2l6ZXNSZXN1bHQgPT4ge1xuICByZXR1cm4ge1xuICAgIHNpemVEYXRhOiB7XG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgIGZpbGVzaXplLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIG1pbWVUeXBlLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzaXplc1RvU2F2ZSxcbiAgfVxufVxuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byByZXNpemUgdGhlIGltYWdlLlxuICogLSByZXNpemUgdXNpbmcgaW1hZ2UgY29uZmlnXG4gKiAtIHJlc2l6ZSB1c2luZyBpbWFnZSBjb25maWcgd2l0aCBmb2NhbCBhZGp1c3RtZW50c1xuICogLSBkbyBub3QgcmVzaXplIGF0IGFsbFxuICpcbiAqIGBpbWFnZVJlc2l6ZUNvbmZpZy53aXRob3V0RW5sYXJnZW1lbnRgOlxuICogLSB1bmRlZmluZWQgW2RlZmF1bHRdOiB1cGxvYWRpbmcgaW1hZ2VzIHdpdGggc21hbGxlciB3aWR0aCBBTkQgaGVpZ2h0IHRoYW4gdGhlIGltYWdlIHNpemUgd2lsbCByZXR1cm4gbnVsbFxuICogLSBmYWxzZTogYWx3YXlzIGVubGFyZ2UgaW1hZ2VzIHRvIHRoZSBpbWFnZSBzaXplXG4gKiAtIHRydWU6IGlmIHRoZSBpbWFnZSBpcyBzbWFsbGVyIHRoYW4gdGhlIGltYWdlIHNpemUsIHJldHVybiB0aGUgb3JpZ2luYWwgaW1hZ2VcbiAqXG4gKiBgaW1hZ2VSZXNpemVDb25maWcud2l0aG91dFJlZHVjdGlvbmA6XG4gKiAtIGZhbHNlIFtkZWZhdWx0XTogYWx3YXlzIGVubGFyZ2UgaW1hZ2VzIHRvIHRoZSBpbWFnZSBzaXplXG4gKiAtIHRydWU6IGlmIHRoZSBpbWFnZSBpcyBzbWFsbGVyIHRoYW4gdGhlIGltYWdlIHNpemUsIHJldHVybiB0aGUgb3JpZ2luYWwgaW1hZ2VcbiAqXG4gKiBAcmV0dXJuICdvbWl0JyB8ICdyZXNpemUnIHwgJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50J1xuICovXG5jb25zdCBnZXRJbWFnZVJlc2l6ZUFjdGlvbiA9ICh7XG4gIGRpbWVuc2lvbnM6IG9yaWdpbmFsSW1hZ2UsXG4gIGhhc0ZvY2FsUG9pbnQsXG4gIGltYWdlUmVzaXplQ29uZmlnLFxufToge1xuICBkaW1lbnNpb25zOiBQcm9iZWRJbWFnZVNpemVcbiAgaGFzRm9jYWxQb2ludD86IGJvb2xlYW5cbiAgaW1hZ2VSZXNpemVDb25maWc6IEltYWdlU2l6ZVxufSk6ICdvbWl0JyB8ICdyZXNpemUnIHwgJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50JyA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaXQsXG4gICAgaGVpZ2h0OiB0YXJnZXRIZWlnaHQsXG4gICAgd2lkdGg6IHRhcmdldFdpZHRoLFxuICAgIHdpdGhvdXRFbmxhcmdlbWVudCxcbiAgICB3aXRob3V0UmVkdWN0aW9uLFxuICB9ID0gaW1hZ2VSZXNpemVDb25maWdcblxuICAvLyBwcmV2ZW50IHVwc2NhbGluZyBieSBkZWZhdWx0IHdoZW4geCBhbmQgeSBhcmUgYm90aCBzbWFsbGVyIHRoYW4gdGFyZ2V0IGltYWdlIHNpemVcbiAgaWYgKHRhcmdldEhlaWdodCAmJiB0YXJnZXRXaWR0aCkge1xuICAgIGNvbnN0IG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSA9XG4gICAgICBvcmlnaW5hbEltYWdlLndpZHRoIDwgdGFyZ2V0V2lkdGggJiYgb3JpZ2luYWxJbWFnZS5oZWlnaHQgPCB0YXJnZXRIZWlnaHRcbiAgICBpZiAod2l0aG91dEVubGFyZ2VtZW50ID09PSB1bmRlZmluZWQgJiYgb3JpZ2luYWxJbWFnZUlzU21hbGxlclhBbmRZKSB7XG4gICAgICByZXR1cm4gJ29taXQnIC8vIHByZXZlbnQgaW1hZ2Ugc2l6ZSBmcm9tIGJlaW5nIGVubGFyZ2VkXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxJbWFnZUlzU21hbGxlclhPclkgPVxuICAgIG9yaWdpbmFsSW1hZ2Uud2lkdGggPCB0YXJnZXRXaWR0aCB8fCBvcmlnaW5hbEltYWdlLmhlaWdodCA8IHRhcmdldEhlaWdodFxuICBpZiAoZml0ID09PSAnY29udGFpbicgfHwgZml0ID09PSAnaW5zaWRlJykgcmV0dXJuICdyZXNpemUnXG4gIGlmICghaXNOdW1iZXIodGFyZ2V0SGVpZ2h0KSAmJiAhaXNOdW1iZXIodGFyZ2V0V2lkdGgpKSByZXR1cm4gJ3Jlc2l6ZSdcblxuICBjb25zdCB0YXJnZXRBc3BlY3RSYXRpbyA9IHRhcmdldFdpZHRoIC8gdGFyZ2V0SGVpZ2h0XG4gIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBvcmlnaW5hbEltYWdlLndpZHRoIC8gb3JpZ2luYWxJbWFnZS5oZWlnaHRcbiAgaWYgKG9yaWdpbmFsQXNwZWN0UmF0aW8gPT09IHRhcmdldEFzcGVjdFJhdGlvKSByZXR1cm4gJ3Jlc2l6ZSdcblxuICBpZiAod2l0aG91dEVubGFyZ2VtZW50ICYmIG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZKSByZXR1cm4gJ3Jlc2l6ZSdcbiAgaWYgKHdpdGhvdXRSZWR1Y3Rpb24gJiYgIW9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZKSByZXR1cm4gJ3Jlc2l6ZSdcblxuICByZXR1cm4gaGFzRm9jYWxQb2ludCA/ICdyZXNpemVXaXRoRm9jYWxQb2ludCcgOiAncmVzaXplJ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBpbWFnZSBzaG91bGQgYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHNoYXJwIHdpdGhvdXQgcGF5bG9hZCBhZGp1c3RpbmcgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVlc3RlZCBkaW1lbnNpb25zIGFuZCByZXNpemUgb3B0aW9uc1xuICogQHBhcmFtIG9yaWdpbmFsIC0gdGhlIG9yaWdpbmFsIGltYWdlIHNpemVcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGltYWdlIHNob3VsZCBwYXNzZWQgZGlyZWN0bHkgdG8gc2hhcnBcbiAqL1xuY29uc3QgYXBwbHlQYXlsb2FkQWRqdXN0bWVudHMgPSAoXG4gIHsgZml0LCBoZWlnaHQsIHdpZHRoLCB3aXRob3V0RW5sYXJnZW1lbnQsIHdpdGhvdXRSZWR1Y3Rpb24gfTogSW1hZ2VTaXplLFxuICBvcmlnaW5hbDogUHJvYmVkSW1hZ2VTaXplLFxuKSA9PiB7XG4gIGlmIChmaXQgPT09ICdjb250YWluJyB8fCBmaXQgPT09ICdpbnNpZGUnKSByZXR1cm4gZmFsc2VcbiAgaWYgKCFpc051bWJlcihoZWlnaHQpICYmICFpc051bWJlcih3aWR0aCkpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IHRhcmdldEFzcGVjdFJhdGlvID0gd2lkdGggLyBoZWlnaHRcbiAgY29uc3Qgb3JpZ2luYWxBc3BlY3RSYXRpbyA9IG9yaWdpbmFsLndpZHRoIC8gb3JpZ2luYWwuaGVpZ2h0XG4gIGlmIChvcmlnaW5hbEFzcGVjdFJhdGlvID09PSB0YXJnZXRBc3BlY3RSYXRpbykgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3Qgc2tpcEVubGFyZ2VtZW50ID0gd2l0aG91dEVubGFyZ2VtZW50ICYmIChvcmlnaW5hbC5oZWlnaHQgPCBoZWlnaHQgfHwgb3JpZ2luYWwud2lkdGggPCB3aWR0aClcbiAgY29uc3Qgc2tpcFJlZHVjdGlvbiA9IHdpdGhvdXRSZWR1Y3Rpb24gJiYgKG9yaWdpbmFsLmhlaWdodCA+IGhlaWdodCB8fCBvcmlnaW5hbC53aWR0aCA+IHdpZHRoKVxuICBpZiAoc2tpcEVubGFyZ2VtZW50IHx8IHNraXBSZWR1Y3Rpb24pIHJldHVybiBmYWxzZVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogU2FuaXRpemUgdGhlIHJlc2l6ZSBjb25maWcuIElmIHRoZSByZXNpemUgY29uZmlnIGhhcyB0aGUgYHdpdGhvdXRSZWR1Y3Rpb25gXG4gKiBwcm9wZXJ0eSBzZXQgdG8gdHJ1ZSwgdGhlIGBmaXRgIGFuZCBgcG9zaXRpb25gIHByb3BlcnRpZXMgd2lsbCBiZSBzZXQgdG8gYGNvbnRhaW5gXG4gKiBhbmQgYHRvcCBsZWZ0YCByZXNwZWN0aXZlbHkuXG4gKlxuICogQHBhcmFtIHJlc2l6ZUNvbmZpZyAtIHRoZSByZXNpemUgY29uZmlnXG4gKiBAcmV0dXJucyBhIHNhbml0aXplZCByZXNpemUgY29uZmlnXG4gKi9cbmNvbnN0IHNhbml0aXplUmVzaXplQ29uZmlnID0gKHJlc2l6ZUNvbmZpZzogSW1hZ2VTaXplKTogSW1hZ2VTaXplID0+IHtcbiAgaWYgKHJlc2l6ZUNvbmZpZy53aXRob3V0UmVkdWN0aW9uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc2l6ZUNvbmZpZyxcbiAgICAgIC8vIFdoeSBmaXQgYGNvbnRhaW5gIHNob3VsZCBhbHNvIGJlIHNldCB0byBodHRwczovL2dpdGh1Yi5jb20vbG92ZWxsL3NoYXJwL2lzc3Vlcy8zNTk1XG4gICAgICBmaXQ6IHJlc2l6ZUNvbmZpZz8uZml0IHx8ICdjb250YWluJyxcbiAgICAgIHBvc2l0aW9uOiByZXNpemVDb25maWc/LnBvc2l0aW9uIHx8ICdsZWZ0IHRvcCcsXG4gICAgfVxuICB9XG4gIHJldHVybiByZXNpemVDb25maWdcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGV4dHJhY3QgaGVpZ2h0IGZyb20gaW1hZ2VzLCBhbmltYXRlZCBvciBub3QuXG4gKlxuICogQHBhcmFtIHNoYXJwTWV0YWRhdGEgLSB0aGUgc2hhcnAgbWV0YWRhdGFcbiAqIEByZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoc2hhcnBNZXRhZGF0YTogU2hhcnBNZXRhZGF0YSk6IG51bWJlciB7XG4gIGlmIChzaGFycE1ldGFkYXRhPy5wYWdlcykge1xuICAgIHJldHVybiBzaGFycE1ldGFkYXRhLmhlaWdodCAvIHNoYXJwTWV0YWRhdGEucGFnZXNcbiAgfVxuICByZXR1cm4gc2hhcnBNZXRhZGF0YS5oZWlnaHRcbn1cblxuLyoqXG4gKiBGb3IgdGhlIHByb3ZpZGVkIGltYWdlIHNpemVzLCBoYW5kbGUgdGhlIHJlc2l6aW5nIGFuZCB0aGUgdHJhbnNmb3Jtc1xuICogKGZvcm1hdCwgdHJpbSwgZXRjLikgb2YgZWFjaCByZXF1ZXN0ZWQgaW1hZ2Ugc2l6ZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2JqZWN0LlxuICogVGhpcyBvbmx5IGhhbmRsZXMgdGhlIGltYWdlIHNpemVzLiBUaGUgdHJhbnNmb3JtcyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2VcbiAqIGFyZSBoYW5kbGVkIGluIHtAbGluayAuL2dlbmVyYXRlRmlsZURhdGEudHN9LlxuICpcbiAqIFRoZSBpbWFnZSB3aWxsIGJlIHJlc2l6ZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZFxuICogcmVzaXplIGNvbmZpZy4gSWYgbm8gaW1hZ2Ugc2l6ZXMgYXJlIHJlcXVlc3RlZCwgdGhlIHJlc29sdmVkIGRhdGEgd2lsbCBiZSBlbXB0eS5cbiAqIEZvciBldmVyeSBpbWFnZSB0aGF0IGRvZXMgbm90IG5lZWQgdG8gYmUgcmVzaXplZCwgYSByZXN1bHQgb2JqZWN0IHdpdGggYG51bGxgXG4gKiBwYXJhbWV0ZXJzIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHJlc2l6ZUNvbmZpZyAtIHRoZSByZXNpemUgY29uZmlnXG4gKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSByZXNpemUgb3BlcmF0aW9uKHMpXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMoe1xuICBjb25maWcsXG4gIGRpbWVuc2lvbnMsXG4gIGZpbGUsXG4gIG1pbWVUeXBlLFxuICByZXEsXG4gIHNhdmVkRmlsZW5hbWUsXG4gIHN0YXRpY1BhdGgsXG4gIHVwbG9hZEVkaXRzLFxufTogUmVzaXplQXJncyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4ge1xuICBjb25zdCB7IGZvY2FsUG9pbnQ6IGZvY2FsUG9pbnRFbmFibGVkID0gdHJ1ZSwgaW1hZ2VTaXplcyB9ID0gY29uZmlnLnVwbG9hZFxuXG4gIC8vIEZvY2FsIHBvaW50IGFkanVzdG1lbnRzXG4gIGNvbnN0IGluY29taW5nRm9jYWxQb2ludCA9IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50XG4gICAgPyB7XG4gICAgICAgIHg6IGlzTnVtYmVyKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgPyBNYXRoLnJvdW5kKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgOiA1MCxcbiAgICAgICAgeTogaXNOdW1iZXIodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA/IE1hdGgucm91bmQodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA6IDUwLFxuICAgICAgfVxuICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgZGVmYXVsdFJlc3VsdDogSW1hZ2VTaXplc1Jlc3VsdCA9IHtcbiAgICAuLi4oZm9jYWxQb2ludEVuYWJsZWQgJiYgaW5jb21pbmdGb2NhbFBvaW50ICYmIHsgZm9jYWxQb2ludDogaW5jb21pbmdGb2NhbFBvaW50IH0pLFxuICAgIHNpemVEYXRhOiB7fSxcbiAgICBzaXplc1RvU2F2ZTogW10sXG4gIH1cblxuICAvLyBOb3RoaW5nIHRvIHJlc2l6ZSBoZXJlIHNvIHJldHVybiBhcyBlYXJseSBhcyBwb3NzaWJsZVxuICBpZiAoIWltYWdlU2l6ZXMpIHJldHVybiBkZWZhdWx0UmVzdWx0XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGFuaW1hdGVkXG4gIGNvbnN0IGZpbGVJc0FuaW1hdGVkVHlwZSA9IFsnaW1hZ2UvYXZpZicsICdpbWFnZS9naWYnLCAnaW1hZ2Uvd2VicCddLmluY2x1ZGVzKGZpbGUubWltZXR5cGUpXG4gIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSBzaGFycE9wdGlvbnMuYW5pbWF0ZWQgPSB0cnVlXG5cbiAgY29uc3Qgc2hhcnBCYXNlOiBTaGFycCB8IHVuZGVmaW5lZCA9IHNoYXJwKGZpbGUudGVtcEZpbGVQYXRoIHx8IGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgY29uc3Qgb3JpZ2luYWxJbWFnZU1ldGEgPSBhd2FpdCBzaGFycEJhc2UubWV0YWRhdGEoKVxuXG4gIGNvbnN0IHJlc2l6ZUltYWdlTWV0YSA9IHtcbiAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uob3JpZ2luYWxJbWFnZU1ldGEpLFxuICAgIHdpZHRoOiBvcmlnaW5hbEltYWdlTWV0YS53aWR0aCxcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHM6IEltYWdlU2l6ZXNSZXN1bHRbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGltYWdlU2l6ZXMubWFwKGFzeW5jIChpbWFnZVJlc2l6ZUNvbmZpZyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4gPT4ge1xuICAgICAgaW1hZ2VSZXNpemVDb25maWcgPSBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyhpbWFnZVJlc2l6ZUNvbmZpZylcblxuICAgICAgY29uc3QgcmVzaXplQWN0aW9uID0gZ2V0SW1hZ2VSZXNpemVBY3Rpb24oe1xuICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICBoYXNGb2NhbFBvaW50OiBCb29sZWFuKGluY29taW5nRm9jYWxQb2ludCksXG4gICAgICAgIGltYWdlUmVzaXplQ29uZmlnLFxuICAgICAgfSlcbiAgICAgIGlmIChyZXNpemVBY3Rpb24gPT09ICdvbWl0JykgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7IG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUgfSlcblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemVcblxuICAgICAgaWYgKHJlc2l6ZUFjdGlvbiA9PT0gJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50Jykge1xuICAgICAgICBsZXQgeyBoZWlnaHQ6IHJlc2l6ZUhlaWdodCwgd2lkdGg6IHJlc2l6ZVdpZHRoIH0gPSBpbWFnZVJlc2l6ZUNvbmZpZ1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBkaW1lbnNpb25zLndpZHRoIC8gZGltZW5zaW9ucy5oZWlnaHRcblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplV2lkdGggYmFzZWQgb24gb3JpZ2luYWwgYXNwZWN0IHJhdGlvIGlmIGl0J3MgdW5kZWZpbmVkXG4gICAgICAgIGlmIChyZXNpemVIZWlnaHQgJiYgIXJlc2l6ZVdpZHRoKSB7XG4gICAgICAgICAgcmVzaXplV2lkdGggPSBNYXRoLnJvdW5kKHJlc2l6ZUhlaWdodCAqIG9yaWdpbmFsQXNwZWN0UmF0aW8pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplSGVpZ2h0IGJhc2VkIG9uIG9yaWdpbmFsIGFzcGVjdCByYXRpbyBpZiBpdCdzIHVuZGVmaW5lZFxuICAgICAgICBpZiAocmVzaXplV2lkdGggJiYgIXJlc2l6ZUhlaWdodCkge1xuICAgICAgICAgIHJlc2l6ZUhlaWdodCA9IE1hdGgucm91bmQocmVzaXplV2lkdGggLyBvcmlnaW5hbEFzcGVjdFJhdGlvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXNpemVIZWlnaHQpIHJlc2l6ZUhlaWdodCA9IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHRcbiAgICAgICAgaWYgKCFyZXNpemVXaWR0aCkgcmVzaXplV2lkdGggPSByZXNpemVJbWFnZU1ldGEud2lkdGhcblxuICAgICAgICBjb25zdCByZXNpemVBc3BlY3RSYXRpbyA9IHJlc2l6ZVdpZHRoIC8gcmVzaXplSGVpZ2h0XG4gICAgICAgIGNvbnN0IHByaW9yaXRpemVIZWlnaHQgPSByZXNpemVBc3BlY3RSYXRpbyA8IG9yaWdpbmFsQXNwZWN0UmF0aW9cbiAgICAgICAgLy8gU2NhbGVzIHRoZSBpbWFnZSBiZWZvcmUgZXh0cmFjdGluZyBmcm9tIGl0XG4gICAgICAgIHJlc2l6ZWQgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZSh7XG4gICAgICAgICAgaGVpZ2h0OiBwcmlvcml0aXplSGVpZ2h0ID8gcmVzaXplSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIHdpZHRoOiBwcmlvcml0aXplSGVpZ2h0ID8gdW5kZWZpbmVkIDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gbXVzdCByZWFkIGZyb20gYnVmZmVyLCByZXNpemUubWV0YWRhdGEgd2lsbCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlIG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IHsgaW5mbyB9ID0gYXdhaXQgcmVzaXplZC50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG4gICAgICAgIHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQgPSBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHtcbiAgICAgICAgICAuLi5vcmlnaW5hbEltYWdlTWV0YSxcbiAgICAgICAgICBoZWlnaHQ6IGluZm8uaGVpZ2h0LFxuICAgICAgICB9KVxuICAgICAgICByZXNpemVJbWFnZU1ldGEud2lkdGggPSBpbmZvLndpZHRoXG5cbiAgICAgICAgY29uc3QgaGFsZlJlc2l6ZVggPSByZXNpemVXaWR0aCAvIDJcbiAgICAgICAgY29uc3QgeEZvY2FsQ2VudGVyID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoICogKGluY29taW5nRm9jYWxQb2ludC54IC8gMTAwKVxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kID0geEZvY2FsQ2VudGVyICsgaGFsZlJlc2l6ZVhcbiAgICAgICAgbGV0IGxlZnRCb3VuZCA9IHhGb2NhbENlbnRlciAtIGhhbGZSZXNpemVYXG5cbiAgICAgICAgLy8gaWYgdGhlIHJpZ2h0IGJvdW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgaW1hZ2Ugd2lkdGgsIGFkanVzdCB0aGUgbGVmdCBib3VuZFxuICAgICAgICAvLyBrZWVwaW5nIGZvY3VzIG9uIHRoZSByaWdodFxuICAgICAgICBpZiAoY2FsY3VsYXRlZFJpZ2h0UGl4ZWxCb3VuZCA+IHJlc2l6ZUltYWdlTWV0YS53aWR0aCkge1xuICAgICAgICAgIGxlZnRCb3VuZCA9IHJlc2l6ZUltYWdlTWV0YS53aWR0aCAtIHJlc2l6ZVdpZHRoXG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgbGVmdCBib3VuZCBpcyBsZXNzIHRoYW4gMCwgYWRqdXN0IHRoZSBsZWZ0IGJvdW5kIHRvIDBcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgZm9jdXMgb24gdGhlIGxlZnRcbiAgICAgICAgaWYgKGxlZnRCb3VuZCA8IDApIGxlZnRCb3VuZCA9IDBcblxuICAgICAgICBjb25zdCBoYWxmUmVzaXplWSA9IHJlc2l6ZUhlaWdodCAvIDJcbiAgICAgICAgY29uc3QgeUZvY2FsQ2VudGVyID0gcmVzaXplSW1hZ2VNZXRhLmhlaWdodCAqIChpbmNvbWluZ0ZvY2FsUG9pbnQueSAvIDEwMClcbiAgICAgICAgY29uc3QgY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQgPSB5Rm9jYWxDZW50ZXIgKyBoYWxmUmVzaXplWVxuICAgICAgICBsZXQgdG9wQm91bmQgPSB5Rm9jYWxDZW50ZXIgLSBoYWxmUmVzaXplWVxuXG4gICAgICAgIC8vIGlmIHRoZSBib3R0b20gYm91bmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBpbWFnZSBoZWlnaHQsIGFkanVzdCB0aGUgdG9wIGJvdW5kXG4gICAgICAgIC8vIGtlZXBpbmcgdGhlIGltYWdlIGFzIGZhciByaWdodCBhcyBwb3NzaWJsZVxuICAgICAgICBpZiAoY2FsY3VsYXRlZEJvdHRvbVBpeGVsQm91bmQgPiByZXNpemVJbWFnZU1ldGEuaGVpZ2h0KSB7XG4gICAgICAgICAgdG9wQm91bmQgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0IC0gcmVzaXplSGVpZ2h0XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB0aGUgdG9wIGJvdW5kIGlzIGxlc3MgdGhhbiAwLCBhZGp1c3QgdGhlIHRvcCBib3VuZCB0byAwXG4gICAgICAgIC8vIGtlZXBpbmcgdGhlIGltYWdlIGZvY3VzIG5lYXIgdGhlIHRvcFxuICAgICAgICBpZiAodG9wQm91bmQgPCAwKSB0b3BCb3VuZCA9IDBcblxuICAgICAgICByZXNpemVkID0gcmVzaXplZC5leHRyYWN0KHtcbiAgICAgICAgICBoZWlnaHQ6IHJlc2l6ZUhlaWdodCxcbiAgICAgICAgICBsZWZ0OiBNYXRoLmZsb29yKGxlZnRCb3VuZCksXG4gICAgICAgICAgdG9wOiBNYXRoLmZsb29yKHRvcEJvdW5kKSxcbiAgICAgICAgICB3aWR0aDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNpemVkID0gaW1hZ2VUb1Jlc2l6ZS5yZXNpemUoaW1hZ2VSZXNpemVDb25maWcpXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy5mb3JtYXRPcHRpb25zKSB7XG4gICAgICAgIHJlc2l6ZWQgPSByZXNpemVkLnRvRm9ybWF0KFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoaW1hZ2VSZXNpemVDb25maWcudHJpbU9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudHJpbShpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBkYXRhOiBidWZmZXJEYXRhLCBpbmZvOiBidWZmZXJJbmZvIH0gPSBhd2FpdCByZXNpemVkLnRvQnVmZmVyKHtcbiAgICAgICAgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzYW5pdGl6ZWRJbWFnZSA9IGdldFNhbml0aXplZEltYWdlRGF0YShzYXZlZEZpbGVuYW1lKVxuXG4gICAgICBpZiAocmVxLnBheWxvYWRVcGxvYWRTaXplcykge1xuICAgICAgICByZXEucGF5bG9hZFVwbG9hZFNpemVzW2ltYWdlUmVzaXplQ29uZmlnLm5hbWVdID0gYnVmZmVyRGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW1lSW5mbyA9IGF3YWl0IGZyb21CdWZmZXIoYnVmZmVyRGF0YSlcblxuICAgICAgY29uc3QgaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMgPSBjcmVhdGVJbWFnZU5hbWUoe1xuICAgICAgICBleHRlbnNpb246IG1pbWVJbmZvPy5leHQgfHwgc2FuaXRpemVkSW1hZ2UuZXh0LFxuICAgICAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoe1xuICAgICAgICAgIC4uLm9yaWdpbmFsSW1hZ2VNZXRhLFxuICAgICAgICAgIGhlaWdodDogYnVmZmVySW5mby5oZWlnaHQsXG4gICAgICAgIH0pLFxuICAgICAgICBvdXRwdXRJbWFnZU5hbWU6IHNhbml0aXplZEltYWdlLm5hbWUsXG4gICAgICAgIHdpZHRoOiBidWZmZXJJbmZvLndpZHRoLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgaW1hZ2VQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtpbWFnZU5hbWVXaXRoRGltZW5zaW9uc31gXG5cbiAgICAgIGlmIChhd2FpdCBmaWxlRXhpc3RzKGltYWdlUGF0aCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmcy51bmxpbmtTeW5jKGltYWdlUGF0aClcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHVubGluayBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGhlaWdodCwgc2l6ZSwgd2lkdGggfSA9IGJ1ZmZlckluZm9cbiAgICAgIHJldHVybiBjcmVhdGVSZXN1bHQoe1xuICAgICAgICBuYW1lOiBpbWFnZVJlc2l6ZUNvbmZpZy5uYW1lLFxuICAgICAgICBmaWxlbmFtZTogaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMsXG4gICAgICAgIGZpbGVzaXplOiBzaXplLFxuICAgICAgICBoZWlnaHQ6XG4gICAgICAgICAgZmlsZUlzQW5pbWF0ZWRUeXBlICYmIG9yaWdpbmFsSW1hZ2VNZXRhLnBhZ2VzID8gaGVpZ2h0IC8gb3JpZ2luYWxJbWFnZU1ldGEucGFnZXMgOiBoZWlnaHQsXG4gICAgICAgIG1pbWVUeXBlOiBtaW1lSW5mbz8ubWltZSB8fCBtaW1lVHlwZSxcbiAgICAgICAgc2l6ZXNUb1NhdmU6IFt7IGJ1ZmZlcjogYnVmZmVyRGF0YSwgcGF0aDogaW1hZ2VQYXRoIH1dLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pXG4gICAgfSksXG4gIClcblxuICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKGFjYywgcmVzdWx0KSA9PiB7XG4gICAgICBPYmplY3QuYXNzaWduKGFjYy5zaXplRGF0YSwgcmVzdWx0LnNpemVEYXRhKVxuICAgICAgYWNjLnNpemVzVG9TYXZlLnB1c2goLi4ucmVzdWx0LnNpemVzVG9TYXZlKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sXG4gICAgeyAuLi5kZWZhdWx0UmVzdWx0IH0sXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJyZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIiwiZ2V0U2FuaXRpemVkSW1hZ2VEYXRhIiwic291cmNlSW1hZ2UiLCJleHRlbnNpb24iLCJzcGxpdCIsInBvcCIsIm5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZXh0IiwiY3JlYXRlSW1hZ2VOYW1lIiwiaGVpZ2h0Iiwib3V0cHV0SW1hZ2VOYW1lIiwid2lkdGgiLCJjcmVhdGVSZXN1bHQiLCJmaWxlbmFtZSIsImZpbGVzaXplIiwibWltZVR5cGUiLCJzaXplc1RvU2F2ZSIsInNpemVEYXRhIiwiZ2V0SW1hZ2VSZXNpemVBY3Rpb24iLCJkaW1lbnNpb25zIiwib3JpZ2luYWxJbWFnZSIsImhhc0ZvY2FsUG9pbnQiLCJpbWFnZVJlc2l6ZUNvbmZpZyIsImZpdCIsInRhcmdldEhlaWdodCIsInRhcmdldFdpZHRoIiwid2l0aG91dEVubGFyZ2VtZW50Iiwid2l0aG91dFJlZHVjdGlvbiIsIm9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSIsInVuZGVmaW5lZCIsIm9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZIiwiaXNOdW1iZXIiLCJ0YXJnZXRBc3BlY3RSYXRpbyIsIm9yaWdpbmFsQXNwZWN0UmF0aW8iLCJhcHBseVBheWxvYWRBZGp1c3RtZW50cyIsIm9yaWdpbmFsIiwic2tpcEVubGFyZ2VtZW50Iiwic2tpcFJlZHVjdGlvbiIsInNhbml0aXplUmVzaXplQ29uZmlnIiwicmVzaXplQ29uZmlnIiwicG9zaXRpb24iLCJleHRyYWN0SGVpZ2h0RnJvbUltYWdlIiwic2hhcnBNZXRhZGF0YSIsInBhZ2VzIiwiY29uZmlnIiwiZmlsZSIsInJlcSIsInNhdmVkRmlsZW5hbWUiLCJzdGF0aWNQYXRoIiwidXBsb2FkRWRpdHMiLCJmb2NhbFBvaW50IiwiZm9jYWxQb2ludEVuYWJsZWQiLCJpbWFnZVNpemVzIiwidXBsb2FkIiwiaW5jb21pbmdGb2NhbFBvaW50IiwieCIsIk1hdGgiLCJyb3VuZCIsInkiLCJkZWZhdWx0UmVzdWx0IiwiZmlsZUlzQW5pbWF0ZWRUeXBlIiwiaW5jbHVkZXMiLCJtaW1ldHlwZSIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnBCYXNlIiwic2hhcnAiLCJ0ZW1wRmlsZVBhdGgiLCJkYXRhIiwicm90YXRlIiwib3JpZ2luYWxJbWFnZU1ldGEiLCJtZXRhZGF0YSIsInJlc2l6ZUltYWdlTWV0YSIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicmVzaXplQWN0aW9uIiwiQm9vbGVhbiIsImltYWdlVG9SZXNpemUiLCJjbG9uZSIsInJlc2l6ZWQiLCJyZXNpemVIZWlnaHQiLCJyZXNpemVXaWR0aCIsInJlc2l6ZUFzcGVjdFJhdGlvIiwicHJpb3JpdGl6ZUhlaWdodCIsInJlc2l6ZSIsImluZm8iLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiaGFsZlJlc2l6ZVgiLCJ4Rm9jYWxDZW50ZXIiLCJjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kIiwibGVmdEJvdW5kIiwiaGFsZlJlc2l6ZVkiLCJ5Rm9jYWxDZW50ZXIiLCJjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCIsInRvcEJvdW5kIiwiZXh0cmFjdCIsImxlZnQiLCJmbG9vciIsInRvcCIsImZvcm1hdE9wdGlvbnMiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltT3B0aW9ucyIsInRyaW0iLCJidWZmZXJEYXRhIiwiYnVmZmVySW5mbyIsInNhbml0aXplZEltYWdlIiwicGF5bG9hZFVwbG9hZFNpemVzIiwibWltZUluZm8iLCJmcm9tQnVmZmVyIiwiaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMiLCJpbWFnZVBhdGgiLCJmaWxlRXhpc3RzIiwiZnMiLCJ1bmxpbmtTeW5jIiwic2l6ZSIsIm1pbWUiLCJidWZmZXIiLCJwYXRoIiwicmVkdWNlIiwiYWNjIiwicmVzdWx0IiwiT2JqZWN0IiwiYXNzaWduIiwicHVzaCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBeVBBOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRDs7O2VBQThCQTs7OzBCQXBRSDsyREFDWjt5RUFDTTs4REFDSDswQkFhTzttRUFDRjs7Ozs7O0FBeUJ2Qjs7Ozs7Q0FLQyxHQUNELE1BQU1DLHdCQUF3QixDQUFDQztJQUM3QixNQUFNQyxZQUFZRCxZQUFZRSxLQUFLLENBQUMsS0FBS0MsR0FBRztJQUM1QyxNQUFNQyxPQUFPQyxJQUFBQSx5QkFBUSxFQUFDTCxZQUFZTSxTQUFTLENBQUMsR0FBR04sWUFBWU8sV0FBVyxDQUFDLFNBQVNQO0lBQ2hGLE9BQU87UUFBRUk7UUFBTUksS0FBS1A7SUFBVTtBQUNoQztBQXNCQSxNQUFNUSxrQkFBa0IsQ0FBQyxFQUN2QlIsU0FBUyxFQUNUUyxNQUFNLEVBQ05DLGVBQWUsRUFDZkMsS0FBSyxFQUNlO0lBQ3BCLE9BQU8sQ0FBQyxFQUFFRCxnQkFBZ0IsQ0FBQyxFQUFFQyxNQUFNLENBQUMsRUFBRUYsT0FBTyxDQUFDLEVBQUVULFVBQVUsQ0FBQztBQUM3RDtBQVlBOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRCxNQUFNWSxlQUFlLENBQUMsRUFDcEJULElBQUksRUFDSlUsV0FBVyxJQUFJLEVBQ2ZDLFdBQVcsSUFBSSxFQUNmTCxTQUFTLElBQUksRUFDYk0sV0FBVyxJQUFJLEVBQ2ZDLGNBQWMsRUFBRSxFQUNoQkwsUUFBUSxJQUFJLEVBQ0s7SUFDakIsT0FBTztRQUNMTSxVQUFVO1lBQ1IsQ0FBQ2QsS0FBSyxFQUFFO2dCQUNOVTtnQkFDQUM7Z0JBQ0FMO2dCQUNBTTtnQkFDQUo7WUFDRjtRQUNGO1FBQ0FLO0lBQ0Y7QUFDRjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7O0NBZ0JDLEdBQ0QsTUFBTUUsdUJBQXVCLENBQUMsRUFDNUJDLFlBQVlDLGFBQWEsRUFDekJDLGFBQWEsRUFDYkMsaUJBQWlCLEVBS2xCO0lBQ0MsTUFBTSxFQUNKQyxHQUFHLEVBQ0hkLFFBQVFlLFlBQVksRUFDcEJiLE9BQU9jLFdBQVcsRUFDbEJDLGtCQUFrQixFQUNsQkMsZ0JBQWdCLEVBQ2pCLEdBQUdMO0lBRUosb0ZBQW9GO0lBQ3BGLElBQUlFLGdCQUFnQkMsYUFBYTtRQUMvQixNQUFNRyw4QkFDSlIsY0FBY1QsS0FBSyxHQUFHYyxlQUFlTCxjQUFjWCxNQUFNLEdBQUdlO1FBQzlELElBQUlFLHVCQUF1QkcsYUFBYUQsNkJBQTZCO1lBQ25FLE9BQU8sT0FBTyx5Q0FBeUM7O1FBQ3pEO0lBQ0Y7SUFFQSxNQUFNRSw2QkFDSlYsY0FBY1QsS0FBSyxHQUFHYyxlQUFlTCxjQUFjWCxNQUFNLEdBQUdlO0lBQzlELElBQUlELFFBQVEsYUFBYUEsUUFBUSxVQUFVLE9BQU87SUFDbEQsSUFBSSxDQUFDUSxJQUFBQSxrQkFBUSxFQUFDUCxpQkFBaUIsQ0FBQ08sSUFBQUEsa0JBQVEsRUFBQ04sY0FBYyxPQUFPO0lBRTlELE1BQU1PLG9CQUFvQlAsY0FBY0Q7SUFDeEMsTUFBTVMsc0JBQXNCYixjQUFjVCxLQUFLLEdBQUdTLGNBQWNYLE1BQU07SUFDdEUsSUFBSXdCLHdCQUF3QkQsbUJBQW1CLE9BQU87SUFFdEQsSUFBSU4sc0JBQXNCSSw0QkFBNEIsT0FBTztJQUM3RCxJQUFJSCxvQkFBb0IsQ0FBQ0csNEJBQTRCLE9BQU87SUFFNUQsT0FBT1QsZ0JBQWdCLHlCQUF5QjtBQUNsRDtBQUVBOzs7Ozs7Q0FNQyxHQUNELE1BQU1hLDBCQUEwQixDQUM5QixFQUFFWCxHQUFHLEVBQUVkLE1BQU0sRUFBRUUsS0FBSyxFQUFFZSxrQkFBa0IsRUFBRUMsZ0JBQWdCLEVBQWEsRUFDdkVRO0lBRUEsSUFBSVosUUFBUSxhQUFhQSxRQUFRLFVBQVUsT0FBTztJQUNsRCxJQUFJLENBQUNRLElBQUFBLGtCQUFRLEVBQUN0QixXQUFXLENBQUNzQixJQUFBQSxrQkFBUSxFQUFDcEIsUUFBUSxPQUFPO0lBRWxELE1BQU1xQixvQkFBb0JyQixRQUFRRjtJQUNsQyxNQUFNd0Isc0JBQXNCRSxTQUFTeEIsS0FBSyxHQUFHd0IsU0FBUzFCLE1BQU07SUFDNUQsSUFBSXdCLHdCQUF3QkQsbUJBQW1CLE9BQU87SUFFdEQsTUFBTUksa0JBQWtCVixzQkFBdUJTLENBQUFBLFNBQVMxQixNQUFNLEdBQUdBLFVBQVUwQixTQUFTeEIsS0FBSyxHQUFHQSxLQUFJO0lBQ2hHLE1BQU0wQixnQkFBZ0JWLG9CQUFxQlEsQ0FBQUEsU0FBUzFCLE1BQU0sR0FBR0EsVUFBVTBCLFNBQVN4QixLQUFLLEdBQUdBLEtBQUk7SUFDNUYsSUFBSXlCLG1CQUFtQkMsZUFBZSxPQUFPO0lBRTdDLE9BQU87QUFDVDtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxNQUFNQyx1QkFBdUIsQ0FBQ0M7SUFDNUIsSUFBSUEsYUFBYVosZ0JBQWdCLEVBQUU7UUFDakMsT0FBTztZQUNMLEdBQUdZLFlBQVk7WUFDZixzRkFBc0Y7WUFDdEZoQixLQUFLZ0IsY0FBY2hCLE9BQU87WUFDMUJpQixVQUFVRCxjQUFjQyxZQUFZO1FBQ3RDO0lBQ0Y7SUFDQSxPQUFPRDtBQUNUO0FBRUE7Ozs7O0NBS0MsR0FDRCxTQUFTRSx1QkFBdUJDLGFBQTRCO0lBQzFELElBQUlBLGVBQWVDLE9BQU87UUFDeEIsT0FBT0QsY0FBY2pDLE1BQU0sR0FBR2lDLGNBQWNDLEtBQUs7SUFDbkQ7SUFDQSxPQUFPRCxjQUFjakMsTUFBTTtBQUM3QjtBQWdCZSxlQUFlWiw2QkFBNkIsRUFDekQrQyxNQUFNLEVBQ056QixVQUFVLEVBQ1YwQixJQUFJLEVBQ0o5QixRQUFRLEVBQ1IrQixHQUFHLEVBQ0hDLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxXQUFXLEVBQ0E7SUFDWCxNQUFNLEVBQUVDLFlBQVlDLG9CQUFvQixJQUFJLEVBQUVDLFVBQVUsRUFBRSxHQUFHUixPQUFPUyxNQUFNO0lBRTFFLDBCQUEwQjtJQUMxQixNQUFNQyxxQkFBcUJMLGFBQWFDLGFBQ3BDO1FBQ0VLLEdBQUd4QixJQUFBQSxrQkFBUSxFQUFDa0IsWUFBWUMsVUFBVSxDQUFDSyxDQUFDLElBQUlDLEtBQUtDLEtBQUssQ0FBQ1IsWUFBWUMsVUFBVSxDQUFDSyxDQUFDLElBQUk7UUFDL0VHLEdBQUczQixJQUFBQSxrQkFBUSxFQUFDa0IsWUFBWUMsVUFBVSxDQUFDUSxDQUFDLElBQUlGLEtBQUtDLEtBQUssQ0FBQ1IsWUFBWUMsVUFBVSxDQUFDUSxDQUFDLElBQUk7SUFDakYsSUFDQTdCO0lBRUosTUFBTThCLGdCQUFrQztRQUN0QyxHQUFJUixxQkFBcUJHLHNCQUFzQjtZQUFFSixZQUFZSTtRQUFtQixDQUFDO1FBQ2pGckMsVUFBVSxDQUFDO1FBQ1hELGFBQWEsRUFBRTtJQUNqQjtJQUVBLHdEQUF3RDtJQUN4RCxJQUFJLENBQUNvQyxZQUFZLE9BQU9PO0lBRXhCLG9DQUFvQztJQUNwQyxNQUFNQyxxQkFBcUI7UUFBQztRQUFjO1FBQWE7S0FBYSxDQUFDQyxRQUFRLENBQUNoQixLQUFLaUIsUUFBUTtJQUMzRixNQUFNQyxlQUE2QixDQUFDO0lBRXBDLElBQUlILG9CQUFvQkcsYUFBYUMsUUFBUSxHQUFHO0lBRWhELE1BQU1DLFlBQStCQyxJQUFBQSxjQUFLLEVBQUNyQixLQUFLc0IsWUFBWSxJQUFJdEIsS0FBS3VCLElBQUksRUFBRUwsY0FBY00sTUFBTSxHQUFHLG1HQUFtRzs7SUFDck0sTUFBTUMsb0JBQW9CLE1BQU1MLFVBQVVNLFFBQVE7SUFFbEQsTUFBTUMsa0JBQWtCO1FBQ3RCL0QsUUFBUWdDLHVCQUF1QjZCO1FBQy9CM0QsT0FBTzJELGtCQUFrQjNELEtBQUs7SUFDaEM7SUFFQSxNQUFNOEQsVUFBOEIsTUFBTUMsUUFBUUMsR0FBRyxDQUNuRHZCLFdBQVd3QixHQUFHLENBQUMsT0FBT3REO1FBQ3BCQSxvQkFBb0JnQixxQkFBcUJoQjtRQUV6QyxNQUFNdUQsZUFBZTNELHFCQUFxQjtZQUN4Q0M7WUFDQUUsZUFBZXlELFFBQVF4QjtZQUN2QmhDO1FBQ0Y7UUFDQSxJQUFJdUQsaUJBQWlCLFFBQVEsT0FBT2pFLGFBQWE7WUFBRVQsTUFBTW1CLGtCQUFrQm5CLElBQUk7UUFBQztRQUVoRixNQUFNNEUsZ0JBQWdCZCxVQUFVZSxLQUFLO1FBQ3JDLElBQUlDLFVBQVVGO1FBRWQsSUFBSUYsaUJBQWlCLHdCQUF3QjtZQUMzQyxJQUFJLEVBQUVwRSxRQUFReUUsWUFBWSxFQUFFdkUsT0FBT3dFLFdBQVcsRUFBRSxHQUFHN0Q7WUFFbkQsTUFBTVcsc0JBQXNCZCxXQUFXUixLQUFLLEdBQUdRLFdBQVdWLE1BQU07WUFFaEUseUVBQXlFO1lBQ3pFLElBQUl5RSxnQkFBZ0IsQ0FBQ0MsYUFBYTtnQkFDaENBLGNBQWMzQixLQUFLQyxLQUFLLENBQUN5QixlQUFlakQ7WUFDMUM7WUFFQSwwRUFBMEU7WUFDMUUsSUFBSWtELGVBQWUsQ0FBQ0QsY0FBYztnQkFDaENBLGVBQWUxQixLQUFLQyxLQUFLLENBQUMwQixjQUFjbEQ7WUFDMUM7WUFFQSxJQUFJLENBQUNpRCxjQUFjQSxlQUFlVixnQkFBZ0IvRCxNQUFNO1lBQ3hELElBQUksQ0FBQzBFLGFBQWFBLGNBQWNYLGdCQUFnQjdELEtBQUs7WUFFckQsTUFBTXlFLG9CQUFvQkQsY0FBY0Q7WUFDeEMsTUFBTUcsbUJBQW1CRCxvQkFBb0JuRDtZQUM3Qyw2Q0FBNkM7WUFDN0NnRCxVQUFVRixjQUFjTyxNQUFNLENBQUM7Z0JBQzdCN0UsUUFBUTRFLG1CQUFtQkgsZUFBZXJEO2dCQUMxQ2xCLE9BQU8wRSxtQkFBbUJ4RCxZQUFZc0Q7WUFDeEM7WUFFQSxpRkFBaUY7WUFDakYsTUFBTSxFQUFFSSxJQUFJLEVBQUUsR0FBRyxNQUFNTixRQUFRTyxRQUFRLENBQUM7Z0JBQUVDLG1CQUFtQjtZQUFLO1lBQ2xFakIsZ0JBQWdCL0QsTUFBTSxHQUFHZ0MsdUJBQXVCO2dCQUM5QyxHQUFHNkIsaUJBQWlCO2dCQUNwQjdELFFBQVE4RSxLQUFLOUUsTUFBTTtZQUNyQjtZQUNBK0QsZ0JBQWdCN0QsS0FBSyxHQUFHNEUsS0FBSzVFLEtBQUs7WUFFbEMsTUFBTStFLGNBQWNQLGNBQWM7WUFDbEMsTUFBTVEsZUFBZW5CLGdCQUFnQjdELEtBQUssR0FBSTJDLENBQUFBLG1CQUFtQkMsQ0FBQyxHQUFHLEdBQUU7WUFDdkUsTUFBTXFDLDRCQUE0QkQsZUFBZUQ7WUFDakQsSUFBSUcsWUFBWUYsZUFBZUQ7WUFFL0IsNEVBQTRFO1lBQzVFLDZCQUE2QjtZQUM3QixJQUFJRSw0QkFBNEJwQixnQkFBZ0I3RCxLQUFLLEVBQUU7Z0JBQ3JEa0YsWUFBWXJCLGdCQUFnQjdELEtBQUssR0FBR3dFO1lBQ3RDO1lBRUEsK0RBQStEO1lBQy9ELGdDQUFnQztZQUNoQyxJQUFJVSxZQUFZLEdBQUdBLFlBQVk7WUFFL0IsTUFBTUMsY0FBY1osZUFBZTtZQUNuQyxNQUFNYSxlQUFldkIsZ0JBQWdCL0QsTUFBTSxHQUFJNkMsQ0FBQUEsbUJBQW1CSSxDQUFDLEdBQUcsR0FBRTtZQUN4RSxNQUFNc0MsNkJBQTZCRCxlQUFlRDtZQUNsRCxJQUFJRyxXQUFXRixlQUFlRDtZQUU5Qiw2RUFBNkU7WUFDN0UsNkNBQTZDO1lBQzdDLElBQUlFLDZCQUE2QnhCLGdCQUFnQi9ELE1BQU0sRUFBRTtnQkFDdkR3RixXQUFXekIsZ0JBQWdCL0QsTUFBTSxHQUFHeUU7WUFDdEM7WUFFQSw2REFBNkQ7WUFDN0QsdUNBQXVDO1lBQ3ZDLElBQUllLFdBQVcsR0FBR0EsV0FBVztZQUU3QmhCLFVBQVVBLFFBQVFpQixPQUFPLENBQUM7Z0JBQ3hCekYsUUFBUXlFO2dCQUNSaUIsTUFBTTNDLEtBQUs0QyxLQUFLLENBQUNQO2dCQUNqQlEsS0FBSzdDLEtBQUs0QyxLQUFLLENBQUNIO2dCQUNoQnRGLE9BQU93RTtZQUNUO1FBQ0YsT0FBTztZQUNMRixVQUFVRixjQUFjTyxNQUFNLENBQUNoRTtRQUNqQztRQUVBLElBQUlBLGtCQUFrQmdGLGFBQWEsRUFBRTtZQUNuQ3JCLFVBQVVBLFFBQVFzQixRQUFRLENBQ3hCakYsa0JBQWtCZ0YsYUFBYSxDQUFDRSxNQUFNLEVBQ3RDbEYsa0JBQWtCZ0YsYUFBYSxDQUFDRyxPQUFPO1FBRTNDO1FBRUEsSUFBSW5GLGtCQUFrQm9GLFdBQVcsRUFBRTtZQUNqQ3pCLFVBQVVBLFFBQVEwQixJQUFJLENBQUNyRixrQkFBa0JvRixXQUFXO1FBQ3REO1FBRUEsTUFBTSxFQUFFdEMsTUFBTXdDLFVBQVUsRUFBRXJCLE1BQU1zQixVQUFVLEVBQUUsR0FBRyxNQUFNNUIsUUFBUU8sUUFBUSxDQUFDO1lBQ3BFQyxtQkFBbUI7UUFDckI7UUFFQSxNQUFNcUIsaUJBQWlCaEgsc0JBQXNCaUQ7UUFFN0MsSUFBSUQsSUFBSWlFLGtCQUFrQixFQUFFO1lBQzFCakUsSUFBSWlFLGtCQUFrQixDQUFDekYsa0JBQWtCbkIsSUFBSSxDQUFDLEdBQUd5RztRQUNuRDtRQUVBLE1BQU1JLFdBQVcsTUFBTUMsSUFBQUEsb0JBQVUsRUFBQ0w7UUFFbEMsTUFBTU0sMEJBQTBCMUcsZ0JBQWdCO1lBQzlDUixXQUFXZ0gsVUFBVXpHLE9BQU91RyxlQUFldkcsR0FBRztZQUM5Q0UsUUFBUWdDLHVCQUF1QjtnQkFDN0IsR0FBRzZCLGlCQUFpQjtnQkFDcEI3RCxRQUFRb0csV0FBV3BHLE1BQU07WUFDM0I7WUFDQUMsaUJBQWlCb0csZUFBZTNHLElBQUk7WUFDcENRLE9BQU9rRyxXQUFXbEcsS0FBSztRQUN6QjtRQUVBLE1BQU13RyxZQUFZLENBQUMsRUFBRW5FLFdBQVcsQ0FBQyxFQUFFa0Usd0JBQXdCLENBQUM7UUFFNUQsSUFBSSxNQUFNRSxJQUFBQSxtQkFBVSxFQUFDRCxZQUFZO1lBQy9CLElBQUk7Z0JBQ0ZFLFdBQUUsQ0FBQ0MsVUFBVSxDQUFDSDtZQUNoQixFQUFFLE9BQU07WUFDTix1QkFBdUI7WUFDekI7UUFDRjtRQUVBLE1BQU0sRUFBRTFHLE1BQU0sRUFBRThHLElBQUksRUFBRTVHLEtBQUssRUFBRSxHQUFHa0c7UUFDaEMsT0FBT2pHLGFBQWE7WUFDbEJULE1BQU1tQixrQkFBa0JuQixJQUFJO1lBQzVCVSxVQUFVcUc7WUFDVnBHLFVBQVV5RztZQUNWOUcsUUFDRW1ELHNCQUFzQlUsa0JBQWtCM0IsS0FBSyxHQUFHbEMsU0FBUzZELGtCQUFrQjNCLEtBQUssR0FBR2xDO1lBQ3JGTSxVQUFVaUcsVUFBVVEsUUFBUXpHO1lBQzVCQyxhQUFhO2dCQUFDO29CQUFFeUcsUUFBUWI7b0JBQVljLE1BQU1QO2dCQUFVO2FBQUU7WUFDdER4RztRQUNGO0lBQ0Y7SUFHRixPQUFPOEQsUUFBUWtELE1BQU0sQ0FDbkIsQ0FBQ0MsS0FBS0M7UUFDSkMsT0FBT0MsTUFBTSxDQUFDSCxJQUFJM0csUUFBUSxFQUFFNEcsT0FBTzVHLFFBQVE7UUFDM0MyRyxJQUFJNUcsV0FBVyxDQUFDZ0gsSUFBSSxJQUFJSCxPQUFPN0csV0FBVztRQUMxQyxPQUFPNEc7SUFDVCxHQUNBO1FBQUUsR0FBR2pFLGFBQWE7SUFBQztBQUV2QiJ9
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgU2hhcnAsIE1ldGFkYXRhIGFzIFNoYXJwTWV0YWRhdGEsIFNoYXJwT3B0aW9ucyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgRmlsZVNpemUsXG4gIEZpbGVTaXplcyxcbiAgRmlsZVRvU2F2ZSxcbiAgSW1hZ2VTaXplLFxuICBQcm9iZWRJbWFnZVNpemUsXG4gIFVwbG9hZEVkaXRzLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gJy4vZmlsZUV4aXN0cydcbmltcG9ydCB7IHR5cGUgV2l0aE1ldGFkYXRhLCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEgfSBmcm9tICcuL29wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSdcblxudHlwZSBSZXNpemVBcmdzID0ge1xuICBjb25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGZpbGU6IFVwbG9hZGVkRmlsZVxuICBtaW1lVHlwZTogc3RyaW5nXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2F2ZWRGaWxlbmFtZTogc3RyaW5nXG4gIHN0YXRpY1BhdGg6IHN0cmluZ1xuICB1cGxvYWRFZGl0cz86IFVwbG9hZEVkaXRzXG4gIHdpdGhNZXRhZGF0YT86IFdpdGhNZXRhZGF0YVxufVxuXG4vKiogUmVzdWx0IGZyb20gcmVzaXppbmcgYW5kIHRyYW5zZm9ybWluZyB0aGUgcmVxdWVzdGVkIGltYWdlIHNpemVzICovXG50eXBlIEltYWdlU2l6ZXNSZXN1bHQgPSB7XG4gIGZvY2FsUG9pbnQ/OiBVcGxvYWRFZGl0c1snZm9jYWxQb2ludCddXG4gIHNpemVEYXRhOiBGaWxlU2l6ZXNcbiAgc2l6ZXNUb1NhdmU6IEZpbGVUb1NhdmVbXVxufVxuXG50eXBlIFNhbml0aXplZEltYWdlRGF0YSA9IHtcbiAgZXh0OiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG59XG5cbi8qKlxuICogU2FuaXRpemUgdGhlIGltYWdlIG5hbWUgYW5kIGV4dHJhY3QgdGhlIGV4dGVuc2lvbiBmcm9tIHRoZSBzb3VyY2UgaW1hZ2VcbiAqXG4gKiBAcGFyYW0gc291cmNlSW1hZ2UgLSB0aGUgc291cmNlIGltYWdlXG4gKiBAcmV0dXJucyB0aGUgc2FuaXRpemVkIG5hbWUgYW5kIGV4dGVuc2lvblxuICovXG5jb25zdCBnZXRTYW5pdGl6ZWRJbWFnZURhdGEgPSAoc291cmNlSW1hZ2U6IHN0cmluZyk6IFNhbml0aXplZEltYWdlRGF0YSA9PiB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IHNvdXJjZUltYWdlLnNwbGl0KCcuJykucG9wKClcbiAgY29uc3QgbmFtZSA9IHNhbml0aXplKHNvdXJjZUltYWdlLnN1YnN0cmluZygwLCBzb3VyY2VJbWFnZS5sYXN0SW5kZXhPZignLicpKSB8fCBzb3VyY2VJbWFnZSlcbiAgcmV0dXJuIHsgbmFtZSwgZXh0OiBleHRlbnNpb24gfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbWFnZSBuYW1lIGJhc2VkIG9uIHRoZSBvdXRwdXQgaW1hZ2UgbmFtZSwgdGhlIGRpbWVuc2lvbnMgYW5kXG4gKiB0aGUgZXh0ZW5zaW9uLlxuICpcbiAqIElnbm9yZSB0aGUgZmFjdCB0aGF0IGR1cGxpY2F0ZSBuYW1lcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHRoZXJlIGlzIG9uZVxuICogc2l6ZSB3aXRoIGB3aWR0aCBBTkQgaGVpZ2h0YCBhbmQgb25lIHdpdGggb25seSBgaGVpZ2h0IE9SIHdpZHRoYC4gQmVjYXVzZVxuICogc3BhY2UgaXMgZXhwZW5zaXZlLCB3ZSB3aWxsIHJldXNlIHRoZSBzYW1lIGltYWdlIGZvciBib3RoIHNpemVzLlxuICpcbiAqIEBwYXJhbSBvdXRwdXRJbWFnZU5hbWUgLSB0aGUgc2FuaXRpemVkIGltYWdlIG5hbWVcbiAqIEBwYXJhbSBidWZmZXJJbmZvIC0gdGhlIGJ1ZmZlciBpbmZvXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gdGhlIGV4dGVuc2lvbiB0byB1c2VcbiAqIEByZXR1cm5zIHRoZSBuZXcgaW1hZ2UgbmFtZSB0aGF0IGlzIG5vdCB0YWtlblxuICovXG5cbnR5cGUgQ3JlYXRlSW1hZ2VOYW1lQXJncyA9IHtcbiAgZXh0ZW5zaW9uOiBzdHJpbmdcbiAgaGVpZ2h0OiBudW1iZXJcbiAgb3V0cHV0SW1hZ2VOYW1lOiBzdHJpbmdcbiAgd2lkdGg6IG51bWJlclxufVxuY29uc3QgY3JlYXRlSW1hZ2VOYW1lID0gKHtcbiAgZXh0ZW5zaW9uLFxuICBoZWlnaHQsXG4gIG91dHB1dEltYWdlTmFtZSxcbiAgd2lkdGgsXG59OiBDcmVhdGVJbWFnZU5hbWVBcmdzKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGAke291dHB1dEltYWdlTmFtZX0tJHt3aWR0aH14JHtoZWlnaHR9LiR7ZXh0ZW5zaW9ufWBcbn1cblxudHlwZSBDcmVhdGVSZXN1bHRBcmdzID0ge1xuICBmaWxlbmFtZT86IEZpbGVTaXplWydmaWxlbmFtZSddXG4gIGZpbGVzaXplPzogRmlsZVNpemVbJ2ZpbGVzaXplJ11cbiAgaGVpZ2h0PzogRmlsZVNpemVbJ2hlaWdodCddXG4gIG1pbWVUeXBlPzogRmlsZVNpemVbJ21pbWVUeXBlJ11cbiAgbmFtZTogc3RyaW5nXG4gIHNpemVzVG9TYXZlPzogRmlsZVRvU2F2ZVtdXG4gIHdpZHRoPzogRmlsZVNpemVbJ3dpZHRoJ11cbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIHJlc3VsdCBvYmplY3QgZm9yIHRoZSBpbWFnZSByZXNpemUgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZVxuICogcHJvdmlkZWQgcGFyYW1ldGVycy4gSWYgdGhlIG5hbWUgaXMgbm90IHByb3ZpZGVkLCBhbiBlbXB0eSByZXN1bHQgb2JqZWN0XG4gKiBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGZpbGVuYW1lIC0gdGhlIGZpbGVuYW1lIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHdpZHRoIC0gdGhlIHdpZHRoIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIGhlaWdodCAtIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZXNpemUgLSB0aGUgZmlsZXNpemUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gbWltZVR5cGUgLSB0aGUgbWltZSB0eXBlIG9mIHRoZSBpbWFnZVxuICogQHBhcmFtIHNpemVzVG9TYXZlIC0gdGhlIHNpemVzIHRvIHNhdmVcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0XG4gKi9cbmNvbnN0IGNyZWF0ZVJlc3VsdCA9ICh7XG4gIG5hbWUsXG4gIGZpbGVuYW1lID0gbnVsbCxcbiAgZmlsZXNpemUgPSBudWxsLFxuICBoZWlnaHQgPSBudWxsLFxuICBtaW1lVHlwZSA9IG51bGwsXG4gIHNpemVzVG9TYXZlID0gW10sXG4gIHdpZHRoID0gbnVsbCxcbn06IENyZWF0ZVJlc3VsdEFyZ3MpOiBJbWFnZVNpemVzUmVzdWx0ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzaXplRGF0YToge1xuICAgICAgW25hbWVdOiB7XG4gICAgICAgIGZpbGVuYW1lLFxuICAgICAgICBmaWxlc2l6ZSxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2l6ZXNUb1NhdmUsXG4gIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gcmVzaXplIHRoZSBpbWFnZS5cbiAqIC0gcmVzaXplIHVzaW5nIGltYWdlIGNvbmZpZ1xuICogLSByZXNpemUgdXNpbmcgaW1hZ2UgY29uZmlnIHdpdGggZm9jYWwgYWRqdXN0bWVudHNcbiAqIC0gZG8gbm90IHJlc2l6ZSBhdCBhbGxcbiAqXG4gKiBgaW1hZ2VSZXNpemVDb25maWcud2l0aG91dEVubGFyZ2VtZW50YDpcbiAqIC0gdW5kZWZpbmVkIFtkZWZhdWx0XTogdXBsb2FkaW5nIGltYWdlcyB3aXRoIHNtYWxsZXIgd2lkdGggQU5EIGhlaWdodCB0aGFuIHRoZSBpbWFnZSBzaXplIHdpbGwgcmV0dXJuIG51bGxcbiAqIC0gZmFsc2U6IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogYGltYWdlUmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb25gOlxuICogLSBmYWxzZSBbZGVmYXVsdF06IGFsd2F5cyBlbmxhcmdlIGltYWdlcyB0byB0aGUgaW1hZ2Ugc2l6ZVxuICogLSB0cnVlOiBpZiB0aGUgaW1hZ2UgaXMgc21hbGxlciB0aGFuIHRoZSBpbWFnZSBzaXplLCByZXR1cm4gdGhlIG9yaWdpbmFsIGltYWdlXG4gKlxuICogQHJldHVybiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCdcbiAqL1xuY29uc3QgZ2V0SW1hZ2VSZXNpemVBY3Rpb24gPSAoe1xuICBkaW1lbnNpb25zOiBvcmlnaW5hbEltYWdlLFxuICBoYXNGb2NhbFBvaW50LFxuICBpbWFnZVJlc2l6ZUNvbmZpZyxcbn06IHtcbiAgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplXG4gIGhhc0ZvY2FsUG9pbnQ/OiBib29sZWFuXG4gIGltYWdlUmVzaXplQ29uZmlnOiBJbWFnZVNpemVcbn0pOiAnb21pdCcgfCAncmVzaXplJyB8ICdyZXNpemVXaXRoRm9jYWxQb2ludCcgPT4ge1xuICBjb25zdCB7XG4gICAgZml0LFxuICAgIGhlaWdodDogdGFyZ2V0SGVpZ2h0LFxuICAgIHdpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICB3aXRob3V0RW5sYXJnZW1lbnQsXG4gICAgd2l0aG91dFJlZHVjdGlvbixcbiAgfSA9IGltYWdlUmVzaXplQ29uZmlnXG5cbiAgLy8gcHJldmVudCB1cHNjYWxpbmcgYnkgZGVmYXVsdCB3aGVuIHggYW5kIHkgYXJlIGJvdGggc21hbGxlciB0aGFuIHRhcmdldCBpbWFnZSBzaXplXG4gIGlmICh0YXJnZXRIZWlnaHQgJiYgdGFyZ2V0V2lkdGgpIHtcbiAgICBjb25zdCBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWEFuZFkgPVxuICAgICAgb3JpZ2luYWxJbWFnZS53aWR0aCA8IHRhcmdldFdpZHRoICYmIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0IDwgdGFyZ2V0SGVpZ2h0XG4gICAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCA9PT0gdW5kZWZpbmVkICYmIG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSkge1xuICAgICAgcmV0dXJuICdvbWl0JyAvLyBwcmV2ZW50IGltYWdlIHNpemUgZnJvbSBiZWluZyBlbmxhcmdlZFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZID1cbiAgICBvcmlnaW5hbEltYWdlLndpZHRoIDwgdGFyZ2V0V2lkdGggfHwgb3JpZ2luYWxJbWFnZS5oZWlnaHQgPCB0YXJnZXRIZWlnaHRcbiAgaWYgKGZpdCA9PT0gJ2NvbnRhaW4nIHx8IGZpdCA9PT0gJ2luc2lkZScpIHJldHVybiAncmVzaXplJ1xuICBpZiAoIWlzTnVtYmVyKHRhcmdldEhlaWdodCkgJiYgIWlzTnVtYmVyKHRhcmdldFdpZHRoKSkgcmV0dXJuICdyZXNpemUnXG5cbiAgY29uc3QgdGFyZ2V0QXNwZWN0UmF0aW8gPSB0YXJnZXRXaWR0aCAvIHRhcmdldEhlaWdodFxuICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gb3JpZ2luYWxJbWFnZS53aWR0aCAvIG9yaWdpbmFsSW1hZ2UuaGVpZ2h0XG4gIGlmIChvcmlnaW5hbEFzcGVjdFJhdGlvID09PSB0YXJnZXRBc3BlY3RSYXRpbykgcmV0dXJuICdyZXNpemUnXG5cbiAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCAmJiBvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG4gIGlmICh3aXRob3V0UmVkdWN0aW9uICYmICFvcmlnaW5hbEltYWdlSXNTbWFsbGVyWE9yWSkgcmV0dXJuICdyZXNpemUnXG5cbiAgcmV0dXJuIGhhc0ZvY2FsUG9pbnQgPyAncmVzaXplV2l0aEZvY2FsUG9pbnQnIDogJ3Jlc2l6ZSdcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBhc3NlZCBkaXJlY3RseSB0byBzaGFycCB3aXRob3V0IHBheWxvYWQgYWRqdXN0aW5nIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHJlc2l6ZUNvbmZpZyAtIG9iamVjdCBjb250YWluaW5nIHRoZSByZXF1ZXN0ZWQgZGltZW5zaW9ucyBhbmQgcmVzaXplIG9wdGlvbnNcbiAqIEBwYXJhbSBvcmlnaW5hbCAtIHRoZSBvcmlnaW5hbCBpbWFnZSBzaXplXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBpbWFnZSBzaG91bGQgcGFzc2VkIGRpcmVjdGx5IHRvIHNoYXJwXG4gKi9cbmNvbnN0IGFwcGx5UGF5bG9hZEFkanVzdG1lbnRzID0gKFxuICB7IGZpdCwgaGVpZ2h0LCB3aWR0aCwgd2l0aG91dEVubGFyZ2VtZW50LCB3aXRob3V0UmVkdWN0aW9uIH06IEltYWdlU2l6ZSxcbiAgb3JpZ2luYWw6IFByb2JlZEltYWdlU2l6ZSxcbikgPT4ge1xuICBpZiAoZml0ID09PSAnY29udGFpbicgfHwgZml0ID09PSAnaW5zaWRlJykgcmV0dXJuIGZhbHNlXG4gIGlmICghaXNOdW1iZXIoaGVpZ2h0KSAmJiAhaXNOdW1iZXIod2lkdGgpKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCB0YXJnZXRBc3BlY3RSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0XG4gIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBvcmlnaW5hbC53aWR0aCAvIG9yaWdpbmFsLmhlaWdodFxuICBpZiAob3JpZ2luYWxBc3BlY3RSYXRpbyA9PT0gdGFyZ2V0QXNwZWN0UmF0aW8pIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IHNraXBFbmxhcmdlbWVudCA9IHdpdGhvdXRFbmxhcmdlbWVudCAmJiAob3JpZ2luYWwuaGVpZ2h0IDwgaGVpZ2h0IHx8IG9yaWdpbmFsLndpZHRoIDwgd2lkdGgpXG4gIGNvbnN0IHNraXBSZWR1Y3Rpb24gPSB3aXRob3V0UmVkdWN0aW9uICYmIChvcmlnaW5hbC5oZWlnaHQgPiBoZWlnaHQgfHwgb3JpZ2luYWwud2lkdGggPiB3aWR0aClcbiAgaWYgKHNraXBFbmxhcmdlbWVudCB8fCBza2lwUmVkdWN0aW9uKSByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIFNhbml0aXplIHRoZSByZXNpemUgY29uZmlnLiBJZiB0aGUgcmVzaXplIGNvbmZpZyBoYXMgdGhlIGB3aXRob3V0UmVkdWN0aW9uYFxuICogcHJvcGVydHkgc2V0IHRvIHRydWUsIHRoZSBgZml0YCBhbmQgYHBvc2l0aW9uYCBwcm9wZXJ0aWVzIHdpbGwgYmUgc2V0IHRvIGBjb250YWluYFxuICogYW5kIGB0b3AgbGVmdGAgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSB0aGUgcmVzaXplIGNvbmZpZ1xuICogQHJldHVybnMgYSBzYW5pdGl6ZWQgcmVzaXplIGNvbmZpZ1xuICovXG5jb25zdCBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyA9IChyZXNpemVDb25maWc6IEltYWdlU2l6ZSk6IEltYWdlU2l6ZSA9PiB7XG4gIGlmIChyZXNpemVDb25maWcud2l0aG91dFJlZHVjdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXNpemVDb25maWcsXG4gICAgICAvLyBXaHkgZml0IGBjb250YWluYCBzaG91bGQgYWxzbyBiZSBzZXQgdG8gaHR0cHM6Ly9naXRodWIuY29tL2xvdmVsbC9zaGFycC9pc3N1ZXMvMzU5NVxuICAgICAgZml0OiByZXNpemVDb25maWc/LmZpdCB8fCAnY29udGFpbicsXG4gICAgICBwb3NpdGlvbjogcmVzaXplQ29uZmlnPy5wb3NpdGlvbiB8fCAnbGVmdCB0b3AnLFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzaXplQ29uZmlnXG59XG5cbi8qKlxuICogVXNlZCB0byBleHRyYWN0IGhlaWdodCBmcm9tIGltYWdlcywgYW5pbWF0ZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBzaGFycE1ldGFkYXRhIC0gdGhlIHNoYXJwIG1ldGFkYXRhXG4gKiBAcmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZVxuICovXG5mdW5jdGlvbiBleHRyYWN0SGVpZ2h0RnJvbUltYWdlKHNoYXJwTWV0YWRhdGE6IFNoYXJwTWV0YWRhdGEpOiBudW1iZXIge1xuICBpZiAoc2hhcnBNZXRhZGF0YT8ucGFnZXMpIHtcbiAgICByZXR1cm4gc2hhcnBNZXRhZGF0YS5oZWlnaHQgLyBzaGFycE1ldGFkYXRhLnBhZ2VzXG4gIH1cbiAgcmV0dXJuIHNoYXJwTWV0YWRhdGEuaGVpZ2h0XG59XG5cbi8qKlxuICogRm9yIHRoZSBwcm92aWRlZCBpbWFnZSBzaXplcywgaGFuZGxlIHRoZSByZXNpemluZyBhbmQgdGhlIHRyYW5zZm9ybXNcbiAqIChmb3JtYXQsIHRyaW0sIGV0Yy4pIG9mIGVhY2ggcmVxdWVzdGVkIGltYWdlIHNpemUgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9iamVjdC5cbiAqIFRoaXMgb25seSBoYW5kbGVzIHRoZSBpbWFnZSBzaXplcy4gVGhlIHRyYW5zZm9ybXMgb2YgdGhlIG9yaWdpbmFsIGltYWdlXG4gKiBhcmUgaGFuZGxlZCBpbiB7QGxpbmsgLi9nZW5lcmF0ZUZpbGVEYXRhLnRzfS5cbiAqXG4gKiBUaGUgaW1hZ2Ugd2lsbCBiZSByZXNpemVkIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWRcbiAqIHJlc2l6ZSBjb25maWcuIElmIG5vIGltYWdlIHNpemVzIGFyZSByZXF1ZXN0ZWQsIHRoZSByZXNvbHZlZCBkYXRhIHdpbGwgYmUgZW1wdHkuXG4gKiBGb3IgZXZlcnkgaW1hZ2UgdGhhdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQsIGEgcmVzdWx0IG9iamVjdCB3aXRoIGBudWxsYFxuICogcGFyYW1ldGVycyB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSB0aGUgcmVzaXplIGNvbmZpZ1xuICogQHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgcmVzaXplIG9wZXJhdGlvbihzKVxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiByZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzKHtcbiAgY29uZmlnLFxuICBkaW1lbnNpb25zLFxuICBmaWxlLFxuICBtaW1lVHlwZSxcbiAgcmVxLFxuICBzYXZlZEZpbGVuYW1lLFxuICBzdGF0aWNQYXRoLFxuICB1cGxvYWRFZGl0cyxcbiAgd2l0aE1ldGFkYXRhLFxufTogUmVzaXplQXJncyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4ge1xuICBjb25zdCB7IGZvY2FsUG9pbnQ6IGZvY2FsUG9pbnRFbmFibGVkID0gdHJ1ZSwgaW1hZ2VTaXplcyB9ID0gY29uZmlnLnVwbG9hZFxuXG4gIC8vIEZvY2FsIHBvaW50IGFkanVzdG1lbnRzXG4gIGNvbnN0IGluY29taW5nRm9jYWxQb2ludCA9IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50XG4gICAgPyB7XG4gICAgICAgIHg6IGlzTnVtYmVyKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgPyBNYXRoLnJvdW5kKHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueCkgOiA1MCxcbiAgICAgICAgeTogaXNOdW1iZXIodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA/IE1hdGgucm91bmQodXBsb2FkRWRpdHMuZm9jYWxQb2ludC55KSA6IDUwLFxuICAgICAgfVxuICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgZGVmYXVsdFJlc3VsdDogSW1hZ2VTaXplc1Jlc3VsdCA9IHtcbiAgICAuLi4oZm9jYWxQb2ludEVuYWJsZWQgJiYgaW5jb21pbmdGb2NhbFBvaW50ICYmIHsgZm9jYWxQb2ludDogaW5jb21pbmdGb2NhbFBvaW50IH0pLFxuICAgIHNpemVEYXRhOiB7fSxcbiAgICBzaXplc1RvU2F2ZTogW10sXG4gIH1cblxuICAvLyBOb3RoaW5nIHRvIHJlc2l6ZSBoZXJlIHNvIHJldHVybiBhcyBlYXJseSBhcyBwb3NzaWJsZVxuICBpZiAoIWltYWdlU2l6ZXMpIHJldHVybiBkZWZhdWx0UmVzdWx0XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGFuaW1hdGVkXG4gIGNvbnN0IGZpbGVJc0FuaW1hdGVkVHlwZSA9IFsnaW1hZ2UvYXZpZicsICdpbWFnZS9naWYnLCAnaW1hZ2Uvd2VicCddLmluY2x1ZGVzKGZpbGUubWltZXR5cGUpXG4gIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICBpZiAoZmlsZUlzQW5pbWF0ZWRUeXBlKSBzaGFycE9wdGlvbnMuYW5pbWF0ZWQgPSB0cnVlXG5cbiAgY29uc3Qgc2hhcnBCYXNlOiBTaGFycCB8IHVuZGVmaW5lZCA9IHNoYXJwKGZpbGUudGVtcEZpbGVQYXRoIHx8IGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgY29uc3Qgb3JpZ2luYWxJbWFnZU1ldGEgPSBhd2FpdCBzaGFycEJhc2UubWV0YWRhdGEoKVxuXG4gIGNvbnN0IHJlc2l6ZUltYWdlTWV0YSA9IHtcbiAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uob3JpZ2luYWxJbWFnZU1ldGEpLFxuICAgIHdpZHRoOiBvcmlnaW5hbEltYWdlTWV0YS53aWR0aCxcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdHM6IEltYWdlU2l6ZXNSZXN1bHRbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGltYWdlU2l6ZXMubWFwKGFzeW5jIChpbWFnZVJlc2l6ZUNvbmZpZyk6IFByb21pc2U8SW1hZ2VTaXplc1Jlc3VsdD4gPT4ge1xuICAgICAgaW1hZ2VSZXNpemVDb25maWcgPSBzYW5pdGl6ZVJlc2l6ZUNvbmZpZyhpbWFnZVJlc2l6ZUNvbmZpZylcblxuICAgICAgY29uc3QgcmVzaXplQWN0aW9uID0gZ2V0SW1hZ2VSZXNpemVBY3Rpb24oe1xuICAgICAgICBkaW1lbnNpb25zLFxuICAgICAgICBoYXNGb2NhbFBvaW50OiBCb29sZWFuKGluY29taW5nRm9jYWxQb2ludCksXG4gICAgICAgIGltYWdlUmVzaXplQ29uZmlnLFxuICAgICAgfSlcbiAgICAgIGlmIChyZXNpemVBY3Rpb24gPT09ICdvbWl0JykgcmV0dXJuIGNyZWF0ZVJlc3VsdCh7IG5hbWU6IGltYWdlUmVzaXplQ29uZmlnLm5hbWUgfSlcblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemVcblxuICAgICAgaWYgKHJlc2l6ZUFjdGlvbiA9PT0gJ3Jlc2l6ZVdpdGhGb2NhbFBvaW50Jykge1xuICAgICAgICBsZXQgeyBoZWlnaHQ6IHJlc2l6ZUhlaWdodCwgd2lkdGg6IHJlc2l6ZVdpZHRoIH0gPSBpbWFnZVJlc2l6ZUNvbmZpZ1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBkaW1lbnNpb25zLndpZHRoIC8gZGltZW5zaW9ucy5oZWlnaHRcblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplV2lkdGggYmFzZWQgb24gb3JpZ2luYWwgYXNwZWN0IHJhdGlvIGlmIGl0J3MgdW5kZWZpbmVkXG4gICAgICAgIGlmIChyZXNpemVIZWlnaHQgJiYgIXJlc2l6ZVdpZHRoKSB7XG4gICAgICAgICAgcmVzaXplV2lkdGggPSBNYXRoLnJvdW5kKHJlc2l6ZUhlaWdodCAqIG9yaWdpbmFsQXNwZWN0UmF0aW8pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgcmVzaXplSGVpZ2h0IGJhc2VkIG9uIG9yaWdpbmFsIGFzcGVjdCByYXRpbyBpZiBpdCdzIHVuZGVmaW5lZFxuICAgICAgICBpZiAocmVzaXplV2lkdGggJiYgIXJlc2l6ZUhlaWdodCkge1xuICAgICAgICAgIHJlc2l6ZUhlaWdodCA9IE1hdGgucm91bmQocmVzaXplV2lkdGggLyBvcmlnaW5hbEFzcGVjdFJhdGlvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXNpemVIZWlnaHQpIHJlc2l6ZUhlaWdodCA9IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHRcbiAgICAgICAgaWYgKCFyZXNpemVXaWR0aCkgcmVzaXplV2lkdGggPSByZXNpemVJbWFnZU1ldGEud2lkdGhcblxuICAgICAgICBjb25zdCByZXNpemVBc3BlY3RSYXRpbyA9IHJlc2l6ZVdpZHRoIC8gcmVzaXplSGVpZ2h0XG4gICAgICAgIGNvbnN0IHByaW9yaXRpemVIZWlnaHQgPSByZXNpemVBc3BlY3RSYXRpbyA8IG9yaWdpbmFsQXNwZWN0UmF0aW9cbiAgICAgICAgLy8gU2NhbGVzIHRoZSBpbWFnZSBiZWZvcmUgZXh0cmFjdGluZyBmcm9tIGl0XG4gICAgICAgIHJlc2l6ZWQgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZSh7XG4gICAgICAgICAgaGVpZ2h0OiBwcmlvcml0aXplSGVpZ2h0ID8gcmVzaXplSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIHdpZHRoOiBwcmlvcml0aXplSGVpZ2h0ID8gdW5kZWZpbmVkIDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGFBcHBlbmRlZEZpbGUgPSBhd2FpdCBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEoe1xuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaGFycEZpbGU6IHJlc2l6ZWQsXG4gICAgICAgICAgd2l0aE1ldGFkYXRhLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIE11c3QgcmVhZCBmcm9tIGJ1ZmZlciwgcmVzaXplZC5tZXRhZGF0YSB3aWxsIHJldHVybiB0aGUgb3JpZ2luYWwgaW1hZ2UgbWV0YWRhdGFcbiAgICAgICAgY29uc3QgeyBpbmZvIH0gPSBhd2FpdCBtZXRhZGF0YUFwcGVuZGVkRmlsZS50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG5cbiAgICAgICAgcmVzaXplSW1hZ2VNZXRhLmhlaWdodCA9IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoe1xuICAgICAgICAgIC4uLm9yaWdpbmFsSW1hZ2VNZXRhLFxuICAgICAgICAgIGhlaWdodDogaW5mby5oZWlnaHQsXG4gICAgICAgIH0pXG4gICAgICAgIHJlc2l6ZUltYWdlTWV0YS53aWR0aCA9IGluZm8ud2lkdGhcblxuICAgICAgICBjb25zdCBoYWxmUmVzaXplWCA9IHJlc2l6ZVdpZHRoIC8gMlxuICAgICAgICBjb25zdCB4Rm9jYWxDZW50ZXIgPSByZXNpemVJbWFnZU1ldGEud2lkdGggKiAoaW5jb21pbmdGb2NhbFBvaW50LnggLyAxMDApXG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRSaWdodFBpeGVsQm91bmQgPSB4Rm9jYWxDZW50ZXIgKyBoYWxmUmVzaXplWFxuICAgICAgICBsZXQgbGVmdEJvdW5kID0geEZvY2FsQ2VudGVyIC0gaGFsZlJlc2l6ZVhcblxuICAgICAgICAvLyBpZiB0aGUgcmlnaHQgYm91bmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBpbWFnZSB3aWR0aCwgYWRqdXN0IHRoZSBsZWZ0IGJvdW5kXG4gICAgICAgIC8vIGtlZXBpbmcgZm9jdXMgb24gdGhlIHJpZ2h0XG4gICAgICAgIGlmIChjYWxjdWxhdGVkUmlnaHRQaXhlbEJvdW5kID4gcmVzaXplSW1hZ2VNZXRhLndpZHRoKSB7XG4gICAgICAgICAgbGVmdEJvdW5kID0gcmVzaXplSW1hZ2VNZXRhLndpZHRoIC0gcmVzaXplV2lkdGhcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoZSBsZWZ0IGJvdW5kIGlzIGxlc3MgdGhhbiAwLCBhZGp1c3QgdGhlIGxlZnQgYm91bmQgdG8gMFxuICAgICAgICAvLyBrZWVwaW5nIHRoZSBmb2N1cyBvbiB0aGUgbGVmdFxuICAgICAgICBpZiAobGVmdEJvdW5kIDwgMCkgbGVmdEJvdW5kID0gMFxuXG4gICAgICAgIGNvbnN0IGhhbGZSZXNpemVZID0gcmVzaXplSGVpZ2h0IC8gMlxuICAgICAgICBjb25zdCB5Rm9jYWxDZW50ZXIgPSByZXNpemVJbWFnZU1ldGEuaGVpZ2h0ICogKGluY29taW5nRm9jYWxQb2ludC55IC8gMTAwKVxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCA9IHlGb2NhbENlbnRlciArIGhhbGZSZXNpemVZXG4gICAgICAgIGxldCB0b3BCb3VuZCA9IHlGb2NhbENlbnRlciAtIGhhbGZSZXNpemVZXG5cbiAgICAgICAgLy8gaWYgdGhlIGJvdHRvbSBib3VuZCBpcyBncmVhdGVyIHRoYW4gdGhlIGltYWdlIGhlaWdodCwgYWRqdXN0IHRoZSB0b3AgYm91bmRcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgaW1hZ2UgYXMgZmFyIHJpZ2h0IGFzIHBvc3NpYmxlXG4gICAgICAgIGlmIChjYWxjdWxhdGVkQm90dG9tUGl4ZWxCb3VuZCA+IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQpIHtcbiAgICAgICAgICB0b3BCb3VuZCA9IHJlc2l6ZUltYWdlTWV0YS5oZWlnaHQgLSByZXNpemVIZWlnaHRcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoZSB0b3AgYm91bmQgaXMgbGVzcyB0aGFuIDAsIGFkanVzdCB0aGUgdG9wIGJvdW5kIHRvIDBcbiAgICAgICAgLy8ga2VlcGluZyB0aGUgaW1hZ2UgZm9jdXMgbmVhciB0aGUgdG9wXG4gICAgICAgIGlmICh0b3BCb3VuZCA8IDApIHRvcEJvdW5kID0gMFxuXG4gICAgICAgIHJlc2l6ZWQgPSByZXNpemVkLmV4dHJhY3Qoe1xuICAgICAgICAgIGhlaWdodDogcmVzaXplSGVpZ2h0LFxuICAgICAgICAgIGxlZnQ6IE1hdGguZmxvb3IobGVmdEJvdW5kKSxcbiAgICAgICAgICB0b3A6IE1hdGguZmxvb3IodG9wQm91bmQpLFxuICAgICAgICAgIHdpZHRoOiByZXNpemVXaWR0aCxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2l6ZWQgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZShpbWFnZVJlc2l6ZUNvbmZpZylcbiAgICAgIH1cblxuICAgICAgaWYgKGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudG9Gb3JtYXQoXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucykge1xuICAgICAgICByZXNpemVkID0gcmVzaXplZC50cmltKGltYWdlUmVzaXplQ29uZmlnLnRyaW1PcHRpb25zKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXRhZGF0YUFwcGVuZGVkRmlsZSA9IGF3YWl0IG9wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YSh7XG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hhcnBGaWxlOiByZXNpemVkLFxuICAgICAgICB3aXRoTWV0YWRhdGEsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB7IGRhdGE6IGJ1ZmZlckRhdGEsIGluZm86IGJ1ZmZlckluZm8gfSA9IGF3YWl0IG1ldGFkYXRhQXBwZW5kZWRGaWxlLnRvQnVmZmVyKHtcbiAgICAgICAgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzYW5pdGl6ZWRJbWFnZSA9IGdldFNhbml0aXplZEltYWdlRGF0YShzYXZlZEZpbGVuYW1lKVxuXG4gICAgICBpZiAocmVxLnBheWxvYWRVcGxvYWRTaXplcykge1xuICAgICAgICByZXEucGF5bG9hZFVwbG9hZFNpemVzW2ltYWdlUmVzaXplQ29uZmlnLm5hbWVdID0gYnVmZmVyRGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW1lSW5mbyA9IGF3YWl0IGZyb21CdWZmZXIoYnVmZmVyRGF0YSlcblxuICAgICAgY29uc3QgaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMgPSBjcmVhdGVJbWFnZU5hbWUoe1xuICAgICAgICBleHRlbnNpb246IG1pbWVJbmZvPy5leHQgfHwgc2FuaXRpemVkSW1hZ2UuZXh0LFxuICAgICAgICBoZWlnaHQ6IGV4dHJhY3RIZWlnaHRGcm9tSW1hZ2Uoe1xuICAgICAgICAgIC4uLm9yaWdpbmFsSW1hZ2VNZXRhLFxuICAgICAgICAgIGhlaWdodDogYnVmZmVySW5mby5oZWlnaHQsXG4gICAgICAgIH0pLFxuICAgICAgICBvdXRwdXRJbWFnZU5hbWU6IHNhbml0aXplZEltYWdlLm5hbWUsXG4gICAgICAgIHdpZHRoOiBidWZmZXJJbmZvLndpZHRoLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgaW1hZ2VQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtpbWFnZU5hbWVXaXRoRGltZW5zaW9uc31gXG5cbiAgICAgIGlmIChhd2FpdCBmaWxlRXhpc3RzKGltYWdlUGF0aCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmcy51bmxpbmtTeW5jKGltYWdlUGF0aClcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHVubGluayBlcnJvcnNcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGhlaWdodCwgc2l6ZSwgd2lkdGggfSA9IGJ1ZmZlckluZm9cbiAgICAgIHJldHVybiBjcmVhdGVSZXN1bHQoe1xuICAgICAgICBuYW1lOiBpbWFnZVJlc2l6ZUNvbmZpZy5uYW1lLFxuICAgICAgICBmaWxlbmFtZTogaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMsXG4gICAgICAgIGZpbGVzaXplOiBzaXplLFxuICAgICAgICBoZWlnaHQ6XG4gICAgICAgICAgZmlsZUlzQW5pbWF0ZWRUeXBlICYmIG9yaWdpbmFsSW1hZ2VNZXRhLnBhZ2VzID8gaGVpZ2h0IC8gb3JpZ2luYWxJbWFnZU1ldGEucGFnZXMgOiBoZWlnaHQsXG4gICAgICAgIG1pbWVUeXBlOiBtaW1lSW5mbz8ubWltZSB8fCBtaW1lVHlwZSxcbiAgICAgICAgc2l6ZXNUb1NhdmU6IFt7IGJ1ZmZlcjogYnVmZmVyRGF0YSwgcGF0aDogaW1hZ2VQYXRoIH1dLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pXG4gICAgfSksXG4gIClcblxuICByZXR1cm4gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKGFjYywgcmVzdWx0KSA9PiB7XG4gICAgICBPYmplY3QuYXNzaWduKGFjYy5zaXplRGF0YSwgcmVzdWx0LnNpemVEYXRhKVxuICAgICAgYWNjLnNpemVzVG9TYXZlLnB1c2goLi4ucmVzdWx0LnNpemVzVG9TYXZlKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sXG4gICAgeyAuLi5kZWZhdWx0UmVzdWx0IH0sXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJyZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIiwiZ2V0U2FuaXRpemVkSW1hZ2VEYXRhIiwic291cmNlSW1hZ2UiLCJleHRlbnNpb24iLCJzcGxpdCIsInBvcCIsIm5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZXh0IiwiY3JlYXRlSW1hZ2VOYW1lIiwiaGVpZ2h0Iiwib3V0cHV0SW1hZ2VOYW1lIiwid2lkdGgiLCJjcmVhdGVSZXN1bHQiLCJmaWxlbmFtZSIsImZpbGVzaXplIiwibWltZVR5cGUiLCJzaXplc1RvU2F2ZSIsInNpemVEYXRhIiwiZ2V0SW1hZ2VSZXNpemVBY3Rpb24iLCJkaW1lbnNpb25zIiwib3JpZ2luYWxJbWFnZSIsImhhc0ZvY2FsUG9pbnQiLCJpbWFnZVJlc2l6ZUNvbmZpZyIsImZpdCIsInRhcmdldEhlaWdodCIsInRhcmdldFdpZHRoIiwid2l0aG91dEVubGFyZ2VtZW50Iiwid2l0aG91dFJlZHVjdGlvbiIsIm9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYQW5kWSIsInVuZGVmaW5lZCIsIm9yaWdpbmFsSW1hZ2VJc1NtYWxsZXJYT3JZIiwiaXNOdW1iZXIiLCJ0YXJnZXRBc3BlY3RSYXRpbyIsIm9yaWdpbmFsQXNwZWN0UmF0aW8iLCJhcHBseVBheWxvYWRBZGp1c3RtZW50cyIsIm9yaWdpbmFsIiwic2tpcEVubGFyZ2VtZW50Iiwic2tpcFJlZHVjdGlvbiIsInNhbml0aXplUmVzaXplQ29uZmlnIiwicmVzaXplQ29uZmlnIiwicG9zaXRpb24iLCJleHRyYWN0SGVpZ2h0RnJvbUltYWdlIiwic2hhcnBNZXRhZGF0YSIsInBhZ2VzIiwiY29uZmlnIiwiZmlsZSIsInJlcSIsInNhdmVkRmlsZW5hbWUiLCJzdGF0aWNQYXRoIiwidXBsb2FkRWRpdHMiLCJ3aXRoTWV0YWRhdGEiLCJmb2NhbFBvaW50IiwiZm9jYWxQb2ludEVuYWJsZWQiLCJpbWFnZVNpemVzIiwidXBsb2FkIiwiaW5jb21pbmdGb2NhbFBvaW50IiwieCIsIk1hdGgiLCJyb3VuZCIsInkiLCJkZWZhdWx0UmVzdWx0IiwiZmlsZUlzQW5pbWF0ZWRUeXBlIiwiaW5jbHVkZXMiLCJtaW1ldHlwZSIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnBCYXNlIiwic2hhcnAiLCJ0ZW1wRmlsZVBhdGgiLCJkYXRhIiwicm90YXRlIiwib3JpZ2luYWxJbWFnZU1ldGEiLCJtZXRhZGF0YSIsInJlc2l6ZUltYWdlTWV0YSIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicmVzaXplQWN0aW9uIiwiQm9vbGVhbiIsImltYWdlVG9SZXNpemUiLCJjbG9uZSIsInJlc2l6ZWQiLCJyZXNpemVIZWlnaHQiLCJyZXNpemVXaWR0aCIsInJlc2l6ZUFzcGVjdFJhdGlvIiwicHJpb3JpdGl6ZUhlaWdodCIsInJlc2l6ZSIsIm1ldGFkYXRhQXBwZW5kZWRGaWxlIiwib3B0aW9uYWxseUFwcGVuZE1ldGFkYXRhIiwic2hhcnBGaWxlIiwiaW5mbyIsInRvQnVmZmVyIiwicmVzb2x2ZVdpdGhPYmplY3QiLCJoYWxmUmVzaXplWCIsInhGb2NhbENlbnRlciIsImNhbGN1bGF0ZWRSaWdodFBpeGVsQm91bmQiLCJsZWZ0Qm91bmQiLCJoYWxmUmVzaXplWSIsInlGb2NhbENlbnRlciIsImNhbGN1bGF0ZWRCb3R0b21QaXhlbEJvdW5kIiwidG9wQm91bmQiLCJleHRyYWN0IiwibGVmdCIsImZsb29yIiwidG9wIiwiZm9ybWF0T3B0aW9ucyIsInRvRm9ybWF0IiwiZm9ybWF0Iiwib3B0aW9ucyIsInRyaW1PcHRpb25zIiwidHJpbSIsImJ1ZmZlckRhdGEiLCJidWZmZXJJbmZvIiwic2FuaXRpemVkSW1hZ2UiLCJwYXlsb2FkVXBsb2FkU2l6ZXMiLCJtaW1lSW5mbyIsImZyb21CdWZmZXIiLCJpbWFnZU5hbWVXaXRoRGltZW5zaW9ucyIsImltYWdlUGF0aCIsImZpbGVFeGlzdHMiLCJmcyIsInVubGlua1N5bmMiLCJzaXplIiwibWltZSIsImJ1ZmZlciIsInBhdGgiLCJyZWR1Y2UiLCJhY2MiLCJyZXN1bHQiLCJPYmplY3QiLCJhc3NpZ24iLCJwdXNoIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -84,4 +84,4 @@ describe('mimeTypeValidator', ()=>{
|
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
86
|
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL21pbWVUeXBlVmFsaWRhdG9yLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZU9wdGlvbnMgfSBmcm9tICcuLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBtaW1lVHlwZVZhbGlkYXRvciB9IGZyb20gJy4vbWltZVR5cGVWYWxpZGF0b3InXG5cbmNvbnN0IG9wdGlvbnMgPSB7IHNpYmxpbmdEYXRhOiB7IGZpbGVuYW1lOiAnZmlsZS54eXonIH0gfSBhcyBWYWxpZGF0ZU9wdGlvbnM8XG4gIHVuZGVmaW5lZCxcbiAgdW5kZWZpbmVkLFxuICB1bmRlZmluZWQsXG4gIHN0cmluZ1xuPlxuXG5kZXNjcmliZSgnbWltZVR5cGVWYWxpZGF0b3InLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgc2luZ2xlIG1pbWVUeXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IG1pbWVUeXBlcyA9IFsnaW1hZ2UvcG5nJ11cbiAgICBjb25zdCB2YWxpZGF0ZSA9IG1pbWVUeXBlVmFsaWRhdG9yKG1pbWVUeXBlcylcbiAgICBleHBlY3QodmFsaWRhdGUoJ2ltYWdlL3BuZycsIG9wdGlvbnMpKS50b0JlKHRydWUpXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtdWx0aXBsZSBtaW1lVHlwZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWltZVR5cGVzID0gWydpbWFnZS9wbmcnLCAnYXBwbGljYXRpb24vcGRmJ11cbiAgICBjb25zdCB2YWxpZGF0ZSA9IG1pbWVUeXBlVmFsaWRhdG9yKG1pbWVUeXBlcylcbiAgICBleHBlY3QodmFsaWRhdGUoJ2ltYWdlL3BuZycsIG9wdGlvbnMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHZhbGlkYXRlKCdhcHBsaWNhdGlvbi9wZGYnLCBvcHRpb25zKSkudG9CZSh0cnVlKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgdXNpbmcgd2lsZGNhcmQnLCAoKSA9PiB7XG4gICAgY29uc3QgbWltZVR5cGVzID0gWydpbWFnZS8qJ11cbiAgICBjb25zdCB2YWxpZGF0ZSA9IG1pbWVUeXBlVmFsaWRhdG9yKG1pbWVUeXBlcylcbiAgICBleHBlY3QodmFsaWRhdGUoJ2ltYWdlL3BuZycsIG9wdGlvbnMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHZhbGlkYXRlKCdpbWFnZS9naWYnLCBvcHRpb25zKSkudG9CZSh0cnVlKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgdmFsaWRhdGUgbXVsdGlwbGUgd2lsZGNhcmRzJywgKCkgPT4ge1xuICAgIGNvbnN0IG1pbWVUeXBlcyA9IFsnaW1hZ2UvKicsICdhdWRpby8qJ11cbiAgICBjb25zdCB2YWxpZGF0ZSA9IG1pbWVUeXBlVmFsaWRhdG9yKG1pbWVUeXBlcylcbiAgICBleHBlY3QodmFsaWRhdGUoJ2ltYWdlL3BuZycsIG9wdGlvbnMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHZhbGlkYXRlKCdhdWRpby9tcGVnJywgb3B0aW9ucykpLnRvQmUodHJ1ZSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIG5vdCB2YWxpZGF0ZSB3aGVuIHVubWF0Y2hlZCcsICgpID0+IHtcbiAgICBjb25zdCBtaW1lVHlwZXMgPSBbJ2ltYWdlL3BuZyddXG4gICAgY29uc3QgdmFsaWRhdGUgPSBtaW1lVHlwZVZhbGlkYXRvcihtaW1lVHlwZXMpXG4gICAgZXhwZWN0KHZhbGlkYXRlKCdhdWRpby9tcGVnJywgb3B0aW9ucykpLnRvQmUoXCJJbnZhbGlkIGZpbGUgdHlwZTogJ2F1ZGlvL21wZWcnXCIpXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBub3QgdmFsaWRhdGUgd2hlbiB1bm1hdGNoZWQgLSBtdWx0aXBsZSBtaW1lVHlwZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWltZVR5cGVzID0gWydpbWFnZS9wbmcnLCAnYXBwbGljYXRpb24vcGRmJ11cbiAgICBjb25zdCB2YWxpZGF0ZSA9IG1pbWVUeXBlVmFsaWRhdG9yKG1pbWVUeXBlcylcbiAgICBleHBlY3QodmFsaWRhdGUoJ2F1ZGlvL21wZWcnLCBvcHRpb25zKSkudG9CZShcIkludmFsaWQgZmlsZSB0eXBlOiAnYXVkaW8vbXBlZydcIilcbiAgfSlcblxuICBpdCgnc2hvdWxkIG5vdCB2YWxpZGF0ZSB1c2luZyB3aWxkY2FyZCAtIHVubWF0Y2hlZCcsICgpID0+IHtcbiAgICBjb25zdCBtaW1lVHlwZXMgPSBbJ2ltYWdlLyonXVxuICAgIGNvbnN0IHZhbGlkYXRlID0gbWltZVR5cGVWYWxpZGF0b3IobWltZVR5cGVzKVxuICAgIGV4cGVjdCh2YWxpZGF0ZSgnYXVkaW8vbXBlZycsIG9wdGlvbnMpKS50b0JlKFwiSW52YWxpZCBmaWxlIHR5cGU6ICdhdWRpby9tcGVnJ1wiKVxuICB9KVxuXG4gIGl0KCdzaG91bGQgbm90IHZhbGlkYXRlIG11bHRpcGxlIHdpbGRjYXJkcyAtIHVubWF0Y2hlZCcsICgpID0+IHtcbiAgICBjb25zdCBtaW1lVHlwZXMgPSBbJ2ltYWdlLyonLCAnYXVkaW8vKiddXG4gICAgY29uc3QgdmFsaWRhdGUgPSBtaW1lVHlwZVZhbGlkYXRvcihtaW1lVHlwZXMpXG4gICAgZXhwZWN0KHZhbGlkYXRlKCd2aWRlby9tcDQnLCBvcHRpb25zKSkudG9CZShcIkludmFsaWQgZmlsZSB0eXBlOiAndmlkZW8vbXA0J1wiKVxuICAgIGV4cGVjdCh2YWxpZGF0ZSgnYXBwbGljYXRpb24vcGRmJywgb3B0aW9ucykpLnRvQmUoXCJJbnZhbGlkIGZpbGUgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZidcIilcbiAgfSlcblxuICBpdCgnc2hvdWxkIG5vdCBlcnJvciB3aGVuIG1pbWVUeXBlIGlzIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgbWltZVR5cGVzID0gWydpbWFnZS8qJywgJ2FwcGxpY2F0aW9uL3BkZiddXG4gICAgY29uc3QgdmFsaWRhdGUgPSBtaW1lVHlwZVZhbGlkYXRvcihtaW1lVHlwZXMpXG4gICAgbGV0IHZhbHVlXG4gICAgZXhwZWN0KHZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKSkudG9CZSgnSW52YWxpZCBmaWxlIHR5cGUnKVxuICB9KVxufSlcbiJdLCJuYW1lcyI6WyJvcHRpb25zIiwic2libGluZ0RhdGEiLCJmaWxlbmFtZSIsImRlc2NyaWJlIiwiaXQiLCJtaW1lVHlwZXMiLCJ2YWxpZGF0ZSIsIm1pbWVUeXBlVmFsaWRhdG9yIiwiZXhwZWN0IiwidG9CZSIsInZhbHVlIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzttQ0FFa0M7QUFFbEMsTUFBTUEsVUFBVTtJQUFFQyxhQUFhO1FBQUVDLFVBQVU7SUFBVztBQUFFO0FBT3hEQyxTQUFTLHFCQUFxQjtJQUM1QkMsR0FBRyxtQ0FBbUM7UUFDcEMsTUFBTUMsWUFBWTtZQUFDO1NBQVk7UUFDL0IsTUFBTUMsV0FBV0MsSUFBQUEsb0NBQWlCLEVBQUNGO1FBQ25DRyxPQUFPRixTQUFTLGFBQWFOLFVBQVVTLElBQUksQ0FBQztJQUM5QztJQUVBTCxHQUFHLHNDQUFzQztRQUN2QyxNQUFNQyxZQUFZO1lBQUM7WUFBYTtTQUFrQjtRQUNsRCxNQUFNQyxXQUFXQyxJQUFBQSxvQ0FBaUIsRUFBQ0Y7UUFDbkNHLE9BQU9GLFNBQVMsYUFBYU4sVUFBVVMsSUFBSSxDQUFDO1FBQzVDRCxPQUFPRixTQUFTLG1CQUFtQk4sVUFBVVMsSUFBSSxDQUFDO0lBQ3BEO0lBRUFMLEdBQUcsa0NBQWtDO1FBQ25DLE1BQU1DLFlBQVk7WUFBQztTQUFVO1FBQzdCLE1BQU1DLFdBQVdDLElBQUFBLG9DQUFpQixFQUFDRjtRQUNuQ0csT0FBT0YsU0FBUyxhQUFhTixVQUFVUyxJQUFJLENBQUM7UUFDNUNELE9BQU9GLFNBQVMsYUFBYU4sVUFBVVMsSUFBSSxDQUFDO0lBQzlDO0lBRUFMLEdBQUcsc0NBQXNDO1FBQ3ZDLE1BQU1DLFlBQVk7WUFBQztZQUFXO1NBQVU7UUFDeEMsTUFBTUMsV0FBV0MsSUFBQUEsb0NBQWlCLEVBQUNGO1FBQ25DRyxPQUFPRixTQUFTLGFBQWFOLFVBQVVTLElBQUksQ0FBQztRQUM1Q0QsT0FBT0YsU0FBUyxjQUFjTixVQUFVUyxJQUFJLENBQUM7SUFDL0M7SUFFQUwsR0FBRyxzQ0FBc0M7UUFDdkMsTUFBTUMsWUFBWTtZQUFDO1NBQVk7UUFDL0IsTUFBTUMsV0FBV0MsSUFBQUEsb0NBQWlCLEVBQUNGO1FBQ25DRyxPQUFPRixTQUFTLGNBQWNOLFVBQVVTLElBQUksQ0FBQztJQUMvQztJQUVBTCxHQUFHLDJEQUEyRDtRQUM1RCxNQUFNQyxZQUFZO1lBQUM7WUFBYTtTQUFrQjtRQUNsRCxNQUFNQyxXQUFXQyxJQUFBQSxvQ0FBaUIsRUFBQ0Y7UUFDbkNHLE9BQU9GLFNBQVMsY0FBY04sVUFBVVMsSUFBSSxDQUFDO0lBQy9DO0lBRUFMLEdBQUcsa0RBQWtEO1FBQ25ELE1BQU1DLFlBQVk7WUFBQztTQUFVO1FBQzdCLE1BQU1DLFdBQVdDLElBQUFBLG9DQUFpQixFQUFDRjtRQUNuQ0csT0FBT0YsU0FBUyxjQUFjTixVQUFVUyxJQUFJLENBQUM7SUFDL0M7SUFFQUwsR0FBRyxzREFBc0Q7UUFDdkQsTUFBTUMsWUFBWTtZQUFDO1lBQVc7U0FBVTtRQUN4QyxNQUFNQyxXQUFXQyxJQUFBQSxvQ0FBaUIsRUFBQ0Y7UUFDbkNHLE9BQU9GLFNBQVMsYUFBYU4sVUFBVVMsSUFBSSxDQUFDO1FBQzVDRCxPQUFPRixTQUFTLG1CQUFtQk4sVUFBVVMsSUFBSSxDQUFDO0lBQ3BEO0lBRUFMLEdBQUcsNkNBQTZDO1FBQzlDLE1BQU1DLFlBQVk7WUFBQztZQUFXO1NBQWtCO1FBQ2hELE1BQU1DLFdBQVdDLElBQUFBLG9DQUFpQixFQUFDRjtRQUNuQyxJQUFJSztRQUNKRixPQUFPRixTQUFTSSxPQUFPVixVQUFVUyxJQUFJLENBQUM7SUFDeEM7QUFDRiJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Sharp, Metadata as SharpMetadata } from 'sharp';
|
|
2
|
+
import type { PayloadRequest } from '../types/index.js';
|
|
3
|
+
export type WithMetadata = ((options: {
|
|
4
|
+
metadata: SharpMetadata;
|
|
5
|
+
req: PayloadRequest;
|
|
6
|
+
}) => Promise<boolean>) | boolean;
|
|
7
|
+
export declare function optionallyAppendMetadata({ req, sharpFile, withMetadata, }: {
|
|
8
|
+
req: PayloadRequest;
|
|
9
|
+
sharpFile: Sharp;
|
|
10
|
+
withMetadata: WithMetadata;
|
|
11
|
+
}): Promise<Sharp>;
|
|
12
|
+
//# sourceMappingURL=optionallyAppendMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionallyAppendMetadata.d.ts","sourceRoot":"","sources":["../../src/uploads/optionallyAppendMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,OAAO,CAAA;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,MAAM,MAAM,YAAY,GACpB,CAAC,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE,cAAc,CAAA;CAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GACjF,OAAO,CAAA;AAEX,wBAAsB,wBAAwB,CAAC,EAC7C,GAAG,EACH,SAAS,EACT,YAAY,GACb,EAAE;IACD,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,KAAK,CAAA;IAChB,YAAY,EAAE,YAAY,CAAA;CAC3B,GAAG,OAAO,CAAC,KAAK,CAAC,CAWjB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "optionallyAppendMetadata", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return optionallyAppendMetadata;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
async function optionallyAppendMetadata({ req, sharpFile, withMetadata }) {
|
|
12
|
+
const metadata = await sharpFile.metadata();
|
|
13
|
+
if (withMetadata === true) {
|
|
14
|
+
return sharpFile.withMetadata();
|
|
15
|
+
} else if (typeof withMetadata === 'function') {
|
|
16
|
+
const useMetadata = await withMetadata({
|
|
17
|
+
metadata,
|
|
18
|
+
req
|
|
19
|
+
});
|
|
20
|
+
if (useMetadata) return sharpFile.withMetadata();
|
|
21
|
+
}
|
|
22
|
+
return sharpFile;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL29wdGlvbmFsbHlBcHBlbmRNZXRhZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNoYXJwLCBNZXRhZGF0YSBhcyBTaGFycE1ldGFkYXRhIH0gZnJvbSAnc2hhcnAnXG5cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcydcblxuZXhwb3J0IHR5cGUgV2l0aE1ldGFkYXRhID1cbiAgfCAoKG9wdGlvbnM6IHsgbWV0YWRhdGE6IFNoYXJwTWV0YWRhdGE7IHJlcTogUGF5bG9hZFJlcXVlc3QgfSkgPT4gUHJvbWlzZTxib29sZWFuPilcbiAgfCBib29sZWFuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEoe1xuICByZXEsXG4gIHNoYXJwRmlsZSxcbiAgd2l0aE1ldGFkYXRhLFxufToge1xuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNoYXJwRmlsZTogU2hhcnBcbiAgd2l0aE1ldGFkYXRhOiBXaXRoTWV0YWRhdGFcbn0pOiBQcm9taXNlPFNoYXJwPiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgc2hhcnBGaWxlLm1ldGFkYXRhKClcbiAgaWYgKHdpdGhNZXRhZGF0YSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBzaGFycEZpbGUud2l0aE1ldGFkYXRhKClcbiAgfSBlbHNlIGlmICh0eXBlb2Ygd2l0aE1ldGFkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgdXNlTWV0YWRhdGEgPSBhd2FpdCB3aXRoTWV0YWRhdGEoeyBtZXRhZGF0YSwgcmVxIH0pXG5cbiAgICBpZiAodXNlTWV0YWRhdGEpIHJldHVybiBzaGFycEZpbGUud2l0aE1ldGFkYXRhKClcbiAgfVxuXG4gIHJldHVybiBzaGFycEZpbGVcbn1cbiJdLCJuYW1lcyI6WyJvcHRpb25hbGx5QXBwZW5kTWV0YWRhdGEiLCJyZXEiLCJzaGFycEZpbGUiLCJ3aXRoTWV0YWRhdGEiLCJtZXRhZGF0YSIsInVzZU1ldGFkYXRhIl0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBUXNCQTs7O2VBQUFBOzs7QUFBZixlQUFlQSx5QkFBeUIsRUFDN0NDLEdBQUcsRUFDSEMsU0FBUyxFQUNUQyxZQUFZLEVBS2I7SUFDQyxNQUFNQyxXQUFXLE1BQU1GLFVBQVVFLFFBQVE7SUFDekMsSUFBSUQsaUJBQWlCLE1BQU07UUFDekIsT0FBT0QsVUFBVUMsWUFBWTtJQUMvQixPQUFPLElBQUksT0FBT0EsaUJBQWlCLFlBQVk7UUFDN0MsTUFBTUUsY0FBYyxNQUFNRixhQUFhO1lBQUVDO1lBQVVIO1FBQUk7UUFFdkQsSUFBSUksYUFBYSxPQUFPSCxVQUFVQyxZQUFZO0lBQ2hEO0lBRUEsT0FBT0Q7QUFDVCJ9
|