UNPKG

awscdk-construct-live-channel-from-mp4-file

Version:
148 lines 22.1 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.MediaPackageV1 = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const crypto = require("crypto"); const aws_mediapackage_1 = require("aws-cdk-lib/aws-mediapackage"); const constructs_1 = require("constructs"); function isMediaPakcageV1MidEndpointSpec(spec) { return spec.segmentDurationSeconds !== undefined || spec.manifestWindowSeconds !== undefined || spec.hlsAdMarkers !== undefined || spec.separateAudioRendition !== undefined; } class MediaPackageV1 extends constructs_1.Construct { constructor(scope, id, { startoverWindowSeconds = 0, endpointSpec = { segmentDurationSeconds: 6, manifestWindowSeconds: 60, hlsAdMarkers: 'DATERANGE', separateAudioRendition: false, }, }) { super(scope, id); // Create MediaPackage channel this.channel = new aws_mediapackage_1.CfnChannel(this, 'MediaPackageV1Channel', { id: `${crypto.randomUUID()}`, description: 'MediaPackage channel for testing', }); // Create MediaPackage endpoints if (isMediaPakcageV1MidEndpointSpec(endpointSpec)) { const { segmentDurationSeconds = 6, manifestWindowSeconds = 60, hlsAdMarkers = 'DATERANGE', separateAudioRendition = false, } = endpointSpec; const adTriggers = [ 'DISTRIBUTOR_ADVERTISEMENT', 'DISTRIBUTOR_OVERLAY_PLACEMENT_OPPORTUNITY', 'DISTRIBUTOR_PLACEMENT_OPPORTUNITY', 'PROVIDER_ADVERTISEMENT', 'PROVIDER_OVERLAY_PLACEMENT_OPPORTUNITY', 'PROVIDER_PLACEMENT_OPPORTUNITY', 'SPLICE_INSERT', ]; this.endpoints = { hls: new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1HlsEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage HLS endpoint for testing', hlsPackage: { segmentDurationSeconds, playlistWindowSeconds: manifestWindowSeconds, adMarkers: hlsAdMarkers, adTriggers, programDateTimeIntervalSeconds: 1, useAudioRenditionGroup: separateAudioRendition, }, startoverWindowSeconds, }), dash: new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1DashEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage DASH endpoint for testing', dashPackage: { segmentDurationSeconds, manifestWindowSeconds, periodTriggers: ['ADS'], adTriggers, }, startoverWindowSeconds, }), cmaf: new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1CmafEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage CMAF endpoint for testing', cmafPackage: { segmentDurationSeconds, hlsManifests: [ { id: '1', playlistWindowSeconds: manifestWindowSeconds, adMarkers: hlsAdMarkers, adTriggers, programDateTimeIntervalSeconds: 1, }, ], }, startoverWindowSeconds, }), mss: new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1MssEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage MSS endpoint for testing', mssPackage: { segmentDurationSeconds, manifestWindowSeconds, }, startoverWindowSeconds, }), }; } else { // endpointSpec is CfnOriginEndpointProps[] let hls; let dash; let cmaf; let mss; for (const prop of endpointSpec) { if ('hlsPackage' in prop && hls === undefined) { hls = new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1HlsEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage HLS endpoint for testing', hlsPackage: prop.hlsPackage, startoverWindowSeconds, }); } else if ('dashPackage' in prop && dash === undefined) { dash = new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1DashEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage DASH endpoint for testing', dashPackage: prop.dashPackage, startoverWindowSeconds, }); } else if ('cmafPackage' in prop && cmaf === undefined) { cmaf = new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1CmafEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage CMAF endpoint for testing', cmafPackage: prop.cmafPackage, startoverWindowSeconds, }); } else if ('mssPackage' in prop && mss === undefined) { mss = new aws_mediapackage_1.CfnOriginEndpoint(this, 'MediaPackageV1MssEndpoint', { channelId: this.channel.ref, id: `${crypto.randomUUID()}`, description: 'MediaPackage MSS endpoint for testing', mssPackage: prop.mssPackage, startoverWindowSeconds, }); } } this.endpoints = { hls, dash, cmaf, mss }; } } } exports.MediaPackageV1 = MediaPackageV1; _a = JSII_RTTI_SYMBOL_1; MediaPackageV1[_a] = { fqn: "awscdk-construct-live-channel-from-mp4-file.MediaPackageV1", version: "1.2.27" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVkaWFQYWNrYWdlVjEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvTWVkaWFQYWNrYWdlVjEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpQ0FBaUM7QUFDakMsbUVBR3NDO0FBQ3RDLDJDQUF1QztBQThCdkMsU0FBUywrQkFBK0IsQ0FBQyxJQUFnQztJQUV2RSxPQUFRLElBQXNDLENBQUMsc0JBQXNCLEtBQUssU0FBUztXQUMvRSxJQUFzQyxDQUFDLHFCQUFxQixLQUFLLFNBQVM7V0FDMUUsSUFBc0MsQ0FBQyxZQUFZLEtBQUssU0FBUztXQUNqRSxJQUFzQyxDQUFDLHNCQUFzQixLQUFLLFNBQVMsQ0FBQztBQUNsRixDQUFDO0FBRUQsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFJM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxFQUN4QyxzQkFBc0IsR0FBRyxDQUFDLEVBQzFCLFlBQVksR0FBRztRQUNiLHNCQUFzQixFQUFFLENBQUM7UUFDekIscUJBQXFCLEVBQUUsRUFBRTtRQUN6QixZQUFZLEVBQUUsV0FBVztRQUN6QixzQkFBc0IsRUFBRSxLQUFLO0tBQzlCLEdBQ21CO1FBQ3BCLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSw2QkFBVSxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUMzRCxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDNUIsV0FBVyxFQUFFLGtDQUFrQztTQUNoRCxDQUFDLENBQUM7UUFFSCxnQ0FBZ0M7UUFDaEMsSUFBSSwrQkFBK0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBRWxELE1BQU0sRUFDSixzQkFBc0IsR0FBRyxDQUFDLEVBQzFCLHFCQUFxQixHQUFHLEVBQUUsRUFDMUIsWUFBWSxHQUFHLFdBQVcsRUFDMUIsc0JBQXNCLEdBQUcsS0FB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QUFFLHVDQUF1Qzt3QkFDcEQsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFrRDt3QkFDbkUsc0JBQXNCO3FCQUN2QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7O0FBNUlILHdDQTZJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHtcbiAgQ2ZuQ2hhbm5lbCxcbiAgQ2ZuT3JpZ2luRW5kcG9pbnQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYXBhY2thZ2UnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFQYWtjYWdlVjFNaWRFbmRwb2ludFNwZWMge1xuICByZWFkb25seSBzZWdtZW50RHVyYXRpb25TZWNvbmRzPzogbnVtYmVyOyAvLyBUaGUgZHVyYXRpb24gb2YgZWFjaCBzZWdtZW50IGluIHNlY29uZHMuXG4gIHJlYWRvbmx5IG1hbmlmZXN0V2luZG93U2Vjb25kcz86IG51bWJlcjsgLy8gVGhlIGR1cmF0aW9uIG9mIG1hbmlmZXN0IGluIHNlY29uZHMuXG4gIHJlYWRvbmx5IGhsc0FkTWFya2Vycz86IHN0cmluZzsgLy8gQ29udHJvbHMgaG93IGFkIG1hcmtlcnMgYXJlIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdlZCBlbmRwb2ludC5cbiAgcmVhZG9ubHkgc2VwYXJhdGVBdWRpb1JlbmRpdGlvbj86IGJvb2xlYW47IC8vIFdoZXRoZXIgdG8gc2VwYXJhdGUgYXVkaW8gcmVuZGl0aW9uLlxufVxuXG5leHBvcnQgdHlwZSBNZWRpYVBhY2thZ2VWMUZ1bGxFbmRwb2ludFNwZWMgPSAoXG4gIENmbk9yaWdpbkVuZHBvaW50Lkhsc1BhY2thZ2VQcm9wZXJ0eVxuICB8IENmbk9yaWdpbkVuZHBvaW50LkRhc2hQYWNrYWdlUHJvcGVydHlcbiAgfCBDZm5PcmlnaW5FbmRwb2ludC5DbWFmUGFja2FnZVByb3BlcnR5XG4gIHwgQ2ZuT3JpZ2luRW5kcG9pbnQuTXNzUGFja2FnZVByb3BlcnR5XG4pW107XG5cbmV4cG9ydCB0eXBlIE1lZGlhUGFrY2FnZVYxRW5kcG9pbnRTcGVjID0gTWVkaWFQYWtjYWdlVjFNaWRFbmRwb2ludFNwZWMgfCBNZWRpYVBhY2thZ2VWMUZ1bGxFbmRwb2ludFNwZWM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFQYWtjYWdlVjFQcm9wcyB7XG4gIHJlYWRvbmx5IHN0YXJ0b3ZlcldpbmRvd1NlY29uZHM/OiBudW1iZXI7IC8vIFRoZSBkdXJhdGlvbiBvZiBzdGFydG92ZXIgd2luZG93IGluIHNlY29uZHMuXG4gIHJlYWRvbmx5IGVuZHBvaW50U3BlYz86IE1lZGlhUGFrY2FnZVYxRW5kcG9pbnRTcGVjOyAvLyBUaGUgc2V0dGluZ3MgZm9yIHRoZSBNZWRpYVBhY2thZ2UgZW5kcG9pbnRzLlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhUGFja2FnZVYxRW5kcG9pbnRzVGFibGUge1xuICByZWFkb25seSBobHM/OiBDZm5PcmlnaW5FbmRwb2ludDsgLy8gVGhlIEhMUyBlbmRwb2ludC5cbiAgcmVhZG9ubHkgZGFzaD86IENmbk9yaWdpbkVuZHBvaW50OyAvLyBUaGUgREFTSCBlbmRwb2ludC5cbiAgcmVhZG9ubHkgY21hZj86IENmbk9yaWdpbkVuZHBvaW50OyAvLyBUaGUgQ01BRiBlbmRwb2ludC5cbiAgcmVhZG9ubHkgbXNzPzogQ2ZuT3JpZ2luRW5kcG9pbnQ7IC8vIFRoZSBNU1MgZW5kcG9pbnQuXG59XG5cbmZ1bmN0aW9uIGlzTWVkaWFQYWtjYWdlVjFNaWRFbmRwb2ludFNwZWMoc3BlYzogTWVkaWFQYWtjYWdlVjFFbmRwb2ludFNwZWMsXG4pOiBzcGVjIGlzIE1lZGlhUGFrY2FnZVYxTWlkRW5kcG9pbnRTcGVjIHtcbiAgcmV0dXJuIChzcGVjIGFzIE1lZGlhUGFrY2FnZVYxTWlkRW5kcG9pbnRTcGVjKS5zZWdtZW50RHVyYXRpb25TZWNvbmRzICE9PSB1bmRlZmluZWRcbiAgfHwgKHNwZWMgYXMgTWVkaWFQYWtjYWdlVjFNaWRFbmRwb2ludFNwZWMpLm1hbmlmZXN0V2luZG93U2Vjb25kcyAhPT0gdW5kZWZpbmVkXG4gIHx8IChzcGVjIGFzIE1lZGlhUGFrY2FnZVYxTWlkRW5kcG9pbnRTcGVjKS5obHNBZE1hcmtlcnMgIT09IHVuZGVmaW5lZFxuICB8fCAoc3BlYyBhcyBNZWRpYVBha2NhZ2VWMU1pZEVuZHBvaW50U3BlYykuc2VwYXJhdGVBdWRpb1JlbmRpdGlvbiAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY2xhc3MgTWVkaWFQYWNrYWdlVjEgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgY2hhbm5lbDogQ2ZuQ2hhbm5lbDsgLy8gVGhlIHJlZmVyZW5jZSB0byB0aGUgTWVkaWFQYWNrYWdlIGNoYW5uZWwuXG4gIHB1YmxpYyByZWFkb25seSBlbmRwb2ludHM6IE1lZGlhUGFja2FnZVYxRW5kcG9pbnRzVGFibGU7IC8vIFRoZSByZWZlcmVuY2UgdG8gdGhlIE1lZGlhUGFja2FnZSBlbmRwb2ludHMuXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywge1xuICAgIHN0YXJ0b3ZlcldpbmRvd1NlY29uZHMgPSAwLFxuICAgIGVuZHBvaW50U3BlYyA9IHtcbiAgICAgIHNlZ21lbnREdXJhdGlvblNlY29uZHM6IDYsXG4gICAgICBtYW5pZmVzdFdpbmRvd1NlY29uZHM6IDYwLFxuICAgICAgaGxzQWRNYXJrZXJzOiAnREFURVJBTkdFJyxcbiAgICAgIHNlcGFyYXRlQXVkaW9SZW5kaXRpb246IGZhbHNlLFxuICAgIH0sXG4gIH06IE1lZGlhUGFrY2FnZVYxUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gQ3JlYXRlIE1lZGlhUGFja2FnZSBjaGFubmVsXG4gICAgdGhpcy5jaGFubmVsID0gbmV3IENmbkNoYW5uZWwodGhpcywgJ01lZGlhUGFja2FnZVYxQ2hhbm5lbCcsIHtcbiAgICAgIGlkOiBgJHtjcnlwdG8ucmFuZG9tVVVJRCgpfWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ01lZGlhUGFja2FnZSBjaGFubmVsIGZvciB0ZXN0aW5nJyxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBNZWRpYVBhY2thZ2UgZW5kcG9pbnRzXG4gICAgaWYgKGlzTWVkaWFQYWtjYWdlVjFNaWRFbmRwb2ludFNwZWMoZW5kcG9pbnRTcGVjKSkge1xuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHNlZ21lbnREdXJhdGlvblNlY29uZHMgPSA2LFxuICAgICAgICBtYW5pZmVzdFdpbmRvd1NlY29uZHMgPSA2MCxcbiAgICAgICAgaGxzQWRNYXJrZXJzID0gJ0RBVEVSQU5HRScsXG4gICAgICAgIHNlcGFyYXRlQXVkaW9SZW5kaXRpb24gPSBmYWxzZSxcbiAgICAgIH0gPSBlbmRwb2ludFNwZWM7XG5cbiAgICAgIGNvbnN0IGFkVHJpZ2dlcnMgPSBbXG4gICAgICAgICdESVNUUklCVVRPUl9BRFZFUlRJU0VNRU5UJyxcbiAgICAgICAgJ0RJU1RSSUJVVE9SX09WRVJMQVlfUExBQ0VNRU5UX09QUE9SVFVOSVRZJyxcbiAgICAgICAgJ0RJU1RSSUJVVE9SX1BMQUNFTUVOVF9PUFBPUlRVTklUWScsXG4gICAgICAgICdQUk9WSURFUl9BRFZFUlRJU0VNRU5UJyxcbiAgICAgICAgJ1BST1ZJREVSX09WRVJMQVlfUExBQ0VNRU5UX09QUE9SVFVOSVRZJyxcbiAgICAgICAgJ1BST1ZJREVSX1BMQUNFTUVOVF9PUFBPUlRVTklUWScsXG4gICAgICAgICdTUExJQ0VfSU5TRVJUJyxcbiAgICAgIF07XG5cbiAgICAgIHRoaXMuZW5kcG9pbnRzID0ge1xuICAgICAgICBobHM6IG5ldyBDZm5PcmlnaW5FbmRwb2ludCh0aGlzLCAnTWVkaWFQYWNrYWdlVjFIbHNFbmRwb2ludCcsIHtcbiAgICAgICAgICBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbC5yZWYsXG4gICAgICAgICAgaWQ6IGAke2NyeXB0by5yYW5kb21VVUlEKCl9YCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ01lZGlhUGFja2FnZSBITFMgZW5kcG9pbnQgZm9yIHRlc3RpbmcnLFxuICAgICAgICAgIGhsc1BhY2thZ2U6IHtcbiAgICAgICAgICAgIHNlZ21lbnREdXJhdGlvblNlY29uZHMsXG4gICAgICAgICAgICBwbGF5bGlzdFdpbmRvd1NlY29uZHM6IG1hbmlmZXN0V2luZG93U2Vjb25kcyxcbiAgICAgICAgICAgIGFkTWFya2VyczogaGxzQWRNYXJrZXJzLFxuICAgICAgICAgICAgYWRUcmlnZ2VycyxcbiAgICAgICAgICAgIHByb2dyYW1EYXRlVGltZUludGVydmFsU2Vjb25kczogMSxcbiAgICAgICAgICAgIHVzZUF1ZGlvUmVuZGl0aW9uR3JvdXA6IHNlcGFyYXRlQXVkaW9SZW5kaXRpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydG92ZXJXaW5kb3dTZWNvbmRzLFxuICAgICAgICB9KSxcbiAgICAgICAgZGFzaDogbmV3IENmbk9yaWdpbkVuZHBvaW50KHRoaXMsICdNZWRpYVBhY2thZ2VWMURhc2hFbmRwb2ludCcsIHtcbiAgICAgICAgICBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbC5yZWYsXG4gICAgICAgICAgaWQ6IGAke2NyeXB0by5yYW5kb21VVUlEKCl9YCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ01lZGlhUGFja2FnZSBEQVNIIGVuZHBvaW50IGZvciB0ZXN0aW5nJyxcbiAgICAgICAgICBkYXNoUGFja2FnZToge1xuICAgICAgICAgICAgc2VnbWVudER1cmF0aW9uU2Vjb25kcyxcbiAgICAgICAgICAgIG1hbmlmZXN0V2luZG93U2Vjb25kcyxcbiAgICAgICAgICAgIHBlcmlvZFRyaWdnZXJzOiBbJ0FEUyddLFxuICAgICAgICAgICAgYWRUcmlnZ2VycyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXJ0b3ZlcldpbmRvd1NlY29uZHMsXG4gICAgICAgIH0pLFxuICAgICAgICBjbWFmOiBuZXcgQ2ZuT3JpZ2luRW5kcG9pbnQodGhpcywgJ01lZGlhUGFja2FnZVYxQ21hZkVuZHBvaW50Jywge1xuICAgICAgICAgIGNoYW5uZWxJZDogdGhpcy5jaGFubmVsLnJlZixcbiAgICAgICAgICBpZDogYCR7Y3J5cHRvLnJhbmRvbVVVSUQoKX1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWVkaWFQYWNrYWdlIENNQUYgZW5kcG9pbnQgZm9yIHRlc3RpbmcnLFxuICAgICAgICAgIGNtYWZQYWNrYWdlOiB7XG4gICAgICAgICAgICBzZWdtZW50RHVyYXRpb25TZWNvbmRzLFxuICAgICAgICAgICAgaGxzTWFuaWZlc3RzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJzEnLFxuICAgICAgICAgICAgICAgIHBsYXlsaXN0V2luZG93U2Vjb25kczogbWFuaWZlc3RXaW5kb3dTZWNvbmRzLFxuICAgICAgICAgICAgICAgIGFkTWFya2VyczogaGxzQWRNYXJrZXJzLFxuICAgICAgICAgICAgICAgIGFkVHJpZ2dlcnMsXG4gICAgICAgICAgICAgICAgcHJvZ3JhbURhdGVUaW1lSW50ZXJ2YWxTZWNvbmRzOiAxLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXJ0b3ZlcldpbmRvd1NlY29uZHMsXG4gICAgICAgIH0pLFxuICAgICAgICBtc3M6IG5ldyBDZm5PcmlnaW5FbmRwb2ludCh0aGlzLCAnTWVkaWFQYWNrYWdlVjFNc3NFbmRwb2ludCcsIHtcbiAgICAgICAgICBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbC5yZWYsXG4gICAgICAgICAgaWQ6IGAke2NyeXB0by5yYW5kb21VVUlEKCl9YCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ01lZGlhUGFja2FnZSBNU1MgZW5kcG9pbnQgZm9yIHRlc3RpbmcnLFxuICAgICAgICAgIG1zc1BhY2thZ2U6IHtcbiAgICAgICAgICAgIHNlZ21lbnREdXJhdGlvblNlY29uZHMsXG4gICAgICAgICAgICBtYW5pZmVzdFdpbmRvd1NlY29uZHMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGFydG92ZXJXaW5kb3dTZWNvbmRzLFxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVuZHBvaW50U3BlYyBpcyBDZm5PcmlnaW5FbmRwb2ludFByb3BzW11cbiAgICAgIGxldCBobHM6IENmbk9yaWdpbkVuZHBvaW50IHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGRhc2g6IENmbk9yaWdpbkVuZHBvaW50IHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGNtYWY6IENmbk9yaWdpbkVuZHBvaW50IHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IG1zczogQ2ZuT3JpZ2luRW5kcG9pbnQgfCB1bmRlZmluZWQ7XG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgZW5kcG9pbnRTcGVjKSB7XG4gICAgICAgIGlmICgnaGxzUGFja2FnZScgaW4gcHJvcCAmJiBobHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGhscyA9IG5ldyBDZm5PcmlnaW5FbmRwb2ludCh0aGlzLCAnTWVkaWFQYWNrYWdlVjFIbHNFbmRwb2ludCcsIHtcbiAgICAgICAgICAgIGNoYW5uZWxJZDogdGhpcy5jaGFubmVsLnJlZixcbiAgICAgICAgICAgIGlkOiBgJHtjcnlwdG8ucmFuZG9tVVVJRCgpfWAsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ01lZGlhUGFja2FnZSBITFMgZW5kcG9pbnQgZm9yIHRlc3RpbmcnLFxuICAgICAgICAgICAgaGxzUGFja2FnZTogcHJvcC5obHNQYWNrYWdlIGFzIENmbk9yaWdpbkVuZHBvaW50Lkhsc1BhY2thZ2VQcm9wZXJ0eSxcbiAgICAgICAgICAgIHN0YXJ0b3ZlcldpbmRvd1NlY29uZHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoJ2Rhc2hQYWNrYWdlJyBpbiBwcm9wICYmIGRhc2ggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRhc2ggPSBuZXcgQ2ZuT3JpZ2luRW5kcG9pbnQodGhpcywgJ01lZGlhUGFja2FnZVYxRGFzaEVuZHBvaW50Jywge1xuICAgICAgICAgICAgY2hhbm5lbElkOiB0aGlzLmNoYW5uZWwucmVmLFxuICAgICAgICAgICAgaWQ6IGAke2NyeXB0by5yYW5kb21VVUlEKCl9YCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWVkaWFQYWNrYWdlIERBU0ggZW5kcG9pbnQgZm9yIHRlc3RpbmcnLFxuICAgICAgICAgICAgZGFzaFBhY2thZ2U6IHByb3AuZGFzaFBhY2thZ2UgYXMgQ2ZuT3JpZ2luRW5kcG9pbnQuRGFzaFBhY2thZ2VQcm9wZXJ0eSxcbiAgICAgICAgICAgIHN0YXJ0b3ZlcldpbmRvd1NlY29uZHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoJ2NtYWZQYWNrYWdlJyBpbiBwcm9wICYmIGNtYWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNtYWYgPSBuZXcgQ2ZuT3JpZ2luRW5kcG9pbnQodGhpcywgJ01lZGlhUGFja2FnZVYxQ21hZkVuZHBvaW50Jywge1xuICAgICAgICAgICAgY2hhbm5lbElkOiB0aGlzLmNoYW5uZWwucmVmLFxuICAgICAgICAgICAgaWQ6IGAke2NyeXB0by5yYW5kb21VVUlEKCl9YCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWVkaWFQYWNrYWdlIENNQUYgZW5kcG9pbnQgZm9yIHRlc3RpbmcnLFxuICAgICAgICAgICAgY21hZlBhY2thZ2U6IHByb3AuY21hZlBhY2thZ2UgYXMgQ2ZuT3JpZ2luRW5kcG9pbnQuQ21hZlBhY2thZ2VQcm9wZXJ0eSxcbiAgICAgICAgICAgIHN0YXJ0b3ZlcldpbmRvd1NlY29uZHMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoJ21zc1BhY2thZ2UnIGluIHByb3AgJiYgbXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBtc3MgPSBuZXcgQ2ZuT3JpZ2luRW5kcG9pbnQodGhpcywgJ01lZGlhUGFja2FnZVYxTXNzRW5kcG9pbnQnLCB7XG4gICAgICAgICAgICBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbC5yZWYsXG4gICAgICAgICAgICBpZDogYCR7Y3J5cHRvLnJhbmRvbVVVSUQoKX1gLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdNZWRpYVBhY2thZ2UgTVNTIGVuZHBvaW50IGZvciB0ZXN0aW5nJyxcbiAgICAgICAgICAgIG1zc1BhY2thZ2U6IHByb3AubXNzUGFja2FnZSBhcyBDZm5PcmlnaW5FbmRwb2ludC5Nc3NQYWNrYWdlUHJvcGVydHksXG4gICAgICAgICAgICBzdGFydG92ZXJXaW5kb3dTZWNvbmRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmVuZHBvaW50cyA9IHsgaGxzLCBkYXNoLCBjbWFmLCBtc3MgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==