@aws-cdk/aws-medialive-alpha 2.268.0-alpha.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/.jsii +60888 -0
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +524 -0
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +1297 -0
- package/grants.json +27 -0
- package/lib/audio-codec-settings.d.ts +901 -0
- package/lib/audio-codec-settings.js +1098 -0
- package/lib/audio-selector.d.ts +170 -0
- package/lib/audio-selector.js +306 -0
- package/lib/avail-settings.d.ts +231 -0
- package/lib/avail-settings.js +226 -0
- package/lib/caption-selector.d.ts +234 -0
- package/lib/caption-selector.js +413 -0
- package/lib/caption-settings.d.ts +349 -0
- package/lib/caption-settings.js +482 -0
- package/lib/channel-features.d.ts +106 -0
- package/lib/channel-features.js +85 -0
- package/lib/channel-placement-group.d.ts +73 -0
- package/lib/channel-placement-group.js +132 -0
- package/lib/channel.d.ts +687 -0
- package/lib/channel.js +1096 -0
- package/lib/cluster.d.ts +129 -0
- package/lib/cluster.js +158 -0
- package/lib/color-correction.d.ts +39 -0
- package/lib/color-correction.js +29 -0
- package/lib/destinations.d.ts +242 -0
- package/lib/destinations.js +455 -0
- package/lib/encode-configuration.d.ts +615 -0
- package/lib/encode-configuration.js +629 -0
- package/lib/enums.d.ts +698 -0
- package/lib/enums.js +1045 -0
- package/lib/file-location.d.ts +65 -0
- package/lib/file-location.js +150 -0
- package/lib/framerate.d.ts +31 -0
- package/lib/framerate.js +71 -0
- package/lib/index.d.ts +26 -0
- package/lib/index.js +43 -0
- package/lib/input-attachment.d.ts +319 -0
- package/lib/input-attachment.js +228 -0
- package/lib/input-security-group.d.ts +51 -0
- package/lib/input-security-group.js +123 -0
- package/lib/input-specification.d.ts +111 -0
- package/lib/input-specification.js +181 -0
- package/lib/input.d.ts +505 -0
- package/lib/input.js +803 -0
- package/lib/m2ts-settings.d.ts +421 -0
- package/lib/m2ts-settings.js +469 -0
- package/lib/m3u8-settings.d.ts +272 -0
- package/lib/m3u8-settings.js +304 -0
- package/lib/medialive-grants.generated.d.ts +30 -0
- package/lib/medialive-grants.generated.js +92 -0
- package/lib/network.d.ts +83 -0
- package/lib/network.js +132 -0
- package/lib/output-group.d.ts +924 -0
- package/lib/output-group.js +941 -0
- package/lib/outputs.d.ts +304 -0
- package/lib/outputs.js +598 -0
- package/lib/sdi-source.d.ts +124 -0
- package/lib/sdi-source.js +180 -0
- package/lib/shared.d.ts +44 -0
- package/lib/shared.js +146 -0
- package/lib/video-codec-settings.d.ts +1500 -0
- package/lib/video-codec-settings.js +1722 -0
- package/lib/video-selection.d.ts +92 -0
- package/lib/video-selection.js +95 -0
- package/package.json +135 -0
- package/rosetta/_generated.ts-fixture +6 -0
- package/rosetta/default.ts-fixture +21 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type { AudioNormalizationSettings, RemixSettings } from './encode-configuration';
|
|
2
|
+
/**
|
|
3
|
+
* Policy for how MediaLive identifies the audio stream when selecting by language, on a
|
|
4
|
+
* transport-stream PMT update.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AudioLanguageSelectionPolicy {
|
|
7
|
+
/**
|
|
8
|
+
* Strictly identify audio by its language descriptor. If the matching language is no
|
|
9
|
+
* longer present after a PMT update, mute is encoded until the language returns.
|
|
10
|
+
*/
|
|
11
|
+
static readonly STRICT: AudioLanguageSelectionPolicy;
|
|
12
|
+
/**
|
|
13
|
+
* On a PMT update, fall back to another audio stream of the same type in the program if a
|
|
14
|
+
* stream with the same language can't be found.
|
|
15
|
+
*/
|
|
16
|
+
static readonly LOOSE: AudioLanguageSelectionPolicy;
|
|
17
|
+
/** A value not yet modelled by AWS CDK. */
|
|
18
|
+
static of(value: string): AudioLanguageSelectionPolicy;
|
|
19
|
+
/** The underlying string value passed to CloudFormation. */
|
|
20
|
+
readonly value: string;
|
|
21
|
+
private constructor();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Options for selecting an HLS audio rendition.
|
|
25
|
+
*/
|
|
26
|
+
export interface HlsRenditionSelectionOptions {
|
|
27
|
+
/** The `GROUP-ID` in the `#EXT-X-MEDIA` tag of the target HLS audio rendition. */
|
|
28
|
+
readonly groupId: string;
|
|
29
|
+
/** The `NAME` in the `#EXT-X-MEDIA` tag of the target HLS audio rendition. */
|
|
30
|
+
readonly renditionName: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Which Dolby E program to decode from a selected audio track.
|
|
34
|
+
*/
|
|
35
|
+
export declare class DolbyEProgramSelection {
|
|
36
|
+
/** Decode all channels. */
|
|
37
|
+
static readonly ALL_CHANNELS: DolbyEProgramSelection;
|
|
38
|
+
/** Decode Dolby E program 1. */
|
|
39
|
+
static readonly PROGRAM_1: DolbyEProgramSelection;
|
|
40
|
+
/** Decode Dolby E program 2. */
|
|
41
|
+
static readonly PROGRAM_2: DolbyEProgramSelection;
|
|
42
|
+
/** Decode Dolby E program 3. */
|
|
43
|
+
static readonly PROGRAM_3: DolbyEProgramSelection;
|
|
44
|
+
/** Decode Dolby E program 4. */
|
|
45
|
+
static readonly PROGRAM_4: DolbyEProgramSelection;
|
|
46
|
+
/** Decode Dolby E program 5. */
|
|
47
|
+
static readonly PROGRAM_5: DolbyEProgramSelection;
|
|
48
|
+
/** Decode Dolby E program 6. */
|
|
49
|
+
static readonly PROGRAM_6: DolbyEProgramSelection;
|
|
50
|
+
/** Decode Dolby E program 7. */
|
|
51
|
+
static readonly PROGRAM_7: DolbyEProgramSelection;
|
|
52
|
+
/** Decode Dolby E program 8. */
|
|
53
|
+
static readonly PROGRAM_8: DolbyEProgramSelection;
|
|
54
|
+
/** A value not yet modelled by AWS CDK. */
|
|
55
|
+
static of(value: string): DolbyEProgramSelection;
|
|
56
|
+
/** The underlying string value passed to CloudFormation. */
|
|
57
|
+
readonly value: string;
|
|
58
|
+
private constructor();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Configuration for a single audio PID in a PID-based selector.
|
|
62
|
+
*/
|
|
63
|
+
export interface AudioPidConfig {
|
|
64
|
+
/** The packet identifier (PID) value from within the source. */
|
|
65
|
+
readonly pid: number;
|
|
66
|
+
/**
|
|
67
|
+
* Which Dolby E program to decode from this PID.
|
|
68
|
+
* @default - no Dolby E decoding
|
|
69
|
+
*/
|
|
70
|
+
readonly dolbyEDecode?: DolbyEProgramSelection;
|
|
71
|
+
/**
|
|
72
|
+
* Pre-mixer settings for this PID (gain, channel remix, loudness normalization).
|
|
73
|
+
* @default - no pre-mixing
|
|
74
|
+
*/
|
|
75
|
+
readonly premixSettings?: AudioPreMixerSettings;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Configuration for a single audio track in a track-based selector.
|
|
79
|
+
*/
|
|
80
|
+
export interface AudioTrackConfig {
|
|
81
|
+
/** The 1-based track number to extract. */
|
|
82
|
+
readonly track: number;
|
|
83
|
+
/**
|
|
84
|
+
* Pre-mixer settings for this track (gain, channel remix, loudness normalization).
|
|
85
|
+
* @default - no pre-mixing
|
|
86
|
+
*/
|
|
87
|
+
readonly premixSettings?: AudioPreMixerSettings;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Audio pre-mixer settings for normalizing audio before interleaving.
|
|
91
|
+
* Applied per-PID or per-track before tracks are combined.
|
|
92
|
+
*/
|
|
93
|
+
export declare class AudioPreMixerSettings {
|
|
94
|
+
private readonly props;
|
|
95
|
+
/**
|
|
96
|
+
* Create pre-mixer settings.
|
|
97
|
+
*/
|
|
98
|
+
static of(props: AudioPreMixerSettingsProps): AudioPreMixerSettings;
|
|
99
|
+
private constructor();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Properties for audio pre-mixer settings.
|
|
103
|
+
*/
|
|
104
|
+
export interface AudioPreMixerSettingsProps {
|
|
105
|
+
/**
|
|
106
|
+
* The gain adjustment in decibels (dB).
|
|
107
|
+
* @default - no gain adjustment
|
|
108
|
+
*/
|
|
109
|
+
readonly gainDb?: number;
|
|
110
|
+
/**
|
|
111
|
+
* The number of audio channels to remix to. Overridden by `remixSettings` if specified.
|
|
112
|
+
* @default - pass through original channel count
|
|
113
|
+
*/
|
|
114
|
+
readonly channels?: number;
|
|
115
|
+
/**
|
|
116
|
+
* Remix settings for fine-grained channel mapping and gain levels.
|
|
117
|
+
* @default - no remixing
|
|
118
|
+
*/
|
|
119
|
+
readonly remixSettings?: RemixSettings;
|
|
120
|
+
/**
|
|
121
|
+
* Audio normalization settings for loudness control.
|
|
122
|
+
* @default - no normalization
|
|
123
|
+
*/
|
|
124
|
+
readonly audioNormalizationSettings?: AudioNormalizationSettings;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* An audio selector that identifies which audio to extract from the input.
|
|
128
|
+
*/
|
|
129
|
+
export declare abstract class AudioSelector {
|
|
130
|
+
/**
|
|
131
|
+
* Select audio by language code.
|
|
132
|
+
*
|
|
133
|
+
* @param name a name for this selector
|
|
134
|
+
* @param languageCode the three-letter (ISO 639-2) language code to select
|
|
135
|
+
* @param languageSelectionPolicy how strictly to identify the stream by language on a PMT update
|
|
136
|
+
*/
|
|
137
|
+
static byLanguage(name: string, languageCode: string, languageSelectionPolicy?: AudioLanguageSelectionPolicy): AudioSelector;
|
|
138
|
+
/**
|
|
139
|
+
* Select one or more audio PIDs from the source.
|
|
140
|
+
*
|
|
141
|
+
* @param name a name for this selector
|
|
142
|
+
* @param pids the PID configurations (each with optional Dolby E decode and pre-mix settings)
|
|
143
|
+
*/
|
|
144
|
+
static byPid(name: string, pids: AudioPidConfig[]): AudioSelector;
|
|
145
|
+
/**
|
|
146
|
+
* Select one or more audio tracks (1-based) from the source.
|
|
147
|
+
*
|
|
148
|
+
* @param name a name for this selector
|
|
149
|
+
* @param tracks the track configurations (each with optional pre-mix settings)
|
|
150
|
+
* @param dolbyEProgramSelection which Dolby E program to decode from the selected track(s)
|
|
151
|
+
*/
|
|
152
|
+
static byTrack(name: string, tracks: AudioTrackConfig[], dolbyEProgramSelection?: DolbyEProgramSelection): AudioSelector;
|
|
153
|
+
/**
|
|
154
|
+
* Select an HLS audio rendition by its `#EXT-X-MEDIA` `GROUP-ID` and `NAME`.
|
|
155
|
+
*
|
|
156
|
+
* @param name a name for this selector
|
|
157
|
+
* @param options the target rendition's group id and name
|
|
158
|
+
*/
|
|
159
|
+
static hlsRendition(name: string, options: HlsRenditionSelectionOptions): AudioSelector;
|
|
160
|
+
/**
|
|
161
|
+
* Select the default audio track (no specific selector settings).
|
|
162
|
+
*/
|
|
163
|
+
static default(name: string): AudioSelector;
|
|
164
|
+
/**
|
|
165
|
+
* The name of this audio selector. Reference it from features that monitor a specific
|
|
166
|
+
* selector, such as an audio-silence {@link FailoverCondition}.
|
|
167
|
+
*/
|
|
168
|
+
readonly name: string;
|
|
169
|
+
protected constructor(name: string);
|
|
170
|
+
}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AudioSelector = exports.AudioPreMixerSettings = exports.DolbyEProgramSelection = exports.AudioLanguageSelectionPolicy = void 0;
|
|
4
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
8
|
+
/**
|
|
9
|
+
* Policy for how MediaLive identifies the audio stream when selecting by language, on a
|
|
10
|
+
* transport-stream PMT update.
|
|
11
|
+
*/
|
|
12
|
+
class AudioLanguageSelectionPolicy {
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioLanguageSelectionPolicy", version: "2.268.0-alpha.0" };
|
|
14
|
+
/**
|
|
15
|
+
* Strictly identify audio by its language descriptor. If the matching language is no
|
|
16
|
+
* longer present after a PMT update, mute is encoded until the language returns.
|
|
17
|
+
*/
|
|
18
|
+
static STRICT = new AudioLanguageSelectionPolicy('STRICT');
|
|
19
|
+
/**
|
|
20
|
+
* On a PMT update, fall back to another audio stream of the same type in the program if a
|
|
21
|
+
* stream with the same language can't be found.
|
|
22
|
+
*/
|
|
23
|
+
static LOOSE = new AudioLanguageSelectionPolicy('LOOSE');
|
|
24
|
+
/** A value not yet modelled by AWS CDK. */
|
|
25
|
+
static of(value) {
|
|
26
|
+
return new AudioLanguageSelectionPolicy(value);
|
|
27
|
+
}
|
|
28
|
+
/** The underlying string value passed to CloudFormation. */
|
|
29
|
+
value;
|
|
30
|
+
constructor(value) {
|
|
31
|
+
this.value = value;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.AudioLanguageSelectionPolicy = AudioLanguageSelectionPolicy;
|
|
35
|
+
/**
|
|
36
|
+
* Which Dolby E program to decode from a selected audio track.
|
|
37
|
+
*/
|
|
38
|
+
class DolbyEProgramSelection {
|
|
39
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.DolbyEProgramSelection", version: "2.268.0-alpha.0" };
|
|
40
|
+
/** Decode all channels. */
|
|
41
|
+
static ALL_CHANNELS = new DolbyEProgramSelection('ALL_CHANNELS');
|
|
42
|
+
/** Decode Dolby E program 1. */
|
|
43
|
+
static PROGRAM_1 = new DolbyEProgramSelection('PROGRAM_1');
|
|
44
|
+
/** Decode Dolby E program 2. */
|
|
45
|
+
static PROGRAM_2 = new DolbyEProgramSelection('PROGRAM_2');
|
|
46
|
+
/** Decode Dolby E program 3. */
|
|
47
|
+
static PROGRAM_3 = new DolbyEProgramSelection('PROGRAM_3');
|
|
48
|
+
/** Decode Dolby E program 4. */
|
|
49
|
+
static PROGRAM_4 = new DolbyEProgramSelection('PROGRAM_4');
|
|
50
|
+
/** Decode Dolby E program 5. */
|
|
51
|
+
static PROGRAM_5 = new DolbyEProgramSelection('PROGRAM_5');
|
|
52
|
+
/** Decode Dolby E program 6. */
|
|
53
|
+
static PROGRAM_6 = new DolbyEProgramSelection('PROGRAM_6');
|
|
54
|
+
/** Decode Dolby E program 7. */
|
|
55
|
+
static PROGRAM_7 = new DolbyEProgramSelection('PROGRAM_7');
|
|
56
|
+
/** Decode Dolby E program 8. */
|
|
57
|
+
static PROGRAM_8 = new DolbyEProgramSelection('PROGRAM_8');
|
|
58
|
+
/** A value not yet modelled by AWS CDK. */
|
|
59
|
+
static of(value) {
|
|
60
|
+
return new DolbyEProgramSelection(value);
|
|
61
|
+
}
|
|
62
|
+
/** The underlying string value passed to CloudFormation. */
|
|
63
|
+
value;
|
|
64
|
+
constructor(value) {
|
|
65
|
+
this.value = value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.DolbyEProgramSelection = DolbyEProgramSelection;
|
|
69
|
+
/**
|
|
70
|
+
* Audio pre-mixer settings for normalizing audio before interleaving.
|
|
71
|
+
* Applied per-PID or per-track before tracks are combined.
|
|
72
|
+
*/
|
|
73
|
+
class AudioPreMixerSettings {
|
|
74
|
+
props;
|
|
75
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioPreMixerSettings", version: "2.268.0-alpha.0" };
|
|
76
|
+
/**
|
|
77
|
+
* Create pre-mixer settings.
|
|
78
|
+
*/
|
|
79
|
+
static of(props) {
|
|
80
|
+
try {
|
|
81
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_AudioPreMixerSettingsProps(props);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
85
|
+
Error.captureStackTrace(error, this.of);
|
|
86
|
+
}
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
return new AudioPreMixerSettings(props);
|
|
90
|
+
}
|
|
91
|
+
constructor(props) {
|
|
92
|
+
this.props = props;
|
|
93
|
+
}
|
|
94
|
+
/** @internal */
|
|
95
|
+
_bind() {
|
|
96
|
+
return {
|
|
97
|
+
gainDb: this.props.gainDb,
|
|
98
|
+
channels: this.props.channels,
|
|
99
|
+
remixSettings: this.props.remixSettings ? {
|
|
100
|
+
channelMappings: this.props.remixSettings.channelMappings.map(m => ({
|
|
101
|
+
outputChannel: m.outputChannel,
|
|
102
|
+
inputChannelLevels: m.inputChannelLevels.map(l => ({
|
|
103
|
+
inputChannel: l.inputChannel,
|
|
104
|
+
gain: l.gain ?? 0,
|
|
105
|
+
})),
|
|
106
|
+
})),
|
|
107
|
+
channelsIn: this.props.remixSettings.channelsIn,
|
|
108
|
+
channelsOut: this.props.remixSettings.channelsOut,
|
|
109
|
+
} : undefined,
|
|
110
|
+
audioNormalizationSettings: this.props.audioNormalizationSettings ? {
|
|
111
|
+
algorithm: this.props.audioNormalizationSettings.algorithm?.value,
|
|
112
|
+
algorithmControl: this.props.audioNormalizationSettings.algorithmControl?.value,
|
|
113
|
+
targetLkfs: this.props.audioNormalizationSettings.targetLkfs,
|
|
114
|
+
peakCalculation: this.props.audioNormalizationSettings.peakCalculation?.value,
|
|
115
|
+
peakLimiterThreshold: this.props.audioNormalizationSettings.peakLimiterThreshold,
|
|
116
|
+
} : undefined,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.AudioPreMixerSettings = AudioPreMixerSettings;
|
|
121
|
+
/**
|
|
122
|
+
* An audio selector that identifies which audio to extract from the input.
|
|
123
|
+
*/
|
|
124
|
+
class AudioSelector {
|
|
125
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioSelector", version: "2.268.0-alpha.0" };
|
|
126
|
+
/**
|
|
127
|
+
* Select audio by language code.
|
|
128
|
+
*
|
|
129
|
+
* @param name a name for this selector
|
|
130
|
+
* @param languageCode the three-letter (ISO 639-2) language code to select
|
|
131
|
+
* @param languageSelectionPolicy how strictly to identify the stream by language on a PMT update
|
|
132
|
+
*/
|
|
133
|
+
static byLanguage(name, languageCode, languageSelectionPolicy) {
|
|
134
|
+
try {
|
|
135
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_AudioLanguageSelectionPolicy(languageSelectionPolicy);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
139
|
+
Error.captureStackTrace(error, this.byLanguage);
|
|
140
|
+
}
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
return new LanguageAudioSelector(name, languageCode, languageSelectionPolicy);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Select one or more audio PIDs from the source.
|
|
147
|
+
*
|
|
148
|
+
* @param name a name for this selector
|
|
149
|
+
* @param pids the PID configurations (each with optional Dolby E decode and pre-mix settings)
|
|
150
|
+
*/
|
|
151
|
+
static byPid(name, pids) {
|
|
152
|
+
return new PidAudioSelector(name, pids);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Select one or more audio tracks (1-based) from the source.
|
|
156
|
+
*
|
|
157
|
+
* @param name a name for this selector
|
|
158
|
+
* @param tracks the track configurations (each with optional pre-mix settings)
|
|
159
|
+
* @param dolbyEProgramSelection which Dolby E program to decode from the selected track(s)
|
|
160
|
+
*/
|
|
161
|
+
static byTrack(name, tracks, dolbyEProgramSelection) {
|
|
162
|
+
try {
|
|
163
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_DolbyEProgramSelection(dolbyEProgramSelection);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
167
|
+
Error.captureStackTrace(error, this.byTrack);
|
|
168
|
+
}
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
return new TrackAudioSelector(name, tracks, dolbyEProgramSelection);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Select an HLS audio rendition by its `#EXT-X-MEDIA` `GROUP-ID` and `NAME`.
|
|
175
|
+
*
|
|
176
|
+
* @param name a name for this selector
|
|
177
|
+
* @param options the target rendition's group id and name
|
|
178
|
+
*/
|
|
179
|
+
static hlsRendition(name, options) {
|
|
180
|
+
try {
|
|
181
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_HlsRenditionSelectionOptions(options);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
185
|
+
Error.captureStackTrace(error, this.hlsRendition);
|
|
186
|
+
}
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
return new HlsRenditionAudioSelector(name, options);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Select the default audio track (no specific selector settings).
|
|
193
|
+
*/
|
|
194
|
+
static default(name) {
|
|
195
|
+
return new DefaultAudioSelector(name);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The name of this audio selector. Reference it from features that monitor a specific
|
|
199
|
+
* selector, such as an audio-silence {@link FailoverCondition}.
|
|
200
|
+
*/
|
|
201
|
+
name;
|
|
202
|
+
constructor(name) {
|
|
203
|
+
this.name = name;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.AudioSelector = AudioSelector;
|
|
207
|
+
/** @internal */
|
|
208
|
+
class LanguageAudioSelector extends AudioSelector {
|
|
209
|
+
languageCode;
|
|
210
|
+
policy;
|
|
211
|
+
constructor(name, languageCode, policy) {
|
|
212
|
+
super(name);
|
|
213
|
+
this.languageCode = languageCode;
|
|
214
|
+
this.policy = policy;
|
|
215
|
+
}
|
|
216
|
+
_bind() {
|
|
217
|
+
return {
|
|
218
|
+
name: this.name,
|
|
219
|
+
selectorSettings: {
|
|
220
|
+
audioLanguageSelection: {
|
|
221
|
+
languageCode: this.languageCode,
|
|
222
|
+
languageSelectionPolicy: this.policy?.value,
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/** @internal */
|
|
229
|
+
class PidAudioSelector extends AudioSelector {
|
|
230
|
+
pids;
|
|
231
|
+
constructor(name, pids) {
|
|
232
|
+
super(name);
|
|
233
|
+
this.pids = pids;
|
|
234
|
+
if (pids.length === 0) {
|
|
235
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `AudioPidSelectorEmpty`, 'byPid() requires at least one PID configuration');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
_bind() {
|
|
239
|
+
return {
|
|
240
|
+
name: this.name,
|
|
241
|
+
selectorSettings: {
|
|
242
|
+
audioPidSelection: {
|
|
243
|
+
pids: this.pids.map(p => ({
|
|
244
|
+
pid: p.pid,
|
|
245
|
+
dolbyEDecode: p.dolbyEDecode ? { programSelection: p.dolbyEDecode.value } : undefined,
|
|
246
|
+
premixSettings: p.premixSettings?._bind(),
|
|
247
|
+
})),
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/** @internal */
|
|
254
|
+
class TrackAudioSelector extends AudioSelector {
|
|
255
|
+
tracks;
|
|
256
|
+
dolbyEProgramSelection;
|
|
257
|
+
constructor(name, tracks, dolbyEProgramSelection) {
|
|
258
|
+
super(name);
|
|
259
|
+
this.tracks = tracks;
|
|
260
|
+
this.dolbyEProgramSelection = dolbyEProgramSelection;
|
|
261
|
+
if (tracks.length === 0) {
|
|
262
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `AudioTrackSelectorEmpty`, 'byTrack() requires at least one track configuration');
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
_bind() {
|
|
266
|
+
return {
|
|
267
|
+
name: this.name,
|
|
268
|
+
selectorSettings: {
|
|
269
|
+
audioTrackSelection: {
|
|
270
|
+
tracks: this.tracks.map(t => ({
|
|
271
|
+
track: t.track,
|
|
272
|
+
premixSettings: t.premixSettings?._bind(),
|
|
273
|
+
})),
|
|
274
|
+
dolbyEDecode: this.dolbyEProgramSelection ? { programSelection: this.dolbyEProgramSelection.value } : undefined,
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/** @internal */
|
|
281
|
+
class HlsRenditionAudioSelector extends AudioSelector {
|
|
282
|
+
options;
|
|
283
|
+
constructor(name, options) {
|
|
284
|
+
super(name);
|
|
285
|
+
this.options = options;
|
|
286
|
+
}
|
|
287
|
+
_bind() {
|
|
288
|
+
return {
|
|
289
|
+
name: this.name,
|
|
290
|
+
selectorSettings: {
|
|
291
|
+
audioHlsRenditionSelection: {
|
|
292
|
+
groupId: this.options.groupId,
|
|
293
|
+
name: this.options.renditionName,
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/** @internal */
|
|
300
|
+
class DefaultAudioSelector extends AudioSelector {
|
|
301
|
+
constructor(name) { super(name); }
|
|
302
|
+
_bind() {
|
|
303
|
+
return { name: this.name };
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhdWRpby1zZWxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFzRDtBQUV0RCw0RUFBNEQ7QUFHNUQ7OztHQUdHO0FBQ0gsTUFBYSw0QkFBNEI7O0lBQ3ZDOzs7T0FHRztJQUNJLE1BQU0sQ0FBVSxNQUFNLEdBQUcsSUFBSSw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRTs7O09BR0c7SUFDSSxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekUsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEQ7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBdEJILG9FQXVCQztBQVlEOztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7O0lBQ2pDLDJCQUEyQjtJQUNwQixNQUFNLENBQVUsWUFBWSxHQUFHLElBQUksc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakYsZ0NBQWdDO0lBQ3pCLE1BQU0sQ0FBVSxTQUFTLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRSxnQ0FBZ0M7SUFDekIsTUFBTSxDQUFVLFNBQVMsR0FBRyxJQUFJLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNFLGdDQUFnQztJQUN6QixNQUFNLENBQVUsU0FBUyxHQUFHLElBQUksc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0UsZ0NBQWdDO0lBQ3pCLE1BQU0sQ0FBVSxTQUFTLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRSxnQ0FB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O2lCQUNqQzthQUNGO1NBQ0YsQ0FBQztLQUNIO0NBQ0Y7QUFFRCxnQkFBZ0I7QUFDaEIsTUFBTSxvQkFBcUIsU0FBUSxhQUFhO0lBQzlDLFlBQVksSUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ25DLEtBQUs7UUFDVixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUM1QjtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IENmbkNoYW5uZWwgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbWVkaWFsaXZlJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHR5cGUgeyBBdWRpb05vcm1hbGl6YXRpb25TZXR0aW5ncywgUmVtaXhTZXR0aW5ncyB9IGZyb20gJy4vZW5jb2RlLWNvbmZpZ3VyYXRpb24nO1xuXG4vKipcbiAqIFBvbGljeSBmb3IgaG93IE1lZGlhTGl2ZSBpZGVudGlmaWVzIHRoZSBhdWRpbyBzdHJlYW0gd2hlbiBzZWxlY3RpbmcgYnkgbGFuZ3VhZ2UsIG9uIGFcbiAqIHRyYW5zcG9ydC1zdHJlYW0gUE1UIHVwZGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1ZGlvTGFuZ3VhZ2VTZWxlY3Rpb25Qb2xpY3kge1xuICAvKipcbiAgICogU3RyaWN0bHkgaWRlbnRpZnkgYXVkaW8gYnkgaXRzIGxhbmd1YWdlIGRlc2NyaXB0b3IuIElmIHRoZSBtYXRjaGluZyBsYW5ndWFnZSBpcyBub1xuICAgKiBsb25nZXIgcHJlc2VudCBhZnRlciBhIFBNVCB1cGRhdGUsIG11dGUgaXMgZW5jb2RlZCB1bnRpbCB0aGUgbGFuZ3VhZ2UgcmV0dXJucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSSUNUID0gbmV3IEF1ZGlvTGFuZ3VhZ2VTZWxlY3Rpb25Qb2xpY3koJ1NUUklDVCcpO1xuICAvKipcbiAgICogT24gYSBQTVQgdXBkYXRlLCBmYWxsIGJhY2sgdG8gYW5vdGhlciBhdWRpbyBzdHJlYW0gb2YgdGhlIHNhbWUgdHlwZSBpbiB0aGUgcHJvZ3JhbSBpZiBhXG4gICAqIHN0cmVhbSB3aXRoIHRoZSBzYW1lIGxhbmd1YWdlIGNhbid0IGJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMT09TRSA9IG5ldyBBdWRpb0xhbmd1YWdlU2VsZWN0aW9uUG9saWN5KCdMT09TRScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQXVkaW9MYW5ndWFnZVNlbGVjdGlvblBvbGljeSB7XG4gICAgcmV0dXJuIG5ldyBBdWRpb0xhbmd1YWdlU2VsZWN0aW9uUG9saWN5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBzZWxlY3RpbmcgYW4gSExTIGF1ZGlvIHJlbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIbHNSZW5kaXRpb25TZWxlY3Rpb25PcHRpb25zIHtcbiAgLyoqIFRoZSBgR1JPVVAtSURgIGluIHRoZSBgI0VYVC1YLU1FRElBYCB0YWcgb2YgdGhlIHRhcmdldCBITFMgYXVkaW8gcmVuZGl0aW9uLiAqL1xuICByZWFkb25seSBncm91cElkOiBzdHJpbmc7XG4gIC8qKiBUaGUgYE5BTUVgIGluIHRoZSBgI0VYVC1YLU1FRElBYCB0YWcgb2YgdGhlIHRhcmdldCBITFMgYXVkaW8gcmVuZGl0aW9uLiAqL1xuICByZWFkb25seSByZW5kaXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hpY2ggRG9sYnkgRSBwcm9ncmFtIHRvIGRlY29kZSBmcm9tIGEgc2VsZWN0ZWQgYXVkaW8gdHJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBEb2xieUVQcm9ncmFtU2VsZWN0aW9uIHtcbiAgLyoqIERlY29kZSBhbGwgY2hhbm5lbHMuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMX0NIQU5ORUxTID0gbmV3IERvbGJ5RVByb2dyYW1TZWxlY3Rpb24oJ0FMTF9DSEFOTkVMUycpO1xuICAvKiogRGVjb2RlIERvbGJ5IEUgcHJvZ3JhbSAxLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST0dSQU1fMSA9IG5ldyBEb2xieUVQcm9ncmFtU2VsZWN0aW9uKCdQUk9HUkFNXzEnKTtcbiAgLyoqIERlY29kZSBEb2xieSBFIHByb2dyYW0gMi4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9HUkFNXzIgPSBuZXcgRG9sYnlFUHJvZ3JhbVNlbGVjdGlvbignUFJPR1JBTV8yJyk7XG4gIC8qKiBEZWNvZGUgRG9sYnkgRSBwcm9ncmFtIDMuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPR1JBTV8zID0gbmV3IERvbGJ5RVByb2dyYW1TZWxlY3Rpb24oJ1BST0dSQU1fMycpO1xuICAvKiogRGVjb2RlIERvbGJ5IEUgcHJvZ3JhbSA0LiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST0dSQU1fNCA9IG5ldyBEb2xieUVQcm9ncmFtU2VsZWN0aW9uKCdQUk9HUkFNXzQnKTtcbiAgLyoqIERlY29kZSBEb2xieSBFIHByb2dyYW0gNS4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9HUkFNXzUgPSBuZXcgRG9sYnlFUHJvZ3JhbVNlbGVjdGlvbignUFJPR1JBTV81Jyk7XG4gIC8qKiBEZWNvZGUgRG9sYnkgRSBwcm9ncmFtIDYuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPR1JBTV82ID0gbmV3IERvbGJ5RVByb2dyYW1TZWxlY3Rpb24oJ1BST0dSQU1fNicpO1xuICAvKiogRGVjb2RlIERvbGJ5IEUgcHJvZ3JhbSA3LiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST0dSQU1fNyA9IG5ldyBEb2xieUVQcm9ncmFtU2VsZWN0aW9uKCdQUk9HUkFNXzcnKTtcbiAgLyoqIERlY29kZSBEb2xieSBFIHByb2dyYW0gOC4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9HUkFNXzggPSBuZXcgRG9sYnlFUHJvZ3JhbVNlbGVjdGlvbignUFJPR1JBTV84Jyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBEb2xieUVQcm9ncmFtU2VsZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IERvbGJ5RVByb2dyYW1TZWxlY3Rpb24odmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGF1ZGlvIFBJRCBpbiBhIFBJRC1iYXNlZCBzZWxlY3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdWRpb1BpZENvbmZpZyB7XG4gIC8qKiBUaGUgcGFja2V0IGlkZW50aWZpZXIgKFBJRCkgdmFsdWUgZnJvbSB3aXRoaW4gdGhlIHNvdXJjZS4gKi9cbiAgcmVhZG9ubHkgcGlkOiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGljaCBEb2xieSBFIHByb2dyYW0gdG8gZGVjb2RlIGZyb20gdGhpcyBQSUQuXG4gICAqIEBkZWZhdWx0IC0gbm8gRG9sYnkgRSBkZWNvZGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgZG9sYnlFRGVjb2RlPzogRG9sYnlFUHJvZ3JhbVNlbGVjdGlvbjtcbiAgLyoqXG4gICAqIFByZS1taXhlciBzZXR0aW5ncyBmb3IgdGhpcyBQSUQgKGdhaW4sIGNoYW5uZWwgcmVtaXgsIGxvdWRuZXNzIG5vcm1hbGl6YXRpb24pLlxuICAgKiBAZGVmYXVsdCAtIG5vIHByZS1taXhpbmdcbiAgICovXG4gIHJlYWRvbmx5IHByZW1peFNldHRpbmdzPzogQXVkaW9QcmVNaXhlclNldHRpbmdzO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGF1ZGlvIHRyYWNrIGluIGEgdHJhY2stYmFzZWQgc2VsZWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9UcmFja0NvbmZpZyB7XG4gIC8qKiBUaGUgMS1iYXNlZCB0cmFjayBudW1iZXIgdG8gZXh0cmFjdC4gKi9cbiAgcmVhZG9ubHkgdHJhY2s6IG51bWJlcjtcbiAgLyoqXG4gICAqIFByZS1taXhlciBzZXR0aW5ncyBmb3IgdGhpcyB0cmFjayAoZ2FpbiwgY2hhbm5lbCByZW1peCwgbG91ZG5lc3Mgbm9ybWFsaXphdGlvbikuXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJlLW1peGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJlbWl4U2V0dGluZ3M/OiBBdWRpb1ByZU1peGVyU2V0dGluZ3M7XG59XG5cbi8qKlxuICogQXVkaW8gcHJlLW1peGVyIHNldHRpbmdzIGZvciBub3JtYWxpemluZyBhdWRpbyBiZWZvcmUgaW50ZXJsZWF2aW5nLlxuICogQXBwbGllZCBwZXItUElEIG9yIHBlci10cmFjayBiZWZvcmUgdHJhY2tzIGFyZSBjb21iaW5lZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1ZGlvUHJlTWl4ZXJTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgcHJlLW1peGVyIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwcm9wczogQXVkaW9QcmVNaXhlclNldHRpbmdzUHJvcHMpOiBBdWRpb1ByZU1peGVyU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgQXVkaW9QcmVNaXhlclNldHRpbmdzKHByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQXVkaW9QcmVNaXhlclNldHRpbmdzUHJvcHMpIHt9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb1ByZU1peGVyU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdhaW5EYjogdGhpcy5wcm9wcy5nYWluRGIsXG4gICAgICBjaGFubmVsczogdGhpcy5wcm9wcy5jaGFubmVscyxcbiAgICAgIHJlbWl4U2V0dGluZ3M6IHRoaXMucHJvcHMucmVtaXhTZXR0aW5ncyA/IHtcbiAgICAgICAgY2hhbm5lbE1hcHBpbmdzOiB0aGlzLnByb3BzLnJlbWl4U2V0dGluZ3MuY2hhbm5lbE1hcHBpbmdzLm1hcChtID0+ICh7XG4gICAgICAgICAgb3V0cHV0Q2hhbm5lbDogbS5vdXRwdXRDaGFubmVsLFxuICAgICAgICAgIGlucHV0Q2hhbm5lbExldmVsczogbS5pbnB1dENoYW5uZWxMZXZlbHMubWFwKGwgPT4gKHtcbiAgICAgICAgICAgIGlucHV0Q2hhbm5lbDogbC5pbnB1dENoYW5uZWwsXG4gICAgICAgICAgICBnYWluOiBsLmdhaW4gPz8gMCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pKSxcbiAgICAgICAgY2hhbm5lbHNJbjogdGhpcy5wcm9wcy5yZW1peFNldHRpbmdzLmNoYW5uZWxzSW4sXG4gICAgICAgIGNoYW5uZWxzT3V0OiB0aGlzLnByb3BzLnJlbWl4U2V0dGluZ3MuY2hhbm5lbHNPdXQsXG4gICAgICB9IDogdW5kZWZpbmVkLFxuICAgICAgYXVkaW9Ob3JtYWxpemF0aW9uU2V0dGluZ3M6IHRoaXMucHJvcHMuYXVkaW9Ob3JtYWxpemF0aW9uU2V0dGluZ3MgPyB7XG4gICAgICAgIGFsZ29yaXRobTogdGhpcy5wcm9wcy5hdWRpb05vcm1hbGl6YXRpb25TZXR0aW5ncy5hbGdvcml0aG0/LnZhbHVlLFxuICAgICAgICBhbGdvcml0aG1Db250cm9sOiB0aGlzLnByb3BzLmF1ZGlvTm9ybWFsaXphdGlvblNldHRpbmdzLmFsZ29yaXRobUNvbnRyb2w/LnZhbHVlLFxuICAgICAgICB0YXJnZXRMa2ZzOiB0aGlzLnByb3BzLmF1ZGlvTm9ybWFsaXphdGlvblNldHRpbmdzLnRhcmdldExrZnMsXG4gICAgICAgIHBlYWtDYWxjdWxhdGlvbjogdGhpcy5wcm9wcy5hdWRpb05vcm1hbGl6YXRpb25TZXR0aW5ncy5wZWFrQ2FsY3VsYXRpb24/LnZhbHVlLFxuICAgICAgICBwZWFrTGltaXRlclRocmVzaG9sZDogdGhpcy5wcm9wcy5hdWRpb05vcm1hbGl6YXRpb25TZXR0aW5ncy5wZWFrTGltaXRlclRocmVzaG9sZCxcbiAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGF1ZGlvIHByZS1taXhlciBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdWRpb1ByZU1peGVyU2V0dGluZ3NQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2FpbiBhZGp1c3RtZW50IGluIGRlY2liZWxzIChkQikuXG4gICAqIEBkZWZhdWx0IC0gbm8gZ2FpbiBhZGp1c3RtZW50XG4gICAqL1xuICByZWFkb25seSBnYWluRGI/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzIHRvIHJlbWl4IHRvLiBPdmVycmlkZGVuIGJ5IGByZW1peFNldHRpbmdzYCBpZiBzcGVjaWZpZWQuXG4gICAqIEBkZWZhdWx0IC0gcGFzcyB0aHJvdWdoIG9yaWdpbmFsIGNoYW5uZWwgY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5uZWxzPzogbnVtYmVyO1xuICAvKipcbiAgICogUmVtaXggc2V0dGluZ3MgZm9yIGZpbmUtZ3JhaW5lZCBjaGFubmVsIG1hcHBpbmcgYW5kIGdhaW4gbGV2ZWxzLlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlbWl4aW5nXG4gICAqL1xuICByZWFkb25seSByZW1peFNldHRpbmdzPzogUmVtaXhTZXR0aW5ncztcbiAgLyoqXG4gICAqIEF1ZGlvIG5vcm1hbGl6YXRpb24gc2V0dGluZ3MgZm9yIGxvdWRuZXNzIGNvbnRyb2wuXG4gICAqIEBkZWZhdWx0IC0gbm8gbm9ybWFsaXphdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYXVkaW9Ob3JtYWxpemF0aW9uU2V0dGluZ3M/OiBBdWRpb05vcm1hbGl6YXRpb25TZXR0aW5ncztcbn1cblxuLyoqXG4gKiBBbiBhdWRpbyBzZWxlY3RvciB0aGF0IGlkZW50aWZpZXMgd2hpY2ggYXVkaW8gdG8gZXh0cmFjdCBmcm9tIHRoZSBpbnB1dC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1ZGlvU2VsZWN0b3Ige1xuICAvKipcbiAgICogU2VsZWN0IGF1ZGlvIGJ5IGxhbmd1YWdlIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIGEgbmFtZSBmb3IgdGhpcyBzZWxlY3RvclxuICAgKiBAcGFyYW0gbGFuZ3VhZ2VDb2RlIHRoZSB0aHJlZS1sZXR0ZXIgKElTTyA2MzktMikgbGFuZ3VhZ2UgY29kZSB0byBzZWxlY3RcbiAgICogQHBhcmFtIGxhbmd1YWdlU2VsZWN0aW9uUG9saWN5IGhvdyBzdHJpY3RseSB0byBpZGVudGlmeSB0aGUgc3RyZWFtIGJ5IGxhbmd1YWdlIG9uIGEgUE1UIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBieUxhbmd1YWdlKG5hbWU6IHN0cmluZywgbGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIGxhbmd1YWdlU2VsZWN0aW9uUG9saWN5PzogQXVkaW9MYW5ndWFnZVNlbGVjdGlvblBvbGljeSk6IEF1ZGlvU2VsZWN0b3Ige1xuICAgIHJldHVybiBuZXcgTGFuZ3VhZ2VBdWRpb1NlbGVjdG9yKG5hbWUsIGxhbmd1YWdlQ29kZSwgbGFuZ3VhZ2VTZWxlY3Rpb25Qb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBvbmUgb3IgbW9yZSBhdWRpbyBQSURzIGZyb20gdGhlIHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgYSBuYW1lIGZvciB0aGlzIHNlbGVjdG9yXG4gICAqIEBwYXJhbSBwaWRzIHRoZSBQSUQgY29uZmlndXJhdGlvbnMgKGVhY2ggd2l0aCBvcHRpb25hbCBEb2xieSBFIGRlY29kZSBhbmQgcHJlLW1peCBzZXR0aW5ncylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYnlQaWQobmFtZTogc3RyaW5nLCBwaWRzOiBBdWRpb1BpZENvbmZpZ1tdKTogQXVkaW9TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBQaWRBdWRpb1NlbGVjdG9yKG5hbWUsIHBpZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBvbmUgb3IgbW9yZSBhdWRpbyB0cmFja3MgKDEtYmFzZWQpIGZyb20gdGhlIHNvdXJjZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgYSBuYW1lIGZvciB0aGlzIHNlbGVjdG9yXG4gICAqIEBwYXJhbSB0cmFja3MgdGhlIHRyYWNrIGNvbmZpZ3VyYXRpb25zIChlYWNoIHdpdGggb3B0aW9uYWwgcHJlLW1peCBzZXR0aW5ncylcbiAgICogQHBhcmFtIGRvbGJ5RVByb2dyYW1TZWxlY3Rpb24gd2hpY2ggRG9sYnkgRSBwcm9ncmFtIHRvIGRlY29kZSBmcm9tIHRoZSBzZWxlY3RlZCB0cmFjayhzKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBieVRyYWNrKG5hbWU6IHN0cmluZywgdHJhY2tzOiBBdWRpb1RyYWNrQ29uZmlnW10sIGRvbGJ5RVByb2dyYW1TZWxlY3Rpb24/OiBEb2xieUVQcm9ncmFtU2VsZWN0aW9uKTogQXVkaW9TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBUcmFja0F1ZGlvU2VsZWN0b3IobmFtZSwgdHJhY2tzLCBkb2xieUVQcm9ncmFtU2VsZWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYW4gSExTIGF1ZGlvIHJlbmRpdGlvbiBieSBpdHMgYCNFWFQtWC1NRURJQWAgYEdST1VQLUlEYCBhbmQgYE5BTUVgLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBhIG5hbWUgZm9yIHRoaXMgc2VsZWN0b3JcbiAgICogQHBhcmFtIG9wdGlvbnMgdGhlIHRhcmdldCByZW5kaXRpb24ncyBncm91cCBpZCBhbmQgbmFtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBobHNSZW5kaXRpb24obmFtZTogc3RyaW5nLCBvcHRpb25zOiBIbHNSZW5kaXRpb25TZWxlY3Rpb25PcHRpb25zKTogQXVkaW9TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBIbHNSZW5kaXRpb25BdWRpb1NlbGVjdG9yKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCB0aGUgZGVmYXVsdCBhdWRpbyB0cmFjayAobm8gc3BlY2lmaWMgc2VsZWN0b3Igc2V0dGluZ3MpLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0KG5hbWU6IHN0cmluZyk6IEF1ZGlvU2VsZWN0b3Ige1xuICAgIHJldHVybiBuZXcgRGVmYXVsdEF1ZGlvU2VsZWN0b3IobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBhdWRpbyBzZWxlY3Rvci4gUmVmZXJlbmNlIGl0IGZyb20gZmVhdHVyZXMgdGhhdCBtb25pdG9yIGEgc3BlY2lmaWNcbiAgICogc2VsZWN0b3IsIHN1Y2ggYXMgYW4gYXVkaW8tc2lsZW5jZSB7QGxpbmsgRmFpbG92ZXJDb25kaXRpb259LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGFic3RyYWN0IF9iaW5kKCk6IENmbkNoYW5uZWwuQXVkaW9TZWxlY3RvclByb3BlcnR5O1xufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBMYW5ndWFnZUF1ZGlvU2VsZWN0b3IgZXh0ZW5kcyBBdWRpb1NlbGVjdG9yIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IGxhbmd1YWdlQ29kZTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHBvbGljeT86IEF1ZGlvTGFuZ3VhZ2VTZWxlY3Rpb25Qb2xpY3kpIHsgc3VwZXIobmFtZSk7IH1cbiAgcHVibGljIF9iaW5kKCk6IENmbkNoYW5uZWwuQXVkaW9TZWxlY3RvclByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgc2VsZWN0b3JTZXR0aW5nczoge1xuICAgICAgICBhdWRpb0xhbmd1YWdlU2VsZWN0aW9uOiB7XG4gICAgICAgICAgbGFuZ3VhZ2VDb2RlOiB0aGlzLmxhbmd1YWdlQ29kZSxcbiAgICAgICAgICBsYW5ndWFnZVNlbGVjdGlvblBvbGljeTogdGhpcy5wb2xpY3k/LnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIFBpZEF1ZGlvU2VsZWN0b3IgZXh0ZW5kcyBBdWRpb1NlbGVjdG9yIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHBpZHM6IEF1ZGlvUGlkQ29uZmlnW10pIHtcbiAgICBzdXBlcihuYW1lKTtcbiAgICBpZiAocGlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQXVkaW9QaWRTZWxlY3RvckVtcHR5YCwgJ2J5UGlkKCkgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIFBJRCBjb25maWd1cmF0aW9uJyk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkF1ZGlvU2VsZWN0b3JQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHNlbGVjdG9yU2V0dGluZ3M6IHtcbiAgICAgICAgYXVkaW9QaWRTZWxlY3Rpb246IHtcbiAgICAgICAgICBwaWRzOiB0aGlzLnBpZHMubWFwKHAgPT4gKHtcbiAgICAgICAgICAgIHBpZDogcC5waWQsXG4gICAgICAgICAgICBkb2xieUVEZWNvZGU6IHAuZG9sYnlFRGVjb2RlID8geyBwcm9ncmFtU2VsZWN0aW9uOiBwLmRvbGJ5RURlY29kZS52YWx1ZSB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcHJlbWl4U2V0dGluZ3M6IHAucHJlbWl4U2V0dGluZ3M/Ll9iaW5kKCksXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIFRyYWNrQXVkaW9TZWxlY3RvciBleHRlbmRzIEF1ZGlvU2VsZWN0b3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgdHJhY2tzOiBBdWRpb1RyYWNrQ29uZmlnW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2xieUVQcm9ncmFtU2VsZWN0aW9uPzogRG9sYnlFUHJvZ3JhbVNlbGVjdGlvbikge1xuICAgIHN1cGVyKG5hbWUpO1xuICAgIGlmICh0cmFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YEF1ZGlvVHJhY2tTZWxlY3RvckVtcHR5YCwgJ2J5VHJhY2soKSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgdHJhY2sgY29uZmlndXJhdGlvbicpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb1NlbGVjdG9yUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzZWxlY3RvclNldHRpbmdzOiB7XG4gICAgICAgIGF1ZGlvVHJhY2tTZWxlY3Rpb246IHtcbiAgICAgICAgICB0cmFja3M6IHRoaXMudHJhY2tzLm1hcCh0ID0+ICh7XG4gICAgICAgICAgICB0cmFjazogdC50cmFjayxcbiAgICAgICAgICAgIHByZW1peFNldHRpbmdzOiB0LnByZW1peFNldHRpbmdzPy5fYmluZCgpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBkb2xieUVEZWNvZGU6IHRoaXMuZG9sYnlFUHJvZ3JhbVNlbGVjdGlvbiA/IHsgcHJvZ3JhbVNlbGVjdGlvbjogdGhpcy5kb2xieUVQcm9ncmFtU2VsZWN0aW9uLnZhbHVlIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgSGxzUmVuZGl0aW9uQXVkaW9TZWxlY3RvciBleHRlbmRzIEF1ZGlvU2VsZWN0b3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogSGxzUmVuZGl0aW9uU2VsZWN0aW9uT3B0aW9ucykgeyBzdXBlcihuYW1lKTsgfVxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb1NlbGVjdG9yUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzZWxlY3RvclNldHRpbmdzOiB7XG4gICAgICAgIGF1ZGlvSGxzUmVuZGl0aW9uU2VsZWN0aW9uOiB7XG4gICAgICAgICAgZ3JvdXBJZDogdGhpcy5vcHRpb25zLmdyb3VwSWQsXG4gICAgICAgICAgbmFtZTogdGhpcy5vcHRpb25zLnJlbmRpdGlvbk5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgRGVmYXVsdEF1ZGlvU2VsZWN0b3IgZXh0ZW5kcyBBdWRpb1NlbGVjdG9yIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7IHN1cGVyKG5hbWUpOyB9XG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkF1ZGlvU2VsZWN0b3JQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHsgbmFtZTogdGhpcy5uYW1lIH07XG4gIH1cbn1cbiJdfQ==
|