@horietakehiro/aws-cdk-utul 0.33.37 → 0.33.38
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/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.d.ts +6 -6
- package/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.js +1 -1
- package/lib/types/cfn-resource-types/aws-appsync-channelnamespace.d.ts +37 -10
- package/lib/types/cfn-resource-types/aws-appsync-channelnamespace.js +1 -1
- package/lib/types/cfn-resource-types/aws-cloudfront-distributiontenant.d.ts +55 -0
- package/lib/types/cfn-resource-types/aws-cloudfront-distributiontenant.js +3 -0
- package/lib/types/cfn-resource-types/aws-dynamodb-table.d.ts +24 -24
- package/lib/types/cfn-resource-types/aws-dynamodb-table.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecr-registryscanningconfiguration.d.ts +55 -0
- package/lib/types/cfn-resource-types/aws-ecr-registryscanningconfiguration.js +3 -0
- package/lib/types/cfn-resource-types/aws-ecs-taskdefinition.d.ts +21 -19
- package/lib/types/cfn-resource-types/aws-ecs-taskdefinition.js +1 -1
- package/lib/types/cfn-resource-types/aws-iam-user.d.ts +0 -1
- package/lib/types/cfn-resource-types/aws-iam-user.js +1 -1
- package/lib/types/cfn-resource-types/aws-kms-alias.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-kms-alias.js +1 -1
- package/lib/types/cfn-resource-types/aws-kms-key.d.ts +16 -16
- package/lib/types/cfn-resource-types/aws-kms-key.js +1 -1
- package/lib/types/cfn-resource-types/aws-mediapackagev2-originendpoint.d.ts +18 -6
- package/lib/types/cfn-resource-types/aws-mediapackagev2-originendpoint.js +1 -1
- package/lib/types/cfn-resource-types.d.ts +4 -0
- package/lib/types/cfn-resource-types.js +29 -25
- package/package.json +1 -1
|
@@ -6,11 +6,11 @@ export interface _AWS_APIGATEWAYV2_DOMAINNAME {
|
|
|
6
6
|
MutualTlsAuthentication?: MutualTlsAuthentication;
|
|
7
7
|
RegionalHostedZoneId?: string;
|
|
8
8
|
RegionalDomainName?: string;
|
|
9
|
-
DomainNameArn?: string;
|
|
10
9
|
/**
|
|
11
10
|
* The custom domain name for your API in Amazon API Gateway. Uppercase letters and the underscore (``_``) character are not supported.
|
|
12
11
|
*/
|
|
13
12
|
DomainName: string;
|
|
13
|
+
DomainNameArn?: string;
|
|
14
14
|
/**
|
|
15
15
|
* The domain name configurations.
|
|
16
16
|
*/
|
|
@@ -48,6 +48,11 @@ export interface DomainNameConfiguration {
|
|
|
48
48
|
* The Amazon resource name (ARN) for the public certificate issued by ACMlong. This ARN is used to validate custom domain ownership. It's required only if you configure mutual TLS and use either an ACM-imported or a private CA certificate ARN as the regionalCertificateArn.
|
|
49
49
|
*/
|
|
50
50
|
OwnershipVerificationCertificateArn?: string;
|
|
51
|
+
IpAddressType?: string;
|
|
52
|
+
/**
|
|
53
|
+
* The Transport Layer Security (TLS) version of the security policy for this domain name. The valid values are ``TLS_1_0`` and ``TLS_1_2``.
|
|
54
|
+
*/
|
|
55
|
+
SecurityPolicy?: string;
|
|
51
56
|
/**
|
|
52
57
|
* The endpoint type.
|
|
53
58
|
*/
|
|
@@ -56,13 +61,8 @@ export interface DomainNameConfiguration {
|
|
|
56
61
|
* The user-friendly name of the certificate that will be used by the edge-optimized endpoint for this domain name.
|
|
57
62
|
*/
|
|
58
63
|
CertificateName?: string;
|
|
59
|
-
/**
|
|
60
|
-
* The Transport Layer Security (TLS) version of the security policy for this domain name. The valid values are ``TLS_1_0`` and ``TLS_1_2``.
|
|
61
|
-
*/
|
|
62
|
-
SecurityPolicy?: string;
|
|
63
64
|
/**
|
|
64
65
|
* An AWS-managed certificate that will be used by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.
|
|
65
66
|
*/
|
|
66
67
|
CertificateArn?: string;
|
|
67
|
-
IpAddressType?: string;
|
|
68
68
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwaWdhdGV3YXl2Mi1kb21haW5uYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFwaWdhdGV3YXl2Mi1kb21haW5uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBgYEFXUzo6QXBpR2F0ZXdheVYyOjpEb21haW5OYW1lYGAgcmVzb3VyY2Ugc3BlY2lmaWVzIGEgY3VzdG9tIGRvbWFpbiBuYW1lIGZvciB5b3VyIEFQSSBpbiBBbWF6b24gQVBJIEdhdGV3YXkgKEFQSSBHYXRld2F5KS4gXG4gKiAgWW91IGNhbiB1c2UgYSBjdXN0b20gZG9tYWluIG5hbWUgdG8gcHJvdmlkZSBhIFVSTCB0aGF0J3MgbW9yZSBpbnR1aXRpdmUgYW5kIGVhc2llciB0byByZWNhbGwuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHVzaW5nIGN1c3RvbSBkb21haW4gbmFtZXMsIHNlZSBbU2V0IHVwIEN1c3RvbSBEb21haW4gTmFtZSBmb3IgYW4gQVBJIGluIEFQSSBHYXRld2F5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBpZ2F0ZXdheS9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvaG93LXRvLWN1c3RvbS1kb21haW5zLmh0bWwpIGluIHRoZSAqQVBJIEdhdGV3YXkgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0FQSUdBVEVXQVlWMl9ET01BSU5OQU1FIHtcbk11dHVhbFRsc0F1dGhlbnRpY2F0aW9uPzogTXV0dWFsVGxzQXV0aGVudGljYXRpb25cblJlZ2lvbmFsSG9zdGVkWm9uZUlkPzogc3RyaW5nXG5SZWdpb25hbERvbWFpbk5hbWU/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwaWdhdGV3YXl2Mi1kb21haW5uYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFwaWdhdGV3YXl2Mi1kb21haW5uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBgYEFXUzo6QXBpR2F0ZXdheVYyOjpEb21haW5OYW1lYGAgcmVzb3VyY2Ugc3BlY2lmaWVzIGEgY3VzdG9tIGRvbWFpbiBuYW1lIGZvciB5b3VyIEFQSSBpbiBBbWF6b24gQVBJIEdhdGV3YXkgKEFQSSBHYXRld2F5KS4gXG4gKiAgWW91IGNhbiB1c2UgYSBjdXN0b20gZG9tYWluIG5hbWUgdG8gcHJvdmlkZSBhIFVSTCB0aGF0J3MgbW9yZSBpbnR1aXRpdmUgYW5kIGVhc2llciB0byByZWNhbGwuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHVzaW5nIGN1c3RvbSBkb21haW4gbmFtZXMsIHNlZSBbU2V0IHVwIEN1c3RvbSBEb21haW4gTmFtZSBmb3IgYW4gQVBJIGluIEFQSSBHYXRld2F5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBpZ2F0ZXdheS9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvaG93LXRvLWN1c3RvbS1kb21haW5zLmh0bWwpIGluIHRoZSAqQVBJIEdhdGV3YXkgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0FQSUdBVEVXQVlWMl9ET01BSU5OQU1FIHtcbk11dHVhbFRsc0F1dGhlbnRpY2F0aW9uPzogTXV0dWFsVGxzQXV0aGVudGljYXRpb25cblJlZ2lvbmFsSG9zdGVkWm9uZUlkPzogc3RyaW5nXG5SZWdpb25hbERvbWFpbk5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGN1c3RvbSBkb21haW4gbmFtZSBmb3IgeW91ciBBUEkgaW4gQW1hem9uIEFQSSBHYXRld2F5LiBVcHBlcmNhc2UgbGV0dGVycyBhbmQgdGhlIHVuZGVyc2NvcmUgKGBgX2BgKSBjaGFyYWN0ZXIgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gKi9cbkRvbWFpbk5hbWU6IHN0cmluZ1xuRG9tYWluTmFtZUFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZG9tYWluIG5hbWUgY29uZmlndXJhdGlvbnMuXG4gKi9cbkRvbWFpbk5hbWVDb25maWd1cmF0aW9ucz86IERvbWFpbk5hbWVDb25maWd1cmF0aW9uW11cbi8qKlxuICogVGhlIGNvbGxlY3Rpb24gb2YgdGFncyBhc3NvY2lhdGVkIHdpdGggYSBkb21haW4gbmFtZS5cbiAqL1xuVGFncz86IHtcbi8qKlxuICogVGhpcyBpbnRlcmZhY2Ugd2FzIHJlZmVyZW5jZWQgYnkgYHVuZGVmaW5lZGAncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiLipcIi5cbiAqL1xuW2s6IHN0cmluZ106IHN0cmluZ1xufVxufVxuLyoqXG4gKiBUaGUgbXV0dWFsIFRMUyBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciBhIGN1c3RvbSBkb21haW4gbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNdXR1YWxUbHNBdXRoZW50aWNhdGlvbiB7XG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBTMyBvYmplY3QgdGhhdCBjb250YWlucyB5b3VyIHRydXN0c3RvcmUuIFRvIHNwZWNpZnkgYSB2ZXJzaW9uLCB5b3UgbXVzdCBoYXZlIHZlcnNpb25pbmcgZW5hYmxlZCBmb3IgdGhlIFMzIGJ1Y2tldC5cbiAqL1xuVHJ1c3RzdG9yZVZlcnNpb24/OiBzdHJpbmdcbi8qKlxuICogQW4gQW1hem9uIFMzIFVSTCB0aGF0IHNwZWNpZmllcyB0aGUgdHJ1c3RzdG9yZSBmb3IgbXV0dWFsIFRMUyBhdXRoZW50aWNhdGlvbiwgZm9yIGV4YW1wbGUsIGBgczM6Ly9idWNrZXQtbmFtZS9rZXktbmFtZWBgLiBUaGUgdHJ1c3RzdG9yZSBjYW4gY29udGFpbiBjZXJ0aWZpY2F0ZXMgZnJvbSBwdWJsaWMgb3IgcHJpdmF0ZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdGllcy4gVG8gdXBkYXRlIHRoZSB0cnVzdHN0b3JlLCB1cGxvYWQgYSBuZXcgdmVyc2lvbiB0byBTMywgYW5kIHRoZW4gdXBkYXRlIHlvdXIgY3VzdG9tIGRvbWFpbiBuYW1lIHRvIHVzZSB0aGUgbmV3IHZlcnNpb24uIFRvIHVwZGF0ZSB0aGUgdHJ1c3RzdG9yZSwgeW91IG11c3QgaGF2ZSBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgdGhlIFMzIG9iamVjdC5cbiAqL1xuVHJ1c3RzdG9yZVVyaT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgYGBEb21haW5OYW1lQ29uZmlndXJhdGlvbmBgIHByb3BlcnR5IHR5cGUgc3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBhbiBBUEkncyBkb21haW4gbmFtZS5cbiAqICAgYGBEb21haW5OYW1lQ29uZmlndXJhdGlvbmBgIGlzIGEgcHJvcGVydHkgb2YgdGhlIFtBV1M6OkFwaUdhdGV3YXlWMjo6RG9tYWluTmFtZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWFwaWdhdGV3YXl2Mi1kb21haW5uYW1lLmh0bWwpIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbk5hbWVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiByZXNvdXJjZSBuYW1lIChBUk4pIGZvciB0aGUgcHVibGljIGNlcnRpZmljYXRlIGlzc3VlZCBieSBBQ01sb25nLiBUaGlzIEFSTiBpcyB1c2VkIHRvIHZhbGlkYXRlIGN1c3RvbSBkb21haW4gb3duZXJzaGlwLiBJdCdzIHJlcXVpcmVkIG9ubHkgaWYgeW91IGNvbmZpZ3VyZSBtdXR1YWwgVExTIGFuZCB1c2UgZWl0aGVyIGFuIEFDTS1pbXBvcnRlZCBvciBhIHByaXZhdGUgQ0EgY2VydGlmaWNhdGUgQVJOIGFzIHRoZSByZWdpb25hbENlcnRpZmljYXRlQXJuLlxuICovXG5Pd25lcnNoaXBWZXJpZmljYXRpb25DZXJ0aWZpY2F0ZUFybj86IHN0cmluZ1xuSXBBZGRyZXNzVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIHZlcnNpb24gb2YgdGhlIHNlY3VyaXR5IHBvbGljeSBmb3IgdGhpcyBkb21haW4gbmFtZS4gVGhlIHZhbGlkIHZhbHVlcyBhcmUgYGBUTFNfMV8wYGAgYW5kIGBgVExTXzFfMmBgLlxuICovXG5TZWN1cml0eVBvbGljeT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZW5kcG9pbnQgdHlwZS5cbiAqL1xuRW5kcG9pbnRUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSB1c2VyLWZyaWVuZGx5IG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBlZGdlLW9wdGltaXplZCBlbmRwb2ludCBmb3IgdGhpcyBkb21haW4gbmFtZS5cbiAqL1xuQ2VydGlmaWNhdGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIEFuIEFXUy1tYW5hZ2VkIGNlcnRpZmljYXRlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBlZGdlLW9wdGltaXplZCBlbmRwb2ludCBmb3IgdGhpcyBkb21haW4gbmFtZS4gQVdTIENlcnRpZmljYXRlIE1hbmFnZXIgaXMgdGhlIG9ubHkgc3VwcG9ydGVkIHNvdXJjZS5cbiAqL1xuQ2VydGlmaWNhdGVBcm4/OiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Namespace indentifier.
|
|
3
|
+
*/
|
|
4
|
+
export type Namespace = string;
|
|
1
5
|
/**
|
|
2
6
|
* Security configuration for your AppSync API.
|
|
3
7
|
*/
|
|
@@ -23,27 +27,32 @@ export type ChannelNamespaceArn = string;
|
|
|
23
27
|
*/
|
|
24
28
|
export type Tags = Tag[];
|
|
25
29
|
/**
|
|
26
|
-
*
|
|
30
|
+
* Integration behavior for a handler configuration.
|
|
27
31
|
*/
|
|
28
|
-
export type
|
|
32
|
+
export type HandlerBehavior = ("CODE" | "DIRECT");
|
|
33
|
+
/**
|
|
34
|
+
* Invocation type for direct lambda integrations.
|
|
35
|
+
*/
|
|
36
|
+
export type InvokeType = ("REQUEST_RESPONSE" | "EVENT");
|
|
29
37
|
/**
|
|
30
38
|
* Resource schema for AppSync ChannelNamespace
|
|
31
39
|
*/
|
|
32
40
|
export interface _AWS_APPSYNC_CHANNELNAMESPACE {
|
|
33
|
-
SubscribeAuthModes?: AuthModes;
|
|
34
41
|
/**
|
|
35
|
-
*
|
|
42
|
+
* AppSync Api Id that this Channel Namespace belongs to.
|
|
36
43
|
*/
|
|
37
|
-
|
|
44
|
+
ApiId: string;
|
|
45
|
+
Name: Namespace;
|
|
46
|
+
SubscribeAuthModes?: AuthModes;
|
|
38
47
|
PublishAuthModes?: AuthModes1;
|
|
39
48
|
CodeHandlers?: Code;
|
|
40
49
|
/**
|
|
41
|
-
*
|
|
50
|
+
* The Amazon S3 endpoint where the code is located.
|
|
42
51
|
*/
|
|
43
|
-
|
|
52
|
+
CodeS3Location?: string;
|
|
44
53
|
ChannelNamespaceArn?: ChannelNamespaceArn;
|
|
45
54
|
Tags?: Tags;
|
|
46
|
-
|
|
55
|
+
HandlerConfigs?: HandlerConfigs;
|
|
47
56
|
}
|
|
48
57
|
/**
|
|
49
58
|
* An auth mode.
|
|
@@ -55,12 +64,30 @@ export interface AuthMode {
|
|
|
55
64
|
* An arbitrary set of tags (key-value pairs) for this AppSync API.
|
|
56
65
|
*/
|
|
57
66
|
export interface Tag {
|
|
67
|
+
/**
|
|
68
|
+
* A string used to identify this tag. You can specify a maximum of 128 characters for a tag key.
|
|
69
|
+
*/
|
|
70
|
+
Key: string;
|
|
58
71
|
/**
|
|
59
72
|
* A string containing the value for this tag. You can specify a maximum of 256 characters for a tag value.
|
|
60
73
|
*/
|
|
61
74
|
Value: string;
|
|
75
|
+
}
|
|
76
|
+
export interface HandlerConfigs {
|
|
77
|
+
OnPublish?: HandlerConfig;
|
|
78
|
+
OnSubscribe?: HandlerConfig;
|
|
79
|
+
}
|
|
80
|
+
export interface HandlerConfig {
|
|
81
|
+
Behavior: HandlerBehavior;
|
|
82
|
+
Integration: Integration;
|
|
83
|
+
}
|
|
84
|
+
export interface Integration {
|
|
62
85
|
/**
|
|
63
|
-
*
|
|
86
|
+
* Data source to invoke for this integration.
|
|
64
87
|
*/
|
|
65
|
-
|
|
88
|
+
DataSourceName: string;
|
|
89
|
+
LambdaConfig?: LambdaConfig;
|
|
90
|
+
}
|
|
91
|
+
export interface LambdaConfig {
|
|
92
|
+
InvokeType: InvokeType;
|
|
66
93
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFwcHN5bmMtY2hhbm5lbG5hbWVzcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1hcHBzeW5jLWNoYW5uZWxuYW1lc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTmFtZXNwYWNlIGluZGVudGlmaWVyLlxuICovXG5leHBvcnQgdHlwZSBOYW1lc3BhY2UgPSBzdHJpbmdcbi8qKlxuICogU2VjdXJpdHkgY29uZmlndXJhdGlvbiBmb3IgeW91ciBBcHBTeW5jIEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUgQXV0aGVudGljYXRpb25UeXBlID0gKFwiQU1BWk9OX0NPR05JVE9fVVNFUl9QT09MU1wiIHwgXCJBV1NfSUFNXCIgfCBcIkFQSV9LRVlcIiB8IFwiT1BFTklEX0NPTk5FQ1RcIiB8IFwiQVdTX0xBTUJEQVwiKVxuLyoqXG4gKiBMaXN0IG9mIEF1dGhNb2RlcyBzdXBwb3J0ZWQgZm9yIFN1YnNjcmliZSBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgdHlwZSBBdXRoTW9kZXMgPSBBdXRoTW9kZVtdXG4vKipcbiAqIExpc3Qgb2YgQXV0aE1vZGVzIHN1cHBvcnRlZCBmb3IgUHVibGlzaCBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgdHlwZSBBdXRoTW9kZXMxID0gQXV0aE1vZGVbXVxuLyoqXG4gKiBTdHJpbmcgb2YgQVBQU1lOQ19KUyBjb2RlIHRvIGJlIHVzZWQgYnkgdGhlIGhhbmRsZXJzLlxuICovXG5leHBvcnQgdHlwZSBDb2RlID0gc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIENoYW5uZWwgTmFtZXNwYWNlLlxuICovXG5leHBvcnQgdHlwZSBDaGFubmVsTmFtZXNwYWNlQXJuID0gc3RyaW5nXG4vKipcbiAqIEFuIGFyYml0cmFyeSBzZXQgb2YgdGFncyAoa2V5LXZhbHVlIHBhaXJzKSBmb3IgdGhpcyBBcHBTeW5jIEFQSS5cbiAqL1xuZXhwb3J0IHR5cGUgVGFncyA9IFRhZ1tdXG4vKipcbiAqIEludGVncmF0aW9uIGJlaGF2aW9yIGZvciBhIGhhbmRsZXIgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgSGFuZGxlckJlaGF2aW9yID0gKFwiQ09ERVwiIHwgXCJESVJFQ1RcIilcbi8qKlxuICogSW52b2NhdGlvbiB0eXBlIGZvciBkaXJlY3QgbGFtYmRhIGludGVncmF0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgSW52b2tlVHlwZSA9IChcIlJFUVVFU1RfUkVTUE9OU0VcIiB8IFwiRVZFTlRcIilcblxuLyoqXG4gKiBSZXNvdXJjZSBzY2hlbWEgZm9yIEFwcFN5bmMgQ2hhbm5lbE5hbWVzcGFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfQVBQU1lOQ19DSEFOTkVMTkFNRVNQQUNFIHtcbi8qKlxuICogQXBwU3luYyBBcGkgSWQgdGhhdCB0aGlzIENoYW5uZWwgTmFtZXNwYWNlIGJlbG9uZ3MgdG8uXG4gKi9cbkFwaUlkOiBzdHJpbmdcbk5hbWU6IE5hbWVzcGFjZVxuU3Vic2NyaWJlQXV0aE1vZGVzPzogQXV0aE1vZGVzXG5QdWJsaXNoQXV0aE1vZGVzPzogQXV0aE1vZGVzMVxuQ29kZUhhbmRsZXJzPzogQ29kZVxuLyoqXG4gKiBUaGUgQW1hem9uIFMzIGVuZHBvaW50IHdoZXJlIHRoZSBjb2RlIGlzIGxvY2F0ZWQuXG4gKi9cbkNvZGVTM0xvY2F0aW9uPzogc3RyaW5nXG5DaGFubmVsTmFtZXNwYWNlQXJuPzogQ2hhbm5lbE5hbWVzcGFjZUFyblxuVGFncz86IFRhZ3NcbkhhbmRsZXJDb25maWdzPzogSGFuZGxlckNvbmZpZ3Ncbn1cbi8qKlxuICogQW4gYXV0aCBtb2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhNb2RlIHtcbkF1dGhUeXBlPzogQXV0aGVudGljYXRpb25UeXBlXG59XG4vKipcbiAqIEFuIGFyYml0cmFyeSBzZXQgb2YgdGFncyAoa2V5LXZhbHVlIHBhaXJzKSBmb3IgdGhpcyBBcHBTeW5jIEFQSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBBIHN0cmluZyB1c2VkIHRvIGlkZW50aWZ5IHRoaXMgdGFnLiBZb3UgY2FuIHNwZWNpZnkgYSBtYXhpbXVtIG9mIDEyOCBjaGFyYWN0ZXJzIGZvciBhIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZhbHVlIGZvciB0aGlzIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgbWF4aW11bSBvZiAyNTYgY2hhcmFjdGVycyBmb3IgYSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSGFuZGxlckNvbmZpZ3Mge1xuT25QdWJsaXNoPzogSGFuZGxlckNvbmZpZ1xuT25TdWJzY3JpYmU/OiBIYW5kbGVyQ29uZmlnXG59XG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZXJDb25maWcge1xuQmVoYXZpb3I6IEhhbmRsZXJCZWhhdmlvclxuSW50ZWdyYXRpb246IEludGVncmF0aW9uXG59XG5leHBvcnQgaW50ZXJmYWNlIEludGVncmF0aW9uIHtcbi8qKlxuICogRGF0YSBzb3VyY2UgdG8gaW52b2tlIGZvciB0aGlzIGludGVncmF0aW9uLlxuICovXG5EYXRhU291cmNlTmFtZTogc3RyaW5nXG5MYW1iZGFDb25maWc/OiBMYW1iZGFDb25maWdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhQ29uZmlnIHtcbkludm9rZVR5cGU6IEludm9rZVR5cGVcbn1cbiJdfQ==
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Type definition for AWS::CloudFront::DistributionTenant
|
|
3
|
+
*/
|
|
4
|
+
export interface _AWS_CLOUDFRONT_DISTRIBUTIONTENANT {
|
|
5
|
+
Id?: string;
|
|
6
|
+
DistributionId: string;
|
|
7
|
+
Name: string;
|
|
8
|
+
Arn?: string;
|
|
9
|
+
DomainResults?: DomainResult[];
|
|
10
|
+
Tags?: Tag[];
|
|
11
|
+
Customizations?: Customizations;
|
|
12
|
+
Parameters?: Parameter[];
|
|
13
|
+
ConnectionGroupId?: string;
|
|
14
|
+
CreatedTime?: string;
|
|
15
|
+
LastModifiedTime?: string;
|
|
16
|
+
Enabled?: boolean;
|
|
17
|
+
Status?: string;
|
|
18
|
+
ETag?: string;
|
|
19
|
+
Domains: string[];
|
|
20
|
+
ManagedCertificateRequest?: ManagedCertificateRequest;
|
|
21
|
+
}
|
|
22
|
+
export interface DomainResult {
|
|
23
|
+
Domain?: string;
|
|
24
|
+
Status?: ("active" | "inactive");
|
|
25
|
+
Reason?: ("pending-validation" | "validation-failed" | "pending-activation" | "customer-activated");
|
|
26
|
+
}
|
|
27
|
+
export interface Tag {
|
|
28
|
+
Key: string;
|
|
29
|
+
Value: string;
|
|
30
|
+
}
|
|
31
|
+
export interface Customizations {
|
|
32
|
+
WebAcl?: WebAclCustomization;
|
|
33
|
+
Certificate?: Certificate;
|
|
34
|
+
GeoRestrictions?: GeoRestrictionCustomization;
|
|
35
|
+
}
|
|
36
|
+
export interface WebAclCustomization {
|
|
37
|
+
Action?: ("override" | "disable");
|
|
38
|
+
Arn?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface Certificate {
|
|
41
|
+
Arn?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface GeoRestrictionCustomization {
|
|
44
|
+
RestrictionType?: ("blacklist" | "whitelist" | "none");
|
|
45
|
+
Locations?: string[];
|
|
46
|
+
}
|
|
47
|
+
export interface Parameter {
|
|
48
|
+
Name?: string;
|
|
49
|
+
Value?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface ManagedCertificateRequest {
|
|
52
|
+
ValidationTokenHost?: ("cloudfront" | "self-hosted");
|
|
53
|
+
PrimaryDomainName?: string;
|
|
54
|
+
CertificateTransparencyLoggingPreference?: ("enabled" | "disabled");
|
|
55
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWNsb3VkZnJvbnQtZGlzdHJpYnV0aW9udGVuYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWNsb3VkZnJvbnQtZGlzdHJpYnV0aW9udGVuYW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpDbG91ZEZyb250OjpEaXN0cmlidXRpb25UZW5hbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0NMT1VERlJPTlRfRElTVFJJQlVUSU9OVEVOQU5UIHtcbklkPzogc3RyaW5nXG5EaXN0cmlidXRpb25JZDogc3RyaW5nXG5OYW1lOiBzdHJpbmdcbkFybj86IHN0cmluZ1xuRG9tYWluUmVzdWx0cz86IERvbWFpblJlc3VsdFtdXG5UYWdzPzogVGFnW11cbkN1c3RvbWl6YXRpb25zPzogQ3VzdG9taXphdGlvbnNcblBhcmFtZXRlcnM/OiBQYXJhbWV0ZXJbXVxuQ29ubmVjdGlvbkdyb3VwSWQ/OiBzdHJpbmdcbkNyZWF0ZWRUaW1lPzogc3RyaW5nXG5MYXN0TW9kaWZpZWRUaW1lPzogc3RyaW5nXG5FbmFibGVkPzogYm9vbGVhblxuU3RhdHVzPzogc3RyaW5nXG5FVGFnPzogc3RyaW5nXG5Eb21haW5zOiBzdHJpbmdbXVxuTWFuYWdlZENlcnRpZmljYXRlUmVxdWVzdD86IE1hbmFnZWRDZXJ0aWZpY2F0ZVJlcXVlc3Rcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRG9tYWluUmVzdWx0IHtcbkRvbWFpbj86IHN0cmluZ1xuU3RhdHVzPzogKFwiYWN0aXZlXCIgfCBcImluYWN0aXZlXCIpXG5SZWFzb24/OiAoXCJwZW5kaW5nLXZhbGlkYXRpb25cIiB8IFwidmFsaWRhdGlvbi1mYWlsZWRcIiB8IFwicGVuZGluZy1hY3RpdmF0aW9uXCIgfCBcImN1c3RvbWVyLWFjdGl2YXRlZFwiKVxufVxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuS2V5OiBzdHJpbmdcblZhbHVlOiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9taXphdGlvbnMge1xuV2ViQWNsPzogV2ViQWNsQ3VzdG9taXphdGlvblxuQ2VydGlmaWNhdGU/OiBDZXJ0aWZpY2F0ZVxuR2VvUmVzdHJpY3Rpb25zPzogR2VvUmVzdHJpY3Rpb25DdXN0b21pemF0aW9uXG59XG5leHBvcnQgaW50ZXJmYWNlIFdlYkFjbEN1c3RvbWl6YXRpb24ge1xuQWN0aW9uPzogKFwib3ZlcnJpZGVcIiB8IFwiZGlzYWJsZVwiKVxuQXJuPzogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIENlcnRpZmljYXRlIHtcbkFybj86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBHZW9SZXN0cmljdGlvbkN1c3RvbWl6YXRpb24ge1xuUmVzdHJpY3Rpb25UeXBlPzogKFwiYmxhY2tsaXN0XCIgfCBcIndoaXRlbGlzdFwiIHwgXCJub25lXCIpXG5Mb2NhdGlvbnM/OiBzdHJpbmdbXVxufVxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0ZXIge1xuTmFtZT86IHN0cmluZ1xuVmFsdWU/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZENlcnRpZmljYXRlUmVxdWVzdCB7XG5WYWxpZGF0aW9uVG9rZW5Ib3N0PzogKFwiY2xvdWRmcm9udFwiIHwgXCJzZWxmLWhvc3RlZFwiKVxuUHJpbWFyeURvbWFpbk5hbWU/OiBzdHJpbmdcbkNlcnRpZmljYXRlVHJhbnNwYXJlbmN5TG9nZ2luZ1ByZWZlcmVuY2U/OiAoXCJlbmFibGVkXCIgfCBcImRpc2FibGVkXCIpXG59XG4iXX0=
|
|
@@ -31,7 +31,7 @@ export type WarmThroughput1 = ({
|
|
|
31
31
|
/**
|
|
32
32
|
* The ``AWS::DynamoDB::Table`` resource creates a DDB table. For more information, see [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html) in the *API Reference*.
|
|
33
33
|
* You should be aware of the following behaviors when working with DDB tables:
|
|
34
|
-
* +
|
|
34
|
+
* + CFNlong typically creates DDB tables in parallel. However, if your template includes multiple DDB tables with indexes, you must declare dependencies so that the tables are created sequentially. DDBlong limits the number of tables with secondary indexes that are in the creating state. If you create multiple tables with indexes at the same time, DDB returns an error and the stack operation fails. For an example, see [DynamoDB Table with a DependsOn Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html#aws-resource-dynamodb-table--examples--DynamoDB_Table_with_a_DependsOn_Attribute).
|
|
35
35
|
*
|
|
36
36
|
* Our guidance is to use the latest schema documented for your CFNlong templates. This schema supports the provisioning of all table settings below. When using this schema in your CFNlong templates, please ensure that your Identity and Access Management (IAM) policies are updated with appropriate permissions to allow for the authorization of these setting changes.
|
|
37
37
|
*/
|
|
@@ -59,8 +59,8 @@ export interface _AWS_DYNAMODB_TABLE {
|
|
|
59
59
|
/**
|
|
60
60
|
* Specify how you are charged for read and write throughput and how you manage capacity.
|
|
61
61
|
* Valid values include:
|
|
62
|
-
* +
|
|
63
|
-
* +
|
|
62
|
+
* + ``PAY_PER_REQUEST`` - We recommend using ``PAY_PER_REQUEST`` for most DynamoDB workloads. ``PAY_PER_REQUEST`` sets the billing mode to [On-demand capacity mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-demand-capacity-mode.html).
|
|
63
|
+
* + ``PROVISIONED`` - We recommend using ``PROVISIONED`` for steady workloads with predictable growth where capacity requirements can be reliably forecasted. ``PROVISIONED`` sets the billing mode to [Provisioned capacity mode](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/provisioned-capacity-mode.html).
|
|
64
64
|
*
|
|
65
65
|
* If not specified, the default is ``PROVISIONED``.
|
|
66
66
|
*/
|
|
@@ -127,7 +127,7 @@ export interface SSESpecification {
|
|
|
127
127
|
SSEEnabled: boolean;
|
|
128
128
|
/**
|
|
129
129
|
* Server-side encryption type. The only supported value is:
|
|
130
|
-
* +
|
|
130
|
+
* + ``KMS`` - Server-side encryption that uses KMSlong. The key is stored in your account and is managed by KMS (KMS charges apply).
|
|
131
131
|
*/
|
|
132
132
|
SSEType?: string;
|
|
133
133
|
/**
|
|
@@ -157,10 +157,10 @@ export interface KinesisStreamSpecification {
|
|
|
157
157
|
export interface StreamSpecification {
|
|
158
158
|
/**
|
|
159
159
|
* When an item in the table is modified, ``StreamViewType`` determines what information is written to the stream for this table. Valid values for ``StreamViewType`` are:
|
|
160
|
-
* +
|
|
161
|
-
* +
|
|
162
|
-
* +
|
|
163
|
-
* +
|
|
160
|
+
* + ``KEYS_ONLY`` - Only the key attributes of the modified item are written to the stream.
|
|
161
|
+
* + ``NEW_IMAGE`` - The entire item, as it appears after it was modified, is written to the stream.
|
|
162
|
+
* + ``OLD_IMAGE`` - The entire item, as it appeared before it was modified, is written to the stream.
|
|
163
|
+
* + ``NEW_AND_OLD_IMAGES`` - Both the new and the old item images of the item are written to the stream.
|
|
164
164
|
*/
|
|
165
165
|
StreamViewType: string;
|
|
166
166
|
ResourcePolicy?: ResourcePolicy;
|
|
@@ -273,9 +273,9 @@ export interface ProvisionedThroughput {
|
|
|
273
273
|
export interface AttributeDefinition {
|
|
274
274
|
/**
|
|
275
275
|
* The data type for the attribute, where:
|
|
276
|
-
* +
|
|
277
|
-
* +
|
|
278
|
-
* +
|
|
276
|
+
* + ``S`` - the attribute is of type String
|
|
277
|
+
* + ``N`` - the attribute is of type Number
|
|
278
|
+
* + ``B`` - the attribute is of type Binary
|
|
279
279
|
*/
|
|
280
280
|
AttributeType: string;
|
|
281
281
|
/**
|
|
@@ -297,8 +297,8 @@ export interface GlobalSecondaryIndex {
|
|
|
297
297
|
ProvisionedThroughput?: ProvisionedThroughput1;
|
|
298
298
|
/**
|
|
299
299
|
* The complete key schema for a global secondary index, which consists of one or more pairs of attribute names and key types:
|
|
300
|
-
* +
|
|
301
|
-
* +
|
|
300
|
+
* + ``HASH`` - partition key
|
|
301
|
+
* + ``RANGE`` - sort key
|
|
302
302
|
*
|
|
303
303
|
* The partition key of an item is also known as its *hash attribute*. The term "hash attribute" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.
|
|
304
304
|
* The sort key of an item is also known as its *range attribute*. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.
|
|
@@ -341,9 +341,9 @@ export interface Projection {
|
|
|
341
341
|
NonKeyAttributes?: string[];
|
|
342
342
|
/**
|
|
343
343
|
* The set of attributes that are projected into the index:
|
|
344
|
-
* +
|
|
345
|
-
* +
|
|
346
|
-
* +
|
|
344
|
+
* + ``KEYS_ONLY`` - Only the index and primary keys are projected into the index.
|
|
345
|
+
* + ``INCLUDE`` - In addition to the attributes described in ``KEYS_ONLY``, the secondary index will include other non-key attributes that you specify.
|
|
346
|
+
* + ``ALL`` - All of the table attributes are projected into the index.
|
|
347
347
|
*
|
|
348
348
|
* When using the DynamoDB console, ``ALL`` is selected by default.
|
|
349
349
|
*/
|
|
@@ -373,8 +373,8 @@ export interface ProvisionedThroughput1 {
|
|
|
373
373
|
export interface KeySchema {
|
|
374
374
|
/**
|
|
375
375
|
* The role that this key attribute will assume:
|
|
376
|
-
* +
|
|
377
|
-
* +
|
|
376
|
+
* + ``HASH`` - partition key
|
|
377
|
+
* + ``RANGE`` - sort key
|
|
378
378
|
*
|
|
379
379
|
* The partition key of an item is also known as its *hash attribute*. The term "hash attribute" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.
|
|
380
380
|
* The sort key of an item is also known as its *range attribute*. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.
|
|
@@ -408,8 +408,8 @@ export interface LocalSecondaryIndex {
|
|
|
408
408
|
Projection: Projection1;
|
|
409
409
|
/**
|
|
410
410
|
* The complete key schema for the local secondary index, consisting of one or more pairs of attribute names and key types:
|
|
411
|
-
* +
|
|
412
|
-
* +
|
|
411
|
+
* + ``HASH`` - partition key
|
|
412
|
+
* + ``RANGE`` - sort key
|
|
413
413
|
*
|
|
414
414
|
* The partition key of an item is also known as its *hash attribute*. The term "hash attribute" derives from DynamoDB's usage of an internal hash function to evenly distribute data items across partitions, based on their partition key values.
|
|
415
415
|
* The sort key of an item is also known as its *range attribute*. The term "range attribute" derives from the way DynamoDB stores items with the same partition key physically close together, in sorted order by the sort key value.
|
|
@@ -427,9 +427,9 @@ export interface Projection1 {
|
|
|
427
427
|
NonKeyAttributes?: string[];
|
|
428
428
|
/**
|
|
429
429
|
* The set of attributes that are projected into the index:
|
|
430
|
-
* +
|
|
431
|
-
* +
|
|
432
|
-
* +
|
|
430
|
+
* + ``KEYS_ONLY`` - Only the index and primary keys are projected into the index.
|
|
431
|
+
* + ``INCLUDE`` - In addition to the attributes described in ``KEYS_ONLY``, the secondary index will include other non-key attributes that you specify.
|
|
432
|
+
* + ``ALL`` - All of the table attributes are projected into the index.
|
|
433
433
|
*
|
|
434
434
|
* When using the DynamoDB console, ``ALL`` is selected by default.
|
|
435
435
|
*/
|
|
@@ -437,7 +437,7 @@ export interface Projection1 {
|
|
|
437
437
|
}
|
|
438
438
|
/**
|
|
439
439
|
* Describes a tag. A tag is a key-value pair. You can add up to 50 tags to a single DynamoDB table.
|
|
440
|
-
*
|
|
440
|
+
* AWS-assigned tag names and values are automatically assigned the ``aws:`` prefix, which the user cannot assign. AWS-assigned tag names do not count towards the tag limit of 50. User-assigned tag names have the prefix ``user:`` in the Cost Allocation Report. You cannot backdate the application of a tag.
|
|
441
441
|
* For an overview on tagging DynamoDB resources, see [Tagging for DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) in the *Amazon DynamoDB Developer Guide*.
|
|
442
442
|
*/
|
|
443
443
|
export interface Tag {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWR5bmFtb2RiLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWR5bmFtb2RiLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgY3JlYXRpbmcgYSB0YWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgV2FybVRocm91Z2hwdXQgPSAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiB7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiByZWFkIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuUmVhZFVuaXRzUGVyU2Vjb25kPzogbnVtYmVyXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3cml0ZSBvcGVyYXRpb25zIHlvdXIgYmFzZSB0YWJsZSBjYW4gaW5zdGFudGFuZW91c2x5IHN1cHBvcnQuXG4gKi9cbldyaXRlVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbn0pXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCB2YWx1ZSAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgdGhlIHNwZWNpZmllZCBzZWNvbmRhcnkgaW5kZXguIElmIHlvdSB1c2UgdGhpcyBwYXJhbWV0ZXIsIHlvdSBtdXN0IHNwZWNpZnkgYGBSZWFkVW5pdHNQZXJTZWNvbmRgYCwgYGBXcml0ZVVuaXRzUGVyU2Vjb25kYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCB0eXBlIFdhcm1UaHJvdWdocHV0MSA9ICh7XG5bazogc3RyaW5nXTogdW5rbm93blxufSAmIHtcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJlYWQgb3BlcmF0aW9ucyB5b3VyIGJhc2UgdGFibGUgY2FuIGluc3RhbnRhbmVvdXNseSBzdXBwb3J0LlxuICovXG5SZWFkVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuV3JpdGVVbml0c1BlclNlY29uZD86IG51bWJlclxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OkR5bmFtb0RCOjpUYWJsZWBgIHJlc291cmNlIGNyZWF0ZXMgYSBEREIgdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZVRhYmxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlVGFibGUuaHRtbCkgaW4gdGhlICpBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3Ugc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3JzIHdoZW4gd29ya2luZyB3aXRoIEREQiB0YWJsZXM6XG4gKiAgICsgICBDRk5sb25nIHR5cGljYWxseSBjcmVhdGVzIEREQiB0YWJsZXMgaW4gcGFyYWxsZWwuIEhvd2V2ZXIsIGlmIHlvdXIgdGVtcGxhdGUgaW5jbHVkZXMgbXVsdGlwbGUgRERCIHRhYmxlcyB3aXRoIGluZGV4ZXMsIHlvdSBtdXN0IGRlY2xhcmUgZGVwZW5kZW5jaWVzIHNvIHRoYXQgdGhlIHRhYmxlcyBhcmUgY3JlYXRlZCBzZXF1ZW50aWFsbHkuIEREQmxvbmcgbGltaXRzIHRoZSBudW1iZXIgb2YgdGFibGVzIHdpdGggc2Vjb25kYXJ5IGluZGV4ZXMgdGhhdCBhcmUgaW4gdGhlIGNyZWF0aW5nIHN0YXRlLiBJZiB5b3UgY3JlYXRlIG11bHRpcGxlIHRhYmxlcyB3aXRoIGluZGV4ZXMgYXQgdGhlIHNhbWUgdGltZSwgRERCIHJldHVybnMgYW4gZXJyb3IgYW5kIHRoZSBzdGFjayBvcGVyYXRpb24gZmFpbHMuIEZvciBhbiBleGFtcGxlLCBzZWUgW0R5bmFtb0RCIFRhYmxlIHdpdGggYSBEZXBlbmRzT24gQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZHluYW1vZGItdGFibGUuaHRtbCNhd3MtcmVzb3VyY2UtZHluYW1vZGItdGFibGUtLWV4YW1wbGVzLS1EeW5hbW9EQl9UYWJsZV93aXRoX2FfRGVwZW5kc09uX0F0dHJpYnV0ZSkuXG4gKiAgIFxuICogICAgT3VyIGd1aWRhbmNlIGlzIHRvIHVzZSB0aGUgbGF0ZXN0IHNjaGVtYSBkb2N1bWVudGVkIGZvciB5b3VyIENGTmxvbmcgdGVtcGxhdGVzLiBUaGlzIHNjaGVtYSBzdXBwb3J0cyB0aGUgcHJvdmlzaW9uaW5nIG9mIGFsbCB0YWJsZSBzZXR0aW5ncyBiZWxvdy4gV2hlbiB1c2luZyB0aGlzIHNjaGVtYSBpbiB5b3VyIENGTmxvbmcgdGVtcGxhdGVzLCBwbGVhc2UgZW5zdXJlIHRoYXQgeW91ciBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSkgcG9saWNpZXMgYXJlIHVwZGF0ZWQgd2l0aCBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucyB0byBhbGxvdyBmb3IgdGhlIGF1dGhvcml6YXRpb24gb2YgdGhlc2Ugc2V0dGluZyBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfRFlOQU1PREJfVEFCTEUge1xuT25EZW1hbmRUaHJvdWdocHV0PzogT25EZW1hbmRUaHJvdWdocHV0XG5TU0VTcGVjaWZpY2F0aW9uPzogU1NFU3BlY2lmaWNhdGlvblxuS2luZXNpc1N0cmVhbVNwZWNpZmljYXRpb24/OiBLaW5lc2lzU3RyZWFtU3BlY2lmaWNhdGlvblxuU3RyZWFtU3BlY2lmaWNhdGlvbj86IFN0cmVhbVNwZWNpZmljYXRpb25cbkNvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uPzogQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb25cbkltcG9ydFNvdXJjZVNwZWNpZmljYXRpb24/OiBJbXBvcnRTb3VyY2VTcGVjaWZpY2F0aW9uXG5Qb2ludEluVGltZVJlY292ZXJ5U3BlY2lmaWNhdGlvbj86IFBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uXG5Qcm92aXNpb25lZFRocm91Z2hwdXQ/OiBQcm92aXNpb25lZFRocm91Z2hwdXRcbldhcm1UaHJvdWdocHV0PzogV2FybVRocm91Z2hwdXRcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgdGFibGUuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgbmFtZSwgQ0ZObG9uZyBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIHRhYmxlIG5hbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW05hbWUgVHlwZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtbmFtZS5odG1sKS5cbiAqICAgSWYgeW91IHNwZWNpZnkgYSBuYW1lLCB5b3UgY2Fubm90IHBlcmZvcm0gdXBkYXRlcyB0aGF0IHJlcXVpcmUgcmVwbGFjZW1lbnQgb2YgdGhpcyByZXNvdXJjZS4gWW91IGNhbiBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIG5vIG9yIHNvbWUgaW50ZXJydXB0aW9uLiBJZiB5b3UgbXVzdCByZXBsYWNlIHRoZSByZXNvdXJjZSwgc3BlY2lmeSBhIG5ldyBuYW1lLlxuICovXG5UYWJsZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogQSBsaXN0IG9mIGF0dHJpYnV0ZXMgdGhhdCBkZXNjcmliZSB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICogIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgRERCIHRhYmxlLlxuICogIFVwZGF0ZSByZXF1aXJlczogW1NvbWUgaW50ZXJydXB0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvdXNpbmctY2ZuLXVwZGF0aW5nLXN0YWNrcy11cGRhdGUtYmVoYXZpb3JzLmh0bWwjdXBkYXRlLXNvbWUtaW50ZXJydXB0KS4gUmVwbGFjZW1lbnQgaWYgeW91IGVkaXQgYW4gZXhpc3RpbmcgQXR0cmlidXRlRGVmaW5pdGlvbi5cbiAqL1xuQXR0cmlidXRlRGVmaW5pdGlvbnM/OiBBdHRyaWJ1dGVEZWZpbml0aW9uW11cbi8qKlxuICogU3BlY2lmeSBob3cgeW91IGFyZSBjaGFyZ2VkIGZvciByZWFkIGFuZCB3cml0ZSB0aHJvdWdocHV0IGFuZCBob3cgeW91IG1hbmFnZSBjYXBhY2l0eS5cbiAqICBWYWxpZCB2YWx1ZXMgaW5jbHVkZTpcbiAqICAgKyAgIGBgUEFZX1BFUl9SRVFVRVNUYGAgLSBXZSByZWNvbW1lbmQgdXNpbmcgYGBQQVlfUEVSX1JFUVVFU1RgYCBmb3IgbW9zdCBEeW5hbW9EQiB3b3JrbG9hZHMuIGBgUEFZX1BFUl9SRVFVRVNUYGAgc2V0cyB0aGUgYmlsbGluZyBtb2RlIHRvIFtPbi1kZW1hbmQgY2FwYWNpdHkgbW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9vbi1kZW1hbmQtY2FwYWNpdHktbW9kZS5odG1sKS4gXG4gKiAgICsgICBgYFBST1ZJU0lPTkVEYGAgLSBXZSByZWNvbW1lbmQgdXNpbmcgYGBQUk9WSVNJT05FRGBgIGZvciBzdGVhZHkgd29ya2xvYWRzIHdpdGggcHJlZGljdGFibGUgZ3Jvd3RoIHdoZXJlIGNhcGFjaXR5IHJlcXVpcmVtZW50cyBjYW4gYmUgcmVsaWFibHkgZm9yZWNhc3RlZC4gYGBQUk9WSVNJT05FRGBgIHNldHMgdGhlIGJpbGxpbmcgbW9kZSB0byBbUHJvdmlzaW9uZWQgY2FwYWNpdHkgbW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9wcm92aXNpb25lZC1jYXBhY2l0eS1tb2RlLmh0bWwpLlxuICogICBcbiAqICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyBgYFBST1ZJU0lPTkVEYGAuXG4gKi9cbkJpbGxpbmdNb2RlPzogc3RyaW5nXG4vKipcbiAqIEdsb2JhbCBzZWNvbmRhcnkgaW5kZXhlcyB0byBiZSBjcmVhdGVkIG9uIHRoZSB0YWJsZS4gWW91IGNhbiBjcmVhdGUgdXAgdG8gMjAgZ2xvYmFsIHNlY29uZGFyeSBpbmRleGVzLlxuICogICBJZiB5b3UgdXBkYXRlIGEgdGFibGUgdG8gaW5jbHVkZSBhIG5ldyBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LCBDRk5sb25nIGluaXRpYXRlcyB0aGUgaW5kZXggY3JlYXRpb24gYW5kIHRoZW4gcHJvY2VlZHMgd2l0aCB0aGUgc3RhY2sgdXBkYXRlLiBDRk5sb25nIGRvZXNuJ3Qgd2FpdCBmb3IgdGhlIGluZGV4IHRvIGNvbXBsZXRlIGNyZWF0aW9uIGJlY2F1c2UgdGhlIGJhY2tmaWxsaW5nIHBoYXNlIGNhbiB0YWtlIGEgbG9uZyB0aW1lLCBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgdGhlIHRhYmxlLiBZb3UgY2FuJ3QgdXNlIHRoZSBpbmRleCBvciB1cGRhdGUgdGhlIHRhYmxlIHVudGlsIHRoZSBpbmRleCdzIHN0YXR1cyBpcyBgYEFDVElWRWBgLiBZb3UgY2FuIHRyYWNrIGl0cyBzdGF0dXMgYnkgdXNpbmcgdGhlIER5bmFtb0RCIFtEZXNjcmliZVRhYmxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC9yZWZlcmVuY2UvZHluYW1vZGIvZGVzY3JpYmUtdGFibGUuaHRtbCkgY29tbWFuZC5cbiAqICBJZiB5b3UgYWRkIG9yIGRlbGV0ZSBhbiBpbmRleCBkdXJpbmcgYW4gdXBkYXRlLCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgZG9uJ3QgdXBkYXRlIGFueSBvdGhlciByZXNvdXJjZXMuIElmIHlvdXIgc3RhY2sgZmFpbHMgdG8gdXBkYXRlIGFuZCBpcyByb2xsZWQgYmFjayB3aGlsZSBhZGRpbmcgYSBuZXcgaW5kZXgsIHlvdSBtdXN0IG1hbnVhbGx5IGRlbGV0ZSB0aGUgaW5kZXguIFxuICogIFVwZGF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRoZSBmb2xsb3dpbmcgYXJlIGV4Y2VwdGlvbnM6XG4gKiAgICsgIElmIHlvdSB1cGRhdGUgZWl0aGVyIHRoZSBjb250cmlidXRvciBpbnNpZ2h0cyBzcGVjaWZpY2F0aW9uIG9yIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcyBvZiBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4ZXMsIHlvdSBjYW4gdXBkYXRlIHRoZSB0YWJsZSB3aXRob3V0IGludGVycnVwdGlvbi5cbiAqICAgKyAgWW91IGNhbiBkZWxldGUgb3IgYWRkIG9uZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4IHdpdGhvdXQgaW50ZXJydXB0aW9uLiBJZiB5b3UgZG8gYm90aCBpbiB0aGUgc2FtZSB1cGRhdGUgKGZvciBleGFtcGxlLCBieSBjaGFuZ2luZyB0aGUgaW5kZXgncyBsb2dpY2FsIElEKSwgdGhlIHVwZGF0ZSBmYWlscy5cbiAqL1xuR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcz86IEdsb2JhbFNlY29uZGFyeUluZGV4W11cblJlc291cmNlUG9saWN5PzogUmVzb3VyY2VQb2xpY3kxXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIHByaW1hcnkga2V5IGZvciB0aGUgdGFibGUuIFRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgYEtleVNjaGVtYWBgIHByb3BlcnR5IG11c3QgYWxzbyBiZSBkZWZpbmVkIGluIHRoZSBgYEF0dHJpYnV0ZURlZmluaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbktleVNjaGVtYTogKEtleVNjaGVtYVtdIHwge1xuW2s6IHN0cmluZ106IHVua25vd25cbn0pXG4vKipcbiAqIExvY2FsIHNlY29uZGFyeSBpbmRleGVzIHRvIGJlIGNyZWF0ZWQgb24gdGhlIHRhYmxlLiBZb3UgY2FuIGNyZWF0ZSB1cCB0byA1IGxvY2FsIHNlY29uZGFyeSBpbmRleGVzLiBFYWNoIGluZGV4IGlzIHNjb3BlZCB0byBhIGdpdmVuIGhhc2gga2V5IHZhbHVlLiBUaGUgc2l6ZSBvZiBlYWNoIGhhc2gga2V5IGNhbiBiZSB1cCB0byAxMCBnaWdhYnl0ZXMuXG4gKi9cbkxvY2FsU2Vjb25kYXJ5SW5kZXhlcz86IExvY2FsU2Vjb25kYXJ5SW5kZXhbXVxuQXJuPzogc3RyaW5nXG5TdHJlYW1Bcm4/OiBzdHJpbmdcbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHRhYmxlIGlzIHByb3RlY3RlZCBmcm9tIGRlbGV0aW9uLiBXaGVuIGVuYWJsZWQsIHRoZSB0YWJsZSBjYW5ub3QgYmUgZGVsZXRlZCBieSBhbnkgdXNlciBvciBwcm9jZXNzLiBUaGlzIHNldHRpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNpbmcgZGVsZXRpb24gcHJvdGVjdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Xb3JraW5nV2l0aFRhYmxlcy5CYXNpY3MuaHRtbCNXb3JraW5nV2l0aFRhYmxlcy5CYXNpY3MuRGVsZXRpb25Qcm90ZWN0aW9uKSBpbiB0aGUgKkRldmVsb3BlciBHdWlkZSouXG4gKi9cbkRlbGV0aW9uUHJvdGVjdGlvbkVuYWJsZWQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSB0YWJsZSBjbGFzcyBvZiB0aGUgbmV3IHRhYmxlLiBWYWxpZCB2YWx1ZXMgYXJlIGBgU1RBTkRBUkRgYCBhbmQgYGBTVEFOREFSRF9JTkZSRVFVRU5UX0FDQ0VTU2BgLlxuICovXG5UYWJsZUNsYXNzPzogc3RyaW5nXG4vKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1RhZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtcmVzb3VyY2UtdGFncy5odG1sKS5cbiAqL1xuVGFncz86IFRhZ1tdXG5UaW1lVG9MaXZlU3BlY2lmaWNhdGlvbj86IFRpbWVUb0xpdmVTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlYWQgYW5kIHdyaXRlIHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIG9uLWRlbWFuZCB0YWJsZS4gSWYgeW91IHVzZSB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgLCBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25EZW1hbmRUaHJvdWdocHV0IHtcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2YgcmVhZCByZXF1ZXN0IHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICogIFRvIHNwZWNpZnkgYSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFJlYWRSZXF1ZXN0VW5pdHNgYCBhcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVG8gcmVtb3ZlIHRoZSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgdGhhdCBpcyBjdXJyZW50bHkgc2V0IG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFJlYWRSZXF1ZXN0VW5pdHM/OiBudW1iZXJcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2Ygd3JpdGUgcmVxdWVzdCB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqICBUbyBzcGVjaWZ5IGEgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgIGFzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLiBUbyByZW1vdmUgdGhlIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCB0aGF0IGlzIGN1cnJlbnRseSBzZXQgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFdyaXRlUmVxdWVzdFVuaXRzPzogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc2V0dGluZ3MgdG8gZW5hYmxlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1NFU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gaXMgZG9uZSB1c2luZyBhbiBBV1MgbWFuYWdlZCBrZXkgb3IgYW4gQVdTIG93bmVkIGtleS4gSWYgZW5hYmxlZCAodHJ1ZSksIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdHlwZSBpcyBzZXQgdG8gYGBLTVNgYCBhbmQgYW4gQVdTIG1hbmFnZWQga2V5IGlzIHVzZWQgKEtNUyBjaGFyZ2VzIGFwcGx5KS4gSWYgZGlzYWJsZWQgKGZhbHNlKSBvciBub3Qgc3BlY2lmaWVkLCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGlzIHNldCB0byBBV1Mgb3duZWQga2V5LlxuICovXG5TU0VFbmFibGVkOiBib29sZWFuXG4vKipcbiAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gdHlwZS4gVGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzOlxuICogICArICAgYGBLTVNgYCAtIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gdGhhdCB1c2VzIEtNU2xvbmcuIFRoZSBrZXkgaXMgc3RvcmVkIGluIHlvdXIgYWNjb3VudCBhbmQgaXMgbWFuYWdlZCBieSBLTVMgKEtNUyBjaGFyZ2VzIGFwcGx5KS5cbiAqL1xuU1NFVHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgS01TIGtleSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgS01TIGVuY3J5cHRpb24uIFRvIHNwZWNpZnkgYSBrZXksIHVzZSBpdHMga2V5IElELCBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSwgYWxpYXMgbmFtZSwgb3IgYWxpYXMgQVJOLiBOb3RlIHRoYXQgeW91IHNob3VsZCBvbmx5IHByb3ZpZGUgdGhpcyBwYXJhbWV0ZXIgaWYgdGhlIGtleSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBEeW5hbW9EQiBrZXkgYGBhbGlhcy9hd3MvZHluYW1vZGJgYC5cbiAqL1xuS01TTWFzdGVyS2V5SWQ/OiAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiBzdHJpbmcpXG59XG4vKipcbiAqIFRoZSBLaW5lc2lzIERhdGEgU3RyZWFtcyBjb25maWd1cmF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtpbmVzaXNTdHJlYW1TcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogVGhlIHByZWNpc2lvbiBmb3IgdGhlIHRpbWUgYW5kIGRhdGUgdGhhdCB0aGUgc3RyZWFtIHdhcyBjcmVhdGVkLlxuICovXG5BcHByb3hpbWF0ZUNyZWF0aW9uRGF0ZVRpbWVQcmVjaXNpb24/OiAoXCJNSUNST1NFQ09ORFwiIHwgXCJNSUxMSVNFQ09ORFwiKVxuLyoqXG4gKiBUaGUgQVJOIGZvciBhIHNwZWNpZmljIEtpbmVzaXMgZGF0YSBzdHJlYW0uXG4gKiAgTGVuZ3RoIENvbnN0cmFpbnRzOiBNaW5pbXVtIGxlbmd0aCBvZiAzNy4gTWF4aW11bSBsZW5ndGggb2YgMTAyNC5cbiAqL1xuU3RyZWFtQXJuOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIGZvciB0aGUgRERCIHRhYmxlIHN0cmVhbSwgd2hpY2ggY2FwdHVyZSBjaGFuZ2VzIHRvIGl0ZW1zIHN0b3JlZCBpbiB0aGUgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIFdoZW4gYW4gaXRlbSBpbiB0aGUgdGFibGUgaXMgbW9kaWZpZWQsIGBgU3RyZWFtVmlld1R5cGVgYCBkZXRlcm1pbmVzIHdoYXQgaW5mb3JtYXRpb24gaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtIGZvciB0aGlzIHRhYmxlLiBWYWxpZCB2YWx1ZXMgZm9yIGBgU3RyZWFtVmlld1R5cGVgYCBhcmU6XG4gKiAgICsgICBgYEtFWVNfT05MWWBgIC0gT25seSB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgdGhlIG1vZGlmaWVkIGl0ZW0gYXJlIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS5cbiAqICAgKyAgIGBgTkVXX0lNQUdFYGAgLSBUaGUgZW50aXJlIGl0ZW0sIGFzIGl0IGFwcGVhcnMgYWZ0ZXIgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKiAgICsgICBgYE9MRF9JTUFHRWBgIC0gVGhlIGVudGlyZSBpdGVtLCBhcyBpdCBhcHBlYXJlZCBiZWZvcmUgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKiAgICsgICBgYE5FV19BTkRfT0xEX0lNQUdFU2BgIC0gQm90aCB0aGUgbmV3IGFuZCB0aGUgb2xkIGl0ZW0gaW1hZ2VzIG9mIHRoZSBpdGVtIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKi9cblN0cmVhbVZpZXdUeXBlOiBzdHJpbmdcblJlc291cmNlUG9saWN5PzogUmVzb3VyY2VQb2xpY3lcbn1cbi8qKlxuICogQ3JlYXRlcyBvciB1cGRhdGVzIGEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IGRvY3VtZW50IHRoYXQgY29udGFpbnMgdGhlIHBlcm1pc3Npb25zIGZvciBEREIgcmVzb3VyY2VzLCBzdWNoIGFzIGEgdGFibGUncyBzdHJlYW1zLiBSZXNvdXJjZS1iYXNlZCBwb2xpY2llcyBsZXQgeW91IGRlZmluZSBhY2Nlc3MgcGVybWlzc2lvbnMgYnkgc3BlY2lmeWluZyB3aG8gaGFzIGFjY2VzcyB0byBlYWNoIHJlc291cmNlLCBhbmQgdGhlIGFjdGlvbnMgdGhleSBhcmUgYWxsb3dlZCB0byBwZXJmb3JtIG9uIGVhY2ggcmVzb3VyY2UuXG4gKiAgSW4gYSBDRk5zaG9ydCB0ZW1wbGF0ZSwgeW91IGNhbiBwcm92aWRlIHRoZSBwb2xpY3kgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBiZWNhdXNlIENGTnNob3J0IGNvbnZlcnRzIFlBTUwgdG8gSlNPTiBiZWZvcmUgc3VibWl0dGluZyBpdCB0byBEREIuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlLWJhc2VkIHBvbGljaWVzLCBzZWUgW1VzaW5nIHJlc291cmNlLWJhc2VkIHBvbGljaWVzIGZvcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hY2Nlc3MtY29udHJvbC1yZXNvdXJjZS1iYXNlZC5odG1sKSBhbmQgW1Jlc291cmNlLWJhc2VkIHBvbGljeSBleGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9yYmFjLWV4YW1wbGVzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUG9saWN5IHtcbi8qKlxuICogQSByZXNvdXJjZS1iYXNlZCBwb2xpY3kgZG9jdW1lbnQgdGhhdCBjb250YWlucyBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhlIHNwZWNpZmllZCBEREIgdGFibGUsIGluZGV4LCBvciBib3RoLiBJbiBhIENGTnNob3J0IHRlbXBsYXRlLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHBvbGljeSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0IGJlY2F1c2UgQ0ZOc2hvcnQgY29udmVydHMgWUFNTCB0byBKU09OIGJlZm9yZSBzdWJtaXR0aW5nIGl0IHRvIEREQi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMsIHNlZSBbVXNpbmcgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMgZm9yXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FjY2Vzcy1jb250cm9sLXJlc291cmNlLWJhc2VkLmh0bWwpIGFuZCBbUmVzb3VyY2UtYmFzZWQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3JiYWMtZXhhbXBsZXMuaHRtbCkuXG4gKi9cblBvbGljeURvY3VtZW50OiB7XG5bazogc3RyaW5nXTogdW5rbm93blxufVxufVxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBDbG91ZFdhdGNoIENvbnRyaWJ1dG9yIEluc2lnaHRzIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBhcmUgdG8gYmUgZW5hYmxlZCAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKS5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHByb3BlcnRpZXMgb2YgZGF0YSBiZWluZyBpbXBvcnRlZCBmcm9tIHRoZSBTMyBidWNrZXQgc291cmNlIHRvIHRoZVwiIHRhYmxlLlxuICogICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBJbXBvcnRTb3VyY2VTcGVjaWZpY2F0aW9uYGAgcHJvcGVydHksIGFuZCBhbHNvIHNwZWNpZnkgZWl0aGVyIHRoZSBgYFN0cmVhbVNwZWNpZmljYXRpb25gYCwgdGhlIGBgVGFibGVDbGFzc2BgIHByb3BlcnR5LCB0aGUgYGBEZWxldGlvblByb3RlY3Rpb25FbmFibGVkYGAgcHJvcGVydHksIG9yIHRoZSBgYFdhcm1UaHJvdWdocHV0YGAgcHJvcGVydHksIHRoZSBJQU0gZW50aXR5IGNyZWF0aW5nL3VwZGF0aW5nIHN0YWNrIG11c3QgaGF2ZSBgYFVwZGF0ZVRhYmxlYGAgcGVybWlzc2lvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRTb3VyY2VTcGVjaWZpY2F0aW9uIHtcblMzQnVja2V0U291cmNlOiBTM0J1Y2tldFNvdXJjZVxuLyoqXG4gKiBUaGUgZm9ybWF0IG9mIHRoZSBzb3VyY2UgZGF0YS4gVmFsaWQgdmFsdWVzIGZvciBgYEltcG9ydEZvcm1hdGBgIGFyZSBgYENTVmBgLCBgYERZTkFNT0RCX0pTT05gYCBvciBgYElPTmBgLlxuICovXG5JbnB1dEZvcm1hdDogc3RyaW5nXG5JbnB1dEZvcm1hdE9wdGlvbnM/OiBJbnB1dEZvcm1hdE9wdGlvbnNcbi8qKlxuICogVHlwZSBvZiBjb21wcmVzc2lvbiB0byBiZSB1c2VkIG9uIHRoZSBpbnB1dCBjb21pbmcgZnJvbSB0aGUgaW1wb3J0ZWQgdGFibGUuXG4gKi9cbklucHV0Q29tcHJlc3Npb25UeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBTMyBidWNrZXQgdGhhdCBwcm92aWRlcyB0aGUgc291cmNlIGZvciB0aGUgaW1wb3J0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzQnVja2V0U291cmNlIHtcbi8qKlxuICogVGhlIFMzIGJ1Y2tldCB0aGF0IGlzIGJlaW5nIGltcG9ydGVkIGZyb20uXG4gKi9cblMzQnVja2V0OiBzdHJpbmdcbi8qKlxuICogVGhlIGtleSBwcmVmaXggc2hhcmVkIGJ5IGFsbCBTMyBPYmplY3RzIHRoYXQgYXJlIGJlaW5nIGltcG9ydGVkLlxuICovXG5TM0tleVByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWNjb3VudCBudW1iZXIgb2YgdGhlIFMzIGJ1Y2tldCB0aGF0IGlzIGJlaW5nIGltcG9ydGVkIGZyb20uIElmIHRoZSBidWNrZXQgaXMgb3duZWQgYnkgdGhlIHJlcXVlc3RlciB0aGlzIGlzIG9wdGlvbmFsLlxuICovXG5TM0J1Y2tldE93bmVyPzogc3RyaW5nXG59XG4vKipcbiAqIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0aGF0IHNwZWNpZnkgaG93IHRoZSBpbnB1dCBpcyBmb3JtYXR0ZWQsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRGb3JtYXRPcHRpb25zIHtcbkNzdj86IENzdlxufVxuLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgaW1wb3J0ZWQgc291cmNlIGZpbGVzIGluIENTViBmb3JtYXQuIFRoZSB2YWx1ZXMgYXJlIERlbGltaXRlciBhbmQgSGVhZGVyTGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDc3Yge1xuLyoqXG4gKiBUaGUgZGVsaW1pdGVyIHVzZWQgZm9yIHNlcGFyYXRpbmcgaXRlbXMgaW4gdGhlIENTViBmaWxlIGJlaW5nIGltcG9ydGVkLlxuICovXG5EZWxpbWl0ZXI/OiBzdHJpbmdcbi8qKlxuICogTGlzdCBvZiB0aGUgaGVhZGVycyB1c2VkIHRvIHNwZWNpZnkgYSBjb21tb24gaGVhZGVyIGZvciBhbGwgc291cmNlIENTViBmaWxlcyBiZWluZyBpbXBvcnRlZC4gSWYgdGhpcyBmaWVsZCBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgbGluZSBvZiBlYWNoIENTViBmaWxlIGlzIHRyZWF0ZWQgYXMgZGF0YSBpbnN0ZWFkIG9mIHRoZSBoZWFkZXIuIElmIHRoaXMgZmllbGQgaXMgbm90IHNwZWNpZmllZCB0aGUgdGhlIGZpcnN0IGxpbmUgb2YgZWFjaCBDU1YgZmlsZSBpcyB0cmVhdGVkIGFzIHRoZSBoZWFkZXIuXG4gKi9cbkhlYWRlckxpc3Q/OiBzdHJpbmdbXVxufVxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdXNlZCB0byBlbmFibGUgcG9pbnQgaW4gdGltZSByZWNvdmVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2ludEluVGltZVJlY292ZXJ5U3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHBvaW50IGluIHRpbWUgcmVjb3ZlcnkgaXMgZW5hYmxlZCAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKSBvbiB0aGUgdGFibGUuXG4gKi9cblBvaW50SW5UaW1lUmVjb3ZlcnlFbmFibGVkPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHByZWNlZGluZyBkYXlzIGZvciB3aGljaCBjb250aW51b3VzIGJhY2t1cHMgYXJlIHRha2VuIGFuZCBtYWludGFpbmVkLiBZb3VyIHRhYmxlIGRhdGEgaXMgb25seSByZWNvdmVyYWJsZSB0byBhbnkgcG9pbnQtaW4tdGltZSBmcm9tIHdpdGhpbiB0aGUgY29uZmlndXJlZCByZWNvdmVyeSBwZXJpb2QuIFRoaXMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgdGhlIHZhbHVlIHdpbGwgZGVmYXVsdCB0byAzNS5cbiAqL1xuUmVjb3ZlcnlQZXJpb2RJbkRheXM/OiBudW1iZXJcbn1cbi8qKlxuICogVGhyb3VnaHB1dCBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZSwgd2hpY2ggY29uc2lzdHMgb2YgdmFsdWVzIGZvciBgYFJlYWRDYXBhY2l0eVVuaXRzYGAgYW5kIGBgV3JpdGVDYXBhY2l0eVVuaXRzYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZiBhIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc3RydWN0dXJlLCBzZWUgW0FtYXpvbiBEeW5hbW9EQiBUYWJsZSBQcm92aXNpb25lZFRocm91Z2hwdXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Qcm92aXNpb25lZFRocm91Z2hwdXQuaHRtbCkuIFxuICogIElmIHlvdSBzZXQgYGBCaWxsaW5nTW9kZWBgIGFzIGBgUFJPVklTSU9ORURgYCwgeW91IG11c3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBJZiB5b3Ugc2V0IGBgQmlsbGluZ01vZGVgYCBhcyBgYFBBWV9QRVJfUkVRVUVTVGBgLCB5b3UgY2Fubm90IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aXNpb25lZFRocm91Z2hwdXQge1xuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygd3JpdGVzIGNvbnN1bWVkIHBlciBzZWNvbmQgYmVmb3JlIER5bmFtb0RCIHJldHVybnMgYSBgYFRocm90dGxpbmdFeGNlcHRpb25gYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3BlY2lmeWluZyBSZWFkIGFuZCBXcml0ZSBSZXF1aXJlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvUHJvdmlzaW9uZWRUaHJvdWdocHV0Lmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKiAgSWYgcmVhZC93cml0ZSBjYXBhY2l0eSBtb2RlIGlzIGBgUEFZX1BFUl9SRVFVRVNUYGAgdGhlIHZhbHVlIGlzIHNldCB0byAwLlxuICovXG5Xcml0ZUNhcGFjaXR5VW5pdHM6IG51bWJlclxuLyoqXG4gKiBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3Ryb25nbHkgY29uc2lzdGVudCByZWFkcyBjb25zdW1lZCBwZXIgc2Vjb25kIGJlZm9yZSBEeW5hbW9EQiByZXR1cm5zIGEgYGBUaHJvdHRsaW5nRXhjZXB0aW9uYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgUmVhZCBhbmQgV3JpdGUgUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1Byb3Zpc2lvbmVkVGhyb3VnaHB1dC5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICogIElmIHJlYWQvd3JpdGUgY2FwYWNpdHkgbW9kZSBpcyBgYFBBWV9QRVJfUkVRVUVTVGBgIHRoZSB2YWx1ZSBpcyBzZXQgdG8gMC5cbiAqL1xuUmVhZENhcGFjaXR5VW5pdHM6IG51bWJlclxufVxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0dHJpYnV0ZSBmb3IgZGVzY3JpYmluZyB0aGUgc2NoZW1hIGZvciB0aGUgdGFibGUgYW5kIGluZGV4ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlRGVmaW5pdGlvbiB7XG4vKipcbiAqIFRoZSBkYXRhIHR5cGUgZm9yIHRoZSBhdHRyaWJ1dGUsIHdoZXJlOlxuICogICArICAgYGBTYGAgLSB0aGUgYXR0cmlidXRlIGlzIG9mIHR5cGUgU3RyaW5nXG4gKiAgICsgICBgYE5gYCAtIHRoZSBhdHRyaWJ1dGUgaXMgb2YgdHlwZSBOdW1iZXJcbiAqICAgKyAgIGBgQmBgIC0gdGhlIGF0dHJpYnV0ZSBpcyBvZiB0eXBlIEJpbmFyeVxuICovXG5BdHRyaWJ1dGVUeXBlOiBzdHJpbmdcbi8qKlxuICogQSBuYW1lIGZvciB0aGUgYXR0cmlidXRlLlxuICovXG5BdHRyaWJ1dGVOYW1lOiBzdHJpbmdcbn1cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcHJvcGVydGllcyBvZiBhIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsU2Vjb25kYXJ5SW5kZXgge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC4gVGhlIG5hbWUgbXVzdCBiZSB1bmlxdWUgYW1vbmcgYWxsIG90aGVyIGluZGV4ZXMgb24gdGhpcyB0YWJsZS5cbiAqL1xuSW5kZXhOYW1lOiBzdHJpbmdcbk9uRGVtYW5kVGhyb3VnaHB1dD86IE9uRGVtYW5kVGhyb3VnaHB1dDFcbkNvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uPzogQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb24xXG5Qcm9qZWN0aW9uOiBQcm9qZWN0aW9uXG5Qcm92aXNpb25lZFRocm91Z2hwdXQ/OiBQcm92aXNpb25lZFRocm91Z2hwdXQxXG4vKipcbiAqIFRoZSBjb21wbGV0ZSBrZXkgc2NoZW1hIGZvciBhIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXgsIHdoaWNoIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIHBhaXJzIG9mIGF0dHJpYnV0ZSBuYW1lcyBhbmQga2V5IHR5cGVzOlxuICogICArICAgYGBIQVNIYGAgLSBwYXJ0aXRpb24ga2V5XG4gKiAgICsgICBgYFJBTkdFYGAgLSBzb3J0IGtleVxuICogICBcbiAqICAgVGhlIHBhcnRpdGlvbiBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqaGFzaCBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcImhhc2ggYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIER5bmFtb0RCJ3MgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgaGFzaCBmdW5jdGlvbiB0byBldmVubHkgZGlzdHJpYnV0ZSBkYXRhIGl0ZW1zIGFjcm9zcyBwYXJ0aXRpb25zLCBiYXNlZCBvbiB0aGVpciBwYXJ0aXRpb24ga2V5IHZhbHVlcy5cbiAqICBUaGUgc29ydCBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqcmFuZ2UgYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJyYW5nZSBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIHdheSBEeW5hbW9EQiBzdG9yZXMgaXRlbXMgd2l0aCB0aGUgc2FtZSBwYXJ0aXRpb24ga2V5IHBoeXNpY2FsbHkgY2xvc2UgdG9nZXRoZXIsIGluIHNvcnRlZCBvcmRlciBieSB0aGUgc29ydCBrZXkgdmFsdWUuXG4gKi9cbktleVNjaGVtYTogS2V5U2NoZW1hW11cbldhcm1UaHJvdWdocHV0PzogV2FybVRocm91Z2hwdXQxXG59XG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkIGFuZCB3cml0ZSB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LiBJZiB5b3UgdXNlIHRoaXMgcGFyYW1ldGVyLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgLCBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25EZW1hbmRUaHJvdWdocHV0MSB7XG4vKipcbiAqIE1heGltdW0gbnVtYmVyIG9mIHJlYWQgcmVxdWVzdCB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqICBUbyBzcGVjaWZ5IGEgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAgYXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEuIFRvIHJlbW92ZSB0aGUgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIHRoYXQgaXMgY3VycmVudGx5IHNldCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgIHRvIC0xLlxuICovXG5NYXhSZWFkUmVxdWVzdFVuaXRzPzogbnVtYmVyXG4vKipcbiAqIE1heGltdW0gbnVtYmVyIG9mIHdyaXRlIHJlcXVlc3QgdW5pdHMgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUuXG4gKiAgVG8gc3BlY2lmeSBhIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCBvbiB5b3VyIHRhYmxlLCBzZXQgdGhlIHZhbHVlIG9mIGBgTWF4V3JpdGVSZXF1ZXN0VW5pdHNgYCBhcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVG8gcmVtb3ZlIHRoZSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgdGhhdCBpcyBjdXJyZW50bHkgc2V0IG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgIHRvIC0xLlxuICovXG5NYXhXcml0ZVJlcXVlc3RVbml0cz86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBDbG91ZFdhdGNoIENvbnRyaWJ1dG9yIEluc2lnaHRzIGZvciB0aGUgc3BlY2lmaWVkIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb24xIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBhcmUgdG8gYmUgZW5hYmxlZCAodHJ1ZSkgb3IgZGlzYWJsZWQgKGZhbHNlKS5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxufVxuLyoqXG4gKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gdGhlIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uIHtcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbm9uLWtleSBhdHRyaWJ1dGUgbmFtZXMgd2hpY2ggd2lsbCBiZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgRm9yIGdsb2JhbCBhbmQgbG9jYWwgc2Vjb25kYXJ5IGluZGV4ZXMsIHRoZSB0b3RhbCBjb3VudCBvZiBgYE5vbktleUF0dHJpYnV0ZXNgYCBzdW1tZWQgYWNyb3NzIGFsbCBvZiB0aGUgc2Vjb25kYXJ5IGluZGV4ZXMsIG11c3Qgbm90IGV4Y2VlZCAxMDAuIElmIHlvdSBwcm9qZWN0IHRoZSBzYW1lIGF0dHJpYnV0ZSBpbnRvIHR3byBkaWZmZXJlbnQgaW5kZXhlcywgdGhpcyBjb3VudHMgYXMgdHdvIGRpc3RpbmN0IGF0dHJpYnV0ZXMgd2hlbiBkZXRlcm1pbmluZyB0aGUgdG90YWwuIFRoaXMgbGltaXQgb25seSBhcHBsaWVzIHdoZW4geW91IHNwZWNpZnkgdGhlIFByb2plY3Rpb25UeXBlIG9mIGBgSU5DTFVERWBgLiBZb3Ugc3RpbGwgY2FuIHNwZWNpZnkgdGhlIFByb2plY3Rpb25UeXBlIG9mIGBgQUxMYGAgdG8gcHJvamVjdCBhbGwgYXR0cmlidXRlcyBmcm9tIHRoZSBzb3VyY2UgdGFibGUsIGV2ZW4gaWYgdGhlIHRhYmxlIGhhcyBtb3JlIHRoYW4gMTAwIGF0dHJpYnV0ZXMuXG4gKi9cbk5vbktleUF0dHJpYnV0ZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgc2V0IG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4OlxuICogICArICAgYGBLRVlTX09OTFlgYCAtIE9ubHkgdGhlIGluZGV4IGFuZCBwcmltYXJ5IGtleXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICAgKyAgIGBgSU5DTFVERWBgIC0gSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgZGVzY3JpYmVkIGluIGBgS0VZU19PTkxZYGAsIHRoZSBzZWNvbmRhcnkgaW5kZXggd2lsbCBpbmNsdWRlIG90aGVyIG5vbi1rZXkgYXR0cmlidXRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogICArICAgYGBBTExgYCAtIEFsbCBvZiB0aGUgdGFibGUgYXR0cmlidXRlcyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogICBcbiAqICBXaGVuIHVzaW5nIHRoZSBEeW5hbW9EQiBjb25zb2xlLCBgYEFMTGBgIGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXG4gKi9cblByb2plY3Rpb25UeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc2V0dGluZ3MgZm9yIHRoZSBzcGVjaWZpZWQgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC5cbiAqICBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgW1NlcnZpY2UsIEFjY291bnQsIGFuZCBUYWJsZSBRdW90YXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvTGltaXRzLmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlzaW9uZWRUaHJvdWdocHV0MSB7XG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB3cml0ZXMgY29uc3VtZWQgcGVyIHNlY29uZCBiZWZvcmUgRHluYW1vREIgcmV0dXJucyBhIGBgVGhyb3R0bGluZ0V4Y2VwdGlvbmBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTcGVjaWZ5aW5nIFJlYWQgYW5kIFdyaXRlIFJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Qcm92aXNpb25lZFRocm91Z2hwdXQuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBJZiByZWFkL3dyaXRlIGNhcGFjaXR5IG1vZGUgaXMgYGBQQVlfUEVSX1JFUVVFU1RgYCB0aGUgdmFsdWUgaXMgc2V0IHRvIDAuXG4gKi9cbldyaXRlQ2FwYWNpdHlVbml0czogbnVtYmVyXG4vKipcbiAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdHJvbmdseSBjb25zaXN0ZW50IHJlYWRzIGNvbnN1bWVkIHBlciBzZWNvbmQgYmVmb3JlIER5bmFtb0RCIHJldHVybnMgYSBgYFRocm90dGxpbmdFeGNlcHRpb25gYC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3BlY2lmeWluZyBSZWFkIGFuZCBXcml0ZSBSZXF1aXJlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvUHJvdmlzaW9uZWRUaHJvdWdocHV0Lmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKiAgSWYgcmVhZC93cml0ZSBjYXBhY2l0eSBtb2RlIGlzIGBgUEFZX1BFUl9SRVFVRVNUYGAgdGhlIHZhbHVlIGlzIHNldCB0byAwLlxuICovXG5SZWFkQ2FwYWNpdHlVbml0czogbnVtYmVyXG59XG4vKipcbiAqIFJlcHJlc2VudHMgKmEgc2luZ2xlIGVsZW1lbnQqIG9mIGEga2V5IHNjaGVtYS4gQSBrZXkgc2NoZW1hIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIHByaW1hcnkga2V5IG9mIGEgdGFibGUsIG9yIHRoZSBrZXkgYXR0cmlidXRlcyBvZiBhbiBpbmRleC5cbiAqICBBIGBgS2V5U2NoZW1hRWxlbWVudGBgIHJlcHJlc2VudHMgZXhhY3RseSBvbmUgYXR0cmlidXRlIG9mIHRoZSBwcmltYXJ5IGtleS4gRm9yIGV4YW1wbGUsIGEgc2ltcGxlIHByaW1hcnkga2V5IHdvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IG9uZSBgYEtleVNjaGVtYUVsZW1lbnRgYCAoZm9yIHRoZSBwYXJ0aXRpb24ga2V5KS4gQSBjb21wb3NpdGUgcHJpbWFyeSBrZXkgd291bGQgcmVxdWlyZSBvbmUgYGBLZXlTY2hlbWFFbGVtZW50YGAgZm9yIHRoZSBwYXJ0aXRpb24ga2V5LCBhbmQgYW5vdGhlciBgYEtleVNjaGVtYUVsZW1lbnRgYCBmb3IgdGhlIHNvcnQga2V5LlxuICogIEEgYGBLZXlTY2hlbWFFbGVtZW50YGAgbXVzdCBiZSBhIHNjYWxhciwgdG9wLWxldmVsIGF0dHJpYnV0ZSAobm90IGEgbmVzdGVkIGF0dHJpYnV0ZSkuIFRoZSBkYXRhIHR5cGUgbXVzdCBiZSBvbmUgb2YgU3RyaW5nLCBOdW1iZXIsIG9yIEJpbmFyeS4gVGhlIGF0dHJpYnV0ZSBjYW5ub3QgYmUgbmVzdGVkIHdpdGhpbiBhIExpc3Qgb3IgYSBNYXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5U2NoZW1hIHtcbi8qKlxuICogVGhlIHJvbGUgdGhhdCB0aGlzIGtleSBhdHRyaWJ1dGUgd2lsbCBhc3N1bWU6XG4gKiAgICsgICBgYEhBU0hgYCAtIHBhcnRpdGlvbiBrZXlcbiAqICAgKyAgIGBgUkFOR0VgYCAtIHNvcnQga2V5XG4gKiAgIFxuICogICBUaGUgcGFydGl0aW9uIGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpoYXNoIGF0dHJpYnV0ZSouIFRoZSB0ZXJtIFwiaGFzaCBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gRHluYW1vREIncyB1c2FnZSBvZiBhbiBpbnRlcm5hbCBoYXNoIGZ1bmN0aW9uIHRvIGV2ZW5seSBkaXN0cmlidXRlIGRhdGEgaXRlbXMgYWNyb3NzIHBhcnRpdGlvbnMsIGJhc2VkIG9uIHRoZWlyIHBhcnRpdGlvbiBrZXkgdmFsdWVzLlxuICogIFRoZSBzb3J0IGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpyYW5nZSBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcInJhbmdlIGF0dHJpYnV0ZVwiIGRlcml2ZXMgZnJvbSB0aGUgd2F5IER5bmFtb0RCIHN0b3JlcyBpdGVtcyB3aXRoIHRoZSBzYW1lIHBhcnRpdGlvbiBrZXkgcGh5c2ljYWxseSBjbG9zZSB0b2dldGhlciwgaW4gc29ydGVkIG9yZGVyIGJ5IHRoZSBzb3J0IGtleSB2YWx1ZS5cbiAqL1xuS2V5VHlwZTogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIGEga2V5IGF0dHJpYnV0ZS5cbiAqL1xuQXR0cmlidXRlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIEEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IGRvY3VtZW50IHRoYXQgY29udGFpbnMgcGVybWlzc2lvbnMgdG8gYWRkIHRvIHRoZSBzcGVjaWZpZWQgdGFibGUuIEluIGEgQ0ZOc2hvcnQgdGVtcGxhdGUsIHlvdSBjYW4gcHJvdmlkZSB0aGUgcG9saWN5IGluIEpTT04gb3IgWUFNTCBmb3JtYXQgYmVjYXVzZSBDRk5zaG9ydCBjb252ZXJ0cyBZQU1MIHRvIEpTT04gYmVmb3JlIHN1Ym1pdHRpbmcgaXQgdG8gRERCLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZS1iYXNlZCBwb2xpY2llcywgc2VlIFtVc2luZyByZXNvdXJjZS1iYXNlZCBwb2xpY2llcyBmb3JdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvYWNjZXNzLWNvbnRyb2wtcmVzb3VyY2UtYmFzZWQuaHRtbCkgYW5kIFtSZXNvdXJjZS1iYXNlZCBwb2xpY3kgZXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmJhYy1leGFtcGxlcy5odG1sKS5cbiAqICBXaGVuIHlvdSBhdHRhY2ggYSByZXNvdXJjZS1iYXNlZCBwb2xpY3kgd2hpbGUgY3JlYXRpbmcgYSB0YWJsZSwgdGhlIHBvbGljeSBjcmVhdGlvbiBpcyAqc3Ryb25nbHkgY29uc2lzdGVudCouIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uc2lkZXJhdGlvbnMgdGhhdCB5b3Ugc2hvdWxkIGtlZXAgaW4gbWluZCB3aGlsZSBhdHRhY2hpbmcgYSByZXNvdXJjZS1iYXNlZCBwb2xpY3ksIHNlZSBbUmVzb3VyY2UtYmFzZWQgcG9saWN5IGNvbnNpZGVyYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3JiYWMtY29uc2lkZXJhdGlvbnMuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQb2xpY3kxIHtcbi8qKlxuICogQSByZXNvdXJjZS1iYXNlZCBwb2xpY3kgZG9jdW1lbnQgdGhhdCBjb250YWlucyBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhlIHNwZWNpZmllZCBEREIgdGFibGUsIGluZGV4LCBvciBib3RoLiBJbiBhIENGTnNob3J0IHRlbXBsYXRlLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHBvbGljeSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0IGJlY2F1c2UgQ0ZOc2hvcnQgY29udmVydHMgWUFNTCB0byBKU09OIGJlZm9yZSBzdWJtaXR0aW5nIGl0IHRvIEREQi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMsIHNlZSBbVXNpbmcgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMgZm9yXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FjY2Vzcy1jb250cm9sLXJlc291cmNlLWJhc2VkLmh0bWwpIGFuZCBbUmVzb3VyY2UtYmFzZWQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3JiYWMtZXhhbXBsZXMuaHRtbCkuXG4gKi9cblBvbGljeURvY3VtZW50OiB7XG5bazogc3RyaW5nXTogdW5rbm93blxufVxufVxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiBBIGxvY2FsIHNlY29uZGFyeSBpbmRleCBjYW4gb25seSBiZSBjcmVhdGVkIHdoZW4gaXRzIHBhcmVudCB0YWJsZSBpcyBjcmVhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsU2Vjb25kYXJ5SW5kZXgge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSBhbW9uZyBhbGwgb3RoZXIgaW5kZXhlcyBvbiB0aGlzIHRhYmxlLlxuICovXG5JbmRleE5hbWU6IHN0cmluZ1xuUHJvamVjdGlvbjogUHJvamVjdGlvbjFcbi8qKlxuICogVGhlIGNvbXBsZXRlIGtleSBzY2hlbWEgZm9yIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXgsIGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgcGFpcnMgb2YgYXR0cmlidXRlIG5hbWVzIGFuZCBrZXkgdHlwZXM6XG4gKiAgICsgICBgYEhBU0hgYCAtIHBhcnRpdGlvbiBrZXlcbiAqICAgKyAgIGBgUkFOR0VgYCAtIHNvcnQga2V5XG4gKiAgIFxuICogICBUaGUgcGFydGl0aW9uIGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpoYXNoIGF0dHJpYnV0ZSouIFRoZSB0ZXJtIFwiaGFzaCBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gRHluYW1vREIncyB1c2FnZSBvZiBhbiBpbnRlcm5hbCBoYXNoIGZ1bmN0aW9uIHRvIGV2ZW5seSBkaXN0cmlidXRlIGRhdGEgaXRlbXMgYWNyb3NzIHBhcnRpdGlvbnMsIGJhc2VkIG9uIHRoZWlyIHBhcnRpdGlvbiBrZXkgdmFsdWVzLlxuICogIFRoZSBzb3J0IGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpyYW5nZSBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcInJhbmdlIGF0dHJpYnV0ZVwiIGRlcml2ZXMgZnJvbSB0aGUgd2F5IER5bmFtb0RCIHN0b3JlcyBpdGVtcyB3aXRoIHRoZSBzYW1lIHBhcnRpdGlvbiBrZXkgcGh5c2ljYWxseSBjbG9zZSB0b2dldGhlciwgaW4gc29ydGVkIG9yZGVyIGJ5IHRoZSBzb3J0IGtleSB2YWx1ZS5cbiAqL1xuS2V5U2NoZW1hOiBLZXlTY2hlbWFbXVxufVxuLyoqXG4gKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gdGhlIGxvY2FsIHNlY29uZGFyeSBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3Rpb24xIHtcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbm9uLWtleSBhdHRyaWJ1dGUgbmFtZXMgd2hpY2ggd2lsbCBiZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgRm9yIGdsb2JhbCBhbmQgbG9jYWwgc2Vjb25kYXJ5IGluZGV4ZXMsIHRoZSB0b3RhbCBjb3VudCBvZiBgYE5vbktleUF0dHJpYnV0ZXNgYCBzdW1tZWQgYWNyb3NzIGFsbCBvZiB0aGUgc2Vjb25kYXJ5IGluZGV4ZXMsIG11c3Qgbm90IGV4Y2VlZCAxMDAuIElmIHlvdSBwcm9qZWN0IHRoZSBzYW1lIGF0dHJpYnV0ZSBpbnRvIHR3byBkaWZmZXJlbnQgaW5kZXhlcywgdGhpcyBjb3VudHMgYXMgdHdvIGRpc3RpbmN0IGF0dHJpYnV0ZXMgd2hlbiBkZXRlcm1pbmluZyB0aGUgdG90YWwuIFRoaXMgbGltaXQgb25seSBhcHBsaWVzIHdoZW4geW91IHNwZWNpZnkgdGhlIFByb2plY3Rpb25UeXBlIG9mIGBgSU5DTFVERWBgLiBZb3Ugc3RpbGwgY2FuIHNwZWNpZnkgdGhlIFByb2plY3Rpb25UeXBlIG9mIGBgQUxMYGAgdG8gcHJvamVjdCBhbGwgYXR0cmlidXRlcyBmcm9tIHRoZSBzb3VyY2UgdGFibGUsIGV2ZW4gaWYgdGhlIHRhYmxlIGhhcyBtb3JlIHRoYW4gMTAwIGF0dHJpYnV0ZXMuXG4gKi9cbk5vbktleUF0dHJpYnV0ZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgc2V0IG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4OlxuICogICArICAgYGBLRVlTX09OTFlgYCAtIE9ubHkgdGhlIGluZGV4IGFuZCBwcmltYXJ5IGtleXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICAgKyAgIGBgSU5DTFVERWBgIC0gSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgZGVzY3JpYmVkIGluIGBgS0VZU19PTkxZYGAsIHRoZSBzZWNvbmRhcnkgaW5kZXggd2lsbCBpbmNsdWRlIG90aGVyIG5vbi1rZXkgYXR0cmlidXRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogICArICAgYGBBTExgYCAtIEFsbCBvZiB0aGUgdGFibGUgYXR0cmlidXRlcyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogICBcbiAqICBXaGVuIHVzaW5nIHRoZSBEeW5hbW9EQiBjb25zb2xlLCBgYEFMTGBgIGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXG4gKi9cblByb2plY3Rpb25UeXBlPzogc3RyaW5nXG59XG4vKipcbiAqIERlc2NyaWJlcyBhIHRhZy4gQSB0YWcgaXMgYSBrZXktdmFsdWUgcGFpci4gWW91IGNhbiBhZGQgdXAgdG8gNTAgdGFncyB0byBhIHNpbmdsZSBEeW5hbW9EQiB0YWJsZS4gXG4gKiAgIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgYW5kIHZhbHVlcyBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0aGUgYGBhd3M6YGAgcHJlZml4LCB3aGljaCB0aGUgdXNlciBjYW5ub3QgYXNzaWduLiBBV1MtYXNzaWduZWQgdGFnIG5hbWVzIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSB0YWcgbGltaXQgb2YgNTAuIFVzZXItYXNzaWduZWQgdGFnIG5hbWVzIGhhdmUgdGhlIHByZWZpeCBgYHVzZXI6YGAgaW4gdGhlIENvc3QgQWxsb2NhdGlvbiBSZXBvcnQuIFlvdSBjYW5ub3QgYmFja2RhdGUgdGhlIGFwcGxpY2F0aW9uIG9mIGEgdGFnLlxuICogIEZvciBhbiBvdmVydmlldyBvbiB0YWdnaW5nIER5bmFtb0RCIHJlc291cmNlcywgc2VlIFtUYWdnaW5nIGZvciBEeW5hbW9EQl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9UYWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSB0YWcuIFRhZyB2YWx1ZXMgYXJlIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4gYmUgbnVsbC5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUga2V5IG9mIHRoZSB0YWcuIFRhZyBrZXlzIGFyZSBjYXNlIHNlbnNpdGl2ZS4gRWFjaCBEeW5hbW9EQiB0YWJsZSBjYW4gb25seSBoYXZlIHVwIHRvIG9uZSB0YWcgd2l0aCB0aGUgc2FtZSBrZXkuIElmIHlvdSB0cnkgdG8gYWRkIGFuIGV4aXN0aW5nIHRhZyAoc2FtZSBrZXkpLCB0aGUgZXhpc3RpbmcgdGFnIHZhbHVlIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgbmV3IHZhbHVlLlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFRpbWUgdG8gTGl2ZSAoVFRMKSBzZXR0aW5ncyBmb3IgdGhlIHRhYmxlLlxuICogICBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbWl0cyBpbiBEeW5hbW9EQiwgc2VlIFtMaW1pdHMgaW4gQW1hem9uIER5bmFtb0RCXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0xpbWl0cy5odG1sKSBpbiB0aGUgQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1lVG9MaXZlU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIFRUTCBpcyB0byBiZSBlbmFibGVkICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpIG9uIHRoZSB0YWJsZS5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgVFRMIGF0dHJpYnV0ZSB1c2VkIHRvIHN0b3JlIHRoZSBleHBpcmF0aW9uIHRpbWUgZm9yIGl0ZW1zIGluIHRoZSB0YWJsZS5cbiAqICAgICsgIFRoZSBgYEF0dHJpYnV0ZU5hbWVgYCBwcm9wZXJ0eSBpcyByZXF1aXJlZCB3aGVuIGVuYWJsaW5nIHRoZSBUVEwsIG9yIHdoZW4gVFRMIGlzIGFscmVhZHkgZW5hYmxlZC5cbiAqICAgKyAgVG8gdXBkYXRlIHRoaXMgcHJvcGVydHksIHlvdSBtdXN0IGZpcnN0IGRpc2FibGUgVFRMIGFuZCB0aGVuIGVuYWJsZSBUVEwgd2l0aCB0aGUgbmV3IGF0dHJpYnV0ZSBuYW1lLlxuICovXG5BdHRyaWJ1dGVOYW1lPzogc3RyaW5nXG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWR5bmFtb2RiLXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWR5bmFtb2RiLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgY3JlYXRpbmcgYSB0YWJsZS5cbiAqL1xuZXhwb3J0IHR5cGUgV2FybVRocm91Z2hwdXQgPSAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiB7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiByZWFkIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuUmVhZFVuaXRzUGVyU2Vjb25kPzogbnVtYmVyXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiB3cml0ZSBvcGVyYXRpb25zIHlvdXIgYmFzZSB0YWJsZSBjYW4gaW5zdGFudGFuZW91c2x5IHN1cHBvcnQuXG4gKi9cbldyaXRlVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbn0pXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHdhcm0gdGhyb3VnaHB1dCB2YWx1ZSAoaW4gcmVhZCB1bml0cyBwZXIgc2Vjb25kIGFuZCB3cml0ZSB1bml0cyBwZXIgc2Vjb25kKSBmb3IgdGhlIHNwZWNpZmllZCBzZWNvbmRhcnkgaW5kZXguIElmIHlvdSB1c2UgdGhpcyBwYXJhbWV0ZXIsIHlvdSBtdXN0IHNwZWNpZnkgYGBSZWFkVW5pdHNQZXJTZWNvbmRgYCwgYGBXcml0ZVVuaXRzUGVyU2Vjb25kYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCB0eXBlIFdhcm1UaHJvdWdocHV0MSA9ICh7XG5bazogc3RyaW5nXTogdW5rbm93blxufSAmIHtcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHJlYWQgb3BlcmF0aW9ucyB5b3VyIGJhc2UgdGFibGUgY2FuIGluc3RhbnRhbmVvdXNseSBzdXBwb3J0LlxuICovXG5SZWFkVW5pdHNQZXJTZWNvbmQ/OiBudW1iZXJcbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHdyaXRlIG9wZXJhdGlvbnMgeW91ciBiYXNlIHRhYmxlIGNhbiBpbnN0YW50YW5lb3VzbHkgc3VwcG9ydC5cbiAqL1xuV3JpdGVVbml0c1BlclNlY29uZD86IG51bWJlclxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OkR5bmFtb0RCOjpUYWJsZWBgIHJlc291cmNlIGNyZWF0ZXMgYSBEREIgdGFibGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZVRhYmxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ3JlYXRlVGFibGUuaHRtbCkgaW4gdGhlICpBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3Ugc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3JzIHdoZW4gd29ya2luZyB3aXRoIEREQiB0YWJsZXM6XG4gKiAgICsgIENGTmxvbmcgdHlwaWNhbGx5IGNyZWF0ZXMgRERCIHRhYmxlcyBpbiBwYXJhbGxlbC4gSG93ZXZlciwgaWYgeW91ciB0ZW1wbGF0ZSBpbmNsdWRlcyBtdWx0aXBsZSBEREIgdGFibGVzIHdpdGggaW5kZXhlcywgeW91IG11c3QgZGVjbGFyZSBkZXBlbmRlbmNpZXMgc28gdGhhdCB0aGUgdGFibGVzIGFyZSBjcmVhdGVkIHNlcXVlbnRpYWxseS4gRERCbG9uZyBsaW1pdHMgdGhlIG51bWJlciBvZiB0YWJsZXMgd2l0aCBzZWNvbmRhcnkgaW5kZXhlcyB0aGF0IGFyZSBpbiB0aGUgY3JlYXRpbmcgc3RhdGUuIElmIHlvdSBjcmVhdGUgbXVsdGlwbGUgdGFibGVzIHdpdGggaW5kZXhlcyBhdCB0aGUgc2FtZSB0aW1lLCBEREIgcmV0dXJucyBhbiBlcnJvciBhbmQgdGhlIHN0YWNrIG9wZXJhdGlvbiBmYWlscy4gRm9yIGFuIGV4YW1wbGUsIHNlZSBbRHluYW1vREIgVGFibGUgd2l0aCBhIERlcGVuZHNPbiBBdHRyaWJ1dGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1keW5hbW9kYi10YWJsZS5odG1sI2F3cy1yZXNvdXJjZS1keW5hbW9kYi10YWJsZS0tZXhhbXBsZXMtLUR5bmFtb0RCX1RhYmxlX3dpdGhfYV9EZXBlbmRzT25fQXR0cmlidXRlKS5cbiAqICAgXG4gKiAgICBPdXIgZ3VpZGFuY2UgaXMgdG8gdXNlIHRoZSBsYXRlc3Qgc2NoZW1hIGRvY3VtZW50ZWQgZm9yIHlvdXIgQ0ZObG9uZyB0ZW1wbGF0ZXMuIFRoaXMgc2NoZW1hIHN1cHBvcnRzIHRoZSBwcm92aXNpb25pbmcgb2YgYWxsIHRhYmxlIHNldHRpbmdzIGJlbG93LiBXaGVuIHVzaW5nIHRoaXMgc2NoZW1hIGluIHlvdXIgQ0ZObG9uZyB0ZW1wbGF0ZXMsIHBsZWFzZSBlbnN1cmUgdGhhdCB5b3VyIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSBwb2xpY2llcyBhcmUgdXBkYXRlZCB3aXRoIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIHRvIGFsbG93IGZvciB0aGUgYXV0aG9yaXphdGlvbiBvZiB0aGVzZSBzZXR0aW5nIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19EWU5BTU9EQl9UQUJMRSB7XG5PbkRlbWFuZFRocm91Z2hwdXQ/OiBPbkRlbWFuZFRocm91Z2hwdXRcblNTRVNwZWNpZmljYXRpb24/OiBTU0VTcGVjaWZpY2F0aW9uXG5LaW5lc2lzU3RyZWFtU3BlY2lmaWNhdGlvbj86IEtpbmVzaXNTdHJlYW1TcGVjaWZpY2F0aW9uXG5TdHJlYW1TcGVjaWZpY2F0aW9uPzogU3RyZWFtU3BlY2lmaWNhdGlvblxuQ29udHJpYnV0b3JJbnNpZ2h0c1NwZWNpZmljYXRpb24/OiBDb250cmlidXRvckluc2lnaHRzU3BlY2lmaWNhdGlvblxuSW1wb3J0U291cmNlU3BlY2lmaWNhdGlvbj86IEltcG9ydFNvdXJjZVNwZWNpZmljYXRpb25cblBvaW50SW5UaW1lUmVjb3ZlcnlTcGVjaWZpY2F0aW9uPzogUG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb25cblByb3Zpc2lvbmVkVGhyb3VnaHB1dD86IFByb3Zpc2lvbmVkVGhyb3VnaHB1dFxuV2FybVRocm91Z2hwdXQ/OiBXYXJtVGhyb3VnaHB1dFxuLyoqXG4gKiBBIG5hbWUgZm9yIHRoZSB0YWJsZS4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSBuYW1lLCBDRk5sb25nIGdlbmVyYXRlcyBhIHVuaXF1ZSBwaHlzaWNhbCBJRCBhbmQgdXNlcyB0aGF0IElEIGZvciB0aGUgdGFibGUgbmFtZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbTmFtZSBUeXBlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1uYW1lLmh0bWwpLlxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG5hbWUsIHlvdSBjYW5ub3QgcGVyZm9ybSB1cGRhdGVzIHRoYXQgcmVxdWlyZSByZXBsYWNlbWVudCBvZiB0aGlzIHJlc291cmNlLiBZb3UgY2FuIHBlcmZvcm0gdXBkYXRlcyB0aGF0IHJlcXVpcmUgbm8gb3Igc29tZSBpbnRlcnJ1cHRpb24uIElmIHlvdSBtdXN0IHJlcGxhY2UgdGhlIHJlc291cmNlLCBzcGVjaWZ5IGEgbmV3IG5hbWUuXG4gKi9cblRhYmxlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBBIGxpc3Qgb2YgYXR0cmlidXRlcyB0aGF0IGRlc2NyaWJlIHRoZSBrZXkgc2NoZW1hIGZvciB0aGUgdGFibGUgYW5kIGluZGV4ZXMuXG4gKiAgVGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBEREIgdGFibGUuXG4gKiAgVXBkYXRlIHJlcXVpcmVzOiBbU29tZSBpbnRlcnJ1cHRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS91c2luZy1jZm4tdXBkYXRpbmctc3RhY2tzLXVwZGF0ZS1iZWhhdmlvcnMuaHRtbCN1cGRhdGUtc29tZS1pbnRlcnJ1cHQpLiBSZXBsYWNlbWVudCBpZiB5b3UgZWRpdCBhbiBleGlzdGluZyBBdHRyaWJ1dGVEZWZpbml0aW9uLlxuICovXG5BdHRyaWJ1dGVEZWZpbml0aW9ucz86IEF0dHJpYnV0ZURlZmluaXRpb25bXVxuLyoqXG4gKiBTcGVjaWZ5IGhvdyB5b3UgYXJlIGNoYXJnZWQgZm9yIHJlYWQgYW5kIHdyaXRlIHRocm91Z2hwdXQgYW5kIGhvdyB5b3UgbWFuYWdlIGNhcGFjaXR5LlxuICogIFZhbGlkIHZhbHVlcyBpbmNsdWRlOlxuICogICArICBgYFBBWV9QRVJfUkVRVUVTVGBgIC0gV2UgcmVjb21tZW5kIHVzaW5nIGBgUEFZX1BFUl9SRVFVRVNUYGAgZm9yIG1vc3QgRHluYW1vREIgd29ya2xvYWRzLiBgYFBBWV9QRVJfUkVRVUVTVGBgIHNldHMgdGhlIGJpbGxpbmcgbW9kZSB0byBbT24tZGVtYW5kIGNhcGFjaXR5IG1vZGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvb24tZGVtYW5kLWNhcGFjaXR5LW1vZGUuaHRtbCkuIFxuICogICArICBgYFBST1ZJU0lPTkVEYGAgLSBXZSByZWNvbW1lbmQgdXNpbmcgYGBQUk9WSVNJT05FRGBgIGZvciBzdGVhZHkgd29ya2xvYWRzIHdpdGggcHJlZGljdGFibGUgZ3Jvd3RoIHdoZXJlIGNhcGFjaXR5IHJlcXVpcmVtZW50cyBjYW4gYmUgcmVsaWFibHkgZm9yZWNhc3RlZC4gYGBQUk9WSVNJT05FRGBgIHNldHMgdGhlIGJpbGxpbmcgbW9kZSB0byBbUHJvdmlzaW9uZWQgY2FwYWNpdHkgbW9kZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9wcm92aXNpb25lZC1jYXBhY2l0eS1tb2RlLmh0bWwpLlxuICogICBcbiAqICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyBgYFBST1ZJU0lPTkVEYGAuXG4gKi9cbkJpbGxpbmdNb2RlPzogc3RyaW5nXG4vKipcbiAqIEdsb2JhbCBzZWNvbmRhcnkgaW5kZXhlcyB0byBiZSBjcmVhdGVkIG9uIHRoZSB0YWJsZS4gWW91IGNhbiBjcmVhdGUgdXAgdG8gMjAgZ2xvYmFsIHNlY29uZGFyeSBpbmRleGVzLlxuICogICBJZiB5b3UgdXBkYXRlIGEgdGFibGUgdG8gaW5jbHVkZSBhIG5ldyBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LCBDRk5sb25nIGluaXRpYXRlcyB0aGUgaW5kZXggY3JlYXRpb24gYW5kIHRoZW4gcHJvY2VlZHMgd2l0aCB0aGUgc3RhY2sgdXBkYXRlLiBDRk5sb25nIGRvZXNuJ3Qgd2FpdCBmb3IgdGhlIGluZGV4IHRvIGNvbXBsZXRlIGNyZWF0aW9uIGJlY2F1c2UgdGhlIGJhY2tmaWxsaW5nIHBoYXNlIGNhbiB0YWtlIGEgbG9uZyB0aW1lLCBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgdGhlIHRhYmxlLiBZb3UgY2FuJ3QgdXNlIHRoZSBpbmRleCBvciB1cGRhdGUgdGhlIHRhYmxlIHVudGlsIHRoZSBpbmRleCdzIHN0YXR1cyBpcyBgYEFDVElWRWBgLiBZb3UgY2FuIHRyYWNrIGl0cyBzdGF0dXMgYnkgdXNpbmcgdGhlIER5bmFtb0RCIFtEZXNjcmliZVRhYmxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC9yZWZlcmVuY2UvZHluYW1vZGIvZGVzY3JpYmUtdGFibGUuaHRtbCkgY29tbWFuZC5cbiAqICBJZiB5b3UgYWRkIG9yIGRlbGV0ZSBhbiBpbmRleCBkdXJpbmcgYW4gdXBkYXRlLCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgZG9uJ3QgdXBkYXRlIGFueSBvdGhlciByZXNvdXJjZXMuIElmIHlvdXIgc3RhY2sgZmFpbHMgdG8gdXBkYXRlIGFuZCBpcyByb2xsZWQgYmFjayB3aGlsZSBhZGRpbmcgYSBuZXcgaW5kZXgsIHlvdSBtdXN0IG1hbnVhbGx5IGRlbGV0ZSB0aGUgaW5kZXguIFxuICogIFVwZGF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFRoZSBmb2xsb3dpbmcgYXJlIGV4Y2VwdGlvbnM6XG4gKiAgICsgIElmIHlvdSB1cGRhdGUgZWl0aGVyIHRoZSBjb250cmlidXRvciBpbnNpZ2h0cyBzcGVjaWZpY2F0aW9uIG9yIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHZhbHVlcyBvZiBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4ZXMsIHlvdSBjYW4gdXBkYXRlIHRoZSB0YWJsZSB3aXRob3V0IGludGVycnVwdGlvbi5cbiAqICAgKyAgWW91IGNhbiBkZWxldGUgb3IgYWRkIG9uZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4IHdpdGhvdXQgaW50ZXJydXB0aW9uLiBJZiB5b3UgZG8gYm90aCBpbiB0aGUgc2FtZSB1cGRhdGUgKGZvciBleGFtcGxlLCBieSBjaGFuZ2luZyB0aGUgaW5kZXgncyBsb2dpY2FsIElEKSwgdGhlIHVwZGF0ZSBmYWlscy5cbiAqL1xuR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcz86IEdsb2JhbFNlY29uZGFyeUluZGV4W11cblJlc291cmNlUG9saWN5PzogUmVzb3VyY2VQb2xpY3kxXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0aGF0IG1ha2UgdXAgdGhlIHByaW1hcnkga2V5IGZvciB0aGUgdGFibGUuIFRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgYEtleVNjaGVtYWBgIHByb3BlcnR5IG11c3QgYWxzbyBiZSBkZWZpbmVkIGluIHRoZSBgYEF0dHJpYnV0ZURlZmluaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbktleVNjaGVtYTogKEtleVNjaGVtYVtdIHwge1xuW2s6IHN0cmluZ106IHVua25vd25cbn0pXG4vKipcbiAqIExvY2FsIHNlY29uZGFyeSBpbmRleGVzIHRvIGJlIGNyZWF0ZWQgb24gdGhlIHRhYmxlLiBZb3UgY2FuIGNyZWF0ZSB1cCB0byA1IGxvY2FsIHNlY29uZGFyeSBpbmRleGVzLiBFYWNoIGluZGV4IGlzIHNjb3BlZCB0byBhIGdpdmVuIGhhc2gga2V5IHZhbHVlLiBUaGUgc2l6ZSBvZiBlYWNoIGhhc2gga2V5IGNhbiBiZSB1cCB0byAxMCBnaWdhYnl0ZXMuXG4gKi9cbkxvY2FsU2Vjb25kYXJ5SW5kZXhlcz86IExvY2FsU2Vjb25kYXJ5SW5kZXhbXVxuQXJuPzogc3RyaW5nXG5TdHJlYW1Bcm4/OiBzdHJpbmdcbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIHRhYmxlIGlzIHByb3RlY3RlZCBmcm9tIGRlbGV0aW9uLiBXaGVuIGVuYWJsZWQsIHRoZSB0YWJsZSBjYW5ub3QgYmUgZGVsZXRlZCBieSBhbnkgdXNlciBvciBwcm9jZXNzLiBUaGlzIHNldHRpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNpbmcgZGVsZXRpb24gcHJvdGVjdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Xb3JraW5nV2l0aFRhYmxlcy5CYXNpY3MuaHRtbCNXb3JraW5nV2l0aFRhYmxlcy5CYXNpY3MuRGVsZXRpb25Qcm90ZWN0aW9uKSBpbiB0aGUgKkRldmVsb3BlciBHdWlkZSouXG4gKi9cbkRlbGV0aW9uUHJvdGVjdGlvbkVuYWJsZWQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSB0YWJsZSBjbGFzcyBvZiB0aGUgbmV3IHRhYmxlLiBWYWxpZCB2YWx1ZXMgYXJlIGBgU1RBTkRBUkRgYCBhbmQgYGBTVEFOREFSRF9JTkZSRVFVRU5UX0FDQ0VTU2BgLlxuICovXG5UYWJsZUNsYXNzPzogc3RyaW5nXG4vKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1RhZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtcmVzb3VyY2UtdGFncy5odG1sKS5cbiAqL1xuVGFncz86IFRhZ1tdXG5UaW1lVG9MaXZlU3BlY2lmaWNhdGlvbj86IFRpbWVUb0xpdmVTcGVjaWZpY2F0aW9uXG59XG4vKipcbiAqIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlYWQgYW5kIHdyaXRlIHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIG9uLWRlbWFuZCB0YWJsZS4gSWYgeW91IHVzZSB0aGlzIHByb3BlcnR5LCB5b3UgbXVzdCBzcGVjaWZ5IGBgTWF4UmVhZFJlcXVlc3RVbml0c2BgLCBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAsIG9yIGJvdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT25EZW1hbmRUaHJvdWdocHV0IHtcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2YgcmVhZCByZXF1ZXN0IHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICogIFRvIHNwZWNpZnkgYSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFJlYWRSZXF1ZXN0VW5pdHNgYCBhcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVG8gcmVtb3ZlIHRoZSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgdGhhdCBpcyBjdXJyZW50bHkgc2V0IG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFJlYWRSZXF1ZXN0VW5pdHM/OiBudW1iZXJcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2Ygd3JpdGUgcmVxdWVzdCB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqICBUbyBzcGVjaWZ5IGEgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgIGFzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLiBUbyByZW1vdmUgdGhlIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCB0aGF0IGlzIGN1cnJlbnRseSBzZXQgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFdyaXRlUmVxdWVzdFVuaXRzPzogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc2V0dGluZ3MgdG8gZW5hYmxlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1NFU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gaXMgZG9uZSB1c2luZyBhbiBBV1MgbWFuYWdlZCBrZXkgb3IgYW4gQVdTIG93bmVkIGtleS4gSWYgZW5hYmxlZCAodHJ1ZSksIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdHlwZSBpcyBzZXQgdG8gYGBLTVNgYCBhbmQgYW4gQVdTIG1hbmFnZWQga2V5IGlzIHVzZWQgKEtNUyBjaGFyZ2VzIGFwcGx5KS4gSWYgZGlzYWJsZWQgKGZhbHNlKSBvciBub3Qgc3BlY2lmaWVkLCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGlzIHNldCB0byBBV1Mgb3duZWQga2V5LlxuICovXG5TU0VFbmFibGVkOiBib29sZWFuXG4vKipcbiAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gdHlwZS4gVGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzOlxuICogICArICBgYEtNU2BgIC0gU2VydmVyLXNpZGUgZW5jcnlwdGlvbiB0aGF0IHVzZXMgS01TbG9uZy4gVGhlIGtleSBpcyBzdG9yZWQgaW4geW91ciBhY2NvdW50IGFuZCBpcyBtYW5hZ2VkIGJ5IEtNUyAoS01TIGNoYXJnZXMgYXBwbHkpLlxuICovXG5TU0VUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBLTVMga2V5IHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBLTVMgZW5jcnlwdGlvbi4gVG8gc3BlY2lmeSBhIGtleSwgdXNlIGl0cyBrZXkgSUQsIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pLCBhbGlhcyBuYW1lLCBvciBhbGlhcyBBUk4uIE5vdGUgdGhhdCB5b3Ugc2hvdWxkIG9ubHkgcHJvdmlkZSB0aGlzIHBhcmFtZXRlciBpZiB0aGUga2V5IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IER5bmFtb0RCIGtleSBgYGFsaWFzL2F3cy9keW5hbW9kYmBgLlxuICovXG5LTVNNYXN0ZXJLZXlJZD86ICh7XG5bazogc3RyaW5nXTogdW5rbm93blxufSAmIHN0cmluZylcbn1cbi8qKlxuICogVGhlIEtpbmVzaXMgRGF0YSBTdHJlYW1zIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2luZXNpc1N0cmVhbVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBUaGUgcHJlY2lzaW9uIGZvciB0aGUgdGltZSBhbmQgZGF0ZSB0aGF0IHRoZSBzdHJlYW0gd2FzIGNyZWF0ZWQuXG4gKi9cbkFwcHJveGltYXRlQ3JlYXRpb25EYXRlVGltZVByZWNpc2lvbj86IChcIk1JQ1JPU0VDT05EXCIgfCBcIk1JTExJU0VDT05EXCIpXG4vKipcbiAqIFRoZSBBUk4gZm9yIGEgc3BlY2lmaWMgS2luZXNpcyBkYXRhIHN0cmVhbS5cbiAqICBMZW5ndGggQ29uc3RyYWludHM6IE1pbmltdW0gbGVuZ3RoIG9mIDM3LiBNYXhpbXVtIGxlbmd0aCBvZiAxMDI0LlxuICovXG5TdHJlYW1Bcm46IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgZm9yIHRoZSBEREIgdGFibGUgc3RyZWFtLCB3aGljaCBjYXB0dXJlIGNoYW5nZXMgdG8gaXRlbXMgc3RvcmVkIGluIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1TcGVjaWZpY2F0aW9uIHtcbi8qKlxuICogV2hlbiBhbiBpdGVtIGluIHRoZSB0YWJsZSBpcyBtb2RpZmllZCwgYGBTdHJlYW1WaWV3VHlwZWBgIGRldGVybWluZXMgd2hhdCBpbmZvcm1hdGlvbiBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0gZm9yIHRoaXMgdGFibGUuIFZhbGlkIHZhbHVlcyBmb3IgYGBTdHJlYW1WaWV3VHlwZWBgIGFyZTpcbiAqICAgKyAgYGBLRVlTX09OTFlgYCAtIE9ubHkgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIHRoZSBtb2RpZmllZCBpdGVtIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKiAgICsgIGBgTkVXX0lNQUdFYGAgLSBUaGUgZW50aXJlIGl0ZW0sIGFzIGl0IGFwcGVhcnMgYWZ0ZXIgaXQgd2FzIG1vZGlmaWVkLCBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKiAgICsgIGBgT0xEX0lNQUdFYGAgLSBUaGUgZW50aXJlIGl0ZW0sIGFzIGl0IGFwcGVhcmVkIGJlZm9yZSBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS5cbiAqICAgKyAgYGBORVdfQU5EX09MRF9JTUFHRVNgYCAtIEJvdGggdGhlIG5ldyBhbmQgdGhlIG9sZCBpdGVtIGltYWdlcyBvZiB0aGUgaXRlbSBhcmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtLlxuICovXG5TdHJlYW1WaWV3VHlwZTogc3RyaW5nXG5SZXNvdXJjZVBvbGljeT86IFJlc291cmNlUG9saWN5XG59XG4vKipcbiAqIENyZWF0ZXMgb3IgdXBkYXRlcyBhIHJlc291cmNlLWJhc2VkIHBvbGljeSBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIHRoZSBwZXJtaXNzaW9ucyBmb3IgRERCIHJlc291cmNlcywgc3VjaCBhcyBhIHRhYmxlJ3Mgc3RyZWFtcy4gUmVzb3VyY2UtYmFzZWQgcG9saWNpZXMgbGV0IHlvdSBkZWZpbmUgYWNjZXNzIHBlcm1pc3Npb25zIGJ5IHNwZWNpZnlpbmcgd2hvIGhhcyBhY2Nlc3MgdG8gZWFjaCByZXNvdXJjZSwgYW5kIHRoZSBhY3Rpb25zIHRoZXkgYXJlIGFsbG93ZWQgdG8gcGVyZm9ybSBvbiBlYWNoIHJlc291cmNlLlxuICogIEluIGEgQ0ZOc2hvcnQgdGVtcGxhdGUsIHlvdSBjYW4gcHJvdmlkZSB0aGUgcG9saWN5IGluIEpTT04gb3IgWUFNTCBmb3JtYXQgYmVjYXVzZSBDRk5zaG9ydCBjb252ZXJ0cyBZQU1MIHRvIEpTT04gYmVmb3JlIHN1Ym1pdHRpbmcgaXQgdG8gRERCLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZS1iYXNlZCBwb2xpY2llcywgc2VlIFtVc2luZyByZXNvdXJjZS1iYXNlZCBwb2xpY2llcyBmb3JdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvYWNjZXNzLWNvbnRyb2wtcmVzb3VyY2UtYmFzZWQuaHRtbCkgYW5kIFtSZXNvdXJjZS1iYXNlZCBwb2xpY3kgZXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmJhYy1leGFtcGxlcy5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVBvbGljeSB7XG4vKipcbiAqIEEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IGRvY3VtZW50IHRoYXQgY29udGFpbnMgcGVybWlzc2lvbnMgdG8gYWRkIHRvIHRoZSBzcGVjaWZpZWQgRERCIHRhYmxlLCBpbmRleCwgb3IgYm90aC4gSW4gYSBDRk5zaG9ydCB0ZW1wbGF0ZSwgeW91IGNhbiBwcm92aWRlIHRoZSBwb2xpY3kgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCBiZWNhdXNlIENGTnNob3J0IGNvbnZlcnRzIFlBTUwgdG8gSlNPTiBiZWZvcmUgc3VibWl0dGluZyBpdCB0byBEREIuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlc291cmNlLWJhc2VkIHBvbGljaWVzLCBzZWUgW1VzaW5nIHJlc291cmNlLWJhc2VkIHBvbGljaWVzIGZvcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9hY2Nlc3MtY29udHJvbC1yZXNvdXJjZS1iYXNlZC5odG1sKSBhbmQgW1Jlc291cmNlLWJhc2VkIHBvbGljeSBleGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9yYmFjLWV4YW1wbGVzLmh0bWwpLlxuICovXG5Qb2xpY3lEb2N1bWVudDoge1xuW2s6IHN0cmluZ106IHVua25vd25cbn1cbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgQ2xvdWRXYXRjaCBDb250cmlidXRvciBJbnNpZ2h0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cmlidXRvckluc2lnaHRzU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIENsb3VkV2F0Y2ggQ29udHJpYnV0b3IgSW5zaWdodHMgYXJlIHRvIGJlIGVuYWJsZWQgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkuXG4gKi9cbkVuYWJsZWQ6IGJvb2xlYW5cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwcm9wZXJ0aWVzIG9mIGRhdGEgYmVpbmcgaW1wb3J0ZWQgZnJvbSB0aGUgUzMgYnVja2V0IHNvdXJjZSB0byB0aGVcIiB0YWJsZS5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhlIGBgSW1wb3J0U291cmNlU3BlY2lmaWNhdGlvbmBgIHByb3BlcnR5LCBhbmQgYWxzbyBzcGVjaWZ5IGVpdGhlciB0aGUgYGBTdHJlYW1TcGVjaWZpY2F0aW9uYGAsIHRoZSBgYFRhYmxlQ2xhc3NgYCBwcm9wZXJ0eSwgdGhlIGBgRGVsZXRpb25Qcm90ZWN0aW9uRW5hYmxlZGBgIHByb3BlcnR5LCBvciB0aGUgYGBXYXJtVGhyb3VnaHB1dGBgIHByb3BlcnR5LCB0aGUgSUFNIGVudGl0eSBjcmVhdGluZy91cGRhdGluZyBzdGFjayBtdXN0IGhhdmUgYGBVcGRhdGVUYWJsZWBgIHBlcm1pc3Npb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0U291cmNlU3BlY2lmaWNhdGlvbiB7XG5TM0J1Y2tldFNvdXJjZTogUzNCdWNrZXRTb3VyY2Vcbi8qKlxuICogVGhlIGZvcm1hdCBvZiB0aGUgc291cmNlIGRhdGEuIFZhbGlkIHZhbHVlcyBmb3IgYGBJbXBvcnRGb3JtYXRgYCBhcmUgYGBDU1ZgYCwgYGBEWU5BTU9EQl9KU09OYGAgb3IgYGBJT05gYC5cbiAqL1xuSW5wdXRGb3JtYXQ6IHN0cmluZ1xuSW5wdXRGb3JtYXRPcHRpb25zPzogSW5wdXRGb3JtYXRPcHRpb25zXG4vKipcbiAqIFR5cGUgb2YgY29tcHJlc3Npb24gdG8gYmUgdXNlZCBvbiB0aGUgaW5wdXQgY29taW5nIGZyb20gdGhlIGltcG9ydGVkIHRhYmxlLlxuICovXG5JbnB1dENvbXByZXNzaW9uVHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgUzMgYnVja2V0IHRoYXQgcHJvdmlkZXMgdGhlIHNvdXJjZSBmb3IgdGhlIGltcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0J1Y2tldFNvdXJjZSB7XG4vKipcbiAqIFRoZSBTMyBidWNrZXQgdGhhdCBpcyBiZWluZyBpbXBvcnRlZCBmcm9tLlxuICovXG5TM0J1Y2tldDogc3RyaW5nXG4vKipcbiAqIFRoZSBrZXkgcHJlZml4IHNoYXJlZCBieSBhbGwgUzMgT2JqZWN0cyB0aGF0IGFyZSBiZWluZyBpbXBvcnRlZC5cbiAqL1xuUzNLZXlQcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFjY291bnQgbnVtYmVyIG9mIHRoZSBTMyBidWNrZXQgdGhhdCBpcyBiZWluZyBpbXBvcnRlZCBmcm9tLiBJZiB0aGUgYnVja2V0IGlzIG93bmVkIGJ5IHRoZSByZXF1ZXN0ZXIgdGhpcyBpcyBvcHRpb25hbC5cbiAqL1xuUzNCdWNrZXRPd25lcj86IHN0cmluZ1xufVxuLyoqXG4gKiBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBzcGVjaWZ5IGhvdyB0aGUgaW5wdXQgaXMgZm9ybWF0dGVkLFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0Rm9ybWF0T3B0aW9ucyB7XG5Dc3Y/OiBDc3Zcbn1cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIGltcG9ydGVkIHNvdXJjZSBmaWxlcyBpbiBDU1YgZm9ybWF0LiBUaGUgdmFsdWVzIGFyZSBEZWxpbWl0ZXIgYW5kIEhlYWRlckxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3N2IHtcbi8qKlxuICogVGhlIGRlbGltaXRlciB1c2VkIGZvciBzZXBhcmF0aW5nIGl0ZW1zIGluIHRoZSBDU1YgZmlsZSBiZWluZyBpbXBvcnRlZC5cbiAqL1xuRGVsaW1pdGVyPzogc3RyaW5nXG4vKipcbiAqIExpc3Qgb2YgdGhlIGhlYWRlcnMgdXNlZCB0byBzcGVjaWZ5IGEgY29tbW9uIGhlYWRlciBmb3IgYWxsIHNvdXJjZSBDU1YgZmlsZXMgYmVpbmcgaW1wb3J0ZWQuIElmIHRoaXMgZmllbGQgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGxpbmUgb2YgZWFjaCBDU1YgZmlsZSBpcyB0cmVhdGVkIGFzIGRhdGEgaW5zdGVhZCBvZiB0aGUgaGVhZGVyLiBJZiB0aGlzIGZpZWxkIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHRoZSBmaXJzdCBsaW5lIG9mIGVhY2ggQ1NWIGZpbGUgaXMgdHJlYXRlZCBhcyB0aGUgaGVhZGVyLlxuICovXG5IZWFkZXJMaXN0Pzogc3RyaW5nW11cbn1cbi8qKlxuICogVGhlIHNldHRpbmdzIHVzZWQgdG8gZW5hYmxlIHBvaW50IGluIHRpbWUgcmVjb3ZlcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9pbnRJblRpbWVSZWNvdmVyeVNwZWNpZmljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBwb2ludCBpbiB0aW1lIHJlY292ZXJ5IGlzIGVuYWJsZWQgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkgb24gdGhlIHRhYmxlLlxuICovXG5Qb2ludEluVGltZVJlY292ZXJ5RW5hYmxlZD86IGJvb2xlYW5cbi8qKlxuICogVGhlIG51bWJlciBvZiBwcmVjZWRpbmcgZGF5cyBmb3Igd2hpY2ggY29udGludW91cyBiYWNrdXBzIGFyZSB0YWtlbiBhbmQgbWFpbnRhaW5lZC4gWW91ciB0YWJsZSBkYXRhIGlzIG9ubHkgcmVjb3ZlcmFibGUgdG8gYW55IHBvaW50LWluLXRpbWUgZnJvbSB3aXRoaW4gdGhlIGNvbmZpZ3VyZWQgcmVjb3ZlcnkgcGVyaW9kLiBUaGlzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIHRoZSB2YWx1ZSB3aWxsIGRlZmF1bHQgdG8gMzUuXG4gKi9cblJlY292ZXJ5UGVyaW9kSW5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFRocm91Z2hwdXQgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUsIHdoaWNoIGNvbnNpc3RzIG9mIHZhbHVlcyBmb3IgYGBSZWFkQ2FwYWNpdHlVbml0c2BgIGFuZCBgYFdyaXRlQ2FwYWNpdHlVbml0c2BgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGVudHMgb2YgYSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHN0cnVjdHVyZSwgc2VlIFtBbWF6b24gRHluYW1vREIgVGFibGUgUHJvdmlzaW9uZWRUaHJvdWdocHV0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfUHJvdmlzaW9uZWRUaHJvdWdocHV0Lmh0bWwpLiBcbiAqICBJZiB5b3Ugc2V0IGBgQmlsbGluZ01vZGVgYCBhcyBgYFBST1ZJU0lPTkVEYGAsIHlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gSWYgeW91IHNldCBgYEJpbGxpbmdNb2RlYGAgYXMgYGBQQVlfUEVSX1JFUVVFU1RgYCwgeW91IGNhbm5vdCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlzaW9uZWRUaHJvdWdocHV0IHtcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHdyaXRlcyBjb25zdW1lZCBwZXIgc2Vjb25kIGJlZm9yZSBEeW5hbW9EQiByZXR1cm5zIGEgYGBUaHJvdHRsaW5nRXhjZXB0aW9uYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgUmVhZCBhbmQgV3JpdGUgUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1Byb3Zpc2lvbmVkVGhyb3VnaHB1dC5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICogIElmIHJlYWQvd3JpdGUgY2FwYWNpdHkgbW9kZSBpcyBgYFBBWV9QRVJfUkVRVUVTVGBgIHRoZSB2YWx1ZSBpcyBzZXQgdG8gMC5cbiAqL1xuV3JpdGVDYXBhY2l0eVVuaXRzOiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbnNpc3RlbnQgcmVhZHMgY29uc3VtZWQgcGVyIHNlY29uZCBiZWZvcmUgRHluYW1vREIgcmV0dXJucyBhIGBgVGhyb3R0bGluZ0V4Y2VwdGlvbmBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTcGVjaWZ5aW5nIFJlYWQgYW5kIFdyaXRlIFJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Qcm92aXNpb25lZFRocm91Z2hwdXQuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBJZiByZWFkL3dyaXRlIGNhcGFjaXR5IG1vZGUgaXMgYGBQQVlfUEVSX1JFUVVFU1RgYCB0aGUgdmFsdWUgaXMgc2V0IHRvIDAuXG4gKi9cblJlYWRDYXBhY2l0eVVuaXRzOiBudW1iZXJcbn1cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhdHRyaWJ1dGUgZm9yIGRlc2NyaWJpbmcgdGhlIHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZURlZmluaXRpb24ge1xuLyoqXG4gKiBUaGUgZGF0YSB0eXBlIGZvciB0aGUgYXR0cmlidXRlLCB3aGVyZTpcbiAqICAgKyAgYGBTYGAgLSB0aGUgYXR0cmlidXRlIGlzIG9mIHR5cGUgU3RyaW5nXG4gKiAgICsgIGBgTmBgIC0gdGhlIGF0dHJpYnV0ZSBpcyBvZiB0eXBlIE51bWJlclxuICogICArICBgYEJgYCAtIHRoZSBhdHRyaWJ1dGUgaXMgb2YgdHlwZSBCaW5hcnlcbiAqL1xuQXR0cmlidXRlVHlwZTogc3RyaW5nXG4vKipcbiAqIEEgbmFtZSBmb3IgdGhlIGF0dHJpYnV0ZS5cbiAqL1xuQXR0cmlidXRlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3BlcnRpZXMgb2YgYSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFNlY29uZGFyeUluZGV4IHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguIFRoZSBuYW1lIG11c3QgYmUgdW5pcXVlIGFtb25nIGFsbCBvdGhlciBpbmRleGVzIG9uIHRoaXMgdGFibGUuXG4gKi9cbkluZGV4TmFtZTogc3RyaW5nXG5PbkRlbWFuZFRocm91Z2hwdXQ/OiBPbkRlbWFuZFRocm91Z2hwdXQxXG5Db250cmlidXRvckluc2lnaHRzU3BlY2lmaWNhdGlvbj86IENvbnRyaWJ1dG9ySW5zaWdodHNTcGVjaWZpY2F0aW9uMVxuUHJvamVjdGlvbjogUHJvamVjdGlvblxuUHJvdmlzaW9uZWRUaHJvdWdocHV0PzogUHJvdmlzaW9uZWRUaHJvdWdocHV0MVxuLyoqXG4gKiBUaGUgY29tcGxldGUga2V5IHNjaGVtYSBmb3IgYSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LCB3aGljaCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBwYWlycyBvZiBhdHRyaWJ1dGUgbmFtZXMgYW5kIGtleSB0eXBlczpcbiAqICAgKyAgYGBIQVNIYGAgLSBwYXJ0aXRpb24ga2V5XG4gKiAgICsgIGBgUkFOR0VgYCAtIHNvcnQga2V5XG4gKiAgIFxuICogICBUaGUgcGFydGl0aW9uIGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpoYXNoIGF0dHJpYnV0ZSouIFRoZSB0ZXJtIFwiaGFzaCBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gRHluYW1vREIncyB1c2FnZSBvZiBhbiBpbnRlcm5hbCBoYXNoIGZ1bmN0aW9uIHRvIGV2ZW5seSBkaXN0cmlidXRlIGRhdGEgaXRlbXMgYWNyb3NzIHBhcnRpdGlvbnMsIGJhc2VkIG9uIHRoZWlyIHBhcnRpdGlvbiBrZXkgdmFsdWVzLlxuICogIFRoZSBzb3J0IGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpyYW5nZSBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcInJhbmdlIGF0dHJpYnV0ZVwiIGRlcml2ZXMgZnJvbSB0aGUgd2F5IER5bmFtb0RCIHN0b3JlcyBpdGVtcyB3aXRoIHRoZSBzYW1lIHBhcnRpdGlvbiBrZXkgcGh5c2ljYWxseSBjbG9zZSB0b2dldGhlciwgaW4gc29ydGVkIG9yZGVyIGJ5IHRoZSBzb3J0IGtleSB2YWx1ZS5cbiAqL1xuS2V5U2NoZW1hOiBLZXlTY2hlbWFbXVxuV2FybVRocm91Z2hwdXQ/OiBXYXJtVGhyb3VnaHB1dDFcbn1cbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlYWQgYW5kIHdyaXRlIHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguIElmIHlvdSB1c2UgdGhpcyBwYXJhbWV0ZXIsIHlvdSBtdXN0IHNwZWNpZnkgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAsIGBgTWF4V3JpdGVSZXF1ZXN0VW5pdHNgYCwgb3IgYm90aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPbkRlbWFuZFRocm91Z2hwdXQxIHtcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2YgcmVhZCByZXF1ZXN0IHVuaXRzIGZvciB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICogIFRvIHNwZWNpZnkgYSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFJlYWRSZXF1ZXN0VW5pdHNgYCBhcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVG8gcmVtb3ZlIHRoZSBtYXhpbXVtIGBgT25EZW1hbmRUaHJvdWdocHV0YGAgdGhhdCBpcyBjdXJyZW50bHkgc2V0IG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhSZWFkUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFJlYWRSZXF1ZXN0VW5pdHM/OiBudW1iZXJcbi8qKlxuICogTWF4aW11bSBudW1iZXIgb2Ygd3JpdGUgcmVxdWVzdCB1bml0cyBmb3IgdGhlIHNwZWNpZmllZCB0YWJsZS5cbiAqICBUbyBzcGVjaWZ5IGEgbWF4aW11bSBgYE9uRGVtYW5kVGhyb3VnaHB1dGBgIG9uIHlvdXIgdGFibGUsIHNldCB0aGUgdmFsdWUgb2YgYGBNYXhXcml0ZVJlcXVlc3RVbml0c2BgIGFzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLiBUbyByZW1vdmUgdGhlIG1heGltdW0gYGBPbkRlbWFuZFRocm91Z2hwdXRgYCB0aGF0IGlzIGN1cnJlbnRseSBzZXQgb24geW91ciB0YWJsZSwgc2V0IHRoZSB2YWx1ZSBvZiBgYE1heFdyaXRlUmVxdWVzdFVuaXRzYGAgdG8gLTEuXG4gKi9cbk1heFdyaXRlUmVxdWVzdFVuaXRzPzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBzZXR0aW5ncyB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIENsb3VkV2F0Y2ggQ29udHJpYnV0b3IgSW5zaWdodHMgZm9yIHRoZSBzcGVjaWZpZWQgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250cmlidXRvckluc2lnaHRzU3BlY2lmaWNhdGlvbjEge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBDbG91ZFdhdGNoIENvbnRyaWJ1dG9yIEluc2lnaHRzIGFyZSB0byBiZSBlbmFibGVkICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpLlxuICovXG5FbmFibGVkOiBib29sZWFuXG59XG4vKipcbiAqIFJlcHJlc2VudHMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb3BpZWQgKHByb2plY3RlZCkgZnJvbSB0aGUgdGFibGUgaW50byB0aGUgZ2xvYmFsIHNlY29uZGFyeSBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2plY3Rpb24ge1xuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBub24ta2V5IGF0dHJpYnV0ZSBuYW1lcyB3aGljaCB3aWxsIGJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICBGb3IgZ2xvYmFsIGFuZCBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcywgdGhlIHRvdGFsIGNvdW50IG9mIGBgTm9uS2V5QXR0cmlidXRlc2BgIHN1bW1lZCBhY3Jvc3MgYWxsIG9mIHRoZSBzZWNvbmRhcnkgaW5kZXhlcywgbXVzdCBub3QgZXhjZWVkIDEwMC4gSWYgeW91IHByb2plY3QgdGhlIHNhbWUgYXR0cmlidXRlIGludG8gdHdvIGRpZmZlcmVudCBpbmRleGVzLCB0aGlzIGNvdW50cyBhcyB0d28gZGlzdGluY3QgYXR0cmlidXRlcyB3aGVuIGRldGVybWluaW5nIHRoZSB0b3RhbC4gVGhpcyBsaW1pdCBvbmx5IGFwcGxpZXMgd2hlbiB5b3Ugc3BlY2lmeSB0aGUgUHJvamVjdGlvblR5cGUgb2YgYGBJTkNMVURFYGAuIFlvdSBzdGlsbCBjYW4gc3BlY2lmeSB0aGUgUHJvamVjdGlvblR5cGUgb2YgYGBBTExgYCB0byBwcm9qZWN0IGFsbCBhdHRyaWJ1dGVzIGZyb20gdGhlIHNvdXJjZSB0YWJsZSwgZXZlbiBpZiB0aGUgdGFibGUgaGFzIG1vcmUgdGhhbiAxMDAgYXR0cmlidXRlcy5cbiAqL1xuTm9uS2V5QXR0cmlidXRlcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXg6XG4gKiAgICsgIGBgS0VZU19PTkxZYGAgLSBPbmx5IHRoZSBpbmRleCBhbmQgcHJpbWFyeSBrZXlzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgICsgIGBgSU5DTFVERWBgIC0gSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgZGVzY3JpYmVkIGluIGBgS0VZU19PTkxZYGAsIHRoZSBzZWNvbmRhcnkgaW5kZXggd2lsbCBpbmNsdWRlIG90aGVyIG5vbi1rZXkgYXR0cmlidXRlcyB0aGF0IHlvdSBzcGVjaWZ5LlxuICogICArICBgYEFMTGBgIC0gQWxsIG9mIHRoZSB0YWJsZSBhdHRyaWJ1dGVzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguXG4gKiAgIFxuICogIFdoZW4gdXNpbmcgdGhlIER5bmFtb0RCIGNvbnNvbGUsIGBgQUxMYGAgaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC5cbiAqL1xuUHJvamVjdGlvblR5cGU/OiBzdHJpbmdcbn1cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCBzZXR0aW5ncyBmb3IgdGhlIHNwZWNpZmllZCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICogIEZvciBjdXJyZW50IG1pbmltdW0gYW5kIG1heGltdW0gcHJvdmlzaW9uZWQgdGhyb3VnaHB1dCB2YWx1ZXMsIHNlZSBbU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3Rhc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm92aXNpb25lZFRocm91Z2hwdXQxIHtcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHdyaXRlcyBjb25zdW1lZCBwZXIgc2Vjb25kIGJlZm9yZSBEeW5hbW9EQiByZXR1cm5zIGEgYGBUaHJvdHRsaW5nRXhjZXB0aW9uYGAuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1NwZWNpZnlpbmcgUmVhZCBhbmQgV3JpdGUgUmVxdWlyZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1Byb3Zpc2lvbmVkVGhyb3VnaHB1dC5odG1sKSBpbiB0aGUgKkFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUqLlxuICogIElmIHJlYWQvd3JpdGUgY2FwYWNpdHkgbW9kZSBpcyBgYFBBWV9QRVJfUkVRVUVTVGBgIHRoZSB2YWx1ZSBpcyBzZXQgdG8gMC5cbiAqL1xuV3JpdGVDYXBhY2l0eVVuaXRzOiBudW1iZXJcbi8qKlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbnNpc3RlbnQgcmVhZHMgY29uc3VtZWQgcGVyIHNlY29uZCBiZWZvcmUgRHluYW1vREIgcmV0dXJucyBhIGBgVGhyb3R0bGluZ0V4Y2VwdGlvbmBgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTcGVjaWZ5aW5nIFJlYWQgYW5kIFdyaXRlIFJlcXVpcmVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Qcm92aXNpb25lZFRocm91Z2hwdXQuaHRtbCkgaW4gdGhlICpBbWF6b24gRHluYW1vREIgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBJZiByZWFkL3dyaXRlIGNhcGFjaXR5IG1vZGUgaXMgYGBQQVlfUEVSX1JFUVVFU1RgYCB0aGUgdmFsdWUgaXMgc2V0IHRvIDAuXG4gKi9cblJlYWRDYXBhY2l0eVVuaXRzOiBudW1iZXJcbn1cbi8qKlxuICogUmVwcmVzZW50cyAqYSBzaW5nbGUgZWxlbWVudCogb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogIEEgYGBLZXlTY2hlbWFFbGVtZW50YGAgcmVwcmVzZW50cyBleGFjdGx5IG9uZSBhdHRyaWJ1dGUgb2YgdGhlIHByaW1hcnkga2V5LiBGb3IgZXhhbXBsZSwgYSBzaW1wbGUgcHJpbWFyeSBrZXkgd291bGQgYmUgcmVwcmVzZW50ZWQgYnkgb25lIGBgS2V5U2NoZW1hRWxlbWVudGBgIChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBgYEtleVNjaGVtYUVsZW1lbnRgYCBmb3IgdGhlIHBhcnRpdGlvbiBrZXksIGFuZCBhbm90aGVyIGBgS2V5U2NoZW1hRWxlbWVudGBgIGZvciB0aGUgc29ydCBrZXkuXG4gKiAgQSBgYEtleVNjaGVtYUVsZW1lbnRgYCBtdXN0IGJlIGEgc2NhbGFyLCB0b3AtbGV2ZWwgYXR0cmlidXRlIChub3QgYSBuZXN0ZWQgYXR0cmlidXRlKS4gVGhlIGRhdGEgdHlwZSBtdXN0IGJlIG9uZSBvZiBTdHJpbmcsIE51bWJlciwgb3IgQmluYXJ5LiBUaGUgYXR0cmlidXRlIGNhbm5vdCBiZSBuZXN0ZWQgd2l0aGluIGEgTGlzdCBvciBhIE1hcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLZXlTY2hlbWEge1xuLyoqXG4gKiBUaGUgcm9sZSB0aGF0IHRoaXMga2V5IGF0dHJpYnV0ZSB3aWxsIGFzc3VtZTpcbiAqICAgKyAgYGBIQVNIYGAgLSBwYXJ0aXRpb24ga2V5XG4gKiAgICsgIGBgUkFOR0VgYCAtIHNvcnQga2V5XG4gKiAgIFxuICogICBUaGUgcGFydGl0aW9uIGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpoYXNoIGF0dHJpYnV0ZSouIFRoZSB0ZXJtIFwiaGFzaCBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gRHluYW1vREIncyB1c2FnZSBvZiBhbiBpbnRlcm5hbCBoYXNoIGZ1bmN0aW9uIHRvIGV2ZW5seSBkaXN0cmlidXRlIGRhdGEgaXRlbXMgYWNyb3NzIHBhcnRpdGlvbnMsIGJhc2VkIG9uIHRoZWlyIHBhcnRpdGlvbiBrZXkgdmFsdWVzLlxuICogIFRoZSBzb3J0IGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzICpyYW5nZSBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcInJhbmdlIGF0dHJpYnV0ZVwiIGRlcml2ZXMgZnJvbSB0aGUgd2F5IER5bmFtb0RCIHN0b3JlcyBpdGVtcyB3aXRoIHRoZSBzYW1lIHBhcnRpdGlvbiBrZXkgcGh5c2ljYWxseSBjbG9zZSB0b2dldGhlciwgaW4gc29ydGVkIG9yZGVyIGJ5IHRoZSBzb3J0IGtleSB2YWx1ZS5cbiAqL1xuS2V5VHlwZTogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIGEga2V5IGF0dHJpYnV0ZS5cbiAqL1xuQXR0cmlidXRlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIEEgcmVzb3VyY2UtYmFzZWQgcG9saWN5IGRvY3VtZW50IHRoYXQgY29udGFpbnMgcGVybWlzc2lvbnMgdG8gYWRkIHRvIHRoZSBzcGVjaWZpZWQgdGFibGUuIEluIGEgQ0ZOc2hvcnQgdGVtcGxhdGUsIHlvdSBjYW4gcHJvdmlkZSB0aGUgcG9saWN5IGluIEpTT04gb3IgWUFNTCBmb3JtYXQgYmVjYXVzZSBDRk5zaG9ydCBjb252ZXJ0cyBZQU1MIHRvIEpTT04gYmVmb3JlIHN1Ym1pdHRpbmcgaXQgdG8gRERCLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByZXNvdXJjZS1iYXNlZCBwb2xpY2llcywgc2VlIFtVc2luZyByZXNvdXJjZS1iYXNlZCBwb2xpY2llcyBmb3JdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvYWNjZXNzLWNvbnRyb2wtcmVzb3VyY2UtYmFzZWQuaHRtbCkgYW5kIFtSZXNvdXJjZS1iYXNlZCBwb2xpY3kgZXhhbXBsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcmJhYy1leGFtcGxlcy5odG1sKS5cbiAqICBXaGVuIHlvdSBhdHRhY2ggYSByZXNvdXJjZS1iYXNlZCBwb2xpY3kgd2hpbGUgY3JlYXRpbmcgYSB0YWJsZSwgdGhlIHBvbGljeSBjcmVhdGlvbiBpcyAqc3Ryb25nbHkgY29uc2lzdGVudCouIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uc2lkZXJhdGlvbnMgdGhhdCB5b3Ugc2hvdWxkIGtlZXAgaW4gbWluZCB3aGlsZSBhdHRhY2hpbmcgYSByZXNvdXJjZS1iYXNlZCBwb2xpY3ksIHNlZSBbUmVzb3VyY2UtYmFzZWQgcG9saWN5IGNvbnNpZGVyYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3JiYWMtY29uc2lkZXJhdGlvbnMuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQb2xpY3kxIHtcbi8qKlxuICogQSByZXNvdXJjZS1iYXNlZCBwb2xpY3kgZG9jdW1lbnQgdGhhdCBjb250YWlucyBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhlIHNwZWNpZmllZCBEREIgdGFibGUsIGluZGV4LCBvciBib3RoLiBJbiBhIENGTnNob3J0IHRlbXBsYXRlLCB5b3UgY2FuIHByb3ZpZGUgdGhlIHBvbGljeSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0IGJlY2F1c2UgQ0ZOc2hvcnQgY29udmVydHMgWUFNTCB0byBKU09OIGJlZm9yZSBzdWJtaXR0aW5nIGl0IHRvIEREQi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMsIHNlZSBbVXNpbmcgcmVzb3VyY2UtYmFzZWQgcG9saWNpZXMgZm9yXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FjY2Vzcy1jb250cm9sLXJlc291cmNlLWJhc2VkLmh0bWwpIGFuZCBbUmVzb3VyY2UtYmFzZWQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3JiYWMtZXhhbXBsZXMuaHRtbCkuXG4gKi9cblBvbGljeURvY3VtZW50OiB7XG5bazogc3RyaW5nXTogdW5rbm93blxufVxufVxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiBBIGxvY2FsIHNlY29uZGFyeSBpbmRleCBjYW4gb25seSBiZSBjcmVhdGVkIHdoZW4gaXRzIHBhcmVudCB0YWJsZSBpcyBjcmVhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvY2FsU2Vjb25kYXJ5SW5kZXgge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiBUaGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSBhbW9uZyBhbGwgb3RoZXIgaW5kZXhlcyBvbiB0aGlzIHRhYmxlLlxuICovXG5JbmRleE5hbWU6IHN0cmluZ1xuUHJvamVjdGlvbjogUHJvamVjdGlvbjFcbi8qKlxuICogVGhlIGNvbXBsZXRlIGtleSBzY2hlbWEgZm9yIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXgsIGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgcGFpcnMgb2YgYXR0cmlidXRlIG5hbWVzIGFuZCBrZXkgdHlwZXM6XG4gKiAgICsgIGBgSEFTSGBgIC0gcGFydGl0aW9uIGtleVxuICogICArICBgYFJBTkdFYGAgLSBzb3J0IGtleVxuICogICBcbiAqICAgVGhlIHBhcnRpdGlvbiBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqaGFzaCBhdHRyaWJ1dGUqLiBUaGUgdGVybSBcImhhc2ggYXR0cmlidXRlXCIgZGVyaXZlcyBmcm9tIER5bmFtb0RCJ3MgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgaGFzaCBmdW5jdGlvbiB0byBldmVubHkgZGlzdHJpYnV0ZSBkYXRhIGl0ZW1zIGFjcm9zcyBwYXJ0aXRpb25zLCBiYXNlZCBvbiB0aGVpciBwYXJ0aXRpb24ga2V5IHZhbHVlcy5cbiAqICBUaGUgc29ydCBrZXkgb2YgYW4gaXRlbSBpcyBhbHNvIGtub3duIGFzIGl0cyAqcmFuZ2UgYXR0cmlidXRlKi4gVGhlIHRlcm0gXCJyYW5nZSBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIHdheSBEeW5hbW9EQiBzdG9yZXMgaXRlbXMgd2l0aCB0aGUgc2FtZSBwYXJ0aXRpb24ga2V5IHBoeXNpY2FsbHkgY2xvc2UgdG9nZXRoZXIsIGluIHNvcnRlZCBvcmRlciBieSB0aGUgc29ydCBrZXkgdmFsdWUuXG4gKi9cbktleVNjaGVtYTogS2V5U2NoZW1hW11cbn1cbi8qKlxuICogUmVwcmVzZW50cyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSB0YWJsZSBpbnRvIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uMSB7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG5vbi1rZXkgYXR0cmlidXRlIG5hbWVzIHdoaWNoIHdpbGwgYmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LlxuICogIEZvciBnbG9iYWwgYW5kIGxvY2FsIHNlY29uZGFyeSBpbmRleGVzLCB0aGUgdG90YWwgY291bnQgb2YgYGBOb25LZXlBdHRyaWJ1dGVzYGAgc3VtbWVkIGFjcm9zcyBhbGwgb2YgdGhlIHNlY29uZGFyeSBpbmRleGVzLCBtdXN0IG5vdCBleGNlZWQgMTAwLiBJZiB5b3UgcHJvamVjdCB0aGUgc2FtZSBhdHRyaWJ1dGUgaW50byB0d28gZGlmZmVyZW50IGluZGV4ZXMsIHRoaXMgY291bnRzIGFzIHR3byBkaXN0aW5jdCBhdHRyaWJ1dGVzIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHRvdGFsLiBUaGlzIGxpbWl0IG9ubHkgYXBwbGllcyB3aGVuIHlvdSBzcGVjaWZ5IHRoZSBQcm9qZWN0aW9uVHlwZSBvZiBgYElOQ0xVREVgYC4gWW91IHN0aWxsIGNhbiBzcGVjaWZ5IHRoZSBQcm9qZWN0aW9uVHlwZSBvZiBgYEFMTGBgIHRvIHByb2plY3QgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc291cmNlIHRhYmxlLCBldmVuIGlmIHRoZSB0YWJsZSBoYXMgbW9yZSB0aGFuIDEwMCBhdHRyaWJ1dGVzLlxuICovXG5Ob25LZXlBdHRyaWJ1dGVzPzogc3RyaW5nW11cbi8qKlxuICogVGhlIHNldCBvZiBhdHRyaWJ1dGVzIHRoYXQgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleDpcbiAqICAgKyAgYGBLRVlTX09OTFlgYCAtIE9ubHkgdGhlIGluZGV4IGFuZCBwcmltYXJ5IGtleXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICAgKyAgYGBJTkNMVURFYGAgLSBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBkZXNjcmliZWQgaW4gYGBLRVlTX09OTFlgYCwgdGhlIHNlY29uZGFyeSBpbmRleCB3aWxsIGluY2x1ZGUgb3RoZXIgbm9uLWtleSBhdHRyaWJ1dGVzIHRoYXQgeW91IHNwZWNpZnkuXG4gKiAgICsgIGBgQUxMYGAgLSBBbGwgb2YgdGhlIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC5cbiAqICAgXG4gKiAgV2hlbiB1c2luZyB0aGUgRHluYW1vREIgY29uc29sZSwgYGBBTExgYCBpcyBzZWxlY3RlZCBieSBkZWZhdWx0LlxuICovXG5Qcm9qZWN0aW9uVHlwZT86IHN0cmluZ1xufVxuLyoqXG4gKiBEZXNjcmliZXMgYSB0YWcuIEEgdGFnIGlzIGEga2V5LXZhbHVlIHBhaXIuIFlvdSBjYW4gYWRkIHVwIHRvIDUwIHRhZ3MgdG8gYSBzaW5nbGUgRHluYW1vREIgdGFibGUuIFxuICogIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgYW5kIHZhbHVlcyBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0aGUgYGBhd3M6YGAgcHJlZml4LCB3aGljaCB0aGUgdXNlciBjYW5ub3QgYXNzaWduLiBBV1MtYXNzaWduZWQgdGFnIG5hbWVzIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSB0YWcgbGltaXQgb2YgNTAuIFVzZXItYXNzaWduZWQgdGFnIG5hbWVzIGhhdmUgdGhlIHByZWZpeCBgYHVzZXI6YGAgaW4gdGhlIENvc3QgQWxsb2NhdGlvbiBSZXBvcnQuIFlvdSBjYW5ub3QgYmFja2RhdGUgdGhlIGFwcGxpY2F0aW9uIG9mIGEgdGFnLlxuICogIEZvciBhbiBvdmVydmlldyBvbiB0YWdnaW5nIER5bmFtb0RCIHJlc291cmNlcywgc2VlIFtUYWdnaW5nIGZvciBEeW5hbW9EQl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9UYWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSB0YWcuIFRhZyB2YWx1ZXMgYXJlIGNhc2Utc2Vuc2l0aXZlIGFuZCBjYW4gYmUgbnVsbC5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUga2V5IG9mIHRoZSB0YWcuIFRhZyBrZXlzIGFyZSBjYXNlIHNlbnNpdGl2ZS4gRWFjaCBEeW5hbW9EQiB0YWJsZSBjYW4gb25seSBoYXZlIHVwIHRvIG9uZSB0YWcgd2l0aCB0aGUgc2FtZSBrZXkuIElmIHlvdSB0cnkgdG8gYWRkIGFuIGV4aXN0aW5nIHRhZyAoc2FtZSBrZXkpLCB0aGUgZXhpc3RpbmcgdGFnIHZhbHVlIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgbmV3IHZhbHVlLlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFRpbWUgdG8gTGl2ZSAoVFRMKSBzZXR0aW5ncyBmb3IgdGhlIHRhYmxlLlxuICogICBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbWl0cyBpbiBEeW5hbW9EQiwgc2VlIFtMaW1pdHMgaW4gQW1hem9uIER5bmFtb0RCXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0xpbWl0cy5odG1sKSBpbiB0aGUgQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaW1lVG9MaXZlU3BlY2lmaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIFRUTCBpcyB0byBiZSBlbmFibGVkICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpIG9uIHRoZSB0YWJsZS5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgVFRMIGF0dHJpYnV0ZSB1c2VkIHRvIHN0b3JlIHRoZSBleHBpcmF0aW9uIHRpbWUgZm9yIGl0ZW1zIGluIHRoZSB0YWJsZS5cbiAqICAgICsgIFRoZSBgYEF0dHJpYnV0ZU5hbWVgYCBwcm9wZXJ0eSBpcyByZXF1aXJlZCB3aGVuIGVuYWJsaW5nIHRoZSBUVEwsIG9yIHdoZW4gVFRMIGlzIGFscmVhZHkgZW5hYmxlZC5cbiAqICAgKyAgVG8gdXBkYXRlIHRoaXMgcHJvcGVydHksIHlvdSBtdXN0IGZpcnN0IGRpc2FibGUgVFRMIGFuZCB0aGVuIGVuYWJsZSBUVEwgd2l0aCB0aGUgbmV3IGF0dHJpYnV0ZSBuYW1lLlxuICovXG5BdHRyaWJ1dGVOYW1lPzogc3RyaW5nXG59XG4iXX0=
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The filter to use when scanning.
|
|
3
|
+
*/
|
|
4
|
+
export type Filter = string;
|
|
5
|
+
/**
|
|
6
|
+
* The type associated with the filter.
|
|
7
|
+
*/
|
|
8
|
+
export type FilterType = "WILDCARD";
|
|
9
|
+
/**
|
|
10
|
+
* The frequency that scans are performed.
|
|
11
|
+
*/
|
|
12
|
+
export type ScanFrequency = ("SCAN_ON_PUSH" | "CONTINUOUS_SCAN");
|
|
13
|
+
/**
|
|
14
|
+
* The scanning rules associated with the registry. A registry scanning configuration may contain a maximum of 2 rules.
|
|
15
|
+
*
|
|
16
|
+
* @minItems 0
|
|
17
|
+
* @maxItems 2
|
|
18
|
+
*/
|
|
19
|
+
export type ScanningRules = ScanningRule[];
|
|
20
|
+
/**
|
|
21
|
+
* The type of scanning configured for the registry.
|
|
22
|
+
*/
|
|
23
|
+
export type ScanType = ("BASIC" | "ENHANCED");
|
|
24
|
+
/**
|
|
25
|
+
* The registry id.
|
|
26
|
+
*/
|
|
27
|
+
export type RegistryId = string;
|
|
28
|
+
/**
|
|
29
|
+
* The AWS::ECR::RegistryScanningConfiguration controls the scanning configuration for an Amazon Elastic Container Registry (Amazon Private ECR). For more information, see https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html
|
|
30
|
+
*/
|
|
31
|
+
export interface _AWS_ECR_REGISTRYSCANNINGCONFIGURATION {
|
|
32
|
+
Rules: ScanningRules;
|
|
33
|
+
ScanType: ScanType;
|
|
34
|
+
RegistryId?: RegistryId;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A rule representing the details of a scanning configuration.
|
|
38
|
+
*/
|
|
39
|
+
export interface ScanningRule {
|
|
40
|
+
/**
|
|
41
|
+
* The repository filters associated with the scanning configuration for a private registry.
|
|
42
|
+
*
|
|
43
|
+
* @minItems 0
|
|
44
|
+
* @maxItems 100
|
|
45
|
+
*/
|
|
46
|
+
RepositoryFilters: RepositoryFilter[];
|
|
47
|
+
ScanFrequency: ScanFrequency;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The details of a scanning repository filter.
|
|
51
|
+
*/
|
|
52
|
+
export interface RepositoryFilter {
|
|
53
|
+
Filter: Filter;
|
|
54
|
+
FilterType: FilterType;
|
|
55
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWVjci1yZWdpc3RyeXNjYW5uaW5nY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1lY3ItcmVnaXN0cnlzY2FubmluZ2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGZpbHRlciB0byB1c2Ugd2hlbiBzY2FubmluZy5cbiAqL1xuZXhwb3J0IHR5cGUgRmlsdGVyID0gc3RyaW5nXG4vKipcbiAqIFRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsdGVyLlxuICovXG5leHBvcnQgdHlwZSBGaWx0ZXJUeXBlID0gXCJXSUxEQ0FSRFwiXG4vKipcbiAqIFRoZSBmcmVxdWVuY3kgdGhhdCBzY2FucyBhcmUgcGVyZm9ybWVkLlxuICovXG5leHBvcnQgdHlwZSBTY2FuRnJlcXVlbmN5ID0gKFwiU0NBTl9PTl9QVVNIXCIgfCBcIkNPTlRJTlVPVVNfU0NBTlwiKVxuLyoqXG4gKiBUaGUgc2Nhbm5pbmcgcnVsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpc3RyeS4gQSByZWdpc3RyeSBzY2FubmluZyBjb25maWd1cmF0aW9uIG1heSBjb250YWluIGEgbWF4aW11bSBvZiAyIHJ1bGVzLlxuICogXG4gKiBAbWluSXRlbXMgMFxuICogQG1heEl0ZW1zIDJcbiAqL1xuZXhwb3J0IHR5cGUgU2Nhbm5pbmdSdWxlcyA9IFNjYW5uaW5nUnVsZVtdXG4vKipcbiAqIFRoZSB0eXBlIG9mIHNjYW5uaW5nIGNvbmZpZ3VyZWQgZm9yIHRoZSByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IHR5cGUgU2NhblR5cGUgPSAoXCJCQVNJQ1wiIHwgXCJFTkhBTkNFRFwiKVxuLyoqXG4gKiBUaGUgcmVnaXN0cnkgaWQuXG4gKi9cbmV4cG9ydCB0eXBlIFJlZ2lzdHJ5SWQgPSBzdHJpbmdcblxuLyoqXG4gKiBUaGUgQVdTOjpFQ1I6OlJlZ2lzdHJ5U2Nhbm5pbmdDb25maWd1cmF0aW9uIGNvbnRyb2xzIHRoZSBzY2FubmluZyBjb25maWd1cmF0aW9uIGZvciBhbiBBbWF6b24gRWxhc3RpYyBDb250YWluZXIgUmVnaXN0cnkgKEFtYXpvbiBQcml2YXRlIEVDUikuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUi9sYXRlc3QvdXNlcmd1aWRlL2ltYWdlLXNjYW5uaW5nLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX0VDUl9SRUdJU1RSWVNDQU5OSU5HQ09ORklHVVJBVElPTiB7XG5SdWxlczogU2Nhbm5pbmdSdWxlc1xuU2NhblR5cGU6IFNjYW5UeXBlXG5SZWdpc3RyeUlkPzogUmVnaXN0cnlJZFxufVxuLyoqXG4gKiBBIHJ1bGUgcmVwcmVzZW50aW5nIHRoZSBkZXRhaWxzIG9mIGEgc2Nhbm5pbmcgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2FubmluZ1J1bGUge1xuLyoqXG4gKiBUaGUgcmVwb3NpdG9yeSBmaWx0ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2Nhbm5pbmcgY29uZmlndXJhdGlvbiBmb3IgYSBwcml2YXRlIHJlZ2lzdHJ5LlxuICogXG4gKiBAbWluSXRlbXMgMFxuICogQG1heEl0ZW1zIDEwMFxuICovXG5SZXBvc2l0b3J5RmlsdGVyczogUmVwb3NpdG9yeUZpbHRlcltdXG5TY2FuRnJlcXVlbmN5OiBTY2FuRnJlcXVlbmN5XG59XG4vKipcbiAqIFRoZSBkZXRhaWxzIG9mIGEgc2Nhbm5pbmcgcmVwb3NpdG9yeSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3NpdG9yeUZpbHRlciB7XG5GaWx0ZXI6IEZpbHRlclxuRmlsdGVyVHlwZTogRmlsdGVyVHlwZVxufVxuIl19
|