@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.
Files changed (70) hide show
  1. package/.jsii +60888 -0
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +524 -0
  4. package/LICENSE +201 -0
  5. package/NOTICE +2 -0
  6. package/README.md +1297 -0
  7. package/grants.json +27 -0
  8. package/lib/audio-codec-settings.d.ts +901 -0
  9. package/lib/audio-codec-settings.js +1098 -0
  10. package/lib/audio-selector.d.ts +170 -0
  11. package/lib/audio-selector.js +306 -0
  12. package/lib/avail-settings.d.ts +231 -0
  13. package/lib/avail-settings.js +226 -0
  14. package/lib/caption-selector.d.ts +234 -0
  15. package/lib/caption-selector.js +413 -0
  16. package/lib/caption-settings.d.ts +349 -0
  17. package/lib/caption-settings.js +482 -0
  18. package/lib/channel-features.d.ts +106 -0
  19. package/lib/channel-features.js +85 -0
  20. package/lib/channel-placement-group.d.ts +73 -0
  21. package/lib/channel-placement-group.js +132 -0
  22. package/lib/channel.d.ts +687 -0
  23. package/lib/channel.js +1096 -0
  24. package/lib/cluster.d.ts +129 -0
  25. package/lib/cluster.js +158 -0
  26. package/lib/color-correction.d.ts +39 -0
  27. package/lib/color-correction.js +29 -0
  28. package/lib/destinations.d.ts +242 -0
  29. package/lib/destinations.js +455 -0
  30. package/lib/encode-configuration.d.ts +615 -0
  31. package/lib/encode-configuration.js +629 -0
  32. package/lib/enums.d.ts +698 -0
  33. package/lib/enums.js +1045 -0
  34. package/lib/file-location.d.ts +65 -0
  35. package/lib/file-location.js +150 -0
  36. package/lib/framerate.d.ts +31 -0
  37. package/lib/framerate.js +71 -0
  38. package/lib/index.d.ts +26 -0
  39. package/lib/index.js +43 -0
  40. package/lib/input-attachment.d.ts +319 -0
  41. package/lib/input-attachment.js +228 -0
  42. package/lib/input-security-group.d.ts +51 -0
  43. package/lib/input-security-group.js +123 -0
  44. package/lib/input-specification.d.ts +111 -0
  45. package/lib/input-specification.js +181 -0
  46. package/lib/input.d.ts +505 -0
  47. package/lib/input.js +803 -0
  48. package/lib/m2ts-settings.d.ts +421 -0
  49. package/lib/m2ts-settings.js +469 -0
  50. package/lib/m3u8-settings.d.ts +272 -0
  51. package/lib/m3u8-settings.js +304 -0
  52. package/lib/medialive-grants.generated.d.ts +30 -0
  53. package/lib/medialive-grants.generated.js +92 -0
  54. package/lib/network.d.ts +83 -0
  55. package/lib/network.js +132 -0
  56. package/lib/output-group.d.ts +924 -0
  57. package/lib/output-group.js +941 -0
  58. package/lib/outputs.d.ts +304 -0
  59. package/lib/outputs.js +598 -0
  60. package/lib/sdi-source.d.ts +124 -0
  61. package/lib/sdi-source.js +180 -0
  62. package/lib/shared.d.ts +44 -0
  63. package/lib/shared.js +146 -0
  64. package/lib/video-codec-settings.d.ts +1500 -0
  65. package/lib/video-codec-settings.js +1722 -0
  66. package/lib/video-selection.d.ts +92 -0
  67. package/lib/video-selection.js +95 -0
  68. package/package.json +135 -0
  69. package/rosetta/_generated.ts-fixture +6 -0
  70. package/rosetta/default.ts-fixture +21 -0
@@ -0,0 +1,124 @@
1
+ import type { IResource } from 'aws-cdk-lib';
2
+ import { Resource } from 'aws-cdk-lib';
3
+ import type { ISdiSourceRef, SdiSourceReference } from 'aws-cdk-lib/aws-medialive';
4
+ import type { Construct } from 'constructs';
5
+ /**
6
+ * Represents a MediaLive SDI Source.
7
+ */
8
+ export interface ISdiSource extends IResource, ISdiSourceRef {
9
+ /**
10
+ * The SDI Source ARN.
11
+ * @attribute
12
+ */
13
+ readonly sdiSourceArn: string;
14
+ /**
15
+ * The SDI Source ID.
16
+ * @attribute
17
+ */
18
+ readonly sdiSourceId: string;
19
+ /**
20
+ * The list of inputs currently using this SDI source.
21
+ * @attribute
22
+ */
23
+ readonly sdiSourceInputs?: string[];
24
+ /**
25
+ * The current state of the SDI source.
26
+ * @attribute
27
+ */
28
+ readonly sdiSourceState?: string;
29
+ }
30
+ /**
31
+ * Properties for creating an SDI Source.
32
+ */
33
+ export interface SdiSourceProps {
34
+ /**
35
+ * The name of the SDI source.
36
+ * @default - auto-generated name
37
+ */
38
+ readonly sdiSourceName?: string;
39
+ /**
40
+ * Type of SDI input.
41
+ */
42
+ readonly type: SdiType;
43
+ /**
44
+ * SDI Mode, only applicable for QUAD type.
45
+ * @default - no mode
46
+ */
47
+ readonly mode?: SdiMode;
48
+ /**
49
+ * Tags to add to the SDI source.
50
+ * @default - no tagging
51
+ */
52
+ readonly tags?: {
53
+ [key: string]: string;
54
+ };
55
+ }
56
+ /**
57
+ * The type of SDI input.
58
+ */
59
+ export declare class SdiType {
60
+ /** Single SDI input */
61
+ static readonly SINGLE: SdiType;
62
+ /** Quad SDI input */
63
+ static readonly QUAD: SdiType;
64
+ /** A value not yet modelled by AWS CDK. */
65
+ static of(value: string): SdiType;
66
+ /** The underlying string value passed to CloudFormation. */
67
+ readonly value: string;
68
+ private constructor();
69
+ }
70
+ /**
71
+ * Mode when quad SDI input is selected.
72
+ */
73
+ export declare class SdiMode {
74
+ /** Interleave mode */
75
+ static readonly INTERLEAVE: SdiMode;
76
+ /** Quadrant mode */
77
+ static readonly QUADRANT: SdiMode;
78
+ /** A value not yet modelled by AWS CDK. */
79
+ static of(value: string): SdiMode;
80
+ /** The underlying string value passed to CloudFormation. */
81
+ readonly value: string;
82
+ private constructor();
83
+ }
84
+ /**
85
+ * Attributes for importing an existing SDI Source.
86
+ */
87
+ export interface SdiSourceAttributes {
88
+ /**
89
+ * The SDI Source ARN.
90
+ * @attribute
91
+ */
92
+ readonly sdiSourceArn: string;
93
+ /**
94
+ * The SDI Source ID.
95
+ * @attribute
96
+ */
97
+ readonly sdiSourceId: string;
98
+ }
99
+ /**
100
+ * Defines an AWS Elemental MediaLive SDI Source.
101
+ */
102
+ export declare class SdiSource extends Resource implements ISdiSource {
103
+ /** Uniquely identifies this class. */
104
+ static readonly PROPERTY_INJECTION_ID: string;
105
+ /** Import an existing SDI source by its attributes. */
106
+ static fromSdiSourceAttributes(scope: Construct, id: string, attrs: SdiSourceAttributes): ISdiSource;
107
+ readonly sdiSourceArn: string;
108
+ /**
109
+ * The SDI Source ID.
110
+ * @attribute
111
+ */
112
+ readonly sdiSourceId: string;
113
+ /**
114
+ * The list of inputs currently using this SDI source.
115
+ */
116
+ readonly sdiSourceInputs?: string[];
117
+ /**
118
+ * The current state of the SDI source.
119
+ */
120
+ readonly sdiSourceState?: string;
121
+ /** A reference to this SDI Source resource. */
122
+ get sdiSourceRef(): SdiSourceReference;
123
+ constructor(scope: Construct, id: string, props: SdiSourceProps);
124
+ }
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.SdiSource = exports.SdiMode = exports.SdiType = void 0;
38
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
39
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
41
+ const aws_medialive_1 = require("aws-cdk-lib/aws-medialive");
42
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
43
+ const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
44
+ const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
45
+ /**
46
+ * The type of SDI input.
47
+ */
48
+ class SdiType {
49
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.SdiType", version: "2.268.0-alpha.0" };
50
+ /** Single SDI input */
51
+ static SINGLE = new SdiType('SINGLE');
52
+ /** Quad SDI input */
53
+ static QUAD = new SdiType('QUAD');
54
+ /** A value not yet modelled by AWS CDK. */
55
+ static of(value) {
56
+ return new SdiType(value);
57
+ }
58
+ /** The underlying string value passed to CloudFormation. */
59
+ value;
60
+ constructor(value) {
61
+ this.value = value;
62
+ }
63
+ }
64
+ exports.SdiType = SdiType;
65
+ /**
66
+ * Mode when quad SDI input is selected.
67
+ */
68
+ class SdiMode {
69
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.SdiMode", version: "2.268.0-alpha.0" };
70
+ /** Interleave mode */
71
+ static INTERLEAVE = new SdiMode('INTERLEAVE');
72
+ /** Quadrant mode */
73
+ static QUADRANT = new SdiMode('QUADRANT');
74
+ /** A value not yet modelled by AWS CDK. */
75
+ static of(value) {
76
+ return new SdiMode(value);
77
+ }
78
+ /** The underlying string value passed to CloudFormation. */
79
+ value;
80
+ constructor(value) {
81
+ this.value = value;
82
+ }
83
+ }
84
+ exports.SdiMode = SdiMode;
85
+ /**
86
+ * Defines an AWS Elemental MediaLive SDI Source.
87
+ */
88
+ let SdiSource = (() => {
89
+ let _classDecorators = [prop_injectable_1.propertyInjectable];
90
+ let _classDescriptor;
91
+ let _classExtraInitializers = [];
92
+ let _classThis;
93
+ let _classSuper = aws_cdk_lib_1.Resource;
94
+ var SdiSource = class extends _classSuper {
95
+ static { _classThis = this; }
96
+ static {
97
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
98
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
99
+ SdiSource = _classThis = _classDescriptor.value;
100
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
101
+ }
102
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.SdiSource", version: "2.268.0-alpha.0" };
103
+ /** Uniquely identifies this class. */
104
+ static PROPERTY_INJECTION_ID = '@aws-cdk.aws-medialive-alpha.SdiSource';
105
+ /** Import an existing SDI source by its attributes. */
106
+ static fromSdiSourceAttributes(scope, id, attrs) {
107
+ try {
108
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_SdiSourceAttributes(attrs);
109
+ }
110
+ catch (error) {
111
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
112
+ Error.captureStackTrace(error, this.fromSdiSourceAttributes);
113
+ }
114
+ throw error;
115
+ }
116
+ class Import extends aws_cdk_lib_1.Resource {
117
+ sdiSourceArn = attrs.sdiSourceArn;
118
+ sdiSourceId = attrs.sdiSourceId;
119
+ sdiSourceInputs = undefined;
120
+ sdiSourceState = undefined;
121
+ get sdiSourceRef() {
122
+ return { sdiSourceId: this.sdiSourceId, sdiSourceArn: this.sdiSourceArn };
123
+ }
124
+ }
125
+ return new Import(scope, id);
126
+ }
127
+ sdiSourceArn;
128
+ /**
129
+ * The SDI Source ID.
130
+ * @attribute
131
+ */
132
+ sdiSourceId;
133
+ /**
134
+ * The list of inputs currently using this SDI source.
135
+ */
136
+ sdiSourceInputs;
137
+ /**
138
+ * The current state of the SDI source.
139
+ */
140
+ sdiSourceState;
141
+ /** A reference to this SDI Source resource. */
142
+ get sdiSourceRef() {
143
+ return { sdiSourceId: this.sdiSourceId, sdiSourceArn: this.sdiSourceArn };
144
+ }
145
+ constructor(scope, id, props) {
146
+ super(scope, id, {
147
+ physicalName: props.sdiSourceName ?? aws_cdk_lib_1.Lazy.string({ produce: () => aws_cdk_lib_1.Names.uniqueResourceName(this, { maxLength: 256 }) }),
148
+ });
149
+ try {
150
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_SdiSourceProps(props);
151
+ }
152
+ catch (error) {
153
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
154
+ Error.captureStackTrace(error, SdiSource);
155
+ }
156
+ throw error;
157
+ }
158
+ if (props.mode && props.type.value !== SdiType.QUAD.value) {
159
+ throw new aws_cdk_lib_1.ValidationError((0, helpers_internal_1.lit) `SdiModeOnlyForQuad`, 'mode is only valid when type is QUAD', this);
160
+ }
161
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
162
+ const resource = new aws_medialive_1.CfnSdiSource(this, 'Resource', {
163
+ name: this.physicalName,
164
+ type: props.type?.value,
165
+ mode: props.mode?.value,
166
+ tags: props.tags ? Object.entries(props.tags).map(([key, value]) => ({ key, value })) : undefined,
167
+ });
168
+ this.sdiSourceArn = resource.attrArn;
169
+ this.sdiSourceId = resource.ref;
170
+ this.sdiSourceInputs = resource.attrInputs;
171
+ this.sdiSourceState = resource.attrState;
172
+ }
173
+ static {
174
+ __runInitializers(_classThis, _classExtraInitializers);
175
+ }
176
+ };
177
+ return SdiSource = _classThis;
178
+ })();
179
+ exports.SdiSource = SdiSource;
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RpLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNkaS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsNkNBQXFFO0FBRXJFLDZEQUF5RDtBQUN6RCw0RUFBNEQ7QUFDNUQsOEVBQThFO0FBQzlFLDBFQUEwRTtBQTREMUU7O0dBRUc7QUFDSCxNQUFhLE9BQU87O0lBQ2xCLHVCQUF1QjtJQUNoQixNQUFNLENBQVUsTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELHFCQUFxQjtJQUNkLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEQsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzNCO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCwwQkFpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsT0FBTzs7SUFDbEIsc0JBQXNCO0lBQ2YsTUFBTSxDQUFVLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxvQkFBb0I7SUFDYixNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMzQjtJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztL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LENBQUMsVUFBVSxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztTQUMxQzs7WUEvRFUsdURBQVM7Ozs7O0FBQVQsOEJBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFJlc291cmNlLCBMYXp5LCBOYW1lcywgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBJU2RpU291cmNlUmVmLCBTZGlTb3VyY2VSZWZlcmVuY2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbWVkaWFsaXZlJztcbmltcG9ydCB7IENmblNkaVNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYWxpdmUnO1xuaW1wb3J0IHsgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBNZWRpYUxpdmUgU0RJIFNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2RpU291cmNlIGV4dGVuZHMgSVJlc291cmNlLCBJU2RpU291cmNlUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBTREkgU291cmNlIEFSTi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2RpU291cmNlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBTREkgU291cmNlIElELlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZGlTb3VyY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBpbnB1dHMgY3VycmVudGx5IHVzaW5nIHRoaXMgU0RJIHNvdXJjZS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2RpU291cmNlSW5wdXRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBTREkgc291cmNlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZGlTb3VyY2VTdGF0ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBTREkgU291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNkaVNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBTREkgc291cmNlLlxuICAgKiBAZGVmYXVsdCAtIGF1dG8tZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNkaVNvdXJjZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgU0RJIGlucHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogU2RpVHlwZTtcblxuICAvKipcbiAgICogU0RJIE1vZGUsIG9ubHkgYXBwbGljYWJsZSBmb3IgUVVBRCB0eXBlLlxuICAgKiBAZGVmYXVsdCAtIG5vIG1vZGVcbiAgICovXG4gIHJlYWRvbmx5IG1vZGU/OiBTZGlNb2RlO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGFkZCB0byB0aGUgU0RJIHNvdXJjZS5cbiAgICogQGRlZmF1bHQgLSBubyB0YWdnaW5nXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBTREkgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZGlUeXBlIHtcbiAgLyoqIFNpbmdsZSBTREkgaW5wdXQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSU5HTEUgPSBuZXcgU2RpVHlwZSgnU0lOR0xFJyk7XG4gIC8qKiBRdWFkIFNESSBpbnB1dCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFFVQUQgPSBuZXcgU2RpVHlwZSgnUVVBRCcpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogU2RpVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBTZGlUeXBlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBNb2RlIHdoZW4gcXVhZCBTREkgaW5wdXQgaXMgc2VsZWN0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZGlNb2RlIHtcbiAgLyoqIEludGVybGVhdmUgbW9kZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElOVEVSTEVBVkUgPSBuZXcgU2RpTW9kZSgnSU5URVJMRUFWRScpO1xuICAvKiogUXVhZHJhbnQgbW9kZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFFVQURSQU5UID0gbmV3IFNkaU1vZGUoJ1FVQURSQU5UJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBTZGlNb2RlIHtcbiAgICByZXR1cm4gbmV3IFNkaU1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBTREkgU291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNkaVNvdXJjZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIFNESSBTb3VyY2UgQVJOLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZGlTb3VyY2VBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFNESSBTb3VyY2UgSUQuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHNkaVNvdXJjZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhbiBBV1MgRWxlbWVudGFsIE1lZGlhTGl2ZSBTREkgU291cmNlLlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU2RpU291cmNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJU2RpU291cmNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtbWVkaWFsaXZlLWFscGhhLlNkaVNvdXJjZSc7XG5cbiAgLyoqIEltcG9ydCBhbiBleGlzdGluZyBTREkgc291cmNlIGJ5IGl0cyBhdHRyaWJ1dGVzLiAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZGlTb3VyY2VBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTZGlTb3VyY2VBdHRyaWJ1dGVzKTogSVNkaVNvdXJjZSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJU2RpU291cmNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzZGlTb3VyY2VBcm4gPSBhdHRycy5zZGlTb3VyY2VBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2RpU291cmNlSWQgPSBhdHRycy5zZGlTb3VyY2VJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzZGlTb3VyY2VJbnB1dHMgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2RpU291cmNlU3RhdGUgPSB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgZ2V0IHNkaVNvdXJjZVJlZigpOiBTZGlTb3VyY2VSZWZlcmVuY2Uge1xuICAgICAgICByZXR1cm4geyBzZGlTb3VyY2VJZDogdGhpcy5zZGlTb3VyY2VJZCwgc2RpU291cmNlQXJuOiB0aGlzLnNkaVNvdXJjZUFybiB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHNkaVNvdXJjZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgU0RJIFNvdXJjZSBJRC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNkaVNvdXJjZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGlucHV0cyBjdXJyZW50bHkgdXNpbmcgdGhpcyBTREkgc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNkaVNvdXJjZUlucHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgU0RJIHNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZGlTb3VyY2VTdGF0ZT86IHN0cmluZztcblxuICAvKiogQSByZWZlcmVuY2UgdG8gdGhpcyBTREkgU291cmNlIHJlc291cmNlLiAqL1xuICBwdWJsaWMgZ2V0IHNkaVNvdXJjZVJlZigpOiBTZGlTb3VyY2VSZWZlcmVuY2Uge1xuICAgIHJldHVybiB7IHNkaVNvdXJjZUlkOiB0aGlzLnNkaVNvdXJjZUlkLCBzZGlTb3VyY2VBcm46IHRoaXMuc2RpU291cmNlQXJuIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2RpU291cmNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuc2RpU291cmNlTmFtZSA/PyBMYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMjU2IH0pIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLm1vZGUgJiYgcHJvcHMudHlwZS52YWx1ZSAhPT0gU2RpVHlwZS5RVUFELnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBTZGlNb2RlT25seUZvclF1YWRgLCAnbW9kZSBpcyBvbmx5IHZhbGlkIHdoZW4gdHlwZSBpcyBRVUFEJywgdGhpcyk7XG4gICAgfVxuXG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuU2RpU291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgdHlwZTogcHJvcHMudHlwZT8udmFsdWUsXG4gICAgICBtb2RlOiBwcm9wcy5tb2RlPy52YWx1ZSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MgPyBPYmplY3QuZW50cmllcyhwcm9wcy50YWdzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHsga2V5LCB2YWx1ZSB9KSkgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNkaVNvdXJjZUFybiA9IHJlc291cmNlLmF0dHJBcm47XG4gICAgdGhpcy5zZGlTb3VyY2VJZCA9IHJlc291cmNlLnJlZjtcbiAgICB0aGlzLnNkaVNvdXJjZUlucHV0cyA9IHJlc291cmNlLmF0dHJJbnB1dHM7XG4gICAgdGhpcy5zZGlTb3VyY2VTdGF0ZSA9IHJlc291cmNlLmF0dHJTdGF0ZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The length of a media segment for an output group.
3
+ *
4
+ * Express the length in whole seconds with {@link Segment.seconds} or in milliseconds
5
+ * with {@link Segment.milliseconds}. Some output groups (e.g. HLS) only support
6
+ * whole-second segments and will reject sub-second millisecond values.
7
+ */
8
+ export declare class Segment {
9
+ /**
10
+ * A segment length in whole seconds.
11
+ * @param value Number of seconds (non-negative integer).
12
+ */
13
+ static seconds(value: number): Segment;
14
+ /**
15
+ * A segment length in milliseconds.
16
+ * @param value Number of milliseconds (non-negative integer).
17
+ */
18
+ static milliseconds(value: number): Segment;
19
+ private constructor();
20
+ }
21
+ /**
22
+ * The pixel aspect ratio (PAR) of the video.
23
+ *
24
+ * Use the predefined constants for standard ratios, or {@link PixelAspectRatio.of} for
25
+ * a custom ratio.
26
+ */
27
+ export declare class PixelAspectRatio {
28
+ /** Square pixels (`1:1`). */
29
+ static readonly SQUARE: PixelAspectRatio;
30
+ /**
31
+ * Define a pixel aspect ratio.
32
+ *
33
+ * @param numerator Numerator of the ratio.
34
+ * @param denominator Denominator of the ratio.
35
+ */
36
+ static of(numerator: number, denominator: number): PixelAspectRatio;
37
+ /**
38
+ * @param numerator Numerator of the ratio.
39
+ * @param denominator Denominator of the ratio.
40
+ */
41
+ private constructor();
42
+ /** Returns the string value in `numerator:denominator` form. */
43
+ toString(): string;
44
+ }
package/lib/shared.js ADDED
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PixelAspectRatio = exports.Segment = void 0;
4
+ exports.extractResourceId = extractResourceId;
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
+ const enums_1 = require("./enums");
9
+ /**
10
+ * Parse the trailing `:<id>` resource name out of a MediaLive ARN
11
+ * (`arn:<partition>:medialive:<region>:<account>:<resourceType>:<id>`).
12
+ *
13
+ * @param arn The full resource ARN.
14
+ * @param resourceType The MediaLive resource type, used only in the error message
15
+ * (e.g. `'Channel'`, `'Input'`).
16
+ * @internal
17
+ */
18
+ function extractResourceId(arn, resourceType) {
19
+ const parsed = aws_cdk_lib_1.Arn.split(arn, aws_cdk_lib_1.ArnFormat.COLON_RESOURCE_NAME).resourceName;
20
+ if (parsed === undefined) {
21
+ throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `InvalidMediaLiveArn`, `Could not parse MediaLive ${resourceType} ARN: ${arn}. Expected format: arn:<partition>:medialive:<region>:<account>:<resourceType>:<id>`);
22
+ }
23
+ return parsed;
24
+ }
25
+ /**
26
+ * The length of a media segment for an output group.
27
+ *
28
+ * Express the length in whole seconds with {@link Segment.seconds} or in milliseconds
29
+ * with {@link Segment.milliseconds}. Some output groups (e.g. HLS) only support
30
+ * whole-second segments and will reject sub-second millisecond values.
31
+ */
32
+ class Segment {
33
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Segment", version: "2.268.0-alpha.0" };
34
+ /**
35
+ * A segment length in whole seconds.
36
+ * @param value Number of seconds (non-negative integer).
37
+ */
38
+ static seconds(value) {
39
+ return new Segment(value, enums_1.SegmentLengthUnits.SECONDS);
40
+ }
41
+ /**
42
+ * A segment length in milliseconds.
43
+ * @param value Number of milliseconds (non-negative integer).
44
+ */
45
+ static milliseconds(value) {
46
+ return new Segment(value, enums_1.SegmentLengthUnits.MILLISECONDS);
47
+ }
48
+ /** @internal */
49
+ _value;
50
+ /** @internal */
51
+ _unitsValue;
52
+ constructor(value, units) {
53
+ if (!aws_cdk_lib_1.Token.isUnresolved(value) && (!Number.isInteger(value) || value < 0)) {
54
+ throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `SegmentLength`, `Segment length must be a non-negative integer, got ${value}`);
55
+ }
56
+ this._value = value;
57
+ this._unitsValue = units;
58
+ }
59
+ /**
60
+ * The raw length value, in the configured units.
61
+ * @internal
62
+ */
63
+ _length() {
64
+ return this._value;
65
+ }
66
+ /**
67
+ * The length units.
68
+ * @internal
69
+ */
70
+ _units() {
71
+ return this._unitsValue;
72
+ }
73
+ /**
74
+ * The length in whole seconds, for output groups whose segment length is seconds-only.
75
+ * Throws when the segment is expressed in sub-second milliseconds.
76
+ * @internal
77
+ */
78
+ _toSeconds() {
79
+ if (this._unitsValue === enums_1.SegmentLengthUnits.SECONDS) {
80
+ return this._value;
81
+ }
82
+ if (this._value % 1000 !== 0) {
83
+ throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `SegmentLengthNotWholeSeconds`, `Segment length for this output group must be a whole number of seconds, got ${this._value} milliseconds`);
84
+ }
85
+ return this._value / 1000;
86
+ }
87
+ }
88
+ exports.Segment = Segment;
89
+ /**
90
+ * The pixel aspect ratio (PAR) of the video.
91
+ *
92
+ * Use the predefined constants for standard ratios, or {@link PixelAspectRatio.of} for
93
+ * a custom ratio.
94
+ */
95
+ class PixelAspectRatio {
96
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.PixelAspectRatio", version: "2.268.0-alpha.0" };
97
+ /** Square pixels (`1:1`). */
98
+ static SQUARE = new PixelAspectRatio(1, 1);
99
+ /**
100
+ * Define a pixel aspect ratio.
101
+ *
102
+ * @param numerator Numerator of the ratio.
103
+ * @param denominator Denominator of the ratio.
104
+ */
105
+ static of(numerator, denominator) {
106
+ if (!aws_cdk_lib_1.Token.isUnresolved(numerator) && (!Number.isInteger(numerator) || numerator <= 0)) {
107
+ throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `PixelAspectRatioNumerator`, `Pixel aspect ratio numerator must be a positive integer, got ${numerator}`);
108
+ }
109
+ if (!aws_cdk_lib_1.Token.isUnresolved(denominator) && (!Number.isInteger(denominator) || denominator <= 0)) {
110
+ throw new aws_cdk_lib_1.UnscopedValidationError((0, helpers_internal_1.lit) `PixelAspectRatioDenominator`, `Pixel aspect ratio denominator must be a positive integer, got ${denominator}`);
111
+ }
112
+ return new PixelAspectRatio(numerator, denominator);
113
+ }
114
+ /** @internal */
115
+ _numeratorValue;
116
+ /** @internal */
117
+ _denominatorValue;
118
+ /**
119
+ * @param numerator Numerator of the ratio.
120
+ * @param denominator Denominator of the ratio.
121
+ */
122
+ constructor(numerator, denominator) {
123
+ this._numeratorValue = numerator;
124
+ this._denominatorValue = denominator;
125
+ }
126
+ /** Returns the string value in `numerator:denominator` form. */
127
+ toString() {
128
+ return `${this._numeratorValue}:${this._denominatorValue}`;
129
+ }
130
+ /**
131
+ * The numerator of the ratio.
132
+ * @internal
133
+ */
134
+ _numerator() {
135
+ return this._numeratorValue;
136
+ }
137
+ /**
138
+ * The denominator of the ratio.
139
+ * @internal
140
+ */
141
+ _denominator() {
142
+ return this._denominatorValue;
143
+ }
144
+ }
145
+ exports.PixelAspectRatio = PixelAspectRatio;
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBLDhDQVNDOztBQXRCRCw2Q0FBNkU7QUFDN0UsNEVBQTREO0FBQzVELG1DQUE2QztBQUU3Qzs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxZQUFvQjtJQUNqRSxNQUFNLE1BQU0sR0FBRyxpQkFBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsdUJBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUMxRSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUkscUNBQXVCLENBQy9CLElBQUEsc0JBQUcsRUFBQSxxQkFBcUIsRUFDeEIsNkJBQTZCLFlBQVksU0FBUyxHQUFHLHFGQUFxRixDQUMzSSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLE9BQU87O0lBQ2xCOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBYTtRQUNqQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSwwQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN2RDtJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBYTtRQUN0QyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSwwQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUM1RDtJQUVELGdCQUFnQjtJQUNDLE1BQU0sQ0FBUztJQUNoQyxnQkFBZ0I7SUFDQyxXQUFXLENBQXFCO0lBRWpELFlBQW9CLEtBQWEsRUFBRSxLQUF5QjtRQUMxRCxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUUsTUFBTSxJQUFJLHFDQUF1QixDQUFDLElBQUEsc0JBQUcsRUFBQSxlQUFlLEVBQUUsc0RBQXNELEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkgsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0tBQzFCO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtJQUVEOzs7T0FHRztJQUNJLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7S0FDekI7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVTtRQUNmLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSywwQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLHFDQUF1QixDQUFDLElBQUEsc0JBQUcsRUFBQSw4QkFBOEIsRUFBRSwrRUFBK0UsSUFBSSxDQUFDLE1BQU0sZUFBZSxDQUFDLENBQUM7UUFDbEwsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDM0I7O0FBM0RILDBCQTREQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxnQkFBZ0I7O0lBQzNCLDZCQUE2QjtJQUN0QixNQUFNLENBQVUsTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTNEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFpQixFQUFFLFdBQW1CO1FBQ3JELElBQUksQ0FBQyxtQkFBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN2RixNQUFNLElBQUkscUNBQXVCLENBQUMsSUFBQSxzQkFBRyxFQUFBLDJCQUEyQixFQUFFLGdFQUFnRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pKLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0YsTUFBTSxJQUFJLHFDQUF1QixDQUFDLElBQUEsc0JBQUcsRUFBQSw2QkFBNkIsRUFBRSxrRUFBa0UsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2SixDQUFDO1FBQ0QsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNyRDtJQUVELGdCQUFnQjtJQUNDLGVBQWUsQ0FBUztJQUN6QyxnQkFBZ0I7SUFDQyxpQkFBaUIsQ0FBUztJQUUzQzs7O09BR0c7SUFDSCxZQUFvQixTQUFpQixFQUFFLFdBQW1CO1FBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUM7S0FDdEM7SUFFRCxnRUFBZ0U7SUFDekQsUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0tBQzVEO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztLQUM3QjtJQUVEOzs7T0FHRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7S0FDL0I7O0FBckRILDRDQXNEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFybiwgQXJuRm9ybWF0LCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvciwgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBsaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9oZWxwZXJzLWludGVybmFsJztcbmltcG9ydCB7IFNlZ21lbnRMZW5ndGhVbml0cyB9IGZyb20gJy4vZW51bXMnO1xuXG4vKipcbiAqIFBhcnNlIHRoZSB0cmFpbGluZyBgOjxpZD5gIHJlc291cmNlIG5hbWUgb3V0IG9mIGEgTWVkaWFMaXZlIEFSTlxuICogKGBhcm46PHBhcnRpdGlvbj46bWVkaWFsaXZlOjxyZWdpb24+OjxhY2NvdW50Pjo8cmVzb3VyY2VUeXBlPjo8aWQ+YCkuXG4gKlxuICogQHBhcmFtIGFybiBUaGUgZnVsbCByZXNvdXJjZSBBUk4uXG4gKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSBNZWRpYUxpdmUgcmVzb3VyY2UgdHlwZSwgdXNlZCBvbmx5IGluIHRoZSBlcnJvciBtZXNzYWdlXG4gKiAoZS5nLiBgJ0NoYW5uZWwnYCwgYCdJbnB1dCdgKS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFJlc291cmNlSWQoYXJuOiBzdHJpbmcsIHJlc291cmNlVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGFyc2VkID0gQXJuLnNwbGl0KGFybiwgQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcbiAgaWYgKHBhcnNlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKFxuICAgICAgbGl0YEludmFsaWRNZWRpYUxpdmVBcm5gLFxuICAgICAgYENvdWxkIG5vdCBwYXJzZSBNZWRpYUxpdmUgJHtyZXNvdXJjZVR5cGV9IEFSTjogJHthcm59LiBFeHBlY3RlZCBmb3JtYXQ6IGFybjo8cGFydGl0aW9uPjptZWRpYWxpdmU6PHJlZ2lvbj46PGFjY291bnQ+OjxyZXNvdXJjZVR5cGU+OjxpZD5gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuLyoqXG4gKiBUaGUgbGVuZ3RoIG9mIGEgbWVkaWEgc2VnbWVudCBmb3IgYW4gb3V0cHV0IGdyb3VwLlxuICpcbiAqIEV4cHJlc3MgdGhlIGxlbmd0aCBpbiB3aG9sZSBzZWNvbmRzIHdpdGgge0BsaW5rIFNlZ21lbnQuc2Vjb25kc30gb3IgaW4gbWlsbGlzZWNvbmRzXG4gKiB3aXRoIHtAbGluayBTZWdtZW50Lm1pbGxpc2Vjb25kc30uIFNvbWUgb3V0cHV0IGdyb3VwcyAoZS5nLiBITFMpIG9ubHkgc3VwcG9ydFxuICogd2hvbGUtc2Vjb25kIHNlZ21lbnRzIGFuZCB3aWxsIHJlamVjdCBzdWItc2Vjb25kIG1pbGxpc2Vjb25kIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlZ21lbnQge1xuICAvKipcbiAgICogQSBzZWdtZW50IGxlbmd0aCBpbiB3aG9sZSBzZWNvbmRzLlxuICAgKiBAcGFyYW0gdmFsdWUgTnVtYmVyIG9mIHNlY29uZHMgKG5vbi1uZWdhdGl2ZSBpbnRlZ2VyKS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2Vjb25kcyh2YWx1ZTogbnVtYmVyKTogU2VnbWVudCB7XG4gICAgcmV0dXJuIG5ldyBTZWdtZW50KHZhbHVlLCBTZWdtZW50TGVuZ3RoVW5pdHMuU0VDT05EUyk7XG4gIH1cblxuICAvKipcbiAgICogQSBzZWdtZW50IGxlbmd0aCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIEBwYXJhbSB2YWx1ZSBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIChub24tbmVnYXRpdmUgaW50ZWdlcikuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1pbGxpc2Vjb25kcyh2YWx1ZTogbnVtYmVyKTogU2VnbWVudCB7XG4gICAgcmV0dXJuIG5ldyBTZWdtZW50KHZhbHVlLCBTZWdtZW50TGVuZ3RoVW5pdHMuTUlMTElTRUNPTkRTKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsdWU6IG51bWJlcjtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF91bml0c1ZhbHVlOiBTZWdtZW50TGVuZ3RoVW5pdHM7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogbnVtYmVyLCB1bml0czogU2VnbWVudExlbmd0aFVuaXRzKSB7XG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpICYmICghTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgfHwgdmFsdWUgPCAwKSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBTZWdtZW50TGVuZ3RoYCwgYFNlZ21lbnQgbGVuZ3RoIG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlciwgZ290ICR7dmFsdWV9YCk7XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fdW5pdHNWYWx1ZSA9IHVuaXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByYXcgbGVuZ3RoIHZhbHVlLCBpbiB0aGUgY29uZmlndXJlZCB1bml0cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2xlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoIHVuaXRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdW5pdHMoKTogU2VnbWVudExlbmd0aFVuaXRzIHtcbiAgICByZXR1cm4gdGhpcy5fdW5pdHNWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoIGluIHdob2xlIHNlY29uZHMsIGZvciBvdXRwdXQgZ3JvdXBzIHdob3NlIHNlZ21lbnQgbGVuZ3RoIGlzIHNlY29uZHMtb25seS5cbiAgICogVGhyb3dzIHdoZW4gdGhlIHNlZ21lbnQgaXMgZXhwcmVzc2VkIGluIHN1Yi1zZWNvbmQgbWlsbGlzZWNvbmRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9TZWNvbmRzKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3VuaXRzVmFsdWUgPT09IFNlZ21lbnRMZW5ndGhVbml0cy5TRUNPTkRTKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIGlmICh0aGlzLl92YWx1ZSAlIDEwMDAgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihsaXRgU2VnbWVudExlbmd0aE5vdFdob2xlU2Vjb25kc2AsIGBTZWdtZW50IGxlbmd0aCBmb3IgdGhpcyBvdXRwdXQgZ3JvdXAgbXVzdCBiZSBhIHdob2xlIG51bWJlciBvZiBzZWNvbmRzLCBnb3QgJHt0aGlzLl92YWx1ZX0gbWlsbGlzZWNvbmRzYCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl92YWx1ZSAvIDEwMDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgcGl4ZWwgYXNwZWN0IHJhdGlvIChQQVIpIG9mIHRoZSB2aWRlby5cbiAqXG4gKiBVc2UgdGhlIHByZWRlZmluZWQgY29uc3RhbnRzIGZvciBzdGFuZGFyZCByYXRpb3MsIG9yIHtAbGluayBQaXhlbEFzcGVjdFJhdGlvLm9mfSBmb3JcbiAqIGEgY3VzdG9tIHJhdGlvLlxuICovXG5leHBvcnQgY2xhc3MgUGl4ZWxBc3BlY3RSYXRpbyB7XG4gIC8qKiBTcXVhcmUgcGl4ZWxzIChgMToxYCkuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1FVQVJFID0gbmV3IFBpeGVsQXNwZWN0UmF0aW8oMSwgMSk7XG5cbiAgLyoqXG4gICAqIERlZmluZSBhIHBpeGVsIGFzcGVjdCByYXRpby5cbiAgICpcbiAgICogQHBhcmFtIG51bWVyYXRvciBOdW1lcmF0b3Igb2YgdGhlIHJhdGlvLlxuICAgKiBAcGFyYW0gZGVub21pbmF0b3IgRGVub21pbmF0b3Igb2YgdGhlIHJhdGlvLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihudW1lcmF0b3I6IG51bWJlciwgZGVub21pbmF0b3I6IG51bWJlcik6IFBpeGVsQXNwZWN0UmF0aW8ge1xuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKG51bWVyYXRvcikgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKG51bWVyYXRvcikgfHwgbnVtZXJhdG9yIDw9IDApKSB7XG4gICAgICB0aHJvdyBuZXcgVW5zY29wZWRWYWxpZGF0aW9uRXJyb3IobGl0YFBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3JgLCBgUGl4ZWwgYXNwZWN0IHJhdGlvIG51bWVyYXRvciBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgZ290ICR7bnVtZXJhdG9yfWApO1xuICAgIH1cbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChkZW5vbWluYXRvcikgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGRlbm9taW5hdG9yKSB8fCBkZW5vbWluYXRvciA8PSAwKSkge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKGxpdGBQaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3JgLCBgUGl4ZWwgYXNwZWN0IHJhdGlvIGRlbm9taW5hdG9yIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgJHtkZW5vbWluYXRvcn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQaXhlbEFzcGVjdFJhdGlvKG51bWVyYXRvciwgZGVub21pbmF0b3IpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9udW1lcmF0b3JWYWx1ZTogbnVtYmVyO1xuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlbm9taW5hdG9yVmFsdWU6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIG51bWVyYXRvciBOdW1lcmF0b3Igb2YgdGhlIHJhdGlvLlxuICAgKiBAcGFyYW0gZGVub21pbmF0b3IgRGVub21pbmF0b3Igb2YgdGhlIHJhdGlvLlxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihudW1lcmF0b3I6IG51bWJlciwgZGVub21pbmF0b3I6IG51bWJlcikge1xuICAgIHRoaXMuX251bWVyYXRvclZhbHVlID0gbnVtZXJhdG9yO1xuICAgIHRoaXMuX2Rlbm9taW5hdG9yVmFsdWUgPSBkZW5vbWluYXRvcjtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBzdHJpbmcgdmFsdWUgaW4gYG51bWVyYXRvcjpkZW5vbWluYXRvcmAgZm9ybS4gKi9cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX251bWVyYXRvclZhbHVlfToke3RoaXMuX2Rlbm9taW5hdG9yVmFsdWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtZXJhdG9yIG9mIHRoZSByYXRpby5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX251bWVyYXRvcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1lcmF0b3JWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVub21pbmF0b3Igb2YgdGhlIHJhdGlvLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfZGVub21pbmF0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVub21pbmF0b3JWYWx1ZTtcbiAgfVxufVxuIl19