@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,413 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CaptionSelector = exports.CaptionSynchronizationMode = exports.Scte20Detection = exports.Convert608To708 = exports.OcrLanguage = 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
|
+
* The OCR language to use when converting an image-based caption source to text.
|
|
10
|
+
*/
|
|
11
|
+
class OcrLanguage {
|
|
12
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.OcrLanguage", version: "2.268.0-alpha.0" };
|
|
13
|
+
/** German */
|
|
14
|
+
static DEU = new OcrLanguage('DEU');
|
|
15
|
+
/** English */
|
|
16
|
+
static ENG = new OcrLanguage('ENG');
|
|
17
|
+
/** French */
|
|
18
|
+
static FRA = new OcrLanguage('FRA');
|
|
19
|
+
/** Dutch */
|
|
20
|
+
static NLD = new OcrLanguage('NLD');
|
|
21
|
+
/** Portuguese */
|
|
22
|
+
static POR = new OcrLanguage('POR');
|
|
23
|
+
/** Spanish */
|
|
24
|
+
static SPA = new OcrLanguage('SPA');
|
|
25
|
+
/** A value not yet modelled by AWS CDK. */
|
|
26
|
+
static of(value) {
|
|
27
|
+
return new OcrLanguage(value);
|
|
28
|
+
}
|
|
29
|
+
/** The underlying string value passed to CloudFormation. */
|
|
30
|
+
value;
|
|
31
|
+
constructor(value) {
|
|
32
|
+
this.value = value;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.OcrLanguage = OcrLanguage;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to upconvert 608 captions to 708.
|
|
38
|
+
*/
|
|
39
|
+
class Convert608To708 {
|
|
40
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Convert608To708", version: "2.268.0-alpha.0" };
|
|
41
|
+
/** Pass through 608 captions without upconverting. */
|
|
42
|
+
static DISABLED = new Convert608To708('DISABLED');
|
|
43
|
+
/** Upconvert 608 captions to 708 (608 data is also passed through). */
|
|
44
|
+
static UPCONVERT = new Convert608To708('UPCONVERT');
|
|
45
|
+
/** A value not yet modelled by AWS CDK. */
|
|
46
|
+
static of(value) {
|
|
47
|
+
return new Convert608To708(value);
|
|
48
|
+
}
|
|
49
|
+
/** The underlying string value passed to CloudFormation. */
|
|
50
|
+
value;
|
|
51
|
+
constructor(value) {
|
|
52
|
+
this.value = value;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.Convert608To708 = Convert608To708;
|
|
56
|
+
/**
|
|
57
|
+
* SCTE-20 detection mode for an embedded caption source.
|
|
58
|
+
*/
|
|
59
|
+
class Scte20Detection {
|
|
60
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Scte20Detection", version: "2.268.0-alpha.0" };
|
|
61
|
+
/** Handle streams with intermittent or non-aligned SCTE-20 and embedded captions. */
|
|
62
|
+
static AUTO = new Scte20Detection('AUTO');
|
|
63
|
+
/** Do not detect SCTE-20 captions. */
|
|
64
|
+
static OFF = new Scte20Detection('OFF');
|
|
65
|
+
/** A value not yet modelled by AWS CDK. */
|
|
66
|
+
static of(value) {
|
|
67
|
+
return new Scte20Detection(value);
|
|
68
|
+
}
|
|
69
|
+
/** The underlying string value passed to CloudFormation. */
|
|
70
|
+
value;
|
|
71
|
+
constructor(value) {
|
|
72
|
+
this.value = value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.Scte20Detection = Scte20Detection;
|
|
76
|
+
/**
|
|
77
|
+
* Controls whether MediaLive delays video to synchronize captions with audio and video output.
|
|
78
|
+
*/
|
|
79
|
+
class CaptionSynchronizationMode {
|
|
80
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.CaptionSynchronizationMode", version: "2.268.0-alpha.0" };
|
|
81
|
+
/** MediaLive does not delay video for caption alignment. */
|
|
82
|
+
static NO_VIDEO_DELAY = new CaptionSynchronizationMode('NO_VIDEO_DELAY');
|
|
83
|
+
/** MediaLive delays video to ensure captions are synchronized with audio and video. */
|
|
84
|
+
static VIDEO_ALIGNED_CAPTIONS = new CaptionSynchronizationMode('VIDEO_ALIGNED_CAPTIONS');
|
|
85
|
+
/** A value not yet modelled by AWS CDK. */
|
|
86
|
+
static of(value) {
|
|
87
|
+
return new CaptionSynchronizationMode(value);
|
|
88
|
+
}
|
|
89
|
+
/** The underlying string value passed to CloudFormation. */
|
|
90
|
+
value;
|
|
91
|
+
constructor(value) {
|
|
92
|
+
this.value = value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.CaptionSynchronizationMode = CaptionSynchronizationMode;
|
|
96
|
+
/**
|
|
97
|
+
* A caption selector that identifies which captions to extract from the input. Create with
|
|
98
|
+
* the static factory methods — one per caption source format.
|
|
99
|
+
*/
|
|
100
|
+
class CaptionSelector {
|
|
101
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.CaptionSelector", version: "2.268.0-alpha.0" };
|
|
102
|
+
/**
|
|
103
|
+
* Select captions by language code (no specific source format).
|
|
104
|
+
*/
|
|
105
|
+
static byLanguage(name, languageCode) {
|
|
106
|
+
return new LanguageCaptionSelector(name, languageCode);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Select embedded (CEA-608/708) captions.
|
|
110
|
+
*/
|
|
111
|
+
static embedded(name, options = {}) {
|
|
112
|
+
try {
|
|
113
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_EmbeddedCaptionSourceOptions(options);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
117
|
+
Error.captureStackTrace(error, this.embedded);
|
|
118
|
+
}
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
return new EmbeddedCaptionSelector(name, options);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Select ancillary captions.
|
|
125
|
+
*/
|
|
126
|
+
static ancillary(name, options = {}) {
|
|
127
|
+
try {
|
|
128
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_AncillaryCaptionSourceOptions(options);
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
132
|
+
Error.captureStackTrace(error, this.ancillary);
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
return new AncillaryCaptionSelector(name, options);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Select ARIB captions.
|
|
140
|
+
*/
|
|
141
|
+
static arib(name) {
|
|
142
|
+
return new AribCaptionSelector(name);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Select DVB-Sub (image-based) captions.
|
|
146
|
+
*/
|
|
147
|
+
static dvbSub(name, options = {}) {
|
|
148
|
+
try {
|
|
149
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_DvbSubCaptionSourceOptions(options);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
153
|
+
Error.captureStackTrace(error, this.dvbSub);
|
|
154
|
+
}
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
return new DvbSubCaptionSelector(name, options);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Select SCTE-20 captions.
|
|
161
|
+
*/
|
|
162
|
+
static scte20(name, options = {}) {
|
|
163
|
+
try {
|
|
164
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Scte20CaptionSourceOptions(options);
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
168
|
+
Error.captureStackTrace(error, this.scte20);
|
|
169
|
+
}
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
return new Scte20CaptionSelector(name, options);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Select SCTE-27 (image-based) captions.
|
|
176
|
+
*/
|
|
177
|
+
static scte27(name, options = {}) {
|
|
178
|
+
try {
|
|
179
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Scte27CaptionSourceOptions(options);
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
183
|
+
Error.captureStackTrace(error, this.scte27);
|
|
184
|
+
}
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
return new Scte27CaptionSelector(name, options);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Select Teletext captions.
|
|
191
|
+
*/
|
|
192
|
+
static teletext(name, options = {}) {
|
|
193
|
+
try {
|
|
194
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_TeletextCaptionSourceOptions(options);
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
198
|
+
Error.captureStackTrace(error, this.teletext);
|
|
199
|
+
}
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
202
|
+
return new TeletextCaptionSelector(name, options);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Select smart subtitles generated by Elemental Inference.
|
|
206
|
+
*/
|
|
207
|
+
static smartSubtitle(name, options = {}) {
|
|
208
|
+
try {
|
|
209
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_SmartSubtitleSourceOptions(options);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
213
|
+
Error.captureStackTrace(error, this.smartSubtitle);
|
|
214
|
+
}
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
return new SmartSubtitleCaptionSelector(name, options);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* The name of this caption selector, used to associate it with caption outputs. Unique
|
|
221
|
+
* within a channel.
|
|
222
|
+
*/
|
|
223
|
+
name;
|
|
224
|
+
constructor(name) {
|
|
225
|
+
this.name = name;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
exports.CaptionSelector = CaptionSelector;
|
|
229
|
+
/** @internal */
|
|
230
|
+
class LanguageCaptionSelector extends CaptionSelector {
|
|
231
|
+
languageCode;
|
|
232
|
+
constructor(name, languageCode) {
|
|
233
|
+
super(name);
|
|
234
|
+
this.languageCode = languageCode;
|
|
235
|
+
}
|
|
236
|
+
_bind() {
|
|
237
|
+
return { name: this.name, languageCode: this.languageCode };
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/** @internal */
|
|
241
|
+
class EmbeddedCaptionSelector extends CaptionSelector {
|
|
242
|
+
options;
|
|
243
|
+
constructor(name, options) {
|
|
244
|
+
super(name);
|
|
245
|
+
this.options = options;
|
|
246
|
+
if (options.source608ChannelNumber !== undefined && !aws_cdk_lib_1.Token.isUnresolved(options.source608ChannelNumber)
|
|
247
|
+
&& (options.source608ChannelNumber < 1 || options.source608ChannelNumber > 4)) {
|
|
248
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `Source608ChannelNumberRange`, `source608ChannelNumber must be between 1 and 4, got ${options.source608ChannelNumber}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
_bind() {
|
|
252
|
+
const hasSettings = this.options.convert608To708 !== undefined
|
|
253
|
+
|| this.options.scte20Detection !== undefined
|
|
254
|
+
|| this.options.source608ChannelNumber !== undefined;
|
|
255
|
+
return {
|
|
256
|
+
name: this.name,
|
|
257
|
+
selectorSettings: hasSettings ? {
|
|
258
|
+
embeddedSourceSettings: {
|
|
259
|
+
convert608To708: (this.options.convert608To708 ?? Convert608To708.DISABLED).value,
|
|
260
|
+
scte20Detection: (this.options.scte20Detection ?? Scte20Detection.OFF).value,
|
|
261
|
+
source608ChannelNumber: this.options.source608ChannelNumber,
|
|
262
|
+
},
|
|
263
|
+
} : undefined,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/** @internal */
|
|
268
|
+
class AncillaryCaptionSelector extends CaptionSelector {
|
|
269
|
+
options;
|
|
270
|
+
constructor(name, options) {
|
|
271
|
+
super(name);
|
|
272
|
+
this.options = options;
|
|
273
|
+
if (options.sourceChannelNumber !== undefined && !aws_cdk_lib_1.Token.isUnresolved(options.sourceChannelNumber)
|
|
274
|
+
&& (options.sourceChannelNumber < 1 || options.sourceChannelNumber > 4)) {
|
|
275
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `AncillaryChannelNumberRange`, `sourceChannelNumber must be between 1 and 4, got ${options.sourceChannelNumber}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
_bind() {
|
|
279
|
+
return {
|
|
280
|
+
name: this.name,
|
|
281
|
+
selectorSettings: {
|
|
282
|
+
ancillarySourceSettings: { sourceAncillaryChannelNumber: this.options.sourceChannelNumber },
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/** @internal */
|
|
288
|
+
class AribCaptionSelector extends CaptionSelector {
|
|
289
|
+
constructor(name) { super(name); }
|
|
290
|
+
_bind() {
|
|
291
|
+
return { name: this.name, selectorSettings: { aribSourceSettings: {} } };
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/** @internal */
|
|
295
|
+
class DvbSubCaptionSelector extends CaptionSelector {
|
|
296
|
+
options;
|
|
297
|
+
constructor(name, options) {
|
|
298
|
+
super(name);
|
|
299
|
+
this.options = options;
|
|
300
|
+
}
|
|
301
|
+
_bind() {
|
|
302
|
+
return {
|
|
303
|
+
name: this.name,
|
|
304
|
+
selectorSettings: {
|
|
305
|
+
dvbSubSourceSettings: { pid: this.options.pid, ocrLanguage: this.options.ocrLanguage?.value },
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/** @internal */
|
|
311
|
+
class Scte20CaptionSelector extends CaptionSelector {
|
|
312
|
+
options;
|
|
313
|
+
constructor(name, options) {
|
|
314
|
+
super(name);
|
|
315
|
+
this.options = options;
|
|
316
|
+
if (options.source608ChannelNumber !== undefined && !aws_cdk_lib_1.Token.isUnresolved(options.source608ChannelNumber)
|
|
317
|
+
&& (options.source608ChannelNumber < 1 || options.source608ChannelNumber > 4)) {
|
|
318
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `Source608ChannelNumberRange`, `source608ChannelNumber must be between 1 and 4, got ${options.source608ChannelNumber}`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
_bind() {
|
|
322
|
+
return {
|
|
323
|
+
name: this.name,
|
|
324
|
+
selectorSettings: {
|
|
325
|
+
scte20SourceSettings: {
|
|
326
|
+
convert608To708: (this.options.convert608To708 ?? Convert608To708.DISABLED).value,
|
|
327
|
+
source608ChannelNumber: this.options.source608ChannelNumber,
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/** @internal */
|
|
334
|
+
class Scte27CaptionSelector extends CaptionSelector {
|
|
335
|
+
options;
|
|
336
|
+
constructor(name, options) {
|
|
337
|
+
super(name);
|
|
338
|
+
this.options = options;
|
|
339
|
+
}
|
|
340
|
+
_bind() {
|
|
341
|
+
return {
|
|
342
|
+
name: this.name,
|
|
343
|
+
selectorSettings: {
|
|
344
|
+
scte27SourceSettings: { pid: this.options.pid, ocrLanguage: this.options.ocrLanguage?.value },
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/** @internal */
|
|
350
|
+
class TeletextCaptionSelector extends CaptionSelector {
|
|
351
|
+
options;
|
|
352
|
+
constructor(name, options) {
|
|
353
|
+
super(name);
|
|
354
|
+
this.options = options;
|
|
355
|
+
if (options.outputRectangle) {
|
|
356
|
+
const r = options.outputRectangle;
|
|
357
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(r.height) && (r.height < 0 || r.height > 100)) {
|
|
358
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CaptionRectangleRange`, `outputRectangle.height must be between 0 and 100, got ${r.height}`);
|
|
359
|
+
}
|
|
360
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(r.width) && (r.width < 0 || r.width > 100)) {
|
|
361
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CaptionRectangleRange`, `outputRectangle.width must be between 0 and 100, got ${r.width}`);
|
|
362
|
+
}
|
|
363
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(r.leftOffset) && (r.leftOffset < 0 || r.leftOffset > 100)) {
|
|
364
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CaptionRectangleRange`, `outputRectangle.leftOffset must be between 0 and 100, got ${r.leftOffset}`);
|
|
365
|
+
}
|
|
366
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(r.topOffset) && (r.topOffset < 0 || r.topOffset > 100)) {
|
|
367
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CaptionRectangleRange`, `outputRectangle.topOffset must be between 0 and 100, got ${r.topOffset}`);
|
|
368
|
+
}
|
|
369
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(r.leftOffset) && !aws_cdk_lib_1.Token.isUnresolved(r.width) && r.leftOffset + r.width > 100) {
|
|
370
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CaptionRectangleOverflow`, `outputRectangle leftOffset (${r.leftOffset}) + width (${r.width}) must not exceed 100`);
|
|
371
|
+
}
|
|
372
|
+
if (!aws_cdk_lib_1.Token.isUnresolved(r.topOffset) && !aws_cdk_lib_1.Token.isUnresolved(r.height) && r.topOffset + r.height > 100) {
|
|
373
|
+
throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `CaptionRectangleOverflow`, `outputRectangle topOffset (${r.topOffset}) + height (${r.height}) must not exceed 100`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
_bind() {
|
|
378
|
+
return {
|
|
379
|
+
name: this.name,
|
|
380
|
+
selectorSettings: {
|
|
381
|
+
teletextSourceSettings: {
|
|
382
|
+
pageNumber: this.options.pageNumber,
|
|
383
|
+
outputRectangle: this.options.outputRectangle ? {
|
|
384
|
+
height: this.options.outputRectangle.height,
|
|
385
|
+
width: this.options.outputRectangle.width,
|
|
386
|
+
leftOffset: this.options.outputRectangle.leftOffset,
|
|
387
|
+
topOffset: this.options.outputRectangle.topOffset,
|
|
388
|
+
} : undefined,
|
|
389
|
+
},
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/** @internal */
|
|
395
|
+
class SmartSubtitleCaptionSelector extends CaptionSelector {
|
|
396
|
+
options;
|
|
397
|
+
constructor(name, options) {
|
|
398
|
+
super(name);
|
|
399
|
+
this.options = options;
|
|
400
|
+
}
|
|
401
|
+
_bind() {
|
|
402
|
+
return {
|
|
403
|
+
name: this.name,
|
|
404
|
+
selectorSettings: {
|
|
405
|
+
smartSubtitleSourceSettings: {
|
|
406
|
+
inferenceFeedOutput: this.options.inferenceFeedOutput,
|
|
407
|
+
captionSynchronizationMode: this.options.captionSynchronizationMode?.value,
|
|
408
|
+
},
|
|
409
|
+
},
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi1zZWxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNhcHRpb24tc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNkQ7QUFFN0QsNEVBQTREO0FBRTVEOztHQUVHO0FBQ0gsTUFBYSxXQUFXOztJQUN0QixhQUFhO0lBQ04sTUFBTSxDQUFVLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxjQUFjO0lBQ1AsTUFBTSxDQUFVLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxhQUFhO0lBQ04sTUFBTSxDQUFVLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxZQUFZO0lBQ0wsTUFBTSxDQUFVLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxpQkFBaUI7SUFDVixNQUFNLENBQVUsR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELGNBQWM7SUFDUCxNQUFNLENBQVUsR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMvQjtJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUF4Qkgsa0NBeUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7O0lBQzFCLHNEQUFzRDtJQUMvQyxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLHVFQUF1RTtJQUNoRSxNQUFNLENBQVUsU0FBUyxHQUFHLElB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bkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDZm5DaGFubmVsIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLW1lZGlhbGl2ZSc7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcblxuLyoqXG4gKiBUaGUgT0NSIGxhbmd1YWdlIHRvIHVzZSB3aGVuIGNvbnZlcnRpbmcgYW4gaW1hZ2UtYmFzZWQgY2FwdGlvbiBzb3VyY2UgdG8gdGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIE9jckxhbmd1YWdlIHtcbiAgLyoqIEdlcm1hbiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFVSA9IG5ldyBPY3JMYW5ndWFnZSgnREVVJyk7XG4gIC8qKiBFbmdsaXNoICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5HID0gbmV3IE9jckxhbmd1YWdlKCdFTkcnKTtcbiAgLyoqIEZyZW5jaCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZSQSA9IG5ldyBPY3JMYW5ndWFnZSgnRlJBJyk7XG4gIC8qKiBEdXRjaCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5MRCA9IG5ldyBPY3JMYW5ndWFnZSgnTkxEJyk7XG4gIC8qKiBQb3J0dWd1ZXNlICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUE9SID0gbmV3IE9jckxhbmd1YWdlKCdQT1InKTtcbiAgLyoqIFNwYW5pc2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUEEgPSBuZXcgT2NyTGFuZ3VhZ2UoJ1NQQScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogT2NyTGFuZ3VhZ2Uge1xuICAgIHJldHVybiBuZXcgT2NyTGFuZ3VhZ2UodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgdG8gdXBjb252ZXJ0IDYwOCBjYXB0aW9ucyB0byA3MDguXG4gKi9cbmV4cG9ydCBjbGFzcyBDb252ZXJ0NjA4VG83MDgge1xuICAvKiogUGFzcyB0aHJvdWdoIDYwOCBjYXB0aW9ucyB3aXRob3V0IHVwY29udmVydGluZy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBESVNBQkxFRCA9IG5ldyBDb252ZXJ0NjA4VG83MDgoJ0RJU0FCTEVEJyk7XG4gIC8qKiBVcGNvbnZlcnQgNjA4IGNhcHRpb25zIHRvIDcwOCAoNjA4IGRhdGEgaXMgYWxzbyBwYXNzZWQgdGhyb3VnaCkuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVBDT05WRVJUID0gbmV3IENvbnZlcnQ2MDhUbzcwOCgnVVBDT05WRVJUJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJ0NjA4VG83MDgge1xuICAgIHJldHVybiBuZXcgQ29udmVydDYwOFRvNzA4KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBTQ1RFLTIwIGRldGVjdGlvbiBtb2RlIGZvciBhbiBlbWJlZGRlZCBjYXB0aW9uIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNjdGUyMERldGVjdGlvbiB7XG4gIC8qKiBIYW5kbGUgc3RyZWFtcyB3aXRoIGludGVybWl0dGVudCBvciBub24tYWxpZ25lZCBTQ1RFLTIwIGFuZCBlbWJlZGRlZCBjYXB0aW9ucy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBVVRPID0gbmV3IFNjdGUyMERldGVjdGlvbignQVVUTycpO1xuICAvKiogRG8gbm90IGRldGVjdCBTQ1RFLTIwIGNhcHRpb25zLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9GRiA9IG5ldyBTY3RlMjBEZXRlY3Rpb24oJ09GRicpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogU2N0ZTIwRGV0ZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFNjdGUyMERldGVjdGlvbih2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYW4gZW1iZWRkZWQgKENFQS02MDgvNzA4KSBjYXB0aW9uIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRlZENhcHRpb25Tb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBjb252ZXJ0IDYwOCBjYXB0aW9ucyB0byA3MDguXG4gICAqIEBkZWZhdWx0IENvbnZlcnQ2MDhUbzcwOC5ESVNBQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgY29udmVydDYwOFRvNzA4PzogQ29udmVydDYwOFRvNzA4O1xuICAvKipcbiAgICogU0NURS0yMCBkZXRlY3Rpb24gbW9kZS5cbiAgICogQGRlZmF1bHQgU2N0ZTIwRGV0ZWN0aW9uLk9GRlxuICAgKi9cbiAgcmVhZG9ubHkgc2N0ZTIwRGV0ZWN0aW9uPzogU2N0ZTIwRGV0ZWN0aW9uO1xuICAvKipcbiAgICogVGhlIDYwOC83MDggY2hhbm5lbCBudW1iZXIgd2l0aGluIHRoZSB2aWRlbyB0cmFjayB0byBleHRyYWN0IGNhcHRpb25zIGZyb20uXG4gICAqIEBkZWZhdWx0IC0gTWVkaWFMaXZlIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlNjA4Q2hhbm5lbE51bWJlcj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhbiBhbmNpbGxhcnkgY2FwdGlvbiBzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5jaWxsYXJ5Q2FwdGlvblNvdXJjZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNhcHRpb25zIGNoYW5uZWwgKDEtNCkgdG8gZXh0cmFjdCBmcm9tIHRoZSBhbmNpbGxhcnkgY2FwdGlvbnMuIFJlcXVpcmVkIHdoZW5cbiAgICogY29udmVydGluZyB0byBhbm90aGVyIGNhcHRpb24gZm9ybWF0OyBpZ25vcmVkIHdoZW4gcGFzc2luZyB0aHJvdWdoIGFzIGVtYmVkZGVkLlxuICAgKiBAZGVmYXVsdCAtIE1lZGlhTGl2ZSBpZ25vcmVzIHRoZSBjaGFubmVsIChwYXNzdGhyb3VnaClcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUNoYW5uZWxOdW1iZXI/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSBEVkItU3ViIGNhcHRpb24gc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIER2YlN1YkNhcHRpb25Tb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBQSUQgb2YgdGhlIHNvdXJjZSBjb250ZW50LiBVbnVzZWQgZm9yIERWQi1TdWIgcGFzc3Rocm91Z2guXG4gICAqIEBkZWZhdWx0IC0gTWVkaWFMaXZlIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcGlkPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIE9DUiBsYW5ndWFnZSB0byB1c2Ugd2hlbiBjb252ZXJ0aW5nIHRoaXMgaW1hZ2UtYmFzZWQgc291cmNlIHRvIHRleHQuXG4gICAqIEBkZWZhdWx0IC0gTWVkaWFMaXZlIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgb2NyTGFuZ3VhZ2U/OiBPY3JMYW5ndWFnZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhbiBTQ1RFLTIwIGNhcHRpb24gc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjdGUyMENhcHRpb25Tb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXBjb252ZXJ0IDYwOCBjYXB0aW9ucyB0byA3MDguXG4gICAqIEBkZWZhdWx0IENvbnZlcnQ2MDhUbzcwOC5ESVNBQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgY29udmVydDYwOFRvNzA4PzogQ29udmVydDYwOFRvNzA4O1xuICAvKipcbiAgICogVGhlIDYwOC83MDggY2hhbm5lbCBudW1iZXIgd2l0aGluIHRoZSB2aWRlbyB0cmFjayB0byBleHRyYWN0IGNhcHRpb25zIGZyb20uXG4gICAqIEBkZWZhdWx0IC0gTWVkaWFMaXZlIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlNjA4Q2hhbm5lbE51bWJlcj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhbiBTQ1RFLTI3IGNhcHRpb24gc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjdGUyN0NhcHRpb25Tb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBQSUQgdG8gZXh0cmFjdCBjYXB0aW9ucyBmcm9tLiBTZWUgdGhlIE1lZGlhTGl2ZSBkb2NzIGZvciBob3cgUElEIGFuZCBgbGFuZ3VhZ2VDb2RlYFxuICAgKiBpbnRlcmFjdC5cbiAgICogQGRlZmF1bHQgLSBNZWRpYUxpdmUgc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBwaWQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgT0NSIGxhbmd1YWdlIHRvIHVzZSB3aGVuIGNvbnZlcnRpbmcgdGhpcyBpbWFnZS1iYXNlZCBzb3VyY2UgdG8gdGV4dC5cbiAgICogQGRlZmF1bHQgLSBNZWRpYUxpdmUgc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBvY3JMYW5ndWFnZT86IE9jckxhbmd1YWdlO1xufVxuXG4vKipcbiAqIEEgZGlzcGxheSByZWN0YW5nbGUsIGV4cHJlc3NlZCBhcyBwZXJjZW50YWdlcyBvZiB0aGUgdW5kZXJseWluZyB2aWRlbyBmcmFtZSwgZm9yIGNhcHRpb25zXG4gKiBjb252ZXJ0ZWQgdG8gRUJVLVRULUQgb3IgVFRNTC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXB0aW9uUmVjdGFuZ2xlIHtcbiAgLyoqIEhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlLCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGZyYW1lIGhlaWdodCAoMOKAkzEwMCkuICovXG4gIHJlYWRvbmx5IGhlaWdodDogbnVtYmVyO1xuICAvKiogV2lkdGggb2YgdGhlIHJlY3RhbmdsZSwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBmcmFtZSB3aWR0aCAoMOKAkzEwMCkuICovXG4gIHJlYWRvbmx5IHdpZHRoOiBudW1iZXI7XG4gIC8qKiBMZWZ0IGVkZ2UgcG9zaXRpb24sIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgZnJhbWUgd2lkdGggKDDigJMxMDApLiAqL1xuICByZWFkb25seSBsZWZ0T2Zmc2V0OiBudW1iZXI7XG4gIC8qKiBUb3AgZWRnZSBwb3NpdGlvbiwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBmcmFtZSBoZWlnaHQgKDDigJMxMDApLiAqL1xuICByZWFkb25seSB0b3BPZmZzZXQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBhIFRlbGV0ZXh0IGNhcHRpb24gc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbGV0ZXh0Q2FwdGlvblNvdXJjZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFRlbGV0ZXh0IHBhZ2UgbnVtYmVyIHRvIGV4dHJhY3QgY2FwdGlvbnMgZnJvbSwgYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcgd2l0aCBub1xuICAgKiBgMHhgIHByZWZpeCAocmFuZ2UgYDEwMGDigJNgOEZGYCkuIFVudXNlZCBmb3IgcGFzc3Rocm91Z2guXG4gICAqIEBkZWZhdWx0IC0gTWVkaWFMaXZlIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcGFnZU51bWJlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjYXB0aW9uIHJlY3RhbmdsZSB0byB1c2Ugd2hlbiBjb252ZXJ0aW5nIHRoaXMgc291cmNlIHRvIEVCVS1UVC1EIG9yIFRUTUwuXG4gICAqIEBkZWZhdWx0IC0gbm8gcmVjdGFuZ2xlIChzZXJ2aWNlIGRlZmF1bHQpXG4gICAqL1xuICByZWFkb25seSBvdXRwdXRSZWN0YW5nbGU/OiBDYXB0aW9uUmVjdGFuZ2xlO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHdoZXRoZXIgTWVkaWFMaXZlIGRlbGF5cyB2aWRlbyB0byBzeW5jaHJvbml6ZSBjYXB0aW9ucyB3aXRoIGF1ZGlvIGFuZCB2aWRlbyBvdXRwdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYXB0aW9uU3luY2hyb25pemF0aW9uTW9kZSB7XG4gIC8qKiBNZWRpYUxpdmUgZG9lcyBub3QgZGVsYXkgdmlkZW8gZm9yIGNhcHRpb24gYWxpZ25tZW50LiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PX1ZJREVPX0RFTEFZID0gbmV3IENhcHRpb25TeW5jaHJvbml6YXRpb25Nb2RlKCdOT19WSURFT19ERUxBWScpO1xuICAvKiogTWVkaWFMaXZlIGRlbGF5cyB2aWRlbyB0byBlbnN1cmUgY2FwdGlvbnMgYXJlIHN5bmNocm9uaXplZCB3aXRoIGF1ZGlvIGFuZCB2aWRlby4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWSURFT19BTElHTkVEX0NBUFRJT05TID0gbmV3IENhcHRpb25TeW5jaHJvbml6YXRpb25Nb2RlKCdWSURFT19BTElHTkVEX0NBUFRJT05TJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBDYXB0aW9uU3luY2hyb25pemF0aW9uTW9kZSB7XG4gICAgcmV0dXJuIG5ldyBDYXB0aW9uU3luY2hyb25pemF0aW9uTW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSBzbWFydCBzdWJ0aXRsZSBjYXB0aW9uIHNvdXJjZSAoQUktZ2VuZXJhdGVkIHN1YnRpdGxlcyB2aWEgRWxlbWVudGFsIEluZmVyZW5jZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRTdWJ0aXRsZVNvdXJjZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEVsZW1lbnRhbCBJbmZlcmVuY2UgZmVlZCBvdXRwdXQgdGhhdCBwcm92aWRlcyB0aGUgc3VidGl0bGVzLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgaW5mZXJlbmNlRmVlZE91dHB1dD86IHN0cmluZztcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgTWVkaWFMaXZlIGRlbGF5cyB2aWRlbyB0byBzeW5jaHJvbml6ZSBjYXB0aW9ucyB3aXRoIGF1ZGlvIGFuZCB2aWRlbyBvdXRwdXQuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBjYXB0aW9uU3luY2hyb25pemF0aW9uTW9kZT86IENhcHRpb25TeW5jaHJvbml6YXRpb25Nb2RlO1xufVxuXG4vKipcbiAqIEEgY2FwdGlvbiBzZWxlY3RvciB0aGF0IGlkZW50aWZpZXMgd2hpY2ggY2FwdGlvbnMgdG8gZXh0cmFjdCBmcm9tIHRoZSBpbnB1dC4gQ3JlYXRlIHdpdGhcbiAqIHRoZSBzdGF0aWMgZmFjdG9yeSBtZXRob2RzIOKAlCBvbmUgcGVyIGNhcHRpb24gc291cmNlIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhcHRpb25TZWxlY3RvciB7XG4gIC8qKlxuICAgKiBTZWxlY3QgY2FwdGlvbnMgYnkgbGFuZ3VhZ2UgY29kZSAobm8gc3BlY2lmaWMgc291cmNlIGZvcm1hdCkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJ5TGFuZ3VhZ2UobmFtZTogc3RyaW5nLCBsYW5ndWFnZUNvZGU6IHN0cmluZyk6IENhcHRpb25TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBMYW5ndWFnZUNhcHRpb25TZWxlY3RvcihuYW1lLCBsYW5ndWFnZUNvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBlbWJlZGRlZCAoQ0VBLTYwOC83MDgpIGNhcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlbWJlZGRlZChuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEVtYmVkZGVkQ2FwdGlvblNvdXJjZU9wdGlvbnMgPSB7fSk6IENhcHRpb25TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBFbWJlZGRlZENhcHRpb25TZWxlY3RvcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYW5jaWxsYXJ5IGNhcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbmNpbGxhcnkobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBbmNpbGxhcnlDYXB0aW9uU291cmNlT3B0aW9ucyA9IHt9KTogQ2FwdGlvblNlbGVjdG9yIHtcbiAgICByZXR1cm4gbmV3IEFuY2lsbGFyeUNhcHRpb25TZWxlY3RvcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgQVJJQiBjYXB0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJpYihuYW1lOiBzdHJpbmcpOiBDYXB0aW9uU2VsZWN0b3Ige1xuICAgIHJldHVybiBuZXcgQXJpYkNhcHRpb25TZWxlY3RvcihuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgRFZCLVN1YiAoaW1hZ2UtYmFzZWQpIGNhcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkdmJTdWIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBEdmJTdWJDYXB0aW9uU291cmNlT3B0aW9ucyA9IHt9KTogQ2FwdGlvblNlbGVjdG9yIHtcbiAgICByZXR1cm4gbmV3IER2YlN1YkNhcHRpb25TZWxlY3RvcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgU0NURS0yMCBjYXB0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2N0ZTIwKG5hbWU6IHN0cmluZywgb3B0aW9uczogU2N0ZTIwQ2FwdGlvblNvdXJjZU9wdGlvbnMgPSB7fSk6IENhcHRpb25TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBTY3RlMjBDYXB0aW9uU2VsZWN0b3IobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IFNDVEUtMjcgKGltYWdlLWJhc2VkKSBjYXB0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2N0ZTI3KG5hbWU6IHN0cmluZywgb3B0aW9uczogU2N0ZTI3Q2FwdGlvblNvdXJjZU9wdGlvbnMgPSB7fSk6IENhcHRpb25TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBTY3RlMjdDYXB0aW9uU2VsZWN0b3IobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IFRlbGV0ZXh0IGNhcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0ZWxldGV4dChuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IFRlbGV0ZXh0Q2FwdGlvblNvdXJjZU9wdGlvbnMgPSB7fSk6IENhcHRpb25TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBUZWxldGV4dENhcHRpb25TZWxlY3RvcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Qgc21hcnQgc3VidGl0bGVzIGdlbmVyYXRlZCBieSBFbGVtZW50YWwgSW5mZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzbWFydFN1YnRpdGxlKG5hbWU6IHN0cmluZywgb3B0aW9uczogU21hcnRTdWJ0aXRsZVNvdXJjZU9wdGlvbnMgPSB7fSk6IENhcHRpb25TZWxlY3RvciB7XG4gICAgcmV0dXJuIG5ldyBTbWFydFN1YnRpdGxlQ2FwdGlvblNlbGVjdG9yKG5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgY2FwdGlvbiBzZWxlY3RvciwgdXNlZCB0byBhc3NvY2lhdGUgaXQgd2l0aCBjYXB0aW9uIG91dHB1dHMuIFVuaXF1ZVxuICAgKiB3aXRoaW4gYSBjaGFubmVsLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGFic3RyYWN0IF9iaW5kKCk6IENmbkNoYW5uZWwuQ2FwdGlvblNlbGVjdG9yUHJvcGVydHk7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIExhbmd1YWdlQ2FwdGlvblNlbGVjdG9yIGV4dGVuZHMgQ2FwdGlvblNlbGVjdG9yIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IGxhbmd1YWdlQ29kZTogc3RyaW5nKSB7IHN1cGVyKG5hbWUpOyB9XG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkNhcHRpb25TZWxlY3RvclByb3BlcnR5IHtcbiAgICByZXR1cm4geyBuYW1lOiB0aGlzLm5hbWUsIGxhbmd1YWdlQ29kZTogdGhpcy5sYW5ndWFnZUNvZGUgfTtcbiAgfVxufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBFbWJlZGRlZENhcHRpb25TZWxlY3RvciBleHRlbmRzIENhcHRpb25TZWxlY3RvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBFbWJlZGRlZENhcHRpb25Tb3VyY2VPcHRpb25zKSB7XG4gICAgc3VwZXIobmFtZSk7XG4gICAgaWYgKG9wdGlvbnMuc291cmNlNjA4Q2hhbm5lbE51bWJlciAhPT0gdW5kZWZpbmVkICYmICFUb2tlbi5pc1VucmVzb2x2ZWQob3B0aW9ucy5zb3VyY2U2MDhDaGFubmVsTnVtYmVyKVxuICAgICAgJiYgKG9wdGlvbnMuc291cmNlNjA4Q2hhbm5lbE51bWJlciA8IDEgfHwgb3B0aW9ucy5zb3VyY2U2MDhDaGFubmVsTnVtYmVyID4gNCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgU291cmNlNjA4Q2hhbm5lbE51bWJlclJhbmdlYCwgYHNvdXJjZTYwOENoYW5uZWxOdW1iZXIgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQsIGdvdCAke29wdGlvbnMuc291cmNlNjA4Q2hhbm5lbE51bWJlcn1gKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIF9iaW5kKCk6IENmbkNoYW5uZWwuQ2FwdGlvblNlbGVjdG9yUHJvcGVydHkge1xuICAgIGNvbnN0IGhhc1NldHRpbmdzID0gdGhpcy5vcHRpb25zLmNvbnZlcnQ2MDhUbzcwOCAhPT0gdW5kZWZpbmVkXG4gICAgICB8fCB0aGlzLm9wdGlvbnMuc2N0ZTIwRGV0ZWN0aW9uICE9PSB1bmRlZmluZWRcbiAgICAgIHx8IHRoaXMub3B0aW9ucy5zb3VyY2U2MDhDaGFubmVsTnVtYmVyICE9PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHNlbGVjdG9yU2V0dGluZ3M6IGhhc1NldHRpbmdzID8ge1xuICAgICAgICBlbWJlZGRlZFNvdXJjZVNldHRpbmdzOiB7XG4gICAgICAgICAgY29udmVydDYwOFRvNzA4OiAodGhpcy5vcHRpb25zLmNvbnZlcnQ2MDhUbzcwOCA/PyBDb252ZXJ0NjA4VG83MDguRElTQUJMRUQpLnZhbHVlLFxuICAgICAgICAgIHNjdGUyMERldGVjdGlvbjogKHRoaXMub3B0aW9ucy5zY3RlMjBEZXRlY3Rpb24gPz8gU2N0ZTIwRGV0ZWN0aW9uLk9GRikudmFsdWUsXG4gICAgICAgICAgc291cmNlNjA4Q2hhbm5lbE51bWJlcjogdGhpcy5vcHRpb25zLnNvdXJjZTYwOENoYW5uZWxOdW1iZXIsXG4gICAgICAgIH0sXG4gICAgICB9IDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgQW5jaWxsYXJ5Q2FwdGlvblNlbGVjdG9yIGV4dGVuZHMgQ2FwdGlvblNlbGVjdG9yIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEFuY2lsbGFyeUNhcHRpb25Tb3VyY2VPcHRpb25zKSB7XG4gICAgc3VwZXIobmFtZSk7XG4gICAgaWYgKG9wdGlvbnMuc291cmNlQ2hhbm5lbE51bWJlciAhPT0gdW5kZWZpbmVkICYmICFUb2tlbi5pc1VucmVzb2x2ZWQob3B0aW9ucy5zb3VyY2VDaGFubmVsTnVtYmVyKVxuICAgICAgJiYgKG9wdGlvbnMuc291cmNlQ2hhbm5lbE51bWJlciA8IDEgfHwgb3B0aW9ucy5zb3VyY2VDaGFubmVsTnVtYmVyID4gNCkpIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQW5jaWxsYXJ5Q2hhbm5lbE51bWJlclJhbmdlYCwgYHNvdXJjZUNoYW5uZWxOdW1iZXIgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQsIGdvdCAke29wdGlvbnMuc291cmNlQ2hhbm5lbE51bWJlcn1gKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIF9iaW5kKCk6IENmbkNoYW5uZWwuQ2FwdGlvblNlbGVjdG9yUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzZWxlY3RvclNldHRpbmdzOiB7XG4gICAgICAgIGFuY2lsbGFyeVNvdXJjZVNldHRpbmdzOiB7IHNvdXJjZUFuY2lsbGFyeUNoYW5uZWxOdW1iZXI6IHRoaXMub3B0aW9ucy5zb3VyY2VDaGFubmVsTnVtYmVyIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgQXJpYkNhcHRpb25TZWxlY3RvciBleHRlbmRzIENhcHRpb25TZWxlY3RvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykgeyBzdXBlcihuYW1lKTsgfVxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5DYXB0aW9uU2VsZWN0b3JQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHsgbmFtZTogdGhpcy5uYW1lLCBzZWxlY3RvclNldHRpbmdzOiB7IGFyaWJTb3VyY2VTZXR0aW5nczoge30gfSB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIER2YlN1YkNhcHRpb25TZWxlY3RvciBleHRlbmRzIENhcHRpb25TZWxlY3RvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBEdmJTdWJDYXB0aW9uU291cmNlT3B0aW9ucykgeyBzdXBlcihuYW1lKTsgfVxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5DYXB0aW9uU2VsZWN0b3JQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHNlbGVjdG9yU2V0dGluZ3M6IHtcbiAgICAgICAgZHZiU3ViU291cmNlU2V0dGluZ3M6IHsgcGlkOiB0aGlzLm9wdGlvbnMucGlkLCBvY3JMYW5ndWFnZTogdGhpcy5vcHRpb25zLm9jckxhbmd1YWdlPy52YWx1ZSB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIFNjdGUyMENhcHRpb25TZWxlY3RvciBleHRlbmRzIENhcHRpb25TZWxlY3RvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBTY3RlMjBDYXB0aW9uU291cmNlT3B0aW9ucykge1xuICAgIHN1cGVyKG5hbWUpO1xuICAgIGlmIChvcHRpb25zLnNvdXJjZTYwOENoYW5uZWxOdW1iZXIgIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKG9wdGlvbnMuc291cmNlNjA4Q2hhbm5lbE51bWJlcilcbiAgICAgICYmIChvcHRpb25zLnNvdXJjZTYwOENoYW5uZWxOdW1iZXIgPCAxIHx8IG9wdGlvbnMuc291cmNlNjA4Q2hhbm5lbE51bWJlciA+IDQpKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFNvdXJjZTYwOENoYW5uZWxOdW1iZXJSYW5nZWAsIGBzb3VyY2U2MDhDaGFubmVsTnVtYmVyIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0LCBnb3QgJHtvcHRpb25zLnNvdXJjZTYwOENoYW5uZWxOdW1iZXJ9YCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkNhcHRpb25TZWxlY3RvclByb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgc2VsZWN0b3JTZXR0aW5nczoge1xuICAgICAgICBzY3RlMjBTb3VyY2VTZXR0aW5nczoge1xuICAgICAgICAgIGNvbnZlcnQ2MDhUbzcwODogKHRoaXMub3B0aW9ucy5jb252ZXJ0NjA4VG83MDggPz8gQ29udmVydDYwOFRvNzA4LkRJU0FCTEVEKS52YWx1ZSxcbiAgICAgICAgICBzb3VyY2U2MDhDaGFubmVsTnVtYmVyOiB0aGlzLm9wdGlvbnMuc291cmNlNjA4Q2hhbm5lbE51bWJlcixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBTY3RlMjdDYXB0aW9uU2VsZWN0b3IgZXh0ZW5kcyBDYXB0aW9uU2VsZWN0b3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU2N0ZTI3Q2FwdGlvblNvdXJjZU9wdGlvbnMpIHsgc3VwZXIobmFtZSk7IH1cbiAgcHVibGljIF9iaW5kKCk6IENmbkNoYW5uZWwuQ2FwdGlvblNlbGVjdG9yUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzZWxlY3RvclNldHRpbmdzOiB7XG4gICAgICAgIHNjdGUyN1NvdXJjZVNldHRpbmdzOiB7IHBpZDogdGhpcy5vcHRpb25zLnBpZCwgb2NyTGFuZ3VhZ2U6IHRoaXMub3B0aW9ucy5vY3JMYW5ndWFnZT8udmFsdWUgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBUZWxldGV4dENhcHRpb25TZWxlY3RvciBleHRlbmRzIENhcHRpb25TZWxlY3RvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUZWxldGV4dENhcHRpb25Tb3VyY2VPcHRpb25zKSB7XG4gICAgc3VwZXIobmFtZSk7XG4gICAgaWYgKG9wdGlvbnMub3V0cHV0UmVjdGFuZ2xlKSB7XG4gICAgICBjb25zdCByID0gb3B0aW9ucy5vdXRwdXRSZWN0YW5nbGU7XG4gICAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChyLmhlaWdodCkgJiYgKHIuaGVpZ2h0IDwgMCB8fCByLmhlaWdodCA+IDEwMCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBDYXB0aW9uUmVjdGFuZ2xlUmFuZ2VgLCBgb3V0cHV0UmVjdGFuZ2xlLmhlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwLCBnb3QgJHtyLmhlaWdodH1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHIud2lkdGgpICYmIChyLndpZHRoIDwgMCB8fCByLndpZHRoID4gMTAwKSkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENhcHRpb25SZWN0YW5nbGVSYW5nZWAsIGBvdXRwdXRSZWN0YW5nbGUud2lkdGggbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCwgZ290ICR7ci53aWR0aH1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHIubGVmdE9mZnNldCkgJiYgKHIubGVmdE9mZnNldCA8IDAgfHwgci5sZWZ0T2Zmc2V0ID4gMTAwKSkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YENhcHRpb25SZWN0YW5nbGVSYW5nZWAsIGBvdXRwdXRSZWN0YW5nbGUubGVmdE9mZnNldCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwLCBnb3QgJHtyLmxlZnRPZmZzZXR9YCk7XG4gICAgICB9XG4gICAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChyLnRvcE9mZnNldCkgJiYgKHIudG9wT2Zmc2V0IDwgMCB8fCByLnRvcE9mZnNldCA+IDEwMCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBDYXB0aW9uUmVjdGFuZ2xlUmFuZ2VgLCBgb3V0cHV0UmVjdGFuZ2xlLnRvcE9mZnNldCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwLCBnb3QgJHtyLnRvcE9mZnNldH1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHIubGVmdE9mZnNldCkgJiYgIVRva2VuLmlzVW5yZXNvbHZlZChyLndpZHRoKSAmJiByLmxlZnRPZmZzZXQgKyByLndpZHRoID4gMTAwKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQ2FwdGlvblJlY3RhbmdsZU92ZXJmbG93YCwgYG91dHB1dFJlY3RhbmdsZSBsZWZ0T2Zmc2V0ICgke3IubGVmdE9mZnNldH0pICsgd2lkdGggKCR7ci53aWR0aH0pIG11c3Qgbm90IGV4Y2VlZCAxMDBgKTtcbiAgICAgIH1cbiAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHIudG9wT2Zmc2V0KSAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHIuaGVpZ2h0KSAmJiByLnRvcE9mZnNldCArIHIuaGVpZ2h0ID4gMTAwKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgQ2FwdGlvblJlY3RhbmdsZU92ZXJmbG93YCwgYG91dHB1dFJlY3RhbmdsZSB0b3BPZmZzZXQgKCR7ci50b3BPZmZzZXR9KSArIGhlaWdodCAoJHtyLmhlaWdodH0pIG11c3Qgbm90IGV4Y2VlZCAxMDBgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcHVibGljIF9iaW5kKCk6IENmbkNoYW5uZWwuQ2FwdGlvblNlbGVjdG9yUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBzZWxlY3RvclNldHRpbmdzOiB7XG4gICAgICAgIHRlbGV0ZXh0U291cmNlU2V0dGluZ3M6IHtcbiAgICAgICAgICBwYWdlTnVtYmVyOiB0aGlzLm9wdGlvbnMucGFnZU51bWJlcixcbiAgICAgICAgICBvdXRwdXRSZWN0YW5nbGU6IHRoaXMub3B0aW9ucy5vdXRwdXRSZWN0YW5nbGUgPyB7XG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMub3B0aW9ucy5vdXRwdXRSZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMub3B0aW9ucy5vdXRwdXRSZWN0YW5nbGUud2lkdGgsXG4gICAgICAgICAgICBsZWZ0T2Zmc2V0OiB0aGlzLm9wdGlvbnMub3V0cHV0UmVjdGFuZ2xlLmxlZnRPZmZzZXQsXG4gICAgICAgICAgICB0b3BPZmZzZXQ6IHRoaXMub3B0aW9ucy5vdXRwdXRSZWN0YW5nbGUudG9wT2Zmc2V0LFxuICAgICAgICAgIH0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgU21hcnRTdWJ0aXRsZUNhcHRpb25TZWxlY3RvciBleHRlbmRzIENhcHRpb25TZWxlY3RvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBTbWFydFN1YnRpdGxlU291cmNlT3B0aW9ucykgeyBzdXBlcihuYW1lKTsgfVxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5DYXB0aW9uU2VsZWN0b3JQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIHNlbGVjdG9yU2V0dGluZ3M6IHtcbiAgICAgICAgc21hcnRTdWJ0aXRsZVNvdXJjZVNldHRpbmdzOiB7XG4gICAgICAgICAgaW5mZXJlbmNlRmVlZE91dHB1dDogdGhpcy5vcHRpb25zLmluZmVyZW5jZUZlZWRPdXRwdXQsXG4gICAgICAgICAgY2FwdGlvblN5bmNocm9uaXphdGlvbk1vZGU6IHRoaXMub3B0aW9ucy5jYXB0aW9uU3luY2hyb25pemF0aW9uTW9kZT8udmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|