UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

267 lines (265 loc) 30.3 kB
"use strict"; /* * Copyright (c) 2018 by Filestack. * Some rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.transform = exports.EVideoAccessMode = exports.EVideoAccess = exports.EVideoLocations = exports.EUrlscreenshotOrientation = exports.EUrlscreenshotMode = exports.EUrlscreenshotAgent = exports.EVideoTypes = exports.EAudioTypes = exports.EImageWatermarkPosition = exports.ESmartCropMode = exports.ECropfacesType = exports.EColorspaceType = exports.EStyleType = exports.ENoiseType = exports.EShapeType = exports.EBlurMode = exports.EFitOptions = exports.EAlignFacesOptions = exports.EAlignOptions = void 0; var filelink_1 = require("./../filelink"); /** * @private */ var toSnakeCase = function (original) { var snakeCased = {}; var keys = Object.keys(original); for (var i = 0; i < keys.length; i++) { var newKey = keys[i].split(/(?=[A-Z])/).join('_').toLowerCase(); if (typeof original[keys[i]] === 'object' && !Array.isArray(original[keys[i]])) { snakeCased[newKey] = toSnakeCase(original[keys[i]]); } else { snakeCased[newKey] = original[keys[i]]; } } return snakeCased; }; /** * Align enum */ var EAlignOptions; (function (EAlignOptions) { EAlignOptions["left"] = "left"; EAlignOptions["right"] = "right"; EAlignOptions["center"] = "center"; EAlignOptions["bottom"] = "bottom"; EAlignOptions["top"] = "top"; })(EAlignOptions = exports.EAlignOptions || (exports.EAlignOptions = {})); /** * Align enum with faces option */ var EAlignFacesOptions; (function (EAlignFacesOptions) { EAlignFacesOptions["left"] = "left"; EAlignFacesOptions["right"] = "right"; EAlignFacesOptions["center"] = "center"; EAlignFacesOptions["bottom"] = "bottom"; EAlignFacesOptions["top"] = "top"; EAlignFacesOptions["faces"] = "faces"; })(EAlignFacesOptions = exports.EAlignFacesOptions || (exports.EAlignFacesOptions = {})); /** * Fit enum */ var EFitOptions; (function (EFitOptions) { EFitOptions["clip"] = "clip"; EFitOptions["crop"] = "crop"; EFitOptions["scale"] = "scale"; EFitOptions["max"] = "max"; })(EFitOptions = exports.EFitOptions || (exports.EFitOptions = {})); /** * Blur enum */ var EBlurMode; (function (EBlurMode) { EBlurMode["linear"] = "linear"; EBlurMode["gaussian"] = "gaussian"; })(EBlurMode = exports.EBlurMode || (exports.EBlurMode = {})); /** * Shapes enum */ var EShapeType; (function (EShapeType) { EShapeType["oval"] = "oval"; EShapeType["rect"] = "rect"; })(EShapeType = exports.EShapeType || (exports.EShapeType = {})); /** * Noise type enum */ var ENoiseType; (function (ENoiseType) { ENoiseType["none"] = "none"; ENoiseType["low"] = "low"; ENoiseType["medium"] = "medium"; ENoiseType["high"] = "high"; })(ENoiseType = exports.ENoiseType || (exports.ENoiseType = {})); /** * Style type enum */ var EStyleType; (function (EStyleType) { EStyleType["artwork"] = "artwork"; EStyleType["photo"] = "photo"; })(EStyleType = exports.EStyleType || (exports.EStyleType = {})); /** * Color space enum */ var EColorspaceType; (function (EColorspaceType) { EColorspaceType["RGB"] = "RGB"; EColorspaceType["CMYK"] = "CMYK"; EColorspaceType["Input"] = "Input"; })(EColorspaceType = exports.EColorspaceType || (exports.EColorspaceType = {})); /** * Crop faces options enum */ var ECropfacesType; (function (ECropfacesType) { ECropfacesType["thumb"] = "thumb"; ECropfacesType["crop"] = "crop"; ECropfacesType["fill"] = "fill"; })(ECropfacesType = exports.ECropfacesType || (exports.ECropfacesType = {})); /** * SmartCrop mode options enum */ var ESmartCropMode; (function (ESmartCropMode) { ESmartCropMode["fit"] = "fit"; ESmartCropMode["auto"] = "auto"; })(ESmartCropMode = exports.ESmartCropMode || (exports.ESmartCropMode = {})); var EImageWatermarkPosition; (function (EImageWatermarkPosition) { EImageWatermarkPosition["top"] = "top"; EImageWatermarkPosition["middle"] = "middle"; EImageWatermarkPosition["bottom"] = "bottom"; EImageWatermarkPosition["left"] = "left"; EImageWatermarkPosition["center"] = "center"; EImageWatermarkPosition["right"] = "right"; })(EImageWatermarkPosition = exports.EImageWatermarkPosition || (exports.EImageWatermarkPosition = {})); /** * Convert to format */ var EAudioTypes; (function (EAudioTypes) { EAudioTypes["libmp3lame"] = "libmp3lame"; EAudioTypes["libvorbis"] = "libvorbis"; EAudioTypes["libfdk_aac"] = "libfdk_aac"; EAudioTypes["dib_ac3"] = "dib_ac3"; EAudioTypes["pcm_s16le"] = "pcm_s16le"; EAudioTypes["mp2"] = "mp2"; EAudioTypes["ac3"] = "ac3"; EAudioTypes["eac3"] = "eac3"; })(EAudioTypes = exports.EAudioTypes || (exports.EAudioTypes = {})); /** * Convert to format */ var EVideoTypes; (function (EVideoTypes) { EVideoTypes["h264"] = "h264"; EVideoTypes["h264_hi"] = "h264.hi"; EVideoTypes["webm"] = "webm"; EVideoTypes["webm-hi"] = "webm.hi"; EVideoTypes["ogg"] = "ogg"; EVideoTypes["ogg-hi"] = "ogg.hi"; EVideoTypes["hls-variant"] = "hls.variant"; EVideoTypes["mp3"] = "mp3"; EVideoTypes["oga"] = "oga"; EVideoTypes["m4a"] = "m4a"; EVideoTypes["aac"] = "aac"; EVideoTypes["hls"] = "hls.variant.audio"; })(EVideoTypes = exports.EVideoTypes || (exports.EVideoTypes = {})); var EUrlscreenshotAgent; (function (EUrlscreenshotAgent) { EUrlscreenshotAgent["desktop"] = "desktop"; EUrlscreenshotAgent["mobile"] = "mobile"; })(EUrlscreenshotAgent = exports.EUrlscreenshotAgent || (exports.EUrlscreenshotAgent = {})); var EUrlscreenshotMode; (function (EUrlscreenshotMode) { EUrlscreenshotMode["all"] = "all"; EUrlscreenshotMode["window"] = "window"; })(EUrlscreenshotMode = exports.EUrlscreenshotMode || (exports.EUrlscreenshotMode = {})); var EUrlscreenshotOrientation; (function (EUrlscreenshotOrientation) { EUrlscreenshotOrientation["portrait"] = "portrait"; EUrlscreenshotOrientation["landscape"] = "landscape"; })(EUrlscreenshotOrientation = exports.EUrlscreenshotOrientation || (exports.EUrlscreenshotOrientation = {})); /** * Video storage location */ var EVideoLocations; (function (EVideoLocations) { EVideoLocations["s3"] = "s3"; EVideoLocations["azure"] = "azure"; EVideoLocations["gcs"] = "gcs"; EVideoLocations["rackspace"] = "rackspace"; EVideoLocations["dropbox"] = "dropbox"; })(EVideoLocations = exports.EVideoLocations || (exports.EVideoLocations = {})); var EVideoAccess; (function (EVideoAccess) { EVideoAccess["private"] = "private"; EVideoAccess["public"] = "public"; })(EVideoAccess = exports.EVideoAccess || (exports.EVideoAccess = {})); var EVideoAccessMode; (function (EVideoAccessMode) { EVideoAccessMode["preserve"] = "preserve"; EVideoAccessMode["constrain"] = "constrain"; EVideoAccessMode["letterbox"] = "letterbox"; EVideoAccessMode["pad"] = "pad"; EVideoAccessMode["crop"] = "crop"; })(EVideoAccessMode = exports.EVideoAccessMode || (exports.EVideoAccessMode = {})); /** * Creates filestack transform url. * Transform params can be provided in camelCase or snakeCase style * * @example * ```js * // camelCase * console.log(transform(session, { * partialPixelate: { * objects: [[10, 20, 200, 250], [275, 91, 500, 557]], * }, * }, 'testfile')); * ``` * result => https://cdn.filestackcontent.com/partial_pixelate=objects:[[10,20,200,250],[275,91,500,557]]/testfile * * ```js * // snake_case * console.log(transform(session, { * partial_pixelate: { * objects: [[10, 20, 200, 250], [275, 91, 500, 557]], * }, * }, 'testfile')); * ``` * result => https://cdn.filestackcontent.com/partial_pixelate=objects:[[10,20,200,250],[275,91,500,557]]/testfile * * Client.transform is deprecated. Use Filelink class instead * * @private * @throws Error * @param options Transformation options * @param url url, handle or array of elements */ var transform = function (session, url, options, b64) { if (options === void 0) { options = {}; } if (b64 === void 0) { b64 = false; } options = toSnakeCase(options); if (session.policy && session.signature) { options.security = { policy: session.policy, signature: session.signature, }; } var filelink = new filelink_1.Filelink(url, session.apikey); filelink.setCname(session.cname); filelink.setBase64(b64); Object.keys(options).forEach(function (key) { if (typeof options[key] === 'boolean' && !options[key] && key !== 'cache') { return; } filelink.addTask(key, options[key]); }); return filelink.toString(); }; exports.transform = transform; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpL3RyYW5zZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFHSCwwQ0FBeUM7QUFFekM7O0dBRUc7QUFDSCxJQUFNLFdBQVcsR0FBRyxVQUFDLFFBQWtDO0lBQ3JELElBQUksVUFBVSxHQUE2QixFQUFFLENBQUM7SUFFOUMsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNwQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVoRSxJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDOUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0wsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QztLQUNGO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxJQUFZLGFBTVg7QUFORCxXQUFZLGFBQWE7SUFDdkIsOEJBQWEsQ0FBQTtJQUNiLGdDQUFlLENBQUE7SUFDZixrQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBaUIsQ0FB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TyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQXZCVyxRQUFBLFNBQVMsYUF1QnBCIiwiZmlsZSI6ImxpYi9hcGkvdHJhbnNmb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOCBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyBGaWxlbGluayB9IGZyb20gJy4vLi4vZmlsZWxpbmsnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmNvbnN0IHRvU25ha2VDYXNlID0gKG9yaWdpbmFsOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0pOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPT4ge1xuICBsZXQgc25ha2VDYXNlZDogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9yaWdpbmFsKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgbmV3S2V5ID0ga2V5c1tpXS5zcGxpdCgvKD89W0EtWl0pLykuam9pbignXycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAodHlwZW9mIG9yaWdpbmFsW2tleXNbaV1dID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShvcmlnaW5hbFtrZXlzW2ldXSkpIHtcbiAgICAgIHNuYWtlQ2FzZWRbbmV3S2V5XSA9IHRvU25ha2VDYXNlKG9yaWdpbmFsW2tleXNbaV1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc25ha2VDYXNlZFtuZXdLZXldID0gb3JpZ2luYWxba2V5c1tpXV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNuYWtlQ2FzZWQ7XG59O1xuXG4vKipcbiAqIEFsaWduIGVudW1cbiAqL1xuZXhwb3J0IGVudW0gRUFsaWduT3B0aW9ucyB7XG4gIGxlZnQgPSAnbGVmdCcsXG4gIHJpZ2h0ID0gJ3JpZ2h0JyxcbiAgY2VudGVyID0gJ2NlbnRlcicsXG4gIGJvdHRvbSA9ICdib3R0b20nLFxuICB0b3AgPSAndG9wJyxcbn1cblxuLyoqXG4gKiBBbGlnbiBlbnVtIHdpdGggZmFjZXMgb3B0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIEVBbGlnbkZhY2VzT3B0aW9ucyB7XG4gIGxlZnQgPSAnbGVmdCcsXG4gIHJpZ2h0ID0gJ3JpZ2h0JyxcbiAgY2VudGVyID0gJ2NlbnRlcicsXG4gIGJvdHRvbSA9ICdib3R0b20nLFxuICB0b3AgPSAndG9wJyxcbiAgZmFjZXMgPSAnZmFjZXMnLFxufVxuXG4vKipcbiAqIEZpdCBlbnVtXG4gKi9cbmV4cG9ydCBlbnVtIEVGaXRPcHRpb25zIHtcbiAgY2xpcCA9ICdjbGlwJyxcbiAgY3JvcCA9ICdjcm9wJyxcbiAgc2NhbGUgPSAnc2NhbGUnLFxuICBtYXggPSAnbWF4Jyxcbn1cblxuLyoqXG4gKiBCbHVyIGVudW1cbiAqL1xuZXhwb3J0IGVudW0gRUJsdXJNb2RlIHtcbiAgbGluZWFyID0gJ2xpbmVhcicsXG4gIGdhdXNzaWFuID0gJ2dhdXNzaWFuJyxcbn1cblxuLyoqXG4gKiBTaGFwZXMgZW51bVxuICovXG5leHBvcnQgZW51bSBFU2hhcGVUeXBlIHtcbiAgb3ZhbCA9ICdvdmFsJyxcbiAgcmVjdCA9ICdyZWN0Jyxcbn1cblxuLyoqXG4gKiBOb2lzZSB0eXBlIGVudW1cbiAqL1xuZXhwb3J0IGVudW0gRU5vaXNlVHlwZSB7XG4gIG5vbmUgPSAnbm9uZScsXG4gIGxvdyA9ICdsb3cnLFxuICBtZWRpdW0gPSAnbWVkaXVtJyxcbiAgaGlnaCA9ICdoaWdoJyxcbn1cblxuLyoqXG4gKiBTdHlsZSB0eXBlIGVudW1cbiAqL1xuZXhwb3J0IGVudW0gRVN0eWxlVHlwZSB7XG4gIGFydHdvcmsgPSAnYXJ0d29yaycsXG4gIHBob3RvID0gJ3Bob3RvJyxcbn1cblxuLyoqXG4gKiBDb2xvciBzcGFjZSBlbnVtXG4gKi9cbmV4cG9ydCBlbnVtIEVDb2xvcnNwYWNlVHlwZSB7XG4gIFJHQiA9ICdSR0InLFxuICBDTVlLID0gJ0NNWUsnLFxuICBJbnB1dCA9ICdJbnB1dCcsXG59XG5cbi8qKlxuICogQ3JvcCBmYWNlcyBvcHRpb25zIGVudW1cbiAqL1xuZXhwb3J0IGVudW0gRUNyb3BmYWNlc1R5cGUge1xuICB0aHVtYiA9ICd0aHVtYicsXG4gIGNyb3AgPSAnY3JvcCcsXG4gIGZpbGwgPSAnZmlsbCcsXG59XG5cbi8qKlxuICogU21hcnRDcm9wIG1vZGUgb3B0aW9ucyBlbnVtXG4gKi9cbmV4cG9ydCBlbnVtIEVTbWFydENyb3BNb2RlIHtcbiAgZml0ID0gJ2ZpdCcsXG4gIGF1dG8gPSAnYXV0bycsXG59XG5cbmV4cG9ydCBlbnVtIEVJbWFnZVdhdGVybWFya1Bvc2l0aW9uIHtcbiAgdG9wID0gJ3RvcCcsXG4gIG1pZGRsZSA9ICdtaWRkbGUnLFxuICBib3R0b20gPSAnYm90dG9tJyxcbiAgbGVmdCA9ICdsZWZ0JyxcbiAgY2VudGVyID0gJ2NlbnRlcicsXG4gIHJpZ2h0ID0gJ3JpZ2h0Jyxcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHRvIGZvcm1hdFxuICovXG5leHBvcnQgZW51bSBFQXVkaW9UeXBlcyB7XG4gIGxpYm1wM2xhbWUgPSAnbGlibXAzbGFtZScsXG4gIGxpYnZvcmJpcyA9ICdsaWJ2b3JiaXMnLFxuICBsaWJmZGtfYWFjID0gJ2xpYmZka19hYWMnLFxuICBkaWJfYWMzID0gJ2RpYl9hYzMnLFxuICBwY21fczE2bGUgPSAncGNtX3MxNmxlJyxcbiAgbXAyID0gJ21wMicsXG4gIGFjMyA9ICdhYzMnLFxuICBlYWMzID0gJ2VhYzMnLFxufVxuXG4vKipcbiAqIENvbnZlcnQgdG8gZm9ybWF0XG4gKi9cbmV4cG9ydCBlbnVtIEVWaWRlb1R5cGVzIHtcbiAgICBoMjY0ID0gJ2gyNjQnLFxuICAgIGgyNjRfaGkgPSAnaDI2NC5oaScsXG4gICAgd2VibSA9ICd3ZWJtJyxcbiAgICAnd2VibS1oaScgPSAnd2VibS5oaScsXG4gICAgb2dnID0gJ29nZycsXG4gICAgJ29nZy1oaScgPSAnb2dnLmhpJyxcbiAgICAnaGxzLXZhcmlhbnQnID0gJ2hscy52YXJpYW50JyxcbiAgICBtcDMgPSAnbXAzJyxcbiAgICBvZ2EgPSAnb2dhJyxcbiAgICBtNGEgPSAnbTRhJyxcbiAgICBhYWMgPSAnYWFjJyxcbiAgICBobHMgPSAnaGxzLnZhcmlhbnQuYXVkaW8nLFxufVxuXG5leHBvcnQgZW51bSBFVXJsc2NyZWVuc2hvdEFnZW50IHtcbiAgZGVza3RvcCA9ICdkZXNrdG9wJyxcbiAgbW9iaWxlID0gJ21vYmlsZScsXG59XG5cbmV4cG9ydCBlbnVtIEVVcmxzY3JlZW5zaG90TW9kZSB7XG4gIGFsbCA9ICdhbGwnLFxuICB3aW5kb3cgPSAnd2luZG93Jyxcbn1cblxuZXhwb3J0IGVudW0gRVVybHNjcmVlbnNob3RPcmllbnRhdGlvbiB7XG4gIHBvcnRyYWl0ID0gJ3BvcnRyYWl0JyxcbiAgbGFuZHNjYXBlID0gJ2xhbmRzY2FwZScsXG59XG5cbi8qKlxuICogVmlkZW8gc3RvcmFnZSBsb2NhdGlvblxuICovXG5leHBvcnQgZW51bSBFVmlkZW9Mb2NhdGlvbnMge1xuICBzMyA9ICdzMycsXG4gIGF6dXJlID0gJ2F6dXJlJyxcbiAgZ2NzID0gJ2djcycsXG4gIHJhY2tzcGFjZSA9ICdyYWNrc3BhY2UnLFxuICBkcm9wYm94ID0gJ2Ryb3Bib3gnLFxufVxuXG5leHBvcnQgZW51bSBFVmlkZW9BY2Nlc3Mge1xuICBwcml2YXRlID0gJ3ByaXZhdGUnLFxuICBwdWJsaWMgPSAncHVibGljJyxcbn1cblxuZXhwb3J0IGVudW0gRVZpZGVvQWNjZXNzTW9kZSB7XG4gIHByZXNlcnZlID0gJ3ByZXNlcnZlJyxcbiAgY29uc3RyYWluID0gJ2NvbnN0cmFpbicsXG4gIGxldHRlcmJveCA9ICdsZXR0ZXJib3gnLFxuICBwYWQgPSAncGFkJyxcbiAgY3JvcCA9ICdjcm9wJyxcbn1cblxuLyoqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LmZpbGVzdGFjay5jb20vZG9jcy9pbWFnZS10cmFuc2Zvcm1hdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2Zvcm1PcHRpb25zIHtcbiAgZmxpcD86IGJvb2xlYW47XG4gIGNvbXByZXNzPzogYm9vbGVhbjtcbiAgZmxvcD86IGJvb2xlYW47XG4gIG5vX21ldGFkYXRhPzogYm9vbGVhbjtcbiAgcGpwZz86IHtcbiAgICBxdWFsaXR5OiBudW1iZXI7XG4gICAgbWV0YWRhdGE6IGJvb2xlYW47XG4gIH07XG4gIHNtYXJ0X2Nyb3A/OiB7XG4gICAgbW9kZT86IEVTbWFydENyb3BNb2RlXG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgfTtcbiAgd2F0ZXJtYXJrPzoge1xuICAgIGZpbGVzOiBzdHJpbmc7XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICBwb3NpdGlvbj86IEVJbWFnZVdhdGVybWFya1Bvc2l0aW9uIHwgRUltYWdlV2F0ZXJtYXJrUG9zaXRpb25bXTtcbiAgfTtcbiAgaW1hZ2VzaXplPzogYm9vbGVhbjtcbiAgZW5jaGFuY2U/OiBib29sZWFuO1xuICByZWRleWU/OiBib29sZWFuO1xuICBtb25vY2hyb21lPzogYm9vbGVhbjtcbiAgbmVnYXRpdmU/OiBib29sZWFuO1xuICB0YWdzPzogYm9vbGVhbjtcbiAgc2Z3PzogYm9vbGVhbjtcbiAgc3RvcmU/OiB7XG4gICAgZmlsZW5hbWU/OiBzdHJpbmcsXG4gICAgbG9jYXRpb24/OiBzdHJpbmcsXG4gICAgcGF0aD86IHN0cmluZyxcbiAgICBjb250YWluZXI/OiBzdHJpbmcsXG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIGFjY2Vzcz86IHN0cmluZztcbiAgICBiYXNlNjRkZWNvZGU/OiBib29sZWFuO1xuICB9O1xuICByZXNpemU/OiB7XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgIGZpdD86IEVGaXRPcHRpb25zO1xuICAgIGFsaWduPzogRUFsaWduRmFjZXNPcHRpb25zO1xuICB9O1xuICBjcm9wPzoge1xuICAgIGRpbTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgfTtcbiAgcm90YXRlPzoge1xuICAgIGRlZzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIH07XG4gIGRldGVjdF9mYWNlcz86IHtcbiAgICBtaW5zaXplPzogbnVtYmVyO1xuICAgIG1heHNpemU/OiBudW1iZXI7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgZXhwb3J0PzogYm9vbGVhbjtcbiAgfSB8IHRydWU7XG4gIGNyb3BfZmFjZXM/OiB7XG4gICAgbW9kZT86IEVDcm9wZmFjZXNUeXBlO1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGhlaWdodD86IG51bWJlcjtcbiAgICBmYWNlcz86IG51bWJlciB8IHN0cmluZztcbiAgICBidWZmZXI/OiBudW1iZXI7XG4gIH07XG4gIHBpeGVsYXRlX2ZhY2VzPzoge1xuICAgIGZhY2VzPzogbnVtYmVyIHwgc3RyaW5nO1xuICAgIG1pbnNpemU/OiBudW1iZXI7XG4gICAgbWF4c2l6ZT86IG51bWJlcjtcbiAgICBidWZmZXI/OiBudW1iZXI7XG4gICAgYW1vdW50PzogbnVtYmVyO1xuICAgIGJsdXI/OiBudW1iZXI7XG4gICAgdHlwZT86IEVTaGFwZVR5cGU7XG4gIH07XG4gIGJsdXJfZmFjZXM/OiB7XG4gICAgZmFjZXM/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbWluc2l6ZT86IG51bWJlcjtcbiAgICBtYXhzaXplPzogbnVtYmVyO1xuICAgIGJ1ZmZlcj86IG51bWJlcjtcbiAgICBhbW91bnQ/OiBudW1iZXI7XG4gICAgYmx1cj86IG51bWJlcjtcbiAgICB0eXBlPzogRVNoYXBlVHlwZTtcbiAgfTtcbiAgcm91bmRlZF9jb3JuZXJzPzoge1xuICAgIHJhZGl1cz86IG51bWJlcjtcbiAgICBibHVyPzogbnVtYmVyO1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIH0gfCB0cnVlO1xuICB2aWduZXR0ZT86IHtcbiAgICBhbW91bnQ/OiBudW1iZXI7XG4gICAgYmx1cm1vZGU/OiBFQmx1ck1vZGU7XG4gICAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgfTtcbiAgcG9sYXJvaWQ/OiB7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgcm90YXRlPzogbnVtYmVyO1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIH0gfCB0cnVlO1xuICB0b3JuX2VkZ2VzPzoge1xuICAgIHNwcmVhZD86IFtudW1iZXIsIG51bWJlcl07XG4gICAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgfSB8IHRydWU7XG4gIHNoYWRvdz86IHtcbiAgICBibHVyPzogbnVtYmVyO1xuICAgIG9wYWNpdHk/OiBudW1iZXI7XG4gICAgdmVjdG9yPzogW251bWJlciwgbnVtYmVyXTtcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICB9IHwgdHJ1ZTtcbiAgY2lyY2xlPzoge1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIH0gfCB0cnVlO1xuICBib3JkZXI/OiB7XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgfSB8IHRydWU7XG4gIHNoYXJwZW4/OiB7XG4gICAgYW1vdW50OiBudW1iZXI7XG4gIH0gfCB0cnVlO1xuICBibHVyPzoge1xuICAgIGFtb3VudDogbnVtYmVyO1xuICB9IHwgdHJ1ZTtcbiAgYmxhY2t3aGl0ZT86IHtcbiAgICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgfSB8IHRydWU7XG4gIHNlcGlhPzoge1xuICAgIHRvbmU6IG51bWJlcjtcbiAgfSB8IHRydWU7XG4gIHBpeGVsYXRlPzoge1xuICAgIGFtb3VudDogbnVtYmVyO1xuICB9IHwgdHJ1ZTtcbiAgb2lsX3BhaW50Pzoge1xuICAgIGFtb3VudDogbnVtYmVyO1xuICB9IHwgdHJ1ZTtcbiAgbW9kdWxhdGU/OiB7XG4gICAgYnJpZ2h0bmVzcz86IG51bWJlcjtcbiAgICBodWU/OiBudW1iZXI7XG4gICAgc2F0dXJhdGlvbj86IG51bWJlcjtcbiAgfSB8IHRydWU7XG4gIHBhcnRpYWxfcGl4ZWxhdGU/OiB7XG4gICAgYW1vdW50PzogbnVtYmVyO1xuICAgIGJsdXI/OiBudW1iZXI7XG4gICAgdHlwZT86IEVTaGFwZVR5cGU7XG4gICAgb2JqZWN0cz86IFtbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXV07XG4gIH07XG4gIHBhcnRpYWxfYmx1cj86IHtcbiAgICBhbW91bnQ6IG51bWJlcjtcbiAgICBibHVyPzogbnVtYmVyO1xuICAgIHR5cGU/OiBFU2hhcGVUeXBlO1xuICAgIG9iamVjdHM/OiBbW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1dO1xuICB9O1xuICBjb2xsYWdlPzoge1xuICAgIG1hcmdpbj86IG51bWJlcjtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgZml0PzogRUZpdE9wdGlvbnMsXG4gICAgZmlsZXM6IFtzdHJpbmddO1xuICB9O1xuICB1cHNjYWxlPzoge1xuICAgIHVwc2NhbGU/OiBib29sZWFuO1xuICAgIG5vaXNlPzogRU5vaXNlVHlwZTtcbiAgICBzdHlsZT86IEVTdHlsZVR5cGU7XG4gIH0gfCB0cnVlO1xuICBhc2NpaT86IHtcbiAgICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICAgIGZvcmVncm91bmQ/OiBzdHJpbmc7XG4gICAgY29sb3JlZD86IGJvb2xlYW47XG4gICAgc2l6ZT86IG51bWJlcjtcbiAgICByZXZlcnNlPzogYm9vbGVhbjtcbiAgfSB8IHRydWU7XG4gIHF1YWxpdHk/OiB7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfTtcbiAgc2VjdXJpdHk/OiB7XG4gICAgcG9saWN5OiBzdHJpbmc7XG4gICAgc2lnbmF0dXJlPzogc3RyaW5nO1xuICB9O1xuICBvdXRwdXQ/OiB7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgY29sb3JzcGFjZT86IHN0cmluZztcbiAgICBzdHJpcD86IGJvb2xlYW47XG4gICAgcXVhbGl0eT86IG51bWJlcjtcbiAgICBwYWdlPzogbnVtYmVyO1xuICAgIGNvbXByZXNzPzogYm9vbGVhbjtcbiAgICBkZW5zaXR5PzogbnVtYmVyO1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gICAgc2VjdXJlPzogYm9vbGVhbjtcbiAgICBkb2NpbmZvPzogYm9vbGVhbjtcbiAgICBwYWdlZm9ybWF0Pzogc3RyaW5nO1xuICAgIHBhZ2VvcmllbnRhdGlvbj86IHN0cmluZztcbiAgfTtcbiAgY2FjaGU/OiB7XG4gICAgY2FjaGU/OiBib29sZWFuO1xuICAgIGV4cGlyeTogbnVtYmVyO1xuICB9O1xuICAvLyBhdWRpby92aWRlb1xuICB2aWRlb19jb252ZXJ0Pzoge1xuICAgIGFzcGVjdF9tb2RlOiBFVmlkZW9BY2Nlc3NNb2RlO1xuICAgIHByZXNldD86IEVWaWRlb1R5cGVzO1xuICAgIGZvcmNlPzogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBleHRuYW1lPzogc3RyaW5nO1xuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xuICAgIGxvY2F0aW9uPzogRVZpZGVvTG9jYXRpb25zO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgYWNjZXNzPzogRVZpZGVvQWNjZXNzO1xuICAgIGNvbnRhaW5lcj86IHN0cmluZztcbiAgICBhdWRpb19iaXRyYXRlPzogbnVtYmVyO1xuICAgIGF1ZGlvX2NvZGVjPzogRUF1ZGlvVHlwZXM7XG4gICAgdXBzY2FsZTogYm9vbGVhbjtcbiAgICB2aWRlb19iaXRyYXRlPzogbnVtYmVyO1xuICAgIGF1ZGlvX3NhbXBsZV9yYXRlPzogbnVtYmVyO1xuICAgIGF1ZGlvX2NoYW5uZWxzPzogbnVtYmVyO1xuICAgIGNsaXBfbGVuZ3RoPzogc3RyaW5nO1xuICAgIGNsaXBfb2Zmc2V0Pzogc3RyaW5nO1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGhlaWdodD86IG51bWJlcjtcbiAgICB0d29fcGFzcz86IGJvb2xlYW47XG4gICAgZnBzPzogbnVtYmVyO1xuICAgIGtleWZyYW1lX2ludGVydmFsPzogbnVtYmVyO1xuICAgIHdhdGVybWFya191cmw/OiBzdHJpbmc7XG4gICAgd2F0ZXJtYXJrX3RvcD86IG51bWJlcjtcbiAgICB3YXRlcm1hcmtfYm90dG9tPzogbnVtYmVyO1xuICAgIHdhdGVybWFya19yaWdodD86IG51bWJlcjtcbiAgICB3YXRlcm1hcmtfbGVmdD86IG51bWJlcjtcbiAgICB3YXRlcm1hcmtfd2lkdGg/OiBudW1iZXI7XG4gICAgd2F0ZXJtYXJrX2hlaWdodD86IG51bWJlcjtcbiAgfTtcbiAgdXJsc2NyZWVuc2hvdD86IHtcbiAgICBhZ2VudD86IEVVcmxzY3JlZW5zaG90QWdlbnQ7XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgIG1vZGU/OiBFVXJsc2NyZWVuc2hvdE1vZGU7XG4gICAgZGVsYXk/OiBudW1iZXI7XG4gICAgb3JpZW50YXRpb24/OiBFVXJsc2NyZWVuc2hvdE9yaWVudGF0aW9uO1xuICAgIGRldmljZT86IHN0cmluZztcbiAgfSB8IHRydWU7XG4gIHBkZmluZm8/OiB7XG4gICAgY29sb3JpbmZvPzogYm9vbGVhblxuICB9IHwgdHJ1ZTtcbiAgcGRmY29udmVydD86IHtcbiAgICBwYWdlb3JpZW50YXRpb24/OiBzdHJpbmdcbiAgICBwYWdlZm9ybWF0Pzogc3RyaW5nXG4gICAgcGFnZXM/OiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4gIH07XG59XG5cbi8qKlxuICogQ3JlYXRlcyBmaWxlc3RhY2sgdHJhbnNmb3JtIHVybC5cbiAqIFRyYW5zZm9ybSBwYXJhbXMgY2FuIGJlIHByb3ZpZGVkIGluIGNhbWVsQ2FzZSBvciBzbmFrZUNhc2Ugc3R5bGVcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBganNcbiAqIC8vIGNhbWVsQ2FzZVxuICogY29uc29sZS5sb2codHJhbnNmb3JtKHNlc3Npb24sIHtcbiAqICAgIHBhcnRpYWxQaXhlbGF0ZToge1xuICogICAgICBvYmplY3RzOiBbWzEwLCAyMCwgMjAwLCAyNTBdLCBbMjc1LCA5MSwgNTAwLCA1NTddXSxcbiAqICAgIH0sXG4gKiAgfSwgJ3Rlc3RmaWxlJykpO1xuICogYGBgXG4gKiByZXN1bHQgPT4gaHR0cHM6Ly9jZG4uZmlsZXN0YWNrY29udGVudC5jb20vcGFydGlhbF9waXhlbGF0ZT1vYmplY3RzOltbMTAsMjAsMjAwLDI1MF0sWzI3NSw5MSw1MDAsNTU3XV0vdGVzdGZpbGVcbiAqXG4gKiBgYGBqc1xuICogLy8gc25ha2VfY2FzZVxuICogY29uc29sZS5sb2codHJhbnNmb3JtKHNlc3Npb24sIHtcbiAqICAgIHBhcnRpYWxfcGl4ZWxhdGU6IHtcbiAqICAgICAgb2JqZWN0czogW1sxMCwgMjAsIDIwMCwgMjUwXSwgWzI3NSwgOTEsIDUwMCwgNTU3XV0sXG4gKiAgICB9LFxuICogIH0sICd0ZXN0ZmlsZScpKTtcbiAqIGBgYFxuICogcmVzdWx0ID0+IGh0dHBzOi8vY2RuLmZpbGVzdGFja2NvbnRlbnQuY29tL3BhcnRpYWxfcGl4ZWxhdGU9b2JqZWN0czpbWzEwLDIwLDIwMCwyNTBdLFsyNzUsOTEsNTAwLDU1N11dL3Rlc3RmaWxlXG4gKlxuICogQ2xpZW50LnRyYW5zZm9ybSBpcyBkZXByZWNhdGVkLiBVc2UgRmlsZWxpbmsgY2xhc3MgaW5zdGVhZFxuICpcbiAqIEBwcml2YXRlXG4gKiBAdGhyb3dzIEVycm9yXG4gKiBAcGFyYW0gb3B0aW9ucyBUcmFuc2Zvcm1hdGlvbiBvcHRpb25zXG4gKiBAcGFyYW0gdXJsIHVybCwgaGFuZGxlIG9yIGFycmF5IG9mIGVsZW1lbnRzXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm0gPSAoc2Vzc2lvbjogU2Vzc2lvbiwgdXJsOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9uczogVHJhbnNmb3JtT3B0aW9ucyA9IHt9LCBiNjQ6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyA9PiB7XG4gIG9wdGlvbnMgPSB0b1NuYWtlQ2FzZShvcHRpb25zKTtcblxuICBpZiAoc2Vzc2lvbi5wb2xpY3kgJiYgc2Vzc2lvbi5zaWduYXR1cmUpIHtcbiAgICBvcHRpb25zLnNlY3VyaXR5ID0ge1xuICAgICAgcG9saWN5OiBzZXNzaW9uLnBvbGljeSxcbiAgICAgIHNpZ25hdHVyZTogc2Vzc2lvbi5zaWduYXR1cmUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVsaW5rID0gbmV3IEZpbGVsaW5rKHVybCwgc2Vzc2lvbi5hcGlrZXkpO1xuICBmaWxlbGluay5zZXRDbmFtZShzZXNzaW9uLmNuYW1lKTtcbiAgZmlsZWxpbmsuc2V0QmFzZTY0KGI2NCk7XG5cbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaCgoa2V5OiBrZXlvZiBUcmFuc2Zvcm1PcHRpb25zKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zW2tleV0gPT09ICdib29sZWFuJyAmJiAhb3B0aW9uc1trZXldICYmIGtleSAhPT0gJ2NhY2hlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZpbGVsaW5rLmFkZFRhc2soa2V5LCBvcHRpb25zW2tleV0pO1xuICB9KTtcblxuICByZXR1cm4gZmlsZWxpbmsudG9TdHJpbmcoKTtcbn07XG4iXX0=