@aws-mdaa/dms-constructs 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -7,8 +7,8 @@
7
7
  "url": "https://aws.amazon.com/solutions"
8
8
  },
9
9
  "dependencies": {
10
- "@aws-mdaa/construct": "1.3.0",
11
- "@aws-mdaa/naming": "1.3.0",
10
+ "@aws-mdaa/construct": "1.4.0",
11
+ "@aws-mdaa/naming": "1.4.0",
12
12
  "aws-cdk-lib": "2.220.0",
13
13
  "cdk-nag": "2.37.55",
14
14
  "constructs": "10.0.96"
@@ -98,37 +98,15 @@
98
98
  },
99
99
  "@aws-mdaa/construct": {
100
100
  "targets": {
101
- "java_disabled": {
102
- "maven": {
103
- "artifactId": "core",
104
- "groupId": "software.amazon.awsmdaa.construct"
105
- },
106
- "package": "software.amazon.awsmdaa.construct"
107
- },
108
101
  "js": {
109
102
  "npm": "@aws-mdaa/construct"
110
- },
111
- "python_disabled": {
112
- "distName": "aws-mdaa.construct",
113
- "module": "aws_mdaa.construct"
114
103
  }
115
104
  }
116
105
  },
117
106
  "@aws-mdaa/naming": {
118
107
  "targets": {
119
- "java_disabled": {
120
- "maven": {
121
- "artifactId": "naming",
122
- "groupId": "software.amazon.awsmdaa.utility"
123
- },
124
- "package": "software.amazon.awsmdaa.utility.naming"
125
- },
126
108
  "js": {
127
109
  "npm": "@aws-mdaa/naming"
128
- },
129
- "python_disabled": {
130
- "distName": "aws-mdaa.naming",
131
- "module": "aws_mdaa.naming"
132
110
  }
133
111
  }
134
112
  },
@@ -4192,7 +4170,7 @@
4192
4170
  "stability": "experimental"
4193
4171
  },
4194
4172
  "homepage": "https://github.com/aws/modern-data-architecture-accelerator",
4195
- "jsiiVersion": "5.7.5 (build eb860fb)",
4173
+ "jsiiVersion": "5.9.20 (build 6e2b13a)",
4196
4174
  "license": "Apache-2.0",
4197
4175
  "metadata": {
4198
4176
  "jsii": {
@@ -4211,19 +4189,8 @@
4211
4189
  },
4212
4190
  "schema": "jsii/0.10.0",
4213
4191
  "targets": {
4214
- "java_disabled": {
4215
- "maven": {
4216
- "artifactId": "dms",
4217
- "groupId": "software.amazon.awsmdaa.construct"
4218
- },
4219
- "package": "software.amazon.awsmdaa.construct.dms"
4220
- },
4221
4192
  "js": {
4222
4193
  "npm": "@aws-mdaa/dms-constructs"
4223
- },
4224
- "python_disabled": {
4225
- "distName": "aws-mdaa.dms-constructs",
4226
- "module": "aws_mdaa.dms_constructs"
4227
4194
  }
4228
4195
  },
4229
4196
  "types": {
@@ -8889,6 +8856,6 @@
8889
8856
  "symbolId": "lib/endpoint:SybaseSettingsProperty"
8890
8857
  }
8891
8858
  },
8892
- "version": "1.3.0",
8893
- "fingerprint": "G8Wc2dvCzT20j1S8RSfBkTUUHaPeNYaxm6AoSgoc3zI="
8859
+ "version": "1.4.0",
8860
+ "fingerprint": "0BuZy3EFEDvs8dQ1/O0QBArDofI7XiG9vC+kwvlwTVg="
8894
8861
  }
package/lib/endpoint.js CHANGED
@@ -58,5 +58,5 @@ class MdaaEndpoint extends aws_dms_1.CfnEndpoint {
58
58
  }
59
59
  exports.MdaaEndpoint = MdaaEndpoint;
60
60
  _a = JSII_RTTI_SYMBOL_1;
61
- MdaaEndpoint[_a] = { fqn: "@aws-mdaa/dms-constructs.MdaaEndpoint", version: "1.3.0" };
61
+ MdaaEndpoint[_a] = { fqn: "@aws-mdaa/dms-constructs.MdaaEndpoint", version: "1.4.0" };
62
62
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbmRwb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7R0FHRztBQUVILG1EQUE2RSxDQUFDLFNBQVM7QUFDdkYsaURBQW9FO0FBcy9FcEU7OztHQUdHO0FBQ0gsTUFBYSxZQUFhLFNBQVEscUJBQVc7SUFDM0Msd0RBQXdEO0lBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBd0I7UUFDOUMsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztZQUN2RSxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQzVCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkYsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMvRyxlQUFlLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDNUcsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsZUFBeUM7UUFDekUsT0FBTztZQUNMLEdBQUcsZUFBZTtZQUNsQixjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBK0I7UUFDMUQsT0FBTztZQUNMLEdBQUcsVUFBVTtZQUNiLGNBQWMsRUFBRSxTQUFTO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLG1CQUFtQixDQUNoQyxnQkFBMkM7UUFFM0MsT0FBTztZQUNMLEdBQUcsZ0JBQWdCO1lBQ25CLGNBQWMsRUFBRSxTQUFTO1NBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFL0MsSUFBSSw4QkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDM0IsR0FBRztnQkFDRCxZQUFZLEVBQUUsVUFBVTtnQkFDeEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQ3BDLElBQUksRUFBRSxLQUFLO2dCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRzthQUNoQjtZQUNELEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7O0FBaERILG9DQWlEQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IE1kYWFDb25zdHJ1Y3RQcm9wcywgTWRhYVBhcmFtQW5kT3V0cHV0IH0gZnJvbSAnQGF3cy1tZGFhL2NvbnN0cnVjdCc7IC8vTk9TT05BUlxuaW1wb3J0IHsgQ2ZuRW5kcG9pbnQsIENmbkVuZHBvaW50UHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZG1zJztcbmltcG9ydCB7IElLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZGVmaW5lcyBhIFNBUCBBU0UgZW5kcG9pbnQuIE1vZGlmaWVkIGZyb20gdGhlIGVxdWl2YWxlbnQgTDEgQ29uc3RydWN0IHRvIHByZXZlbnQgdXNlIG9mIHBsYWludGV4dCBjcmVkZW50aWFscyBhbmQgZW5mb3JjZSB1c2Ugb2YgS01TIGVuY3J5cHRpb24uXG4gKiBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBvdXRwdXQgZm9ybWF0IG9mIHJlY29yZHMgYXBwbGllZCB0byB0aGUgZW5kcG9pbnQgYW5kIGRldGFpbHMgb2YgdHJhbnNhY3Rpb24gYW5kIGNvbnRyb2wgdGFibGUgZGF0YSBpbmZvcm1hdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIGF2YWlsYWJsZSBzZXR0aW5ncywgc2VlIFtFeHRyYSBjb25uZWN0aW9uIGF0dHJpYnV0ZXMgd2hlbiB1c2luZyBTQVAgQVNFIGFzIGEgc291cmNlIGZvciBBV1MgRE1TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9Tb3VyY2UuU0FQLmh0bWwjQ0hBUF9Tb3VyY2UuU0FQLkNvbm5lY3Rpb25BdHRyaWIpIGFuZCBbRXh0cmEgY29ubmVjdGlvbiBhdHRyaWJ1dGVzIHdoZW4gdXNpbmcgU0FQIEFTRSBhcyBhIHRhcmdldCBmb3IgQVdTIERNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Rtcy9sYXRlc3QvdXNlcmd1aWRlL0NIQVBfVGFyZ2V0LlNBUC5odG1sI0NIQVBfVGFyZ2V0LlNBUC5Db25uZWN0aW9uQXR0cmliKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gKiBAc3RydWN0XG4gKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LXN5YmFzZXNldHRpbmdzLmh0bWxcbiAqL1xuLyoqXG4gKiBRLUVOSEFOQ0VELUlOVEVSRkFDRVxuICogU3liYXNlIGRhdGFiYXNlIHNldHRpbmdzIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBETVMgZW5kcG9pbnQgd2l0aCBzZWN1cmUgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGFuZCBJQU0gcm9sZS1iYXNlZCBhY2Nlc3MuIERlZmluZXMgU3liYXNlLXNwZWNpZmljIHByb3BlcnRpZXMgZm9yIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIGluY2x1ZGluZyBTZWNyZXRzIE1hbmFnZXIgaW50ZWdyYXRpb24gZm9yIHNlY3VyZSBjcmVkZW50aWFsIHN0b3JhZ2UgYW5kIElBTSByb2xlIGNvbmZpZ3VyYXRpb24gZm9yIGFjY2Vzc2luZyBTQVAgQVNFIGVuZHBvaW50cy5cbiAqXG4gKiBVc2UgY2FzZXM6IFN5YmFzZSBkYXRhYmFzZSBtaWdyYXRpb247IFNBUCBBU0UgY29ubmVjdGl2aXR5OyBTZWN1cmUgY3JlZGVudGlhbCBtYW5hZ2VtZW50OyBFbnRlcnByaXNlIGRhdGFiYXNlIGludGVncmF0aW9uXG4gKlxuICogQVdTOiBBV1MgRE1TIFN5YmFzZSBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdpdGggU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uIGFuZCBJQU0gcm9sZS1iYXNlZCBzZWN1cml0eVxuICpcbiAqIFZhbGlkYXRpb246IE11c3QgaW5jbHVkZSB2YWxpZCBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTjsgSUFNIHJvbGUgbXVzdCBoYXZlIGFwcHJvcHJpYXRlIERNUyBhbmQgU2VjcmV0cyBNYW5hZ2VyIHBlcm1pc3Npb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3liYXNlU2V0dGluZ3NQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIEFSTiBmb3IgRE1TIHRvIGFjY2VzcyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgU3liYXNlIGVuZHBvaW50IGNyZWRlbnRpYWxzIGVuYWJsaW5nIHNlY3VyZSBjcmVkZW50aWFsIG1hbmFnZW1lbnQuIERlZmluZXMgdGhlIElBTSByb2xlIHRoYXQgRE1TIGFzc3VtZXMgdG8gcmV0cmlldmUgZGF0YWJhc2UgY3JlZGVudGlhbHMgZnJvbSBTZWNyZXRzIE1hbmFnZXIgZm9yIFNBUCBBU0UgZW5kcG9pbnQgY29ubmVjdGl2aXR5IHdpdGggcm9sZS1iYXNlZCBzZWN1cml0eS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTZWN1cmUgY3JlZGVudGlhbCBhY2Nlc3M7IElBTSByb2xlLWJhc2VkIHNlY3VyaXR5OyBTZWNyZXRzIE1hbmFnZXIgaW50ZWdyYXRpb247IERNUyBhdXRoZW50aWNhdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBTeWJhc2UgZW5kcG9pbnQgc2VjcmV0c01hbmFnZXJBY2Nlc3NSb2xlQXJuIHNldHRpbmcgZm9yIElBTSByb2xlLWJhc2VkIGNyZWRlbnRpYWwgYWNjZXNzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgSUFNIHJvbGUgQVJOIGlmIHByb3ZpZGVkOyByb2xlIG11c3QgaGF2ZSBpYW06UGFzc1JvbGUgYW5kIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgcGVybWlzc2lvbnNcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1zeWJhc2VzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtc3liYXNlc2V0dGluZ3Mtc2VjcmV0c21hbmFnZXJhY2Nlc3Nyb2xlYXJuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgQVJOIGNvbnRhaW5pbmcgU3liYXNlIGVuZHBvaW50IGNvbm5lY3Rpb24gZGV0YWlscyBlbmFibGluZyBzZWN1cmUgY3JlZGVudGlhbCBzdG9yYWdlIGZvciBTQVAgQVNFIGRhdGFiYXNlIGNvbm5lY3Rpdml0eS4gRGVmaW5lcyB0aGUgQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBzdG9yZXMgZGF0YWJhc2UgY29ubmVjdGlvbiBjcmVkZW50aWFscyBpbmNsdWRpbmcgdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGZvciBTeWJhc2UgZW5kcG9pbnQgYWNjZXNzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNlY3VyZSBjcmVkZW50aWFsIHN0b3JhZ2U7IFNBUCBBU0UgY29ubmVjdGl2aXR5OyBEYXRhYmFzZSBhdXRoZW50aWNhdGlvbjsgU2VjcmV0cyBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogRE1TIFN5YmFzZSBlbmRwb2ludCBzZWNyZXRzTWFuYWdlclNlY3JldElkIHNldHRpbmcgZm9yIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgcmVmZXJlbmNlXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk47IHNlY3JldCBtdXN0IGNvbnRhaW4gdmFsaWQgU3liYXNlIGNvbm5lY3Rpb24gY3JlZGVudGlhbHNcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1zeWJhc2VzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtc3liYXNlc2V0dGluZ3Mtc2VjcmV0c21hbmFnZXJzZWNyZXRpZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgS01TIGtleSBBUk4gZm9yIGVuY3J5cHRpbmcgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIFN5YmFzZSBjcmVkZW50aWFscyBlbmFibGluZyBlbmhhbmNlZCBzZWN1cml0eSBmb3IgZGF0YWJhc2UgY29ubmVjdGlvbiBkZXRhaWxzLiBEZWZpbmVzIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCB0aGF0IHN0b3JlcyBTeWJhc2UgZW5kcG9pbnQgY3JlZGVudGlhbHMgZm9yIGFkZGl0aW9uYWwgc2VjdXJpdHkgbGF5ZXIuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3JlZGVudGlhbCBlbmNyeXB0aW9uOyBFbmhhbmNlZCBzZWN1cml0eTsgS01TIGludGVncmF0aW9uOyBTZWNyZXRzIE1hbmFnZXIgZW5jcnlwdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBTeWJhc2UgZW5kcG9pbnQgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4gc2V0dGluZyBmb3IgS01TIGVuY3J5cHRpb24gb2YgY3JlZGVudGlhbHNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBLTVMga2V5IEFSTiBpZiBwcm92aWRlZDsgZW5hYmxlcyBlbmNyeXB0aW9uIG9mIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgY29udGFpbmluZyBjcmVkZW50aWFsc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4/OiBzdHJpbmc7XG59XG4vKipcbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZGVmaW5lcyBhbiBPcmFjbGUgZW5kcG9pbnQuIE1vZGlmaWVkIGZyb20gdGhlIGVxdWl2YWxlbnQgTDEgQ29uc3RydWN0IHRvIHByZXZlbnQgdXNlIG9mIHBsYWludGV4dCBjcmVkZW50aWFscyBhbmQgZW5mb3JjZSB1c2Ugb2YgS01TIGVuY3J5cHRpb24uXG4gKiBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBvdXRwdXQgZm9ybWF0IG9mIHJlY29yZHMgYXBwbGllZCB0byB0aGUgZW5kcG9pbnQgYW5kIGRldGFpbHMgb2YgdHJhbnNhY3Rpb24gYW5kIGNvbnRyb2wgdGFibGUgZGF0YSBpbmZvcm1hdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIGF2YWlsYWJsZSBzZXR0aW5ncywgc2VlIFtFeHRyYSBjb25uZWN0aW9uIGF0dHJpYnV0ZXMgd2hlbiB1c2luZyBPcmFjbGUgYXMgYSBzb3VyY2UgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1NvdXJjZS5PcmFjbGUuaHRtbCNDSEFQX1NvdXJjZS5PcmFjbGUuQ29ubmVjdGlvbkF0dHJpYikgYW5kIFtFeHRyYSBjb25uZWN0aW9uIGF0dHJpYnV0ZXMgd2hlbiB1c2luZyBPcmFjbGUgYXMgYSB0YXJnZXQgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1RhcmdldC5PcmFjbGUuaHRtbCNDSEFQX1RhcmdldC5PcmFjbGUuQ29ubmVjdGlvbkF0dHJpYikgaW4gdGhlICpBV1MgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgVXNlciBHdWlkZSogLlxuICogQHN0cnVjdFxuICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1vcmFjbGVzZXR0aW5ncy5odG1sXG4gKi9cbi8qKlxuICogUS1FTkhBTkNFRC1JTlRFUkZBQ0VcbiAqIENvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBBV1MgRE1TIE9yYWNsZSBkYXRhYmFzZSBlbmRwb2ludCBzZXR0aW5ncyBwcm92aWRpbmcgcmVwbGljYXRpb24gYW5kIGNoYW5nZSBkYXRhIGNhcHR1cmUgb3B0aW9ucy4gUHJvdmlkZXMgT3JhY2xlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgRE1TIGVuZHBvaW50cyBpbmNsdWRpbmcgc3VwcGxlbWVudGFsIGxvZ2dpbmcsIGFyY2hpdmVkIGxvZyBtYW5hZ2VtZW50LCBhbmQgYWR2YW5jZWQgT3JhY2xlIGRhdGFiYXNlIGZlYXR1cmVzIGZvciBzZWN1cmUgYW5kIGVmZmljaWVudCBkYXRhIG1pZ3JhdGlvbiBhbmQgcmVwbGljYXRpb24uXG4gKlxuICogVXNlIGNhc2VzOiBPcmFjbGUgZGF0YWJhc2UgbWlncmF0aW9uOyBDaGFuZ2UgZGF0YSBjYXB0dXJlOyBEYXRhYmFzZSByZXBsaWNhdGlvbjsgT3JhY2xlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb247IEFkdmFuY2VkIE9yYWNsZSBmZWF0dXJlc1xuICpcbiAqIEFXUzogQVdTIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIE9yYWNsZSBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdpdGggT3JhY2xlLXNwZWNpZmljIHNldHRpbmdzIGFuZCBvcHRpbWl6YXRpb24gcGFyYW1ldGVyc1xuICpcbiAqIFZhbGlkYXRpb246IEJvb2xlYW4gcHJvcGVydGllcyBtdXN0IGJlIHRydWUvZmFsc2U7IG51bWVyaWMgcHJvcGVydGllcyBtdXN0IGJlIHZhbGlkIGludGVnZXJzOyBzdHJpbmcgcHJvcGVydGllcyBtdXN0IGZvbGxvdyBPcmFjbGUgbmFtaW5nIGNvbnZlbnRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JhY2xlU2V0dGluZ3NQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gZGlzYWJsZSBCaW5hcnkgUmVhZGVyIGFjY2VzcyB0byByZWRvIGxvZ3MgdGhyb3VnaCBkaXJlY3QgZmlsZSBhY2Nlc3MgZm9yIE9yYWNsZSBSRFMgc291cmNlcy4gQ29udHJvbHMgd2hldGhlciBETVMgYWNjZXNzZXMgcmVkbyBsb2dzIGRpcmVjdGx5IG9yIHRocm91Z2ggc3BlY2lmaWVkIHBhdGggcHJlZml4IHJlcGxhY2VtZW50LCBhZmZlY3RpbmcgY2hhbmdlIGRhdGEgY2FwdHVyZSBwZXJmb3JtYW5jZSBhbmQgY29uZmlndXJhdGlvbiBmb3IgT3JhY2xlIGRhdGFiYXNlIHJlcGxpY2F0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFJEUyBPcmFjbGUgY29uZmlndXJhdGlvbjsgQ2hhbmdlIGRhdGEgY2FwdHVyZSBvcHRpbWl6YXRpb247IERpcmVjdCBmaWxlIGFjY2VzcyBjb250cm9sOyBQZXJmb3JtYW5jZSB0dW5pbmc7IE9yYWNsZSByZXBsaWNhdGlvbiBzZXR1cFxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IGFjY2Vzc0FsdGVybmF0ZURpcmVjdGx5IHNldHRpbmcgZm9yIHJlZG8gbG9nIGFjY2VzcyBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgYWZmZWN0cyBPcmFjbGUgY2hhbmdlIGRhdGEgY2FwdHVyZSBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2VcbiAgICoqL1xuICByZWFkb25seSBhY2Nlc3NBbHRlcm5hdGVEaXJlY3RseT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFkZGl0aW9uYWwgYXJjaGl2ZWQgbG9nIGRlc3RpbmF0aW9uIElEIGZvciBPcmFjbGUgcHJpbWFyeS9zdGFuZGJ5IHN3aXRjaG92ZXIgc2NlbmFyaW9zLiBTcGVjaWZpZXMgdGhlIGRlc3RpbmF0aW9uIGZvciBhcmNoaXZlIHJlZG8gbG9ncyBpbiBzd2l0Y2hvdmVyIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHByZXZpb3VzIHByaW1hcnkgaW5zdGFuY2UgYmVjb21lcyBzdGFuZGJ5LCBlbmFibGluZyBjb250aW51b3VzIHJlcGxpY2F0aW9uIGR1cmluZyBPcmFjbGUgZGF0YWJhc2Ugcm9sZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE9yYWNsZSBzd2l0Y2hvdmVyOyBIaWdoIGF2YWlsYWJpbGl0eTsgU3RhbmRieSBkYXRhYmFzZSBjb25maWd1cmF0aW9uOyBBcmNoaXZlIGxvZyBtYW5hZ2VtZW50OyBEaXNhc3RlciByZWNvdmVyeVxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IGFkZGl0aW9uYWxBcmNoaXZlZExvZ0Rlc3RJZCBmb3Igc3dpdGNob3ZlciBhcmNoaXZlIGxvZyBkZXN0aW5hdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGludGVnZXIgZGVzdGluYXRpb24gSUQgaWYgcHJvdmlkZWQ7IHVzZWQgZm9yIE9yYWNsZSBzd2l0Y2hvdmVyIHNjZW5hcmlvcyBhbmQgYXJjaGl2ZSBsb2cgbWFuYWdlbWVudFxuICAgKiovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxBcmNoaXZlZExvZ0Rlc3RJZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBlbmFibGUgdGFibGUtbGV2ZWwgc3VwcGxlbWVudGFsIGxvZ2dpbmcgZm9yIE9yYWNsZSBkYXRhYmFzZSBtaWdyYXRpb24gdGFza3MuIEVuYWJsZXMgUFJJTUFSWSBLRVkgc3VwcGxlbWVudGFsIGxvZ2dpbmcgb24gYWxsIHNlbGVjdGVkIHRhYmxlcyBmb3IgbWlncmF0aW9uLCBwcm92aWRpbmcgbmVjZXNzYXJ5IGNoYW5nZSBkYXRhIGNhcHR1cmUgaW5mb3JtYXRpb24gd2hpbGUgcmVxdWlyaW5nIGRhdGFiYXNlLWxldmVsIHN1cHBsZW1lbnRhbCBsb2dnaW5nIHRvIGJlIGVuYWJsZWQgc2VwYXJhdGVseS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTdXBwbGVtZW50YWwgbG9nZ2luZzsgQ2hhbmdlIGRhdGEgY2FwdHVyZTsgVGFibGUtbGV2ZWwgbG9nZ2luZzsgT3JhY2xlIG1pZ3JhdGlvbjsgUHJpbWFyeSBrZXkgdHJhY2tpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE9yYWNsZSBlbmRwb2ludCBhZGRTdXBwbGVtZW50YWxMb2dnaW5nIGZvciB0YWJsZS1sZXZlbCBzdXBwbGVtZW50YWwgbG9nZ2luZyBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgcmVxdWlyZXMgZGF0YWJhc2UtbGV2ZWwgc3VwcGxlbWVudGFsIGxvZ2dpbmcgdG8gYmUgZW5hYmxlZCBmb3IgcHJvcGVyIG9wZXJhdGlvblxuICAgKiovXG4gIHJlYWRvbmx5IGFkZFN1cHBsZW1lbnRhbExvZ2dpbmc/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGVuYWJsZSByZXBsaWNhdGlvbiBvZiBPcmFjbGUgdGFibGVzIHdpdGggbmVzdGVkIHRhYmxlcyBvciBkZWZpbmVkIHR5cGVzIGZvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlIG1pZ3JhdGlvbi4gQWxsb3dzIERNUyB0byByZXBsaWNhdGUgT3JhY2xlIHRhYmxlcyBjb250YWluaW5nIGNvbHVtbnMgd2l0aCBuZXN0ZWQgdGFibGVzIG9yIHVzZXItZGVmaW5lZCB0eXBlcywgZW5hYmxpbmcgbWlncmF0aW9uIG9mIGNvbXBsZXggT3JhY2xlIGRhdGFiYXNlIHNjaGVtYXMgd2l0aCBhZHZhbmNlZCBkYXRhIHN0cnVjdHVyZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ29tcGxleCBzY2hlbWEgbWlncmF0aW9uOyBOZXN0ZWQgdGFibGUgcmVwbGljYXRpb247IFVzZXItZGVmaW5lZCB0eXBlczsgQWR2YW5jZWQgT3JhY2xlIGZlYXR1cmVzOyBDb21wbGV4IGRhdGEgc3RydWN0dXJlc1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IGFsbG93U2VsZWN0TmVzdGVkVGFibGVzIGZvciBjb21wbGV4IGRhdGEgdHlwZSByZXBsaWNhdGlvbiBzdXBwb3J0XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgZW5hYmxlcyByZXBsaWNhdGlvbiBvZiBPcmFjbGUgbmVzdGVkIHRhYmxlcyBhbmQgZGVmaW5lZCB0eXBlc1xuICAgKiovXG4gIHJlYWRvbmx5IGFsbG93U2VsZWN0TmVzdGVkVGFibGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgYXJjaGl2ZWQgcmVkbyBsb2cgZGVzdGluYXRpb24gSUQgZm9yIE9yYWNsZSBjaGFuZ2UgZGF0YSBjYXB0dXJlIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmllcyB0aGUgZGVzdGluYXRpb24gSUQgZm9yIGFyY2hpdmVkIHJlZG8gbG9ncyBtYXRjaGluZyB0aGUgZGVzdF9pZCBjb2x1bW4gaW4gdiRhcmNoaXZlZF9sb2cgdmlldywgb3B0aW1pemluZyBwZXJmb3JtYW5jZSBieSBlbnN1cmluZyBjb3JyZWN0IGxvZyBhY2Nlc3MgZnJvbSB0aGUgc3RhcnQgb2YgcmVwbGljYXRpb24gb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBcmNoaXZlZCBsb2cgY29uZmlndXJhdGlvbjsgUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOyBDaGFuZ2UgZGF0YSBjYXB0dXJlOyBMb2cgZGVzdGluYXRpb24gbWFuYWdlbWVudDsgT3JhY2xlIHJlcGxpY2F0aW9uIHR1bmluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IGFyY2hpdmVkTG9nRGVzdElkIGZvciBhcmNoaXZlZCByZWRvIGxvZyBkZXN0aW5hdGlvbiBzcGVjaWZpY2F0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgaW50ZWdlciBtYXRjaGluZyBPcmFjbGUgdiRhcmNoaXZlZF9sb2cgZGVzdF9pZDsgaW1wcm92ZXMgcGVyZm9ybWFuY2UgdGhyb3VnaCBjb3JyZWN0IGxvZyBhY2Nlc3NcbiAgICoqL1xuICByZWFkb25seSBhcmNoaXZlZExvZ0Rlc3RJZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byByZXN0cmljdCBETVMgYWNjZXNzIHRvIGFyY2hpdmVkIHJlZG8gbG9ncyBvbmx5IGZvciBPcmFjbGUgcmVwbGljYXRpb24uIFdoZW4gZW5hYmxlZCwgRE1TIGFjY2Vzc2VzIG9ubHkgYXJjaGl2ZWQgcmVkbyBsb2dzLCByZXF1aXJpbmcgQVNNIHByaXZpbGVnZXMgaWYgbG9ncyBhcmUgc3RvcmVkIG9uIEF1dG9tYXRpYyBTdG9yYWdlIE1hbmFnZW1lbnQsIHByb3ZpZGluZyBjb250cm9sbGVkIGFjY2VzcyB0byBPcmFjbGUgY2hhbmdlIGRhdGEuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQXJjaGl2ZWQgbG9nIG9ubHkgYWNjZXNzOyBBU00gc3RvcmFnZTsgQ29udHJvbGxlZCBsb2cgYWNjZXNzOyBPcmFjbGUgc2VjdXJpdHk7IENoYW5nZSBkYXRhIGNhcHR1cmUgcmVzdHJpY3Rpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE9yYWNsZSBlbmRwb2ludCBhcmNoaXZlZExvZ3NPbmx5IGZvciByZXN0cmljdGVkIGFyY2hpdmVkIGxvZyBhY2Nlc3MgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gdmFsdWUgaWYgcHJvdmlkZWQ7IHJlcXVpcmVzIEFTTSBwcml2aWxlZ2VzIHdoZW4gYXJjaGl2ZWQgbG9ncyBhcmUgb24gQVNNIHN0b3JhZ2VcbiAgICoqL1xuICByZWFkb25seSBhcmNoaXZlZExvZ3NPbmx5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgQVNNIHNlcnZlciBhZGRyZXNzIGZvciBPcmFjbGUgc291cmNlIGVuZHBvaW50IEJpbmFyeSBSZWFkZXIgY29uZmlndXJhdGlvbi4gU3BlY2lmaWVzIHRoZSBBdXRvbWF0aWMgU3RvcmFnZSBNYW5hZ2VtZW50IHNlcnZlciBhZGRyZXNzIGZvciBPcmFjbGUgZGF0YWJhc2VzIHVzaW5nIEFTTSwgZW5hYmxpbmcgRE1TIEJpbmFyeSBSZWFkZXIgYWNjZXNzIHRvIE9yYWNsZSBkYXRhYmFzZXMgd2l0aCBBU00gc3RvcmFnZSBmb3IgY2hhbmdlIGRhdGEgY2FwdHVyZSBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFTTSBjb25maWd1cmF0aW9uOyBCaW5hcnkgUmVhZGVyIHNldHVwOyBPcmFjbGUgQVNNIGFjY2VzczsgU3RvcmFnZSBtYW5hZ2VtZW50OyBDaGFuZ2UgZGF0YSBjYXB0dXJlIHdpdGggQVNNXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgYXNtU2VydmVyIGZvciBBU00gc2VydmVyIGFkZHJlc3MgY29uZmlndXJhdGlvbiB3aXRoIEJpbmFyeSBSZWFkZXJcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBBU00gc2VydmVyIGFkZHJlc3MgaWYgcHJvdmlkZWQ7IHJlcXVpcmVkIGZvciBPcmFjbGUgZGF0YWJhc2VzIHVzaW5nIEFTTSBzdG9yYWdlIHdpdGggQmluYXJ5IFJlYWRlclxuICAgKiovXG4gIHJlYWRvbmx5IGFzbVNlcnZlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgY2hhcmFjdGVyIGxlbmd0aCBzZW1hbnRpY3Mgc3BlY2lmaWNhdGlvbiBmb3IgT3JhY2xlIGNoYXJhY3RlciBjb2x1bW4gaW50ZXJwcmV0YXRpb24uIERldGVybWluZXMgd2hldGhlciBjaGFyYWN0ZXIgY29sdW1uIGxlbmd0aHMgYXJlIG1lYXN1cmVkIGluIGJ5dGVzIG9yIGNoYXJhY3RlcnMsIGFmZmVjdGluZyBkYXRhIHR5cGUgbWFwcGluZyBhbmQgY2hhcmFjdGVyIGhhbmRsaW5nIGR1cmluZyBPcmFjbGUgZGF0YWJhc2UgbWlncmF0aW9uIGFuZCByZXBsaWNhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENoYXJhY3RlciBlbmNvZGluZzsgRGF0YSB0eXBlIG1hcHBpbmc7IENoYXJhY3RlciBjb2x1bW4gaGFuZGxpbmc7IE9yYWNsZSBjaGFyYWN0ZXIgc2VtYW50aWNzOyBNaWdyYXRpb24gYWNjdXJhY3lcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE9yYWNsZSBlbmRwb2ludCBjaGFyTGVuZ3RoU2VtYW50aWNzIGZvciBjaGFyYWN0ZXIgY29sdW1uIGxlbmd0aCBpbnRlcnByZXRhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlICdDSEFSJyBmb3IgY2hhcmFjdGVyLWJhc2VkIG9yIGRlZmF1bHQgZm9yIGJ5dGUtYmFzZWQ7IGFmZmVjdHMgY2hhcmFjdGVyIGNvbHVtbiBsZW5ndGggY2FsY3VsYXRpb25cbiAgICoqL1xuICByZWFkb25seSBjaGFyTGVuZ3RoU2VtYW50aWNzPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGVuYWJsZSBkaXJlY3QgcGF0aCBsb2FkaW5nIHdpdGhvdXQgZGF0YWJhc2UgbG9nZ2luZyBmb3IgT3JhY2xlIHRhcmdldCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIEluY3JlYXNlcyBjb21taXQgcmF0ZSBvbiBPcmFjbGUgdGFyZ2V0IGRhdGFiYXNlcyBieSB3cml0aW5nIGRpcmVjdGx5IHRvIHRhYmxlcyB3aXRob3V0IGNyZWF0aW5nIGRhdGFiYXNlIGxvZyB0cmFpbHMsIGltcHJvdmluZyBwZXJmb3JtYW5jZSBmb3IgYnVsayBkYXRhIGxvYWRpbmcgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IEJ1bGsgbG9hZGluZzsgRGlyZWN0IHBhdGggbG9hZGluZzsgT3JhY2xlIHRhcmdldCBvcHRpbWl6YXRpb247IEhpZ2gtc3BlZWQgbWlncmF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgZGlyZWN0UGF0aE5vTG9nIGZvciBkaXJlY3QgcGF0aCBsb2FkaW5nIHdpdGhvdXQgbG9nZ2luZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gdmFsdWUgaWYgcHJvdmlkZWQ7IGltcHJvdmVzIHBlcmZvcm1hbmNlIGJ1dCBieXBhc3NlcyBPcmFjbGUgZGF0YWJhc2UgbG9nZ2luZyBtZWNoYW5pc21zXG4gICAqKi9cbiAgcmVhZG9ubHkgZGlyZWN0UGF0aE5vTG9nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBlbmFibGUgcGFyYWxsZWwgbG9hZGluZyB3aGVuIGRpcmVjdCBwYXRoIGZ1bGwgbG9hZCBpcyBhY3RpdmUgZm9yIE9yYWNsZSB0YXJnZXQgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBFbmFibGVzIHBhcmFsbGVsIGxvYWQgb3BlcmF0aW9ucyB3aGVuIHVzZURpcmVjdFBhdGhGdWxsTG9hZCBpcyBzZXQsIHJlcXVpcmluZyB0YXJnZXQgdGFibGVzIHdpdGhvdXQgY29uc3RyYWludHMgb3IgaW5kZXhlcyBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZSBkdXJpbmcgYnVsayBkYXRhIG1pZ3JhdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQYXJhbGxlbCBsb2FkaW5nOyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IEJ1bGsgbWlncmF0aW9uOyBEaXJlY3QgcGF0aCBsb2FkaW5nOyBIaWdoLXNwZWVkIGRhdGEgdHJhbnNmZXJcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE9yYWNsZSBlbmRwb2ludCBkaXJlY3RQYXRoUGFyYWxsZWxMb2FkIGZvciBwYXJhbGxlbCBsb2FkaW5nIHdpdGggZGlyZWN0IHBhdGggZnVsbCBsb2FkXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgcmVxdWlyZXMgdXNlRGlyZWN0UGF0aEZ1bGxMb2FkIGVuYWJsZWQgYW5kIHRhcmdldCB0YWJsZXMgd2l0aG91dCBjb25zdHJhaW50cy9pbmRleGVzXG4gICAqKi9cbiAgcmVhZG9ubHkgZGlyZWN0UGF0aFBhcmFsbGVsTG9hZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlIGhvbW9nZW5lb3VzIHRhYmxlc3BhY2UgcmVwbGljYXRpb24gZm9yIE9yYWNsZSB0YXJnZXQgZGF0YWJhc2UgY29uc2lzdGVuY3kuIENyZWF0ZXMgZXhpc3RpbmcgdGFibGVzIGFuZCBpbmRleGVzIHVuZGVyIHRoZSBzYW1lIHRhYmxlc3BhY2Ugb24gdGhlIHRhcmdldCBkYXRhYmFzZSwgbWFpbnRhaW5pbmcgT3JhY2xlIHRhYmxlc3BhY2Ugb3JnYW5pemF0aW9uIGFuZCBzdG9yYWdlIHN0cnVjdHVyZSBkdXJpbmcgbWlncmF0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVGFibGVzcGFjZSBjb25zaXN0ZW5jeTsgT3JhY2xlIHN0cnVjdHVyZSBwcmVzZXJ2YXRpb247IFN0b3JhZ2Ugb3JnYW5pemF0aW9uOyBEYXRhYmFzZSBsYXlvdXQgbWFpbnRlbmFuY2U7IE1pZ3JhdGlvbiBmaWRlbGl0eVxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IGVuYWJsZUhvbW9nZW5vdXNUYWJsZXNwYWNlIGZvciB0YWJsZXNwYWNlIHJlcGxpY2F0aW9uIGFuZCBjb25zaXN0ZW5jeVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gdmFsdWUgaWYgcHJvdmlkZWQ7IG1haW50YWlucyBPcmFjbGUgdGFibGVzcGFjZSBzdHJ1Y3R1cmUgYW5kIG9yZ2FuaXphdGlvbiBvbiB0YXJnZXQgZGF0YWJhc2VcbiAgICoqL1xuICByZWFkb25seSBlbmFibGVIb21vZ2Vub3VzVGFibGVzcGFjZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGFycmF5IG9mIGFkZGl0aW9uYWwgYXJjaGl2ZWQgbG9nIGRlc3RpbmF0aW9uIElEcyBmb3IgT3JhY2xlIERhdGEgR3VhcmQgc3dpdGNob3ZlciBzY2VuYXJpb3MuIFNwZWNpZmllcyBtdWx0aXBsZSBkZXN0aW5hdGlvbnMgZm9yIGFyY2hpdmVkIHJlZG8gbG9ncyBpbiBwcmltYXJ5LXRvLW11bHRpcGxlLXN0YW5kYnkgc2V0dXBzLCBlbmFibGluZyBETVMgdG8gYWNjZXNzIGNvcnJlY3QgYXJjaGl2ZSBsb2dzIGR1cmluZyBPcmFjbGUgRGF0YSBHdWFyZCBzd2l0Y2hvdmVyIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGF0YSBHdWFyZCBzd2l0Y2hvdmVyOyBNdWx0aXBsZSBzdGFuZGJ5IGNvbmZpZ3VyYXRpb247IEFyY2hpdmUgbG9nIG1hbmFnZW1lbnQ7IEhpZ2ggYXZhaWxhYmlsaXR5OyBEaXNhc3RlciByZWNvdmVyeVxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IGV4dHJhQXJjaGl2ZWRMb2dEZXN0SWRzIGZvciBtdWx0aXBsZSBhcmNoaXZlZCBsb2cgZGVzdGluYXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIHZhbGlkIGludGVnZXIgZGVzdGluYXRpb24gSURzIGlmIHByb3ZpZGVkOyB1c2VkIHdpdGggYXJjaGl2ZWRMb2dEZXN0SWQgZm9yIHN3aXRjaG92ZXIgc2NlbmFyaW9zXG4gICAqICAgKiovXG4gIHJlYWRvbmx5IGV4dHJhQXJjaGl2ZWRMb2dEZXN0SWRzPzogQXJyYXk8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBjYXVzZSB0YXNrIGZhaWx1cmUgd2hlbiBMT0IgY29sdW1uIHNpemUgZXhjZWVkcyBzcGVjaWZpZWQgTG9iTWF4U2l6ZSBsaW1pdC4gRm9yY2VzIHRhc2sgZmFpbHVyZSBpbnN0ZWFkIG9mIExPQiBkYXRhIHRydW5jYXRpb24gd2hlbiBhY3R1YWwgTE9CIHNpemUgaXMgZ3JlYXRlciB0aGFuIExvYk1heFNpemUgaW4gbGltaXRlZCBMT0IgbW9kZSwgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgYW5kIHByZXZlbnRpbmcgc2lsZW50IGRhdGEgbG9zcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhIGludGVncml0eTsgTE9CIGhhbmRsaW5nOyBFcnJvciBoYW5kbGluZzsgRGF0YSB2YWxpZGF0aW9uOyBNaWdyYXRpb24gcXVhbGl0eSBjb250cm9sXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgZmFpbFRhc2tzT25Mb2JUcnVuY2F0aW9uIGZvciBMT0Igc2l6ZSB2YWxpZGF0aW9uIGFuZCBlcnJvciBoYW5kbGluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gdmFsdWUgaWYgcHJvdmlkZWQ7IGNhdXNlcyB0YXNrIGZhaWx1cmUgaW5zdGVhZCBvZiBMT0IgdHJ1bmNhdGlvbiB3aGVuIHNpemUgbGltaXRzIGV4Y2VlZGVkXG4gICAqKi9cbiAgcmVhZG9ubHkgZmFpbFRhc2tzT25Mb2JUcnVuY2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbnVtYmVyIGRhdGEgdHlwZSBzY2FsZSBzcGVjaWZpY2F0aW9uIGZvciBPcmFjbGUgTlVNQkVSIGRhdGEgdHlwZSBjb252ZXJzaW9uIHByZWNpc2lvbi4gRGVmaW5lcyB0aGUgc2NhbGUgZm9yIE5VTUJFUiBkYXRhIHR5cGUgY29udmVyc2lvbiB1cCB0byAzOCBvciBGTE9BVCwgY29udHJvbGxpbmcgcHJlY2lzaW9uIGFuZCBzY2FsZSBkdXJpbmcgT3JhY2xlIG51bWVyaWMgZGF0YSBtaWdyYXRpb24gd2l0aCBkZWZhdWx0IHByZWNpc2lvbiAzOCwgc2NhbGUgMTAuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTnVtZXJpYyBwcmVjaXNpb247IERhdGEgdHlwZSBjb252ZXJzaW9uOyBPcmFjbGUgTlVNQkVSIGhhbmRsaW5nOyBQcmVjaXNpb24gY29udHJvbDsgTWlncmF0aW9uIGFjY3VyYWN5XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgbnVtYmVyRGF0YXR5cGVTY2FsZSBmb3IgTlVNQkVSIGRhdGEgdHlwZSBjb252ZXJzaW9uIHByZWNpc2lvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGludGVnZXIgYmV0d2VlbiAwLTM4IG9yIEZMT0FUIGlmIHByb3ZpZGVkOyBjb250cm9scyBPcmFjbGUgTlVNQkVSIGRhdGEgdHlwZSBjb252ZXJzaW9uIHByZWNpc2lvbiBhbmQgc2NhbGVcbiAgICoqL1xuICByZWFkb25seSBudW1iZXJEYXRhdHlwZVNjYWxlPzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBPcmFjbGUgcGF0aCBwcmVmaXggZm9yIEJpbmFyeSBSZWFkZXIgcmVkbyBsb2cgYWNjZXNzIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBPcmFjbGUgcm9vdCBwYXRoIGZvciBhY2Nlc3NpbmcgcmVkbyBsb2dzIHdoZW4gdXNpbmcgQmluYXJ5IFJlYWRlciBmb3IgY2hhbmdlIGRhdGEgY2FwdHVyZSBmcm9tIEFtYXpvbiBSRFMgZm9yIE9yYWNsZSBzb3VyY2VzLCBlbmFibGluZyBwcm9wZXIgcmVkbyBsb2cgYWNjZXNzIGFuZCBjaGFuZ2UgZGF0YSBjYXB0dXJlIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQmluYXJ5IFJlYWRlciBjb25maWd1cmF0aW9uOyBSZWRvIGxvZyBhY2Nlc3M7IFJEUyBPcmFjbGUgc291cmNlczsgQ2hhbmdlIGRhdGEgY2FwdHVyZTsgUGF0aCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgb3JhY2xlUGF0aFByZWZpeCBmb3IgQmluYXJ5IFJlYWRlciByZWRvIGxvZyBhY2Nlc3MgcGF0aCBzcGVjaWZpY2F0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgT3JhY2xlIHBhdGggc3RyaW5nIGlmIHByb3ZpZGVkOyByZXF1aXJlZCBmb3IgQmluYXJ5IFJlYWRlciBhY2Nlc3MgdG8gUkRTIE9yYWNsZSByZWRvIGxvZ3NcbiAgICoqL1xuICByZWFkb25seSBvcmFjbGVQYXRoUHJlZml4Pzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBudW1iZXIgb2YgcGFyYWxsZWwgQVNNIHJlYWQgdGhyZWFkcyBmb3IgT3JhY2xlIGNoYW5nZSBkYXRhIGNhcHR1cmUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBDb25maWd1cmVzIHRoZSBudW1iZXIgb2YgdGhyZWFkcyAoMi04KSBmb3IgQ0RDIGxvYWQgb3BlcmF0aW9ucyB1c2luZyBPcmFjbGUgQXV0b21hdGljIFN0b3JhZ2UgTWFuYWdlbWVudCwgd29ya2luZyB3aXRoIHJlYWRBaGVhZEJsb2NrcyBmb3Igb3B0aW1pemVkIEFTTSBwZXJmb3JtYW5jZSBkdXJpbmcgY2hhbmdlIGRhdGEgY2FwdHVyZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBU00gcGVyZm9ybWFuY2U7IENEQyBvcHRpbWl6YXRpb247IFRocmVhZCBjb25maWd1cmF0aW9uOyBQYXJhbGxlbCBwcm9jZXNzaW5nOyBPcmFjbGUgQVNNIHR1bmluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IHBhcmFsbGVsQXNtUmVhZFRocmVhZHMgZm9yIEFTTSBDREMgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgaW50ZWdlciBiZXR3ZWVuIDItOCBpZiBwcm92aWRlZDsgdXNlZCB3aXRoIHJlYWRBaGVhZEJsb2NrcyBmb3IgQVNNIHBlcmZvcm1hbmNlIHR1bmluZ1xuICAgKiovXG4gIHJlYWRvbmx5IHBhcmFsbGVsQXNtUmVhZFRocmVhZHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG51bWJlciBvZiByZWFkLWFoZWFkIGJsb2NrcyBmb3IgT3JhY2xlIEFTTSBjaGFuZ2UgZGF0YSBjYXB0dXJlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gQ29uZmlndXJlcyByZWFkLWFoZWFkIGJsb2NrcyAoMTAwMC0yMDAwMDApIGZvciBDREMgbG9hZCBvcGVyYXRpb25zIHVzaW5nIE9yYWNsZSBBdXRvbWF0aWMgU3RvcmFnZSBNYW5hZ2VtZW50LCB3b3JraW5nIHdpdGggcGFyYWxsZWxBc21SZWFkVGhyZWFkcyBmb3Igb3B0aW1pemVkIEFTTSBwZXJmb3JtYW5jZSBkdXJpbmcgY2hhbmdlIGRhdGEgY2FwdHVyZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBBU00gcGVyZm9ybWFuY2U7IENEQyBvcHRpbWl6YXRpb247IEJsb2NrIGNvbmZpZ3VyYXRpb247IFJlYWQtYWhlYWQgdHVuaW5nOyBPcmFjbGUgQVNNIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgT3JhY2xlIGVuZHBvaW50IHJlYWRBaGVhZEJsb2NrcyBmb3IgQVNNIENEQyByZWFkLWFoZWFkIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGludGVnZXIgYmV0d2VlbiAxMDAwLTIwMDAwMCBpZiBwcm92aWRlZDsgdXNlZCB3aXRoIHBhcmFsbGVsQXNtUmVhZFRocmVhZHMgZm9yIEFTTSBwZXJmb3JtYW5jZSB0dW5pbmdcbiAgICoqL1xuICByZWFkb25seSByZWFkQWhlYWRCbG9ja3M/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlIHRhYmxlc3BhY2UgbmFtZSByZWFkaW5nIGZvciBPcmFjbGUgdGFibGVzcGFjZSByZXBsaWNhdGlvbiBzdXBwb3J0LiBFbmFibGVzIERNUyB0byByZWFkIGFuZCByZXBsaWNhdGUgdGFibGVzcGFjZSBpbmZvcm1hdGlvbiBkdXJpbmcgT3JhY2xlIGRhdGFiYXNlIG1pZ3JhdGlvbiwgc3VwcG9ydGluZyB0YWJsZXNwYWNlLWF3YXJlIG1pZ3JhdGlvbiBhbmQgbWFpbnRhaW5pbmcgT3JhY2xlIHN0b3JhZ2Ugb3JnYW5pemF0aW9uIG9uIHRhcmdldCBkYXRhYmFzZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVGFibGVzcGFjZSByZXBsaWNhdGlvbjsgU3RvcmFnZSBvcmdhbml6YXRpb247IE9yYWNsZSBzdHJ1Y3R1cmUgcHJlc2VydmF0aW9uOyBUYWJsZXNwYWNlIGF3YXJlbmVzczsgTWlncmF0aW9uIGZpZGVsaXR5XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgcmVhZFRhYmxlU3BhY2VOYW1lIGZvciB0YWJsZXNwYWNlIHJlcGxpY2F0aW9uIGFuZCBvcmdhbml6YXRpb24gc3VwcG9ydFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gdmFsdWUgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgdGFibGVzcGFjZSBuYW1lIHJlYWRpbmcgYW5kIHJlcGxpY2F0aW9uIGR1cmluZyBPcmFjbGUgbWlncmF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgcmVhZFRhYmxlU3BhY2VOYW1lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBlbmFibGUgcGF0aCBwcmVmaXggcmVwbGFjZW1lbnQgZm9yIEJpbmFyeSBSZWFkZXIgcmVkbyBsb2cgYWNjZXNzLiBJbnN0cnVjdHMgRE1TIHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgT3JhY2xlIHJvb3Qgd2l0aCB1c2VQYXRoUHJlZml4IHNldHRpbmcgZm9yIHJlZG8gbG9nIGFjY2VzcyB3aGVuIHVzaW5nIEJpbmFyeSBSZWFkZXIgZm9yIGNoYW5nZSBkYXRhIGNhcHR1cmUgZnJvbSBBbWF6b24gUkRTIGZvciBPcmFjbGUgc291cmNlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQYXRoIHJlcGxhY2VtZW50OyBCaW5hcnkgUmVhZGVyIGNvbmZpZ3VyYXRpb247IFJEUyBPcmFjbGUgYWNjZXNzOyBSZWRvIGxvZyBwYXRoIG1hbmFnZW1lbnQ7IENoYW5nZSBkYXRhIGNhcHR1cmUgc2V0dXBcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE9yYWNsZSBlbmRwb2ludCByZXBsYWNlUGF0aFByZWZpeCBmb3IgQmluYXJ5IFJlYWRlciBwYXRoIHJlcGxhY2VtZW50IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIHZhbHVlIGlmIHByb3ZpZGVkOyBlbmFibGVzIHBhdGggcHJlZml4IHJlcGxhY2VtZW50IGZvciBCaW5hcnkgUmVhZGVyIHJlZG8gbG9nIGFjY2Vzc1xuICAgKiovXG4gIHJlYWRvbmx5IHJlcGxhY2VQYXRoUHJlZml4PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgcmV0cnkgaW50ZXJ2YWwgaW4gc2Vjb25kcyBmb3IgT3JhY2xlIGNvbm5lY3Rpb24gcXVlcnkgcmV0cnkgb3BlcmF0aW9ucy4gU3BlY2lmaWVzIHRoZSB3YWl0IHRpbWUgYmVmb3JlIHJlc2VuZGluZyBxdWVyaWVzIHRvIE9yYWNsZSBkYXRhYmFzZSwgcHJvdmlkaW5nIHJlc2lsaWVuY2UgYW5kIGVycm9yIHJlY292ZXJ5IGZvciBPcmFjbGUgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGlzc3VlcyBkdXJpbmcgbWlncmF0aW9uIGFuZCByZXBsaWNhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvbm5lY3Rpb24gcmVzaWxpZW5jZTsgRXJyb3IgcmVjb3Zlcnk7IFF1ZXJ5IHJldHJ5OyBPcmFjbGUgY29ubmVjdGl2aXR5OyBOZXR3b3JrIHJlbGlhYmlsaXR5XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgcmV0cnlJbnRlcnZhbCBmb3IgcXVlcnkgcmV0cnkgdGltaW5nIGFuZCBjb25uZWN0aW9uIHJlc2lsaWVuY2VcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIHNlY29uZHMgaWYgcHJvdmlkZWQ7IGNvbnRyb2xzIHF1ZXJ5IHJldHJ5IHRpbWluZyBmb3IgT3JhY2xlIGNvbm5lY3Rpb24gcmVzaWxpZW5jZVxuICAgKiovXG4gIHJlYWRvbmx5IHJldHJ5SW50ZXJ2YWw/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIEFSTiBmb3IgQVdTIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgdG8gT3JhY2xlIGVuZHBvaW50IGNyZWRlbnRpYWxzLiBTcGVjaWZpZXMgdGhlIElBTSByb2xlIHdpdGggcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gYWNjZXNzIFNlY3JldHNNYW5hZ2VyU2VjcmV0IGNvbnRhaW5pbmcgT3JhY2xlIGVuZHBvaW50IGNyZWRlbnRpYWxzLCBlbmFibGluZyBzZWN1cmUgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGFuZCBhY2Nlc3MgY29udHJvbCBmb3IgT3JhY2xlIGRhdGFiYXNlIGNvbm5lY3Rpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENyZWRlbnRpYWwgbWFuYWdlbWVudDsgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uOyBTZWN1cmUgYWNjZXNzOyBJQU0gcm9sZSBjb25maWd1cmF0aW9uOyBPcmFjbGUgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgSUFNIHJvbGUgQVJOIGZvciBTZWNyZXRzIE1hbmFnZXIgYWNjZXNzIHRvIE9yYWNsZSBlbmRwb2ludCBjcmVkZW50aWFscyBhbmQgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBJQU0gcm9sZSBBUk4gaWYgcHJvdmlkZWQ7IHJlcXVpcmVzIGlhbTpQYXNzUm9sZSBhY3Rpb24gYW5kIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgcGVybWlzc2lvbnNcbiAgICoqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIEFSTiBmb3IgQVdTIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgdG8gT3JhY2xlIEFTTSBjcmVkZW50aWFscyB3aGVuIHVzaW5nIEFkdmFuY2VkIFN0b3JhZ2UgTWFuYWdlci4gU3BlY2lmaWVzIHRoZSBJQU0gcm9sZSB3aXRoIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBTZWNyZXRzTWFuYWdlck9yYWNsZUFzbVNlY3JldCBjb250YWluaW5nIE9yYWNsZSBBU00gY29ubmVjdGlvbiBkZXRhaWxzLCBlbmFibGluZyBzZWN1cmUgQVNNIGNyZWRlbnRpYWwgbWFuYWdlbWVudCBmb3IgT3JhY2xlIGVuZHBvaW50cyB3aXRoIEFTTSBzdG9yYWdlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFTTSBjcmVkZW50aWFsIG1hbmFnZW1lbnQ7IFNlY3JldHMgTWFuYWdlciBpbnRlZ3JhdGlvbjsgT3JhY2xlIEFTTSBhY2Nlc3M7IFNlY3VyZSBBU00gYXV0aGVudGljYXRpb247IEFkdmFuY2VkIHN0b3JhZ2UgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBJQU0gcm9sZSBBUk4gZm9yIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgdG8gT3JhY2xlIEFTTSBjcmVkZW50aWFscyBhbmQgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBJQU0gcm9sZSBBUk4gaWYgcHJvdmlkZWQ7IHJlcXVpcmVkIGZvciBPcmFjbGUgZW5kcG9pbnRzIHVzaW5nIEFTTTsgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggY2xlYXItdGV4dCBBU00gY3JlZGVudGlhbHNcbiAgICoqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlck9yYWNsZUFzbUFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgQVJOIGNvbnRhaW5pbmcgT3JhY2xlIEFTTSBjb25uZWN0aW9uIGRldGFpbHMgZm9yIEFkdmFuY2VkIFN0b3JhZ2UgTWFuYWdlciBlbmRwb2ludHMuIFNwZWNpZmllcyB0aGUgZnVsbCBBUk4gb2YgdGhlIHNlY3JldCBjb250YWluaW5nIE9yYWNsZSBBU00gY29ubmVjdGlvbiBpbmZvcm1hdGlvbiwgZW5hYmxpbmcgc2VjdXJlIHN0b3JhZ2UgYW5kIGFjY2VzcyBvZiBBU00gY3JlZGVudGlhbHMgZm9yIE9yYWNsZSBlbmRwb2ludHMgdXNpbmcgQWR2YW5jZWQgU3RvcmFnZSBNYW5hZ2VyLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFTTSBzZWNyZXQgc3RvcmFnZTsgU2VjdXJlIEFTTSBjcmVkZW50aWFsczsgT3JhY2xlIEFTTSBjb25maWd1cmF0aW9uOyBBZHZhbmNlZCBzdG9yYWdlIGF1dGhlbnRpY2F0aW9uOyBTZWNyZXQgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTiBjb250YWluaW5nIE9yYWNsZSBBU00gY29ubmVjdGlvbiBkZXRhaWxzIGFuZCBjcmVkZW50aWFsc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgQVJOIGlmIHByb3ZpZGVkOyByZXF1aXJlZCBmb3IgT3JhY2xlIGVuZHBvaW50cyB1c2luZyBBU00gd2l0aCBTZWNyZXRzIE1hbmFnZXJcbiAgICoqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlck9yYWNsZUFzbVNlY3JldEFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk4gY29udGFpbmluZyBPcmFjbGUgZW5kcG9pbnQgY29ubmVjdGlvbiBkZXRhaWxzIGZvciBzZWN1cmUgY3JlZGVudGlhbCBtYW5hZ2VtZW50LiBTcGVjaWZpZXMgdGhlIGZ1bGwgQVJOIG9mIHRoZSBzZWNyZXQgY29udGFpbmluZyBPcmFjbGUgZGF0YWJhc2UgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgY3JlZGVudGlhbHMsIGVuYWJsaW5nIHNlY3VyZSBzdG9yYWdlIGFuZCBhY2Nlc3Mgb2YgT3JhY2xlIGVuZHBvaW50IGF1dGhlbnRpY2F0aW9uIGRldGFpbHMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU2VjdXJlIGNyZWRlbnRpYWwgc3RvcmFnZTsgT3JhY2xlIGF1dGhlbnRpY2F0aW9uOyBTZWNyZXRzIE1hbmFnZXIgaW50ZWdyYXRpb247IERhdGFiYXNlIGNvbm5lY3Rpb24gc2VjdXJpdHk7IENyZWRlbnRpYWwgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTiBjb250YWluaW5nIE9yYWNsZSBlbmRwb2ludCBjb25uZWN0aW9uIGRldGFpbHMgYW5kIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk47IHJlcXVpcmVkIGZvciBzZWN1cmUgT3JhY2xlIGVuZHBvaW50IGNyZWRlbnRpYWwgbWFuYWdlbWVudCBhbmQgYXV0aGVudGljYXRpb25cbiAgICoqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldEFybjogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBLTVMga2V5IEFSTiBmb3IgZW5jcnlwdGluZyBPcmFjbGUgZW5kcG9pbnQgY3JlZGVudGlhbHMgc2VjcmV0IGluIFNlY3JldHMgTWFuYWdlci4gU3BlY2lmaWVzIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgY3JlZGVudGlhbHMgc2VjcmV0LCBwcm92aWRpbmcgYWRkaXRpb25hbCBlbmNyeXB0aW9uIGxheWVyIGZvciBPcmFjbGUgZW5kcG9pbnQgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gc3RvcmVkIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3JlZGVudGlhbCBlbmNyeXB0aW9uOyBLTVMgaW50ZWdyYXRpb247IEVuaGFuY2VkIHNlY3VyaXR5OyBTZWNyZXQgZW5jcnlwdGlvbjsgT3JhY2xlIGNyZWRlbnRpYWwgcHJvdGVjdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBLTVMga2V5IEFSTiBmb3IgZW5jcnlwdGluZyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgT3JhY2xlIGVuZHBvaW50IGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgS01TIGtleSBBUk4gaWYgcHJvdmlkZWQ7IHByb3ZpZGVzIGFkZGl0aW9uYWwgZW5jcnlwdGlvbiBmb3IgT3JhY2xlIGNyZWRlbnRpYWxzIGluIFNlY3JldHMgTWFuYWdlclxuICAgKiovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0S01TQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBjdXN0b20gZnVuY3Rpb24gbmFtZSBmb3IgY29udmVydGluZyBPcmFjbGUgU0RPX0dFT01FVFJZIHRvIEdFT0pTT04gZm9ybWF0IGR1cmluZyBzcGF0aWFsIGRhdGEgbWlncmF0aW9uLiBTcGVjaWZpZXMgYSBjdXN0b20gZnVuY3Rpb24gdG8gaGFuZGxlIHNwYXRpYWwgZGF0YSBjb252ZXJzaW9uLCBkZWZhdWx0aW5nIHRvIFNETzJHRU9KU09OIGZ1bmN0aW9uIGlmIGF2YWlsYWJsZSwgZW5hYmxpbmcgcHJvcGVyIGhhbmRsaW5nIG9mIE9yYWNsZSBzcGF0aWFsIGRhdGEgdHlwZXMgZHVyaW5nIG1pZ3JhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNwYXRpYWwgZGF0YSBjb252ZXJzaW9uOyBHRU9KU09OIHRyYW5zZm9ybWF0aW9uOyBPcmFjbGUgc3BhdGlhbCB0eXBlczsgQ3VzdG9tIGZ1bmN0aW9uIHVzYWdlOyBTcGF0aWFsIGRhdGEgbWlncmF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgc3BhdGlhbCBkYXRhIGNvbnZlcnNpb24gZnVuY3Rpb24gZm9yIFNET19HRU9NRVRSWSB0byBHRU9KU09OIHRyYW5zZm9ybWF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgT3JhY2xlIGZ1bmN0aW9uIG5hbWUgaWYgcHJvdmlkZWQ7IGZ1bmN0aW9uIG11c3QgYmUgYWNjZXNzaWJsZSBhbmQgbWltaWMgU0RPMkdFT0pTT04gb3BlcmF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgc3BhdGlhbERhdGFPcHRpb25Ub0dlb0pzb25GdW5jdGlvbk5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHN0YW5kYnkgZGVsYXkgdGltZSBpbiBtaW51dGVzIGZvciBPcmFjbGUgQWN0aXZlIERhdGEgR3VhcmQgc3RhbmRieSBkYXRhYmFzZSBzeW5jaHJvbml6YXRpb24uIFNwZWNpZmllcyB0aGUgdGltZSBsYWcgYmV0d2VlbiBwcmltYXJ5IGFuZCBzdGFuZGJ5IGRhdGFiYXNlcyB3aGVuIHVzaW5nIE9yYWNsZSBBY3RpdmUgRGF0YSBHdWFyZCBzdGFuZGJ5IGFzIENEQyBzb3VyY2UsIGVuYWJsaW5nIHJlcGxpY2F0aW9uIGZyb20gc3RhbmRieSBpbnN0YW5jZXMgd2l0aG91dCBpbXBhY3RpbmcgcHJvZHVjdGlvbiBkYXRhYmFzZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQWN0aXZlIERhdGEgR3VhcmQ7IFN0YW5kYnkgcmVwbGljYXRpb247IFByb2R1Y3Rpb24gaXNvbGF0aW9uOyBDREMgZnJvbSBzdGFuZGJ5OyBEYXRhYmFzZSBzeW5jaHJvbml6YXRpb24gZGVsYXlcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE9yYWNsZSBlbmRwb2ludCBzdGFuZGJ5IGRlbGF5IGNvbmZpZ3VyYXRpb24gZm9yIEFjdGl2ZSBEYXRhIEd1YXJkIHN0YW5kYnkgZGF0YWJhc2UgcmVwbGljYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIG1pbnV0ZXMgaWYgcHJvdmlkZWQ7IGNvbnRyb2xzIHN5bmNocm9uaXphdGlvbiBkZWxheSBmb3IgQWN0aXZlIERhdGEgR3VhcmQgc3RhbmRieSBzb3VyY2VzXG4gICAqKi9cbiAgcmVhZG9ubHkgc3RhbmRieURlbGF5VGltZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBlbmFibGUgYWx0ZXJuYXRlIGZvbGRlciB1c2FnZSBmb3Igb25saW5lIHJlZG8gbG9ncyB3aXRoIEJpbmFyeSBSZWFkZXIgZm9yIE9yYWNsZSBSRFMgc291cmNlcy4gSW5zdHJ1Y3RzIERNUyBCaW5hcnkgUmVhZGVyIHRvIHVzZSBzcGVjaWZpZWQgcHJlZml4IHJlcGxhY2VtZW50IGZvciBhY2Nlc3Npbmcgb25saW5lIHJlZG8gbG9ncywgZW5hYmxpbmcgcHJvcGVyIGNoYW5nZSBkYXRhIGNhcHR1cmUgZnJvbSBBbWF6b24gUkRTIGZvciBPcmFjbGUgZGF0YWJhc2VzIHdpdGggY3VzdG9tIHJlZG8gbG9nIGNvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEJpbmFyeSBSZWFkZXIgY29uZmlndXJhdGlvbjsgT25saW5lIHJlZG8gbG9nIGFjY2VzczsgUkRTIE9yYWNsZSBzb3VyY2VzOyBQcmVmaXggcmVwbGFjZW1lbnQ7IENoYW5nZSBkYXRhIGNhcHR1cmUgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgdXNlQWx0ZXJuYXRlRm9sZGVyRm9yT25saW5lIGZvciBCaW5hcnkgUmVhZGVyIG9ubGluZSByZWRvIGxvZyBhY2Nlc3MgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gdmFsdWUgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgYWx0ZXJuYXRlIGZvbGRlciB1c2FnZSBmb3IgQmluYXJ5IFJlYWRlciBvbmxpbmUgcmVkbyBsb2cgYWNjZXNzXG4gICAqKi9cbiAgcmVhZG9ubHkgdXNlQWx0ZXJuYXRlRm9sZGVyRm9yT25saW5lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBlbmFibGUgQmluYXJ5IFJlYWRlciB1dGlsaXR5IGZvciBPcmFjbGUgY2hhbmdlIGRhdGEgY2FwdHVyZSBvcGVyYXRpb25zLiBFbmFibGVzIEJpbmFyeSBSZWFkZXIgZm9yIGNoYW5nZSBkYXRhIGNhcHR1cmUgcmVxdWlyaW5nIFVzZUxvZ21pbmVyUmVhZGVyIHRvIGJlIGRpc2FibGVkLCBwcm92aWRpbmcgYWx0ZXJuYXRpdmUgbWV0aG9kIGZvciBhY2Nlc3NpbmcgT3JhY2xlIHJlZG8gbG9ncyB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgUkRTIE9yYWNsZSBzb3VyY2VzIGFuZCBBU00gZW52aXJvbm1lbnRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEJpbmFyeSBSZWFkZXIgQ0RDOyBBbHRlcm5hdGl2ZSBsb2cgYWNjZXNzOyBPcmFjbGUgQVNNIHN1cHBvcnQ7IFJEUyBPcmFjbGUgY29uZmlndXJhdGlvbjsgQ2hhbmdlIGRhdGEgY2FwdHVyZSBtZXRob2Qgc2VsZWN0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgdXNlQkZpbGUgZm9yIEJpbmFyeSBSZWFkZXIgdXRpbGl0eSBjaGFuZ2UgZGF0YSBjYXB0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIHZhbHVlIGlmIHByb3ZpZGVkOyByZXF1aXJlcyBVc2VMb2dtaW5lclJlYWRlciBzZXQgdG8gZmFsc2U7IGFkZGl0aW9uYWwgYXR0cmlidXRlcyBuZWVkZWQgZm9yIFJEUyBPcmFjbGVcbiAgICoqL1xuICByZWFkb25seSB1c2VCRmlsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlIGRpcmVjdCBwYXRoIGZ1bGwgbG9hZCBmb3IgT3JhY2xlIHRhcmdldCBkYXRhYmFzZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIFVzZXMgT3JhY2xlIENhbGwgSW50ZXJmYWNlIChPQ0kpIGRpcmVjdCBwYXRoIHByb3RvY29sIGZvciBidWxrLWxvYWRpbmcgT3JhY2xlIHRhcmdldCB0YWJsZXMgZHVyaW5nIGZ1bGwgbG9hZCBvcGVyYXRpb25zLCBwcm92aWRpbmcgaW1wcm92ZWQgcGVyZm9ybWFuY2UgZm9yIGxhcmdlIGRhdGEgbWlncmF0aW9uIHNjZW5hcmlvcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IEJ1bGsgbG9hZGluZzsgRnVsbCBsb2FkIGFjY2VsZXJhdGlvbjsgT3JhY2xlIHRhcmdldCBvcHRpbWl6YXRpb247IExhcmdlIGRhdGEgbWlncmF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgdXNlRGlyZWN0UGF0aEZ1bGxMb2FkIGZvciBkaXJlY3QgcGF0aCBwcm90b2NvbCBidWxrIGxvYWRpbmcgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgZW5hYmxlcyBPQ0kgZGlyZWN0IHBhdGggcHJvdG9jb2wgZm9yIGJ1bGstbG9hZGluZyBPcmFjbGUgdGFyZ2V0IHRhYmxlc1xuICAgKiovXG4gIHJlYWRvbmx5IHVzZURpcmVjdFBhdGhGdWxsTG9hZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlIE9yYWNsZSBMb2dNaW5lciB1dGlsaXR5IGZvciBjaGFuZ2UgZGF0YSBjYXB0dXJlIG9wZXJhdGlvbnMgKGRlZmF1bHQgbWV0aG9kKS4gQ29udHJvbHMgd2hldGhlciB0byB1c2UgTG9nTWluZXIgKGRlZmF1bHQpIG9yIEJpbmFyeSBSZWFkZXIgZm9yIGFjY2Vzc2luZyByZWRvIGxvZ3MsIHdpdGggTG9nTWluZXIgYmVpbmcgdGhlIHN0YW5kYXJkIG1ldGhvZCBhbmQgQmluYXJ5IFJlYWRlciByZXF1aXJpbmcgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciBiaW5hcnkgZmlsZSBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTG9nTWluZXIgQ0RDOyBTdGFuZGFyZCBsb2cgYWNjZXNzOyBDaGFuZ2UgZGF0YSBjYXB0dXJlIG1ldGhvZDsgT3JhY2xlIHJlcGxpY2F0aW9uOyBMb2cgYWNjZXNzIG1ldGhvZCBzZWxlY3Rpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE9yYWNsZSBlbmRwb2ludCB1c2VMb2dtaW5lclJlYWRlciBmb3IgTG9nTWluZXIgdXRpbGl0eSBjaGFuZ2UgZGF0YSBjYXB0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIHZhbHVlIGlmIHByb3ZpZGVkOyBkZWZhdWx0IHRydWUgZm9yIExvZ01pbmVyOyBzZXQgZmFsc2UgdG8gZW5hYmxlIEJpbmFyeSBSZWFkZXIgd2l0aCB1c2VCRmlsZVxuICAgKiovXG4gIHJlYWRvbmx5IHVzZUxvZ21pbmVyUmVhZGVyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgcGF0aCBwcmVmaXggZm9yIEJpbmFyeSBSZWFkZXIgcmVkbyBsb2cgYWNjZXNzIHJlcGxhY2VtZW50IGluIE9yYWNsZSBSRFMgc291cmNlcy4gU3BlY2lmaWVzIHRoZSBwYXRoIHByZWZpeCB0byByZXBsYWNlIHRoZSBkZWZhdWx0IE9yYWNsZSByb290IGZvciBhY2Nlc3NpbmcgcmVkbyBsb2dzIHdoZW4gdXNpbmcgQmluYXJ5IFJlYWRlciBmb3IgY2hhbmdlIGRhdGEgY2FwdHVyZSBmcm9tIEFtYXpvbiBSRFMgZm9yIE9yYWNsZSBkYXRhYmFzZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQmluYXJ5IFJlYWRlciBjb25maWd1cmF0aW9uOyBQYXRoIHJlcGxhY2VtZW50OyBSRFMgT3JhY2xlIGFjY2VzczsgUmVkbyBsb2cgcGF0aCBtYW5hZ2VtZW50OyBDdXN0b20gcGF0aCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBPcmFjbGUgZW5kcG9pbnQgdXNlUGF0aFByZWZpeCBmb3IgQmluYXJ5IFJlYWRlciBwYXRoIHByZWZpeCByZXBsYWNlbWVudCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgcGF0aCBwcmVmaXggc3RyaW5nIGlmIHByb3ZpZGVkOyB1c2VkIHdpdGggQmluYXJ5IFJlYWRlciBmb3IgUkRTIE9yYWNsZSByZWRvIGxvZyBhY2Nlc3MgcmVwbGFjZW1lbnRcbiAgICoqL1xuICByZWFkb25seSB1c2VQYXRoUHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZGVmaW5lcyBhIE15U1FMIGVuZHBvaW50LiBNb2RpZmllZCBmcm9tIHRoZSBlcXVpdmFsZW50IEwxIENvbnN0cnVjdCB0byBwcmV2ZW50IHVzZSBvZiBwbGFpbnRleHQgY3JlZGVudGlhbHMgYW5kIGVuZm9yY2UgdXNlIG9mIEtNUyBlbmNyeXB0aW9uLlxuICogVGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgb3V0cHV0IGZvcm1hdCBvZiByZWNvcmRzIGFwcGxpZWQgdG8gdGhlIGVuZHBvaW50IGFuZCBkZXRhaWxzIG9mIHRyYW5zYWN0aW9uIGFuZCBjb250cm9sIHRhYmxlIGRhdGEgaW5mb3JtYXRpb24uIEZvciBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBhdmFpbGFibGUgc2V0dGluZ3MsIHNlZSBbRXh0cmEgY29ubmVjdGlvbiBhdHRyaWJ1dGVzIHdoZW4gdXNpbmcgTXlTUUwgYXMgYSBzb3VyY2UgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1NvdXJjZS5NeVNRTC5odG1sI0NIQVBfU291cmNlLk15U1FMLkNvbm5lY3Rpb25BdHRyaWIpIGFuZCBbRXh0cmEgY29ubmVjdGlvbiBhdHRyaWJ1dGVzIHdoZW4gdXNpbmcgYSBNeVNRTC1jb21wYXRpYmxlIGRhdGFiYXNlIGFzIGEgdGFyZ2V0IGZvciBBV1MgRE1TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9UYXJnZXQuTXlTUUwuaHRtbCNDSEFQX1RhcmdldC5NeVNRTC5Db25uZWN0aW9uQXR0cmliKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gKiBAc3RydWN0XG4gKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW15c3Fsc2V0dGluZ3MuaHRtbFxuICovXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBNeVNRTCBkYXRhYmFzZSBzZXR0aW5ncyBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgRE1TIHByb3ZpZGluZyBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIE15U1FMLXNwZWNpZmljIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBNeVNRTC1zcGVjaWZpYyBwcm9wZXJ0aWVzIGZvciBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBpbmNsdWRpbmcgY29ubmVjdGlvbiBzZXR0aW5ncywgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgYW5kIE15U1FMIG1pZ3JhdGlvbiBwYXJhbWV0ZXJzIGZvciBNeVNRTCBkYXRhYmFzZSBtaWdyYXRpb24gd29ya2Zsb3dzLlxuICpcbiAqIFVzZSBjYXNlczogTXlTUUwgZGF0YWJhc2UgbWlncmF0aW9uOyBEYXRhYmFzZSByZXBsaWNhdGlvbjsgQ29ubmVjdGlvbiBjb25maWd1cmF0aW9uOyBNeVNRTCBtaWdyYXRpb24gd29ya2Zsb3dzOyBEYXRhYmFzZSBjb25uZWN0aXZpdHk7IERNUyBpbnRlZ3JhdGlvblxuICpcbiAqIEFXUzogQVdTIERNUyBNeVNRTCBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdpdGggTXlTUUwtc3BlY2lmaWMgbWlncmF0aW9uIHNldHRpbmdzIGFuZCByZXBsaWNhdGlvbiBtYW5hZ2VtZW50XG4gKlxuICogVmFsaWRhdGlvbjogQ29uZmlndXJhdGlvbiBtdXN0IGJlIHZhbGlkIGZvciBETVMgbWlncmF0aW9uOyBwcm9wZXJ0aWVzIG11c3QgY29uZm9ybSB0byBBV1MgRE1TIGFuZCBkYXRhYmFzZS1zcGVjaWZpYyByZXF1aXJlbWVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNeVNxbFNldHRpbmdzUHJvcGVydHkge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBTUUwgc2NyaXB0IHRvIGV4ZWN1dGUgaW1tZWRpYXRlbHkgYWZ0ZXIgRE1TIGNvbm5lY3RzIHRvIHRoZSBNeVNRTCBlbmRwb2ludCBmb3IgaW5pdGlhbGl6YXRpb24gdGFza3MuIFByb3ZpZGVzIGN1c3RvbSBpbml0aWFsaXphdGlvbiBsb2dpYyB0aGF0IHJ1bnMgYWZ0ZXIgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LCB3aXRoIG1pZ3JhdGlvbiB0YXNrIGNvbnRpbnVpbmcgcmVnYXJkbGVzcyBvZiBzY3JpcHQgc3VjY2VzcyBvciBmYWlsdXJlLCBlbmFibGluZyBkYXRhYmFzZS1zcGVjaWZpYyBzZXR1cCBhbmQgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhYmFzZSBpbml0aWFsaXphdGlvbjsgQ29ubmVjdGlvbiBzZXR1cDsgQ3VzdG9tIGNvbmZpZ3VyYXRpb247IFBvc3QtY29ubmVjdGlvbiB0YXNrczsgRGF0YWJhc2UgcHJlcGFyYXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE15U1FMIGVuZHBvaW50IGFmdGVyQ29ubmVjdFNjcmlwdCBmb3IgcG9zdC1jb25uZWN0aW9uIGluaXRpYWxpemF0aW9uIGFuZCBzZXR1cFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFNRTCBzY3JpcHQgY29kZSBpZiBwcm92aWRlZDsgc2NyaXB0IGNvbnRlbnQgbm90IGZpbGVuYW1lOyBtaWdyYXRpb24gY29udGludWVzIHJlZ2FyZGxlc3Mgb2YgZXhlY3V0aW9uIHJlc3VsdFxuICAgKiovXG4gIHJlYWRvbmx5IGFmdGVyQ29ubmVjdFNjcmlwdD86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBjbGVhbiBhbmQgcmVjcmVhdGUgdGFibGUgbWV0YWRhdGEgb24gcmVwbGljYXRpb24gaW5zdGFuY2Ugd2hlbiBtaXNtYXRjaGVzIG9jY3VyLiBIYW5kbGVzIHNpdHVhdGlvbnMgd2hlcmUgRERMIG9wZXJhdGlvbnMgY2F1c2UgY2FjaGVkIHRhYmxlIG1ldGFkYXRhIGRpZmZlcmVuY2VzIG9uIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSwgZW5zdXJpbmcgbWV0YWRhdGEgY29uc2lzdGVuY3kgZHVyaW5nIE15U1FMIGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgcmVwbGljYXRpb24gb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNZXRhZGF0YSBjb25zaXN0ZW5jeTsgRERMIGhhbmRsaW5nOyBDYWNoZSBtYW5hZ2VtZW50OyBSZXBsaWNhdGlvbiByZWxpYWJpbGl0eTsgVGFibGUgc3RydWN0dXJlIHN5bmNocm9uaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgTXlTUUwgZW5kcG9pbnQgY2xlYW5Tb3VyY2VNZXRhZGF0YU9uTWlzbWF0Y2ggZm9yIG1ldGFkYXRhIGNvbnNpc3RlbmN5IGFuZCBjYWNoZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgZW5hYmxlcyBhdXRvbWF0aWMgbWV0YWRhdGEgY2xlYW51cCBhbmQgcmVjcmVhdGlvbiBvbiBtaXNtYXRjaCBkZXRlY3Rpb25cbiAgICoqL1xuICByZWFkb25seSBjbGVhblNvdXJjZU1ldGFkYXRhT25NaXNtYXRjaD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHBvbGxpbmcgaW50ZXJ2YWwgaW4gc2Vjb25kcyBmb3IgY2hlY2tpbmcgTXlTUUwgYmluYXJ5IGxvZyBjaGFuZ2VzIHdoZW4gZGF0YWJhc2UgaXMgaWRsZS4gU3BlY2lmaWVzIGhvdyBmcmVxdWVudGx5IERNUyBjaGVja3MgYmluYXJ5IGxvZ3MgZm9yIG5ldyBjaGFuZ2VzIGR1cmluZyBpZGxlIHBlcmlvZHMsIHdpdGggZGVmYXVsdCBvZiA1IHNlY29uZHMsIGFmZmVjdGluZyBjaGFuZ2UgZGV0ZWN0aW9uIGxhdGVuY3kgYW5kIHN5c3RlbSByZXNvdXJjZSB1c2FnZSBkdXJpbmcgTXlTUUwgcmVwbGljYXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ2hhbmdlIGRldGVjdGlvbjsgUG9sbGluZyBmcmVxdWVuY3k7IFBlcmZvcm1hbmNlIHR1bmluZzsgSWRsZSBtb25pdG9yaW5nOyBCaW5hcnkgbG9nIHByb2Nlc3NpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE15U1FMIGVuZHBvaW50IGV2ZW50c1BvbGxJbnRlcnZhbCBmb3IgYmluYXJ5IGxvZyBjaGFuZ2UgZGV0ZWN0aW9uIGZyZXF1ZW5jeVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgaW4gc2Vjb25kcyBpZiBwcm92aWRlZDsgZGVmYXVsdCA1IHNlY29uZHM7IGFmZmVjdHMgY2hhbmdlIGRldGVjdGlvbiBsYXRlbmN5IGFuZCByZXNvdXJjZSB1c2FnZVxuICAgKiovXG4gIHJlYWRvbmx5IGV2ZW50c1BvbGxJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbWF4aW11bSBDU1YgZmlsZSBzaXplIGluIEtCIGZvciBNeVNRTCBkYXRhIHRyYW5zZmVyIG9wZXJhdGlvbnMuIFNwZWNpZmllcyB0aGUgbWF4aW11bSBzaXplIGxpbWl0IGZvciBDU1YgZmlsZXMgdXNlZCBpbiBkYXRhIHRyYW5zZmVyIHRvIE15U1FMLWNvbXBhdGlibGUgZGF0YWJhc2VzLCBjb250cm9sbGluZyBmaWxlIHNpemUgZm9yIGJ1bGsgZGF0YSBvcGVyYXRpb25zIGFuZCBhZmZlY3RpbmcgdHJhbnNmZXIgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSB1c2FnZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBGaWxlIHNpemUgY29udHJvbDsgQnVsayBkYXRhIHRyYW5zZmVyOyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IE1lbW9yeSBtYW5hZ2VtZW50OyBDU1YgcHJvY2Vzc2luZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgTXlTUUwgZW5kcG9pbnQgbWF4RmlsZVNpemUgZm9yIENTViBmaWxlIHNpemUgbGltaXRzIGluIGRhdGEgdHJhbnNmZXIgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgaW4gS0IgaWYgcHJvdmlkZWQ7IGNvbnRyb2xzIENTViBmaWxlIHNpemUgZm9yIE15U1FMIGRhdGEgdHJhbnNmZXIgb3BlcmF0aW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBudW1iZXIgb2YgcGFyYWxsZWwgdGhyZWFkcyBmb3IgbG9hZGluZyBkYXRhIGludG8gTXlTUUwtY29tcGF0aWJsZSB0YXJnZXQgZGF0YWJhc2VzIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIFNwZWNpZmllcyB0aHJlYWQgY291bnQgZm9yIHBhcmFsbGVsIGRhdGEgbG9hZGluZyB3aXRoIGVhY2ggdGhyZWFkIHJlcXVpcmluZyBzZXBhcmF0ZSBjb25uZWN0aW9uLCBhZmZlY3RpbmcgcGVyZm9ybWFuY2UgYW5kIGRhdGFiYXNlIGxvYWQgd2l0aCBkZWZhdWx0IG9mIDEgdGhyZWFkIGZvciBNeVNRTCB0YXJnZXQgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IFBhcmFsbGVsIGxvYWRpbmc7IFRocmVhZCBjb25maWd1cmF0aW9uOyBNeVNRTCB0YXJnZXQgb3B0aW1pemF0aW9uOyBMb2FkIGJhbGFuY2luZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgTXlTUUwgZW5kcG9pbnQgcGFyYWxsZWxMb2FkVGhyZWFkcyBmb3IgcGFyYWxsZWwgZGF0YSBsb2FkaW5nIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgMTsgaGlnaGVyIHZhbHVlcyBtYXkgaW1wYWN0IGRhdGFiYXNlIHBlcmZvcm1hbmNlIGR1ZSB0byBjb25uZWN0aW9uIG92ZXJoZWFkXG4gICAqKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxMb2FkVGhyZWFkcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgSUFNIHJvbGUgQVJOIGZvciBBV1MgU2VjcmV0cyBNYW5hZ2VyIGFjY2VzcyB0byBNeVNRTCBlbmRwb2ludCBjcmVkZW50aWFscy4gU3BlY2lmaWVzIHRoZSBJQU0gcm9sZSB3aXRoIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBTZWNyZXRzTWFuYWdlclNlY3JldCBjb250YWluaW5nIE15U1FMIGVuZHBvaW50IGNyZWRlbnRpYWxzLCBlbmFibGluZyBzZWN1cmUgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGFuZCBhY2Nlc3MgY29udHJvbCBmb3IgTXlTUUwgZGF0YWJhc2UgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3JlZGVudGlhbCBtYW5hZ2VtZW50OyBTZWNyZXRzIE1hbmFnZXIgaW50ZWdyYXRpb247IFNlY3VyZSBhY2Nlc3M7IElBTSByb2xlIGNvbmZpZ3VyYXRpb247IE15U1FMIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIElBTSByb2xlIEFSTiBmb3IgU2VjcmV0cyBNYW5hZ2VyIGFjY2VzcyB0byBNeVNRTCBlbmRwb2ludCBjcmVkZW50aWFscyBhbmQgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBJQU0gcm9sZSBBUk4gaWYgcHJvdmlkZWQ7IHJlcXVpcmVzIGlhbTpQYXNzUm9sZSBhY3Rpb24gYW5kIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgcGVybWlzc2lvbnNcbiAgICoqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgQVJOIGNvbnRhaW5pbmcgTXlTUUwgZW5kcG9pbnQgY29ubmVjdGlvbiBkZXRhaWxzIGZvciBzZWN1cmUgY3JlZGVudGlhbCBtYW5hZ2VtZW50LiBTcGVjaWZpZXMgdGhlIGZ1bGwgQVJOIG9mIHRoZSBzZWNyZXQgY29udGFpbmluZyBNeVNRTCBkYXRhYmFzZSBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGluY2x1ZGluZyBjcmVkZW50aWFscywgZW5hYmxpbmcgc2VjdXJlIHN0b3JhZ2UgYW5kIGFjY2VzcyBvZiBNeVNRTCBlbmRwb2ludCBhdXRoZW50aWNhdGlvbiBkZXRhaWxzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNlY3VyZSBjcmVkZW50aWFsIHN0b3JhZ2U7IE15U1FMIGF1dGhlbnRpY2F0aW9uOyBTZWNyZXRzIE1hbmFnZXIgaW50ZWdyYXRpb247IERhdGFiYXNlIGNvbm5lY3Rpb24gc2VjdXJpdHk7IENyZWRlbnRpYWwgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTiBjb250YWluaW5nIE15U1FMIGVuZHBvaW50IGNvbm5lY3Rpb24gZGV0YWlscyBhbmQgY3JlZGVudGlhbHNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTjsgcmVxdWlyZWQgZm9yIHNlY3VyZSBNeVNRTCBlbmRwb2ludCBjcmVkZW50aWFsIG1hbmFnZW1lbnQgYW5kIGF1dGhlbnRpY2F0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgS01TIGtleSBBUk4gZm9yIGVuY3J5cHRpbmcgTXlTUUwgZW5kcG9pbnQgY3JlZGVudGlhbHMgc2VjcmV0IGluIFNlY3JldHMgTWFuYWdlci4gU3BlY2lmaWVzIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgY3JlZGVudGlhbHMgc2VjcmV0LCBwcm92aWRpbmcgYWRkaXRpb25hbCBlbmNyeXB0aW9uIGxheWVyIGZvciBNeVNRTCBlbmRwb2ludCBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gQVdTIFNlY3JldHMgTWFuYWdlci5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDcmVkZW50aWFsIGVuY3J5cHRpb247IEtNUyBpbnRlZ3JhdGlvbjsgRW5oYW5jZWQgc2VjdXJpdHk7IFNlY3JldCBlbmNyeXB0aW9uOyBNeVNRTCBjcmVkZW50aWFsIHByb3RlY3Rpb25cbiAgICpcbiAgICogQVdTOiBBV1MgS01TIGtleSBBUk4gZm9yIGVuY3J5cHRpbmcgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIE15U1FMIGVuZHBvaW50IGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgS01TIGtleSBBUk4gaWYgcHJvdmlkZWQ7IHByb3ZpZGVzIGFkZGl0aW9uYWwgZW5jcnlwdGlvbiBmb3IgTXlTUUwgY3JlZGVudGlhbHMgaW4gU2VjcmV0cyBNYW5hZ2VyXG4gICAqKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHRpbWUgem9uZSBzcGVjaWZpY2F0aW9uIGZvciBNeVNRTCBzb3VyY2UgZGF0YWJhc2UgY29uZmlndXJhdGlvbi4gU3BlY2lmaWVzIHRoZSB0aW1lIHpvbmUgZm9yIHRoZSBzb3VyY2UgTXlTUUwgZGF0YWJhc2UgYWZmZWN0aW5nIHRpbWVzdGFtcCBoYW5kbGluZyBhbmQgZGF0YSBjb252ZXJzaW9uIGR1cmluZyBtaWdyYXRpb24sIGVuc3VyaW5nIHByb3BlciB0aW1lIHpvbmUgaGFuZGxpbmcgYW5kIGRhdGEgY29uc2lzdGVuY3kgYWNyb3NzIGRpZmZlcmVudCB0aW1lIHpvbmVzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFRpbWUgem9uZSBjb25maWd1cmF0aW9uOyBUaW1lc3RhbXAgaGFuZGxpbmc7IERhdGEgY29uc2lzdGVuY3k7IE15U1FMIGNvbmZpZ3VyYXRpb247IFRpbWUgem9uZSBjb252ZXJzaW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBNeVNRTCBlbmRwb2ludCBzZXJ2ZXJUaW1lem9uZSBmb3Igc291cmNlIGRhdGFiYXNlIHRpbWUgem9uZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgdGltZSB6b25lIHN0cmluZyBpZiBwcm92aWRlZDsgZG8gbm90IGVuY2xvc2UgaW4gc2luZ2xlIHF1b3RlczsgYWZmZWN0cyB0aW1lc3RhbXAgZGF0YSBoYW5kbGluZ1xuICAgKiovXG4gIHJlYWRvbmx5IHNlcnZlclRpbWV6b25lPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCB0YXJnZXQgZGF0YWJhc2UgdHlwZSBzcGVjaWZpY2F0aW9uIGZvciBNeVNRTCBtaWdyYXRpb24gZGVzdGluYXRpb24gY29uZmlndXJhdGlvbi4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gbWlncmF0ZSBzb3VyY2UgdGFibGVzIHRvIGEgc2luZ2xlIGRhdGFiYXNlIG9yIG11bHRpcGxlIGRhdGFiYXNlcyBvbiB0aGUgdGFyZ2V0LCB3aXRoIFNQRUNJRklDX0RBVEFCQVNFIHJlcXVpcmluZyBEYXRhYmFzZU5hbWUgcGFyYW1ldGVyIGFuZCBNVUxUSVBMRV9EQVRBQkFTRVMgcHJlc2VydmluZyBzb3VyY2UgZGF0YWJhc2Ugc3RydWN0dXJlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGFiYXNlIHN0cnVjdHVyZSBwcmVzZXJ2YXRpb247IE1pZ3JhdGlvbiBzdHJhdGVneTsgVGFyZ2V0IGNvbmZpZ3VyYXRpb247IERhdGFiYXNlIG9yZ2FuaXphdGlvbjsgU2NoZW1hIG1hcHBpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE15U1FMIGVuZHBvaW50IHRhcmdldERiVHlwZSBmb3IgdGFyZ2V0IGRhdGFiYXNlIHN0cnVjdHVyZSBhbmQgbWlncmF0aW9uIGRlc3RpbmF0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCB0YXJnZXQgdHlwZSBpZiBwcm92aWRlZDsgU1BFQ0lGSUNfREFUQUJBU0UgcmVxdWlyZXMgRGF0YWJhc2VOYW1lIHBhcmFtZXRlcjsgTVVMVElQTEVfREFUQUJBU0VTIHByZXNlcnZlcyBzdHJ1Y3R1cmVcbiAgICoqL1xuICByZWFkb25seSB0YXJnZXREYlR5cGU/OiBzdHJpbmc7XG59XG4vKipcbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZGVmaW5lcyBhbiBBbWF6b24gUzMgZW5kcG9pbnQuIE1vZGlmaWVkIGZyb20gdGhlIGVxdWl2YWxlbnQgTDEgQ29uc3RydWN0IHRvIHByZXZlbnQgdXNlIG9mIHBsYWludGV4dCBjcmVkZW50aWFscyBhbmQgZW5mb3JjZSB1c2Ugb2YgS01TIGVuY3J5cHRpb24uXG4gKiBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBvdXRwdXQgZm9ybWF0IG9mIHJlY29yZHMgYXBwbGllZCB0byB0aGUgZW5kcG9pbnQgYW5kIGRldGFpbHMgb2YgdHJhbnNhY3Rpb24gYW5kIGNvbnRyb2wgdGFibGUgZGF0YSBpbmZvcm1hdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF2YWlsYWJsZSBzZXR0aW5ncywgc2VlIFtFeHRyYSBjb25uZWN0aW9uIGF0dHJpYnV0ZXMgd2hlbiB1c2luZyBBbWF6b24gUzMgYXMgYSBzb3VyY2UgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1NvdXJjZS5TMy5odG1sI0NIQVBfU291cmNlLlMzLkNvbmZpZ3VyaW5nKSBhbmQgW0V4dHJhIGNvbm5lY3Rpb24gYXR0cmlidXRlcyB3aGVuIHVzaW5nIEFtYXpvbiBTMyBhcyBhIHRhcmdldCBmb3IgQVdTIERNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Rtcy9sYXRlc3QvdXNlcmd1aWRlL0NIQVBfVGFyZ2V0LlMzLmh0bWwjQ0hBUF9UYXJnZXQuUzMuQ29uZmlndXJpbmcpIGluIHRoZSAqQVdTIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIFVzZXIgR3VpZGUqIC5cbiAqIEBzdHJ1Y3RcbiAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtczNzZXR0aW5ncy5odG1sXG4gKi9cbi8qKlxuICogUS1FTkhBTkNFRC1JTlRFUkZBQ0VcbiAqIFMzIHNldHRpbmdzIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBETVMgcHJvdmlkaW5nIGRhdGEgbGFrZSBpbnRlZ3JhdGlvbiBhbmQgZmlsZS1iYXNlZCBtaWdyYXRpb24gY2FwYWJpbGl0aWVzLiBEZWZpbmVzIFMzLXNwZWNpZmljIHByb3BlcnRpZXMgZm9yIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIGluY2x1ZGluZyBkYXRhIGZvcm1hdCBjb25maWd1cmF0aW9uLCBjb21wcmVzc2lvbiBzZXR0aW5ncywgYW5kIFMzIGludGVncmF0aW9uIGZvciBkYXRhYmFzZS10by1kYXRhIGxha2UgbWlncmF0aW9uIHdvcmtmbG93cy5cbiAqXG4gKiBVc2UgY2FzZXM6IERhdGFiYXNlIHRvIGRhdGEgbGFrZSBtaWdyYXRpb247IFMzIGRhdGEgaW50ZWdyYXRpb247IERhdGEgZm9ybWF0IGNvbmZpZ3VyYXRpb247IEZpbGUtYmFzZWQgbWlncmF0aW9uOyBEYXRhIGxha2Ugd29ya2Zsb3dzOyBETVMgUzMgaW50ZWdyYXRpb25cbiAqXG4gKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgY29uZmlndXJhdGlvbiB3aXRoIGRhdGEgbGFrZSBpbnRlZ3JhdGlvbiBhbmQgZmlsZSBmb3JtYXQgbWFuYWdlbWVudFxuICpcbiAqIFZhbGlkYXRpb246IENvbmZpZ3VyYXRpb24gbXVzdCBiZSB2YWxpZCBmb3IgRE1TIG1pZ3JhdGlvbjsgcHJvcGVydGllcyBtdXN0IGNvbmZvcm0gdG8gQVdTIERNUyBhbmQgZGF0YWJhc2Utc3BlY2lmaWMgcmVxdWlyZW1lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNTZXR0aW5nc1Byb3BlcnR5IHtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBhZGQgY29sdW1uIG5hbWUgaW5mb3JtYXRpb24gdG8gQ1NWIG91dHB1dCBmaWxlcyBmb3IgUzMgZGF0YSBsYWtlIGludGVncmF0aW9uLiBFbmFibGVzIGNvbHVtbiBoZWFkZXJzIGluIENTViBmaWxlcyB3aGVuIG1pZ3JhdGluZyBkYXRhIHRvIFMzLCBpbXByb3ZpbmcgZGF0YSB1c2FiaWxpdHkgYW5kIHNlbGYtZG9jdW1lbnRhdGlvbiBmb3IgZGF0YSBsYWtlIGNvbnN1bWVycyB3aXRoIGRlZmF1bHQgZmFsc2UgdmFsdWUgYW5kIHN1cHBvcnQgZm9yIGJvb2xlYW4gb3IgeS9uIHZhbHVlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDU1YgaGVhZGVyczsgRGF0YSBkb2N1bWVudGF0aW9uOyBEYXRhIGxha2UgdXNhYmlsaXR5OyBTZWxmLWRlc2NyaWJpbmcgZGF0YTsgQ1NWIGZvcm1hdCBlbmhhbmNlbWVudFxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgYWRkQ29sdW1uTmFtZSBmb3IgQ1NWIGNvbHVtbiBoZWFkZXIgaW5jbHVzaW9uIGluIGRhdGEgbGFrZSBmaWxlc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4sICd5Jywgb3IgJ24nIGlmIHByb3ZpZGVkOyBkZWZhdWx0IGZhbHNlOyBpbXByb3ZlcyBDU1YgZGF0YSB1c2FiaWxpdHkgaW4gUzMgZGF0YSBsYWtlXG4gICAqKi9cbiAgcmVhZG9ubHkgYWRkQ29sdW1uTmFtZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIFMzIGJ1Y2tldCBmb2xkZXIgbmFtZSBmb3Igb3JnYW5pemluZyBtaWdyYXRlZCBkYXRhIHdpdGggaGllcmFyY2hpY2FsIHN0cnVjdHVyZS4gU3BlY2lmaWVzIGEgZm9sZGVyIHByZWZpeCBmb3IgdGFibGUgb3JnYW5pemF0aW9uIGluIFMzIGJ1Y2tldCwgY3JlYXRpbmcgcGF0aCBzdHJ1Y3R1cmUgYXMgYnVja2V0Rm9sZGVyL3NjaGVtYV9uYW1lL3RhYmxlX25hbWUvIGluc3RlYWQgb2YgZGVmYXVsdCBzY2hlbWFfbmFtZS90YWJsZV9uYW1lLyBmb3IgYmV0dGVyIGRhdGEgb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgb3JnYW5pemF0aW9uOyBGb2xkZXIgc3RydWN0dXJlOyBTMyBoaWVyYXJjaHk7IERhdGEgbGFrZSBvcmdhbml6YXRpb247IFBhdGggbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgYnVja2V0Rm9sZGVyIGZvciBoaWVyYXJjaGljYWwgZGF0YSBvcmdhbml6YXRpb24gaW4gUzMgYnVja2V0IHN0cnVjdHVyZVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFMzIGZvbGRlciBuYW1lIGlmIHByb3ZpZGVkOyBjcmVhdGVzIGJ1Y2tldEZvbGRlci9zY2hlbWFfbmFtZS90YWJsZV9uYW1lLyBwYXRoIHN0cnVjdHVyZVxuICAgKiovXG4gIHJlYWRvbmx5IGJ1Y2tldEZvbGRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgUzMgYnVja2V0IG5hbWUgZm9yIERNUyBkYXRhIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbiBpbiBkYXRhIGxha2UgYXJjaGl0ZWN0dXJlLiBTcGVjaWZpZXMgdGhlIHRhcmdldCBTMyBidWNrZXQgd2hlcmUgbWlncmF0ZWQgZGF0YWJhc2UgZGF0YSB3aWxsIGJlIHN0b3JlZCwgc2VydmluZyBhcyB0aGUgcHJpbWFyeSBkZXN0aW5hdGlvbiBmb3IgZGF0YWJhc2UtdG8tZGF0YSBsYWtlIG1pZ3JhdGlvbiB3b3JrZmxvd3MgYW5kIGRhdGEgc3RvcmFnZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhIGxha2UgZGVzdGluYXRpb247IFMzIHN0b3JhZ2U7IE1pZ3JhdGlvbiB0YXJnZXQ7IERhdGEgcmVwb3NpdG9yeTsgRGF0YWJhc2UgbWlncmF0aW9uIGVuZHBvaW50XG4gICAqXG4gICAqIEFXUzogQVdTIFMzIGJ1Y2tldCBuYW1lIGZvciBETVMgZGF0YSBtaWdyYXRpb24gZGVzdGluYXRpb24gYW5kIGRhdGEgbGFrZSBzdG9yYWdlXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUzMgYnVja2V0IG5hbWU7IHJlcXVpcmVkIGZvciBTMyBlbmRwb2ludCBjb25maWd1cmF0aW9uIGFuZCBkYXRhIG1pZ3JhdGlvbiBkZXN0aW5hdGlvblxuICAgKiovXG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgcHJlZGVmaW5lZCBhY2Nlc3MgY29udHJvbCBsaXN0IChBQ0wpIGZvciBTMyBvYmplY3RzIGNyZWF0ZWQgZHVyaW5nIGRhdGEgbWlncmF0aW9uLiBTcGVjaWZpZXMgY2FubmVkIEFDTCBmb3IgQ1NWIGFuZCBQYXJxdWV0IGZpbGVzIGNyZWF0ZWQgaW4gUzMgYnVja2V0LCBjb250cm9sbGluZyBvYmplY3QtbGV2ZWwgcGVybWlzc2lvbnMgd2l0aCBvcHRpb25zIGluY2x1ZGluZyBOT05FLCBQUklWQVRFLCBQVUJMSUNfUkVBRCwgYW5kIEJVQ0tFVF9PV05FUl9GVUxMX0NPTlRST0wgZm9yIHNlY3VyaXR5IG1hbmFnZW1lbnQuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQWNjZXNzIGNvbnRyb2w7IFMzIHBlcm1pc3Npb25zOyBPYmplY3Qgc2VjdXJpdHk7IERhdGEgbGFrZSBzZWN1cml0eTsgRmlsZSBwZXJtaXNzaW9uc1xuICAgKlxuICAgKiBBV1M6IEFXUyBTMyBjYW5uZWQgQUNMIGZvciBvYmplY3RzIGNyZWF0ZWQgYnkgRE1TIGR1cmluZyBkYXRhIG1pZ3JhdGlvbiB0byBTMyBidWNrZXRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBTMyBjYW5uZWQgQUNMIGlmIHByb3ZpZGVkOyBkZWZhdWx0IE5PTkU7IGNvbnRyb2xzIG9iamVjdC1sZXZlbCBwZXJtaXNzaW9ucyBpbiBTMyBidWNrZXRcbiAgICoqL1xuICByZWFkb25seSBjYW5uZWRBY2xGb3JPYmplY3RzPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGVuYWJsZSBDREMgSU5TRVJUIGFuZCBVUERBVEUgb3BlcmF0aW9ucyBjYXB0dXJlIHRvIFMzIGZpbGVzIGZvciBjaGFuZ2UgdHJhY2tpbmcuIEVuYWJsZXMgd3JpdGluZyBJTlNFUlQgYW5kIFVQREFURSBvcGVyYXRpb25zIHRvIENTViBvciBQYXJxdWV0IGZpbGVzIGR1cmluZyBjaGFuZ2UgZGF0YSBjYXB0dXJlLCB3aXRoIG9wZXJhdGlvbiBpbmRpY2F0aW9uIGNvbnRyb2xsZWQgYnkgSW5jbHVkZU9wRm9yRnVsbExvYWQgcGFyYW1ldGVyLCBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBDZGNJbnNlcnRzT25seS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDaGFuZ2UgZGF0YSBjYXB0dXJlOyBJTlNFUlQvVVBEQVRFIHRyYWNraW5nOyBEYXRhIGxha2UgQ0RDOyBPcGVyYXRpb24gbG9nZ2luZzsgY2hhbmdlIHRyYWNraW5nXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBjZGNJbnNlcnRzQW5kVXBkYXRlcyBmb3IgQ0RDIElOU0VSVCBhbmQgVVBEQVRFIG9wZXJhdGlvbnMgY2FwdHVyZVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gb3IgJ3knIGlmIHByb3ZpZGVkOyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBDZGNJbnNlcnRzT25seTsgcmVxdWlyZXMgRE1TIHZlcnNpb24gMy4zLjErXG4gICAqKi9cbiAgcmVhZG9ubHkgY2RjSW5zZXJ0c0FuZFVwZGF0ZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGVuYWJsZSBDREMgSU5TRVJULW9ubHkgb3BlcmF0aW9ucyBjYXB0dXJlIHRvIFMzIGZpbGVzIGZvciBpbnNlcnQtZm9jdXNlZCBjaGFuZ2UgdHJhY2tpbmcuIEVuYWJsZXMgd3JpdGluZyBvbmx5IElOU0VSVCBvcGVyYXRpb25zIHRvIENTViBvciBQYXJxdWV0IGZpbGVzIGR1cmluZyBjaGFuZ2UgZGF0YSBjYXB0dXJlLCB3aXRoIG9wZXJhdGlvbiBpbmRpY2F0aW9uIGNvbnRyb2xsZWQgYnkgSW5jbHVkZU9wRm9yRnVsbExvYWQgcGFyYW1ldGVyLCBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBDZGNJbnNlcnRzQW5kVXBkYXRlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBJbnNlcnQtb25seSBDREM7IEFwcGVuZC1vbmx5IGRhdGEgbGFrZXM7IElOU0VSVCB0cmFja2luZzsgU2ltcGxpZmllZCBjaGFuZ2UgY2FwdHVyZTsgSW5zZXJ0LWZvY3VzZWQgcmVwbGljYXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IGNkY0luc2VydHNPbmx5IGZvciBDREMgSU5TRVJULW9ubHkgb3BlcmF0aW9ucyBjYXB0dXJlXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBvciAneScgaWYgcHJvdmlkZWQ7IG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIENkY0luc2VydHNBbmRVcGRhdGVzOyByZXF1aXJlcyBETVMgdmVyc2lvbiAzLjEuNCtcbiAgICoqL1xuICByZWFkb25seSBjZGNJbnNlcnRzT25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG1heGltdW0gYmF0Y2ggaW50ZXJ2YWwgaW4gc2Vjb25kcyBmb3IgQ0RDIGZpbGUgb3V0cHV0IHRvIFMzIGZvciB0aW1lLWJhc2VkIGZpbGUgY3JlYXRpb24uIFNwZWNpZmllcyB0aGUgbWF4aW11bSB0aW1lIGludGVydmFsIGJlZm9yZSB0cmlnZ2VyaW5nIGZpbGUgb3V0cHV0IHRvIFMzLCB3b3JraW5nIHdpdGggQ2RjTWluRmlsZVNpemUgd2hlcmUgZmlyc3QgY29uZGl0aW9uIG1ldCB0cmlnZ2VycyB3cml0ZSwgd2l0aCBkZWZhdWx0IDYwIHNlY29uZHMgZm9yIENEQyBmaWxlIG1hbmFnZW1lbnQuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRmlsZSB0aW1pbmcgY29udHJvbDsgQ0RDIGJhdGNoaW5nOyBUaW1lLWJhc2VkIHRyaWdnZXJzOyBGaWxlIG91dHB1dCBzY2hlZHVsaW5nOyBCYXRjaCBpbnRlcnZhbCBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBjZGNNYXhCYXRjaEludGVydmFsIGZvciB0aW1lLWJhc2VkIENEQyBmaWxlIG91dHB1dCB0cmlnZ2VyaW5nXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcG9zaXRpdmUgaW50ZWdlciBpbiBzZWNvbmRzIGlmIHByb3ZpZGVkOyBkZWZhdWx0IDYwOyB3b3JrcyB3aXRoIENkY01pbkZpbGVTaXplIGZvciBmaWxlIG91dHB1dCB0cmlnZ2VyaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgY2RjTWF4QmF0Y2hJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbWluaW11bSBmaWxlIHNpemUgaW4ga2lsb2J5dGVzIGZvciBDREMgZmlsZSBvdXRwdXQgdG8gUzMgZm9yIHNpemUtYmFzZWQgZmlsZSBjcmVhdGlvbi4gU3BlY2lmaWVzIHRoZSBtaW5pbXVtIGZpbGUgc2l6ZSBiZWZvcmUgdHJpZ2dlcmluZyBmaWxlIG91dHB1dCB0byBTMywgd29ya2luZyB3aXRoIENkY01heEJhdGNoSW50ZXJ2YWwgd2hlcmUgZmlyc3QgY29uZGl0aW9uIG1ldCB0cmlnZ2VycyB3cml0ZSwgd2l0aCBkZWZhdWx0IDMyIE1CIGZvciBDREMgZmlsZSBtYW5hZ2VtZW50LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEZpbGUgc2l6ZSBjb250cm9sOyBDREMgYmF0Y2hpbmc7IFNpemUtYmFzZWQgdHJpZ2dlcnM7IEZpbGUgb3V0cHV0IG9wdGltaXphdGlvbjsgQmF0Y2ggc2l6ZSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBjZGNNaW5GaWxlU2l6ZSBmb3Igc2l6ZS1iYXNlZCBDREMgZmlsZSBvdXRwdXQgdHJpZ2dlcmluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgaW4gS0IgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgMzIgTUI7IHdvcmtzIHdpdGggQ2RjTWF4QmF0Y2hJbnRlcnZhbCBmb3IgZmlsZSBvdXRwdXQgdHJpZ2dlcmluZ1xuICAgKiovXG4gIHJlYWRvbmx5IGNkY01pbkZpbGVTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBDREMgZm9sZGVyIHBhdGggc3BlY2lmaWNhdGlvbiBmb3IgY2hhbmdlIGRhdGEgY2FwdHVyZSBmaWxlIG9yZ2FuaXphdGlvbiBpbiBTMy4gU3BlY2lmaWVzIHRoZSBmb2xkZXIgcGF0aCBmb3IgQ0RDIGZpbGVzIGluIFMzIGJ1Y2tldCwgcmVxdWlyZWQgZm9yIFMzIHNvdXJjZXMgd2l0aCBDREMgYW5kIG9wdGlvbmFsIGZvciB0YXJnZXRzLCBlbmFibGluZyB0cmFuc2FjdGlvbiBvcmRlciBwcmVzZXJ2YXRpb24gYW5kIG9yZ2FuaXplZCBDREMgZmlsZSBzdG9yYWdlIGluIGRhdGEgbGFrZSBhcmNoaXRlY3R1cmUuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ0RDIG9yZ2FuaXphdGlvbjsgVHJhbnNhY3Rpb24gb3JkZXI7IEZpbGUgcGF0aCBtYW5hZ2VtZW50OyBTMyBDREMgc3RydWN0dXJlOyBDaGFuZ2UgZGF0YSBvcmdhbml6YXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IGNkY1BhdGggZm9yIENEQyBmaWxlIG9yZ2FuaXphdGlvbiBhbmQgdHJhbnNhY3Rpb24gb3JkZXIgcHJlc2VydmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUzMgZm9sZGVyIHBhdGggaWYgcHJvdmlkZWQ7IHJlcXVpcmVkIGZvciBTMyBzb3VyY2VzIHdpdGggQ0RDOyBzdXBwb3J0cyBETVMgdmVyc2lvbiAzLjQuMitcbiAgICoqL1xuICByZWFkb25seSBjZGNQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBjb21wcmVzc2lvbiB0eXBlIGZvciBTMyB0YXJnZXQgZmlsZXMgdG8gb3B0aW1pemUgc3RvcmFnZSBhbmQgdHJhbnNmZXIgcGVyZm9ybWFuY2UuIFNwZWNpZmllcyBjb21wcmVzc2lvbiBtZXRob2QgZm9yIENTViBhbmQgUGFycXVldCBmaWxlcyB3aXRoIEdaSVAgZW5hYmxpbmcgY29tcHJlc3Npb24gYW5kIE5PTkUgKGRlZmF1bHQpIGZvciB1bmNvbXByZXNzZWQgZmlsZXMsIGFmZmVjdGluZyBzdG9yYWdlIGNvc3RzIGFuZCBkYXRhIHRyYW5zZmVyIHBlcmZvcm1hbmNlIGluIGRhdGEgbGFrZSBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFN0b3JhZ2Ugb3B0aW1pemF0aW9uOyBDb21wcmVzc2lvbjsgUGVyZm9ybWFuY2UgdHVuaW5nOyBDb3N0IG9wdGltaXphdGlvbjsgRmlsZSBzaXplIHJlZHVjdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgY29tcHJlc3Npb25UeXBlIGZvciB0YXJnZXQgZmlsZSBjb21wcmVzc2lvbiBhbmQgc3RvcmFnZSBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBHWklQIG9yIE5PTkUgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgTk9ORTsgYXBwbGllcyB0byBib3RoIENTViBhbmQgUGFycXVldCBmaWxlIGZvcm1hdHNcbiAgICoqL1xuICByZWFkb25seSBjb21wcmVzc2lvblR5cGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGNvbHVtbiBkZWxpbWl0ZXIgZm9yIENTViBmaWxlIGZvcm1hdCBpbiBTMyBkYXRhIGxha2UgaW50ZWdyYXRpb24uIFNwZWNpZmllcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgY29sdW1ucyBpbiBDU1YgZmlsZXMgZm9yIGJvdGggc291cmNlIGFuZCB0YXJnZXQgb3BlcmF0aW9ucywgd2l0aCBkZWZhdWx0IGNvbW1hIGRlbGltaXRlciwgYWZmZWN0aW5nIENTViBmaWxlIHN0cnVjdHVyZSBhbmQgZGF0YSBwYXJzaW5nIGluIGRhdGEgbGFrZSB3b3JrZmxvd3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ1NWIGZvcm1hdHRpbmc7IENvbHVtbiBzZXBhcmF0aW9uOyBEYXRhIHBhcnNpbmc7IEZpbGUgc3RydWN0dXJlOyBDU1YgY3VzdG9taXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgY3N2RGVsaW1pdGVyIGZvciBDU1YgY29sdW1uIHNlcGFyYXRpb24gYW5kIGZpbGUgZm9ybWF0dGluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGRlbGltaXRlciBjaGFyYWN0ZXIgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgY29tbWE7IGFmZmVjdHMgQ1NWIGZpbGUgc3RydWN0dXJlIGFuZCBwYXJzaW5nXG4gICAqKi9cbiAgcmVhZG9ubHkgY3N2RGVsaW1pdGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBzdHJpbmcgdmFsdWUgZm9yIGNvbHVtbnMgbm90IGluY2x1ZGVkIGluIHN1cHBsZW1lbnRhbCBsb2cgZHVyaW5nIENEQyBDU1Ygb3BlcmF0aW9ucy4gU3BlY2lmaWVzIHRoZSB2YWx1ZSB0byB1c2UgZm9yIGNvbHVtbnMgbm90IGluIHN1cHBsZW1lbnRhbCBsb2cgd2hlbiBVc2VDc3ZOb1N1cFZhbHVlIGlzIHRydWUsIHdpdGggbnVsbCB2YWx1ZSB1c2VkIGlmIG5vdCBzcGVjaWZpZWQsIGFmZmVjdGluZyBDREMgZGF0YSBjb21wbGV0ZW5lc3MgaW4gQ1NWIGZvcm1hdC5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTdXBwbGVtZW50YWwgbG9nIGhhbmRsaW5nOyBDREMgZGF0YSBjb21wbGV0ZW5lc3M7IE1pc3NpbmcgY29sdW1uIHZhbHVlczsgQ1NWIENEQyBvcGVyYXRpb25zOyBEYXRhIGNvbnNpc3RlbmN5XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBjc3ZOb1N1cFZhbHVlIGZvciBzdXBwbGVtZW50YWwgbG9nIGNvbHVtbiBoYW5kbGluZyBpbiBDREMgQ1NWIG9wZXJhdGlvbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBzdHJpbmcgdmFsdWUgaWYgcHJvdmlkZWQ7IHVzZWQgd2hlbiBVc2VDc3ZOb1N1cFZhbHVlIGlzIHRydWU7IHN1cHBvcnRzIERNUyB2ZXJzaW9uIDMuNC4xK1xuICAgKiovXG4gIHJlYWRvbmx5IGNzdk5vU3VwVmFsdWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG51bGwgdmFsdWUgcmVwcmVzZW50YXRpb24gZm9yIENTViBmaWxlcyBpbiBTMyBkYXRhIGxha2Ugb3BlcmF0aW9ucy4gU3BlY2lmaWVzIGhvdyBETVMgdHJlYXRzIG51bGwgdmFsdWVzIHdoZW4gd3JpdGluZyB0byB0YXJnZXQsIGFsbG93aW5nIHVzZXItZGVmaW5lZCBzdHJpbmcgYXMgbnVsbCByZXByZXNlbnRhdGlvbiB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZW1wdHkgc3RyaW5ncyBhbmQgbnVsbCB2YWx1ZXMsIHdpdGggZGVmYXVsdCBOVUxMIHZhbHVlIGZvciBDU1YgbnVsbCBoYW5kbGluZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBOdWxsIHZhbHVlIGhhbmRsaW5nOyBDU1YgZm9ybWF0dGluZzsgRGF0YSByZXByZXNlbnRhdGlvbjsgRW1wdHkgc3RyaW5nIGRpZmZlcmVudGlhdGlvbjsgVGFyZ2V0IGNvbXBhdGliaWxpdHlcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IGNzdk51bGxWYWx1ZSBmb3IgbnVsbCB2YWx1ZSByZXByZXNlbnRhdGlvbiBpbiBDU1YgZmlsZXNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBzdHJpbmcgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgTlVMTDsgZGlmZmVyZW50aWF0ZXMgZW1wdHkgc3RyaW5ncyBmcm9tIG51bGwgdmFsdWVzIGluIENTViBmb3JtYXRcbiAgICoqL1xuICByZWFkb25seSBjc3ZOdWxsVmFsdWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHJvdyBkZWxpbWl0ZXIgZm9yIENTViBmaWxlcyBpbiBTMyBkYXRhIGxha2UgaW50ZWdyYXRpb24uIFNwZWNpZmllcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgcm93cyBpbiBDU1YgZmlsZXMgZm9yIGJvdGggc291cmNlIGFuZCB0YXJnZXQgb3BlcmF0aW9ucywgd2l0aCBkZWZhdWx0IGNhcnJpYWdlIHJldHVybiAoXFxuKSwgYWZmZWN0aW5nIENTViBmaWxlIHN0cnVjdHVyZSBhbmQgZGF0YSBwYXJzaW5nIGluIGRhdGEgbGFrZSB3b3JrZmxvd3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ1NWIGZvcm1hdHRpbmc7IFJvdyBzZXBhcmF0aW9uOyBEYXRhIHBhcnNpbmc7IEZpbGUgc3RydWN0dXJlOyBDU1YgY3VzdG9taXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgY3N2Um93RGVsaW1pdGVyIGZvciBDU1Ygcm93IHNlcGFyYXRpb24gYW5kIGZpbGUgZm9ybWF0dGluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGRlbGltaXRlciBjaGFyYWN0ZXIgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgY2FycmlhZ2UgcmV0dXJuIChcXG4pOyBhZmZlY3RzIENTViBmaWxlIHN0cnVjdHVyZSBhbmQgcGFyc2luZ1xuICAgKiovXG4gIHJlYWRvbmx5IGNzdlJvd0RlbGltaXRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZGF0YSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBmb3IgUzMgb3V0cHV0IGZpbGVzIGluIGRhdGEgbGFrZSBhcmNoaXRlY3R1cmUuIFNwZWNpZmllcyB0aGUgb3V0cHV0IGZpbGUgZm9ybWF0IHdpdGggQ1NWIGZvciByb3ctYmFzZWQgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyBhbmQgUGFycXVldCBmb3IgY29sdW1uYXIgc3RvcmFnZSB3aXRoIGVmZmljaWVudCBjb21wcmVzc2lvbiBhbmQgZmFzdGVyIHF1ZXJ5IHJlc3BvbnNlLCBhZmZlY3RpbmcgZGF0YSBsYWtlIHBlcmZvcm1hbmNlIGFuZCBzdG9yYWdlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgZm9ybWF0IHNlbGVjdGlvbjsgU3RvcmFnZSBvcHRpbWl6YXRpb247IFF1ZXJ5IHBlcmZvcm1hbmNlOyBDb21wcmVzc2lvbiBlZmZpY2llbmN5OyBEYXRhIGxha2UgYXJjaGl0ZWN0dXJlXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBkYXRhRm9ybWF0IGZvciBvdXRwdXQgZmlsZSBmb3JtYXQgc2VsZWN0aW9uIGFuZCBkYXRhIGxha2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgJ2Nzdicgb3IgJ3BhcnF1ZXQnIGlmIHByb3ZpZGVkOyBhZmZlY3RzIHN0b3JhZ2UgZWZmaWNpZW5jeSBhbmQgcXVlcnkgcGVyZm9ybWFuY2UgaW4gZGF0YSBsYWtlXG4gICAqKi9cbiAgcmVhZG9ubHkgZGF0YUZvcm1hdD86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZGF0YSBwYWdlIHNpemUgaW4gYnl0ZXMgZm9yIFBhcnF1ZXQgZmlsZSBmb3JtYXQgb3B0aW1pemF0aW9uLiBTcGVjaWZpZXMgdGhlIHNpemUgb2Ygb25lIGRhdGEgcGFnZSBmb3IgUGFycXVldCBmaWxlcyB3aXRoIGRlZmF1bHQgMSBNaUIgKDEwMjQgKiAxMDI0IGJ5dGVzKSwgYWZmZWN0aW5nIFBhcnF1ZXQgZmlsZSBzdHJ1Y3R1cmUsIGNvbXByZXNzaW9uIGVmZmljaWVuY3ksIGFuZCBxdWVyeSBwZXJmb3JtYW5jZSBpbiBjb2x1bW5hciBkYXRhIGxha2Ugc3RvcmFnZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQYXJxdWV0IG9wdGltaXphdGlvbjsgUGFnZSBzaXplIHR1bmluZzsgQ29tcHJlc3Npb24gZWZmaWNpZW5jeTsgUXVlcnkgcGVyZm9ybWFuY2U7IENvbHVtbmFyIHN0b3JhZ2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBkYXRhUGFnZVNpemUgZm9yIFBhcnF1ZXQgZmlsZSBwYWdlIHNpemUgb3B0aW1pemF0aW9uIGFuZCBwZXJmb3JtYW5jZSB0dW5pbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIGJ5dGVzIGlmIHByb3ZpZGVkOyBkZWZhdWx0IDEgTWlCOyBhcHBsaWVzIG9ubHkgdG8gUGFycXVldCBmaWxlIGZvcm1hdFxuICAgKiovXG4gIHJlYWRvbmx5IGRhdGFQYWdlU2l6ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZGF0ZSBwYXJ0aXRpb24gZGVsaW1pdGVyIGZvciBTMyBmb2xkZXIgcGFydGl0aW9uaW5nIG9yZ2FuaXphdGlvbi4gU3BlY2lmaWVzIHRoZSBkZWxpbWl0ZXIgY2hhcmFjdGVyIHVzZWQgaW4gZGF0ZS1iYXNlZCBmb2xkZXIgcGFydGl0aW9uaW5nIHdpdGggZGVmYXVsdCBTTEFTSCwgdXNlZCB3aGVuIERhdGVQYXJ0aXRpb25lZEVuYWJsZWQgaXMgdHJ1ZSBmb3Igb3JnYW5pemluZyBkYXRhIGxha2UgZmlsZXMgYnkgdHJhbnNhY3Rpb24gY29tbWl0IGRhdGVzIGluIGhpZXJhcmNoaWNhbCBmb2xkZXIgc3RydWN0dXJlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGUgcGFydGl0aW9uaW5nOyBGb2xkZXIgb3JnYW5pemF0aW9uOyBEYXRhIGxha2Ugc3RydWN0dXJlOyBUaW1lLWJhc2VkIG9yZ2FuaXphdGlvbjsgUGFydGl0aW9uIGRlbGltaXRlclxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgZGF0ZVBhcnRpdGlvbkRlbGltaXRlciBmb3IgZGF0ZS1iYXNlZCBmb2xkZXIgcGFydGl0aW9uaW5nIG9yZ2FuaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGRlbGltaXRlciBpZiBwcm92aWRlZDsgZGVmYXVsdCBTTEFTSDsgdXNlZCB3aGVuIERhdGVQYXJ0aXRpb25lZEVuYWJsZWQgaXMgdHJ1ZVxuICAgKiovXG4gIHJlYWRvbmx5IGRhdGVQYXJ0aXRpb25EZWxpbWl0ZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gZW5hYmxlIGRhdGUtYmFzZWQgZm9sZGVyIHBhcnRpdGlvbmluZyBmb3IgUzMgYnVja2V0IG9yZ2FuaXphdGlvbi4gRW5hYmxlcyBwYXJ0aXRpb25pbmcgUzMgYnVja2V0IGZvbGRlcnMgYmFzZWQgb24gdHJhbnNhY3Rpb24gY29tbWl0IGRhdGVzIHdpdGggZGVmYXVsdCBmYWxzZSwgcHJvdmlkaW5nIHRpbWUtYmFzZWQgZGF0YSBvcmdhbml6YXRpb24gZm9yIGltcHJvdmVkIGRhdGEgbGFrZSBxdWVyeSBwZXJmb3JtYW5jZSBhbmQgZGF0YSBtYW5hZ2VtZW50LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGUtYmFzZWQgcGFydGl0aW9uaW5nOyBEYXRhIG9yZ2FuaXphdGlvbjsgUXVlcnkgb3B0aW1pemF0aW9uOyBUaW1lLWJhc2VkIHN0cnVjdHVyZTsgRGF0YSBsYWtlIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IGRhdGVQYXJ0aXRpb25FbmFibGVkIGZvciBkYXRlLWJhc2VkIGZvbGRlciBwYXJ0aXRpb25pbmcgYW5kIGRhdGEgb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgZGVmYXVsdCBmYWxzZTsgZW5hYmxlcyBkYXRlLWJhc2VkIGZvbGRlciBwYXJ0aXRpb25pbmcgZm9yIGRhdGEgbGFrZSBvcmdhbml6YXRpb25cbiAgICoqL1xuICByZWFkb25seSBkYXRlUGFydGl0aW9uRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGRhdGUgZm9ybWF0IHNlcXVlbmNlIGZvciBmb2xkZXIgcGFydGl0aW9uaW5nIG9yZ2FuaXphdGlvbiBpbiBTMyBkYXRhIGxha2UuIFNwZWNpZmllcyB0aGUgZGF0ZSBmb3JtYXQgc2VxdWVuY2UgZm9yIGZvbGRlciBwYXJ0aXRpb25pbmcgd2l0aCBkZWZhdWx0IFlZWVlNTURELCB1c2VkIHdoZW4gRGF0ZVBhcnRpdGlvbmVkRW5hYmxlZCBpcyB0cnVlIGZvciBjb25zaXN0ZW50IGRhdGUtYmFzZWQgZm9sZGVyIG5hbWluZyBhbmQgb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGUgZm9ybWF0IHNwZWNpZmljYXRpb247IEZvbGRlciBuYW1pbmc7IFBhcnRpdGlvbiBzZXF1ZW5jZTsgRGF0ZSBvcmdhbml6YXRpb247IENvbnNpc3RlbnQgbmFtaW5nXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBkYXRlUGFydGl0aW9uU2VxdWVuY2UgZm9yIGRhdGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaW4gZm9sZGVyIHBhcnRpdGlvbmluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGRhdGUgZm9ybWF0IGlmIHByb3ZpZGVkOyBkZWZhdWx0IFlZWVlNTUREOyB1c2VkIHdoZW4gRGF0ZVBhcnRpdGlvbmVkRW5hYmxlZCBpcyB0cnVlXG4gICAqKi9cbiAgcmVhZG9ubHkgZGF0ZVBhcnRpdGlvblNlcXVlbmNlPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCB0aW1lIHpvbmUgc3BlY2lmaWNhdGlvbiBmb3IgZGF0ZSBwYXJ0aXRpb24gZm9sZGVyIGNyZWF0aW9uIGFuZCBDREMgZmlsZSBuYW1pbmcuIENvbnZlcnRzIFVUQyB0aW1lIHRvIHNwZWNpZmllZCB0aW1lIHpvbmUgd2hlbiBjcmVhdGluZyBkYXRlIHBhcnRpdGlvbiBmb2xkZXJzIGFuZCBDREMgZmlsZSBuYW1lcywgdXNpbmcgQXJlYS9Mb2NhdGlvbiBmb3JtYXQgd2hlbiBEYXRlUGFydGl0aW9uZWRFbmFibGVkIGlzIHRydWUgZm9yIGNvbnNpc3RlbnQgdGltZSB6b25lIGhhbmRsaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFRpbWUgem9uZSBjb252ZXJzaW9uOyBEYXRlIHBhcnRpdGlvbiB0aW1pbmc7IENEQyBmaWxlIG5hbWluZzsgVGltZSB6b25lIGNvbnNpc3RlbmN5OyBHbG9iYWwgZGF0YSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBkYXRlUGFydGl0aW9uVGltZXpvbmUgZm9yIHRpbWUgem9uZSBjb252ZXJzaW9uIGluIGRhdGUgcGFydGl0aW9uaW5nXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgQXJlYS9Mb2NhdGlvbiB0aW1lIHpvbmUgZm9ybWF0IGlmIHByb3ZpZGVkOyB1c2VkIHdoZW4gRGF0ZVBhcnRpdGlvbmVkRW5hYmxlZCBpcyB0cnVlXG4gICAqKi9cbiAgcmVhZG9ubHkgZGF0ZVBhcnRpdGlvblRpbWV6b25lPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBtYXhpbXVtIGRpY3Rpb25hcnkgcGFnZSBzaXplIGxpbWl0IGZvciBQYXJxdWV0IGNvbHVtbiBlbmNvZGluZyBvcHRpbWl6YXRpb24uIFNwZWNpZmllcyB0aGUgbWF4aW11bSBzaXplIG9mIGVuY29kZWQgZGljdGlvbmFyeSBwYWdlIGZvciBjb2x1bW5zIHdpdGggZGVmYXVsdCAxIE1pQiwgcmV2ZXJ0aW5nIHRvIFBMQUlOIGVuY29kaW5nIHdoZW4gZXhjZWVkZWQsIGFmZmVjdGluZyBQYXJxdWV0IGNvbXByZXNzaW9uIGVmZmljaWVuY3kgYW5kIHF1ZXJ5IHBlcmZvcm1hbmNlIGluIGNvbHVtbmFyIGRhdGEgbGFrZSBzdG9yYWdlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFBhcnF1ZXQgb3B0aW1pemF0aW9uOyBEaWN0aW9uYXJ5IGVuY29kaW5nOyBDb21wcmVzc2lvbiBlZmZpY2llbmN5OyBDb2x1bW4gc3RvcmFnZSBvcHRpbWl6YXRpb247IEVuY29kaW5nIHBlcmZvcm1hbmNlXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBkaWN0UGFnZVNpemVMaW1pdCBmb3IgUGFycXVldCBkaWN0aW9uYXJ5IHBhZ2Ugc2l6ZSBvcHRpbWl6YXRpb24gYW5kIGVuY29kaW5nIGNvbnRyb2xcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIGJ5dGVzIGlmIHByb3ZpZGVkOyBkZWZhdWx0IDEgTWlCOyBhcHBsaWVzIG9ubHkgdG8gUGFycXVldCBmaWxlIGZvcm1hdFxuICAgKiovXG4gIHJlYWRvbmx5IGRpY3RQYWdlU2l6ZUxpbWl0PzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGVuYWJsZSBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gZm9yIFBhcnF1ZXQgcGFnZXMgYW5kIHJvdyBncm91cHMgZm9yIHF1ZXJ5IG9wdGltaXphdGlvbi4gRW5hYmxlcyBjb2xsZWN0aW9uIG9mIE5VTEwsIERJU1RJTkNULCBNQVgsIGFuZCBNSU4gc3RhdGlzdGljcyB3aXRoIGRlZmF1bHQgdHJ1ZSwgaW1wcm92aW5nIHF1ZXJ5IHBlcmZvcm1hbmNlIGFuZCBkYXRhIGFuYWx5c2lzIGNhcGFiaWxpdGllcyBpbiBQYXJxdWV0IGNvbHVtbmFyIGRhdGEgbGFrZSBzdG9yYWdlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFF1ZXJ5IG9wdGltaXphdGlvbjsgU3RhdGlzdGljcyBjb2xsZWN0aW9uOyBQYXJxdWV0IHBlcmZvcm1hbmNlOyBEYXRhIGFuYWx5c2lzOyBRdWVyeSBwbGFubmluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgZW5hYmxlU3RhdGlzdGljcyBmb3IgUGFycXVldCBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gYW5kIHF1ZXJ5IG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gaWYgcHJvdmlkZWQ7IGRlZmF1bHQgdHJ1ZTsgYXBwbGllcyBvbmx5IHRvIFBhcnF1ZXQgZmlsZSBmb3JtYXQ7IGltcHJvdmVzIHF1ZXJ5IHBlcmZvcm1hbmNlXG4gICAqKi9cbiAgcmVhZG9ubHkgZW5hYmxlU3RhdGlzdGljcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGVuY29kaW5nIHR5cGUgc3BlY2lmaWNhdGlvbiBmb3IgUGFycXVldCBmaWxlIGNvbXByZXNzaW9uIGFuZCBzdG9yYWdlIG9wdGltaXphdGlvbi4gU3BlY2lmaWVzIGVuY29kaW5nIG1ldGhvZCB3aXRoIFJMRV9ESUNUSU9OQVJZIChkZWZhdWx0KSBmb3IgZWZmaWNpZW50IHJlcGVhdGVkIHZhbHVlIHN0b3JhZ2UsIFBMQUlOIGZvciBubyBlbmNvZGluZywgYW5kIFBMQUlOX0RJQ1RJT05BUlkgZm9yIGNvbHVtbi1zcGVjaWZpYyBkaWN0aW9uYXJ5IGVuY29kaW5nLCBhZmZlY3RpbmcgY29tcHJlc3Npb24gYW5kIHBlcmZvcm1hbmNlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvbXByZXNzaW9uIG9wdGltaXphdGlvbjsgRW5jb2Rpbmcgc2VsZWN0aW9uOyBTdG9yYWdlIGVmZmljaWVuY3k7IFBhcnF1ZXQgcGVyZm9ybWFuY2U7IERhdGEgY29tcHJlc3Npb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IGVuY29kaW5nVHlwZSBmb3IgUGFycXVldCBlbmNvZGluZyBtZXRob2Qgc2VsZWN0aW9uIGFuZCBjb21wcmVzc2lvbiBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBSTEVfRElDVElPTkFSWSwgUExBSU4sIG9yIFBMQUlOX0RJQ1RJT05BUlkgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgUkxFX0RJQ1RJT05BUlk7IGFmZmVjdHMgUGFycXVldCBjb21wcmVzc2lvblxuICAgKiovXG4gIHJlYWRvbmx5IGVuY29kaW5nVHlwZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZXh0ZXJuYWwgdGFibGUgZGVmaW5pdGlvbiBmb3IgUzMgc291cmNlIGNvbmZpZ3VyYXRpb24gaW4gZGF0YSBsYWtlIGludGVncmF0aW9uLiBTcGVjaWZpZXMgdGhlIHRhYmxlIGRlZmluaXRpb24gd2hlbiB1c2luZyBTMyBhcyBzb3VyY2UsIHJlcXVpcmVkIGZvciBTMyBzb3VyY2UgZW5kcG9pbnRzIHRvIGRlZmluZSB0YWJsZSBzdHJ1Y3R1cmUgYW5kIHNjaGVtYSBmb3IgZGF0YSBwcm9jZXNzaW5nIGFuZCBtaWdyYXRpb24gb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTMyBzb3VyY2UgY29uZmlndXJhdGlvbjsgVGFibGUgZGVmaW5pdGlvbjsgU2NoZW1hIHNwZWNpZmljYXRpb247IERhdGEgc3RydWN0dXJlOyBTb3VyY2UgdGFibGUgbWFwcGluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgZXh0ZXJuYWxUYWJsZURlZmluaXRpb24gZm9yIFMzIHNvdXJjZSB0YWJsZSBzdHJ1Y3R1cmUgYW5kIHNjaGVtYSBkZWZpbml0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgdGFibGUgZGVmaW5pdGlvbiBpZiBwcm92aWRlZDsgcmVxdWlyZWQgd2hlbiBTMyBpcyB1c2VkIGFzIHNvdXJjZTsgZGVmaW5lcyB0YWJsZSBzdHJ1Y3R1cmUgYW5kIHNjaGVtYVxuICAgKiovXG4gIHJlYWRvbmx5IGV4dGVybmFsVGFibGVEZWZpbml0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBudW1iZXIgb2YgaGVhZGVyIHJvd3MgdG8gaWdub3JlIGluIENTViBmaWxlcyBmb3IgUzMgc291cmNlIHByb2Nlc3NpbmcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIGlnbm9yZSB0aGUgZmlyc3Qgcm93IGhlYWRlciBpbiBDU1YgZmlsZXMgd2l0aCAxIGVuYWJsaW5nIHRoZSBmZWF0dXJlIGFuZCAwIChkZWZhdWx0KSBkaXNhYmxpbmcgaXQsIGFmZmVjdGluZyBDU1YgZmlsZSBwYXJzaW5nIGFuZCBkYXRhIHByb2Nlc3NpbmcgaW4gUzMgc291cmNlIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ1NWIGhlYWRlciBoYW5kbGluZzsgRmlsZSBwYXJzaW5nOyBEYXRhIHByb2Nlc3Npbmc7IEhlYWRlciByb3cgbWFuYWdlbWVudDsgQ1NWIHNvdXJjZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCBpZ25vcmVIZWFkZXJSb3dzIGZvciBDU1YgaGVhZGVyIHJvdyBoYW5kbGluZyBpbiBTMyBzb3VyY2UgcHJvY2Vzc2luZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIDAgb3IgMSBpZiBwcm92aWRlZDsgZGVmYXVsdCAwOyBjb250cm9scyBDU1YgaGVhZGVyIHJvdyBwcm9jZXNzaW5nIGluIFMzIHNvdXJjZSBvcGVyYXRpb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgaWdub3JlSGVhZGVyUm93cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBpbmNsdWRlIElOU0VSVCBvcGVyYXRpb24gaW5kaWNhdG9ycyBpbiBmdWxsIGxvYWQgQ1NWIG91dHB1dCBmb3IgY29uc2lzdGVuY3kgd2l0aCBDREMgb3BlcmF0aW9ucy4gRW5hYmxlcyByZWNvcmRpbmcgSU5TRVJUIG9wZXJhdGlvbnMgYXMgJ0knIGFubm90YXRpb24gaW4gZmlyc3QgZmllbGQgb2YgQ1NWIGZpbGVzIGR1cmluZyBmdWxsIGxvYWQsIHByb3ZpZGluZyBjb25zaXN0ZW5jeSB3aXRoIENEQyBsb2FkIGZvcm1hdCBhbmQgb3BlcmF0aW9uIHRyYWNraW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE9wZXJhdGlvbiB0cmFja2luZzsgRnVsbCBsb2FkIGNvbnNpc3RlbmN5OyBDREMgY29tcGF0aWJpbGl0eTsgSU5TRVJUIGluZGljYXRpb247IERhdGEgbGluZWFnZVxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgaW5jbHVkZU9wRm9yRnVsbExvYWQgZm9yIElOU0VSVCBvcGVyYXRpb24gaW5kaWNhdGlvbiBpbiBmdWxsIGxvYWQgQ1NWIG91dHB1dFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gb3IgJ3knIGlmIHByb3ZpZGVkOyByZXF1aXJlcyBETVMgdmVyc2lvbiAzLjEuNCs7IHdvcmtzIHdpdGggQ2RjSW5zZXJ0c09ubHkgYW5kIENkY0luc2VydHNBbmRVcGRhdGVzXG4gICAqKi9cbiAgcmVhZG9ubHkgaW5jbHVkZU9wRm9yRnVsbExvYWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBtYXhpbXVtIENTViBmaWxlIHNpemUgaW4gS0IgZm9yIFMzIHRhcmdldCBkdXJpbmcgZnVsbCBsb2FkIG1pZ3JhdGlvbiBvcGVyYXRpb25zLiBTcGVjaWZpZXMgdGhlIG1heGltdW0gc2l6ZSBsaW1pdCBmb3IgQ1NWIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIGZ1bGwgbG9hZCBtaWdyYXRpb24gd2l0aCBkZWZhdWx0IDEgR0IgKDEsMDQ4LDU3NiBLQiksIGNvbnRyb2xsaW5nIGZpbGUgc2l6ZSBhbmQgYWZmZWN0aW5nIGRhdGEgbGFrZSBmaWxlIG9yZ2FuaXphdGlvbiBhbmQgcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRmlsZSBzaXplIGNvbnRyb2w7IEZ1bGwgbG9hZCBvcHRpbWl6YXRpb247IFN0b3JhZ2UgbWFuYWdlbWVudDsgRmlsZSBvcmdhbml6YXRpb247IFBlcmZvcm1hbmNlIHR1bmluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgbWF4RmlsZVNpemUgZm9yIENTViBmaWxlIHNpemUgbGltaXRzIGR1cmluZyBmdWxsIGxvYWQgbWlncmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgaW50ZWdlciBiZXR3ZWVuIDEtMSwwNDgsNTc2IEtCIGlmIHByb3ZpZGVkOyBkZWZhdWx0IDEgR0I7IGNvbnRyb2xzIENTViBmaWxlIHNpemUgZHVyaW5nIGZ1bGwgbG9hZFxuICAgKiovXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHNldCBUSU1FU1RBTVAgY29sdW1uIHByZWNpc2lvbiB0byBtaWxsaXNlY29uZHMgaW4gUGFycXVldCBmaWxlcyBmb3IgQXRoZW5hIGFuZCBHbHVlIGNvbXBhdGliaWxpdHkuIEVuYWJsZXMgbWlsbGlzZWNvbmQgcHJlY2lzaW9uIGZvciBUSU1FU1RBTVAgY29sdW1ucyBpbiBQYXJxdWV0IGZvcm1hdCBpbnN0ZWFkIG9mIG1pY3Jvc2Vjb25kIHByZWNpc2lvbiwgZW5zdXJpbmcgY29tcGF0aWJpbGl0eSB3aXRoIEFtYXpvbiBBdGhlbmEgYW5kIEFXUyBHbHVlIHF1ZXJ5IGVuZ2luZXMgdGhhdCBoYW5kbGUgb25seSBtaWxsaXNlY29uZCBwcmVjaXNpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogQXRoZW5hIGNvbXBhdGliaWxpdHk7IEdsdWUgaW50ZWdyYXRpb247IFRpbWVzdGFtcCBwcmVjaXNpb247IFBhcnF1ZXQgb3B0aW1pemF0aW9uOyBRdWVyeSBlbmdpbmUgY29tcGF0aWJpbGl0eVxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgcGFycXVldFRpbWVzdGFtcEluTWlsbGlzZWNvbmQgZm9yIFRJTUVTVEFNUCBwcmVjaXNpb24gaW4gUGFycXVldCBmaWxlc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gb3IgJ3knIGlmIHByb3ZpZGVkOyByZXF1aXJlcyBETVMgdmVyc2lvbiAzLjEuNCs7IGFwcGxpZXMgb25seSB0byBQYXJxdWV0IGZvcm1hdDsgQ1NWIGFsd2F5cyB1c2VzIG1pY3Jvc2Vjb25kXG4gICAqKi9cbiAgcmVhZG9ubHkgcGFycXVldFRpbWVzdGFtcEluTWlsbGlzZWNvbmQ/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBBcGFjaGUgUGFycXVldCBmb3JtYXQgdmVyc2lvbiBzcGVjaWZpY2F0aW9uIGZvciBTMyBkYXRhIGxha2UgY29sdW1uYXIgc3RvcmFnZS4gU3BlY2lmaWVzIHRoZSBQYXJxdWV0IGZvcm1hdCB2ZXJzaW9uIHdpdGggcGFycXVldF8xXzAgKGRlZmF1bHQpIG9yIHBhcnF1ZXRfMl8wIG9wdGlvbnMsIGFmZmVjdGluZyBmaWxlIGNvbXBhdGliaWxpdHksIGZlYXR1cmVzLCBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIGluIGNvbHVtbmFyIGRhdGEgbGFrZSBzdG9yYWdlIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogUGFycXVldCB2ZXJzaW9uIHNlbGVjdGlvbjsgRm9ybWF0IGNvbXBhdGliaWxpdHk7IEZlYXR1cmUgYXZhaWxhYmlsaXR5OyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb247IENvbHVtbmFyIHN0b3JhZ2VcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IHBhcnF1ZXRWZXJzaW9uIGZvciBBcGFjaGUgUGFycXVldCBmb3JtYXQgdmVyc2lvbiBzcGVjaWZpY2F0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgJ3BhcnF1ZXRfMV8wJyBvciAncGFycXVldF8yXzAnIGlmIHByb3ZpZGVkOyBkZWZhdWx0IHBhcnF1ZXRfMV8wOyBhZmZlY3RzIFBhcnF1ZXQgZmlsZSBjb21wYXRpYmlsaXR5IGFuZCBmZWF0dXJlc1xuICAgKiovXG4gIHJlYWRvbmx5IHBhcnF1ZXRWZXJzaW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHByZXNlcnZlIHRyYW5zYWN0aW9uIG9yZGVyIGZvciBDREMgbG9hZHMgaW4gUzMgdGFyZ2V0IGZvciBkYXRhIGNvbnNpc3RlbmN5LiBFbmFibGVzIHNhdmluZyB0cmFuc2FjdGlvbiBvcmRlciBmb3IgY2hhbmdlIGRhdGEgY2FwdHVyZSBsb2FkcyBvbiBTMyB0YXJnZXQgc3BlY2lmaWVkIGJ5IENkY1BhdGgsIGVuc3VyaW5nIHRyYW5zYWN0aW9uYWwgY29uc2lzdGVuY3kgYW5kIHByb3BlciBvcmRlcmluZyBpbiBkYXRhIGxha2UgQ0RDIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVHJhbnNhY3Rpb24gY29uc2lzdGVuY3k7IENEQyBvcmRlcmluZzsgRGF0YSBpbnRlZ3JpdHk7IFRyYW5zYWN0aW9uIHByZXNlcnZhdGlvbjsgQ2hhbmdlIGRhdGEgY29uc2lzdGVuY3lcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IHByZXNlcnZlVHJhbnNhY3Rpb25zIGZvciBDREMgdHJhbnNhY3Rpb24gb3JkZXIgcHJlc2VydmF0aW9uIGluIFMzIHRhcmdldFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gaWYgcHJvdmlkZWQ7IHJlcXVpcmVzIENkY1BhdGggc2V0dGluZzsgc3VwcG9ydHMgRE1TIHZlcnNpb24gMy40LjIrOyBlbnN1cmVzIHRyYW5zYWN0aW9uIG9yZGVyIGNvbnNpc3RlbmN5XG4gICAqKi9cbiAgcmVhZG9ubHkgcHJlc2VydmVUcmFuc2FjdGlvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGVuYWJsZSBSRkMgNDE4MCBjb21wbGlhbmNlIGZvciBDU1YgcXVvdGF0aW9uIG1hcmsgaGFuZGxpbmcgaW4gUzMgb3BlcmF0aW9ucy4gQ29udHJvbHMgcXVvdGF0aW9uIG1hcmsgYmVoYXZpb3Igd2l0aCB0cnVlIChkZWZhdWx0KSByZXF1aXJpbmcgcGFpcmVkIHF1b3RhdGlvbiBtYXJrcyBhbmQgcHJvcGVyIGVzY2FwaW5nLCBhbmQgZmFsc2UgYWxsb3dpbmcgZGVsaW1pdGVycyB3aXRoaW4gc3RyaW5ncywgYWZmZWN0aW5nIENTViBwYXJzaW5nIGFuZCBkYXRhIGludGVncml0eS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDU1YgY29tcGxpYW5jZTsgUXVvdGF0aW9uIGhhbmRsaW5nOyBSRkMgNDE4MCBzdGFuZGFyZDsgRGF0YSBwYXJzaW5nOyBDU1YgZm9ybWF0dGluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgcmZjNDE4MCBmb3IgQ1NWIHF1b3RhdGlvbiBtYXJrIGhhbmRsaW5nIGFuZCBSRkMgNDE4MCBjb21wbGlhbmNlXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiwgJ3knLCBvciAnbicgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgdHJ1ZTsgYWZmZWN0cyBDU1YgcXVvdGF0aW9uIG1hcmsgaGFuZGxpbmcgYW5kIGRlbGltaXRlciBiZWhhdmlvclxuICAgKiovXG4gIHJlYWRvbmx5IHJmYzQxODA/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBudW1iZXIgb2Ygcm93cyBpbiBQYXJxdWV0IHJvdyBncm91cCBmb3IgcmVhZC93cml0ZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uIFNwZWNpZmllcyByb3cgZ3JvdXAgc2l6ZSB3aXRoIGRlZmF1bHQgMTAsMDAwIHJvd3MsIGJhbGFuY2luZyBmYXN0ZXIgcmVhZHMgKHNtYWxsZXIgZ3JvdXBzKSBhZ2FpbnN0IHNsb3dlciB3cml0ZXMgKG1vcmUgZ3JvdXBzKSwgd2l0aCBtYXhpbXVtIDY0TUIgbGltaXQgZm9yIFBhcnF1ZXQgZmlsZSBwZXJmb3JtYW5jZSB0dW5pbmcuXG4gICAqXG4gICAqIFVzZSBjYXNlczogUGFycXVldCBvcHRpbWl6YXRpb247IFJlYWQgcGVyZm9ybWFuY2U7IFdyaXRlIHBlcmZvcm1hbmNlOyBSb3cgZ3JvdXAgdHVuaW5nOyBDb2x1bW5hciBzdG9yYWdlIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUzMgZW5kcG9pbnQgcm93R3JvdXBMZW5ndGggZm9yIFBhcnF1ZXQgcm93IGdyb3VwIHNpemUgb3B0aW1pemF0aW9uIGFuZCBwZXJmb3JtYW5jZSB0dW5pbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHByb3ZpZGVkOyBkZWZhdWx0IDEwLDAwMDsgbWF4aW11bSA2NE1CICg2NCoxMDI0KjEwMjQgYnl0ZXMpOyBhcHBsaWVzIG9ubHkgdG8gUGFycXVldCBmb3JtYXRcbiAgICoqL1xuICByZWFkb25seSByb3dHcm91cExlbmd0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgS01TIGtleSBJRCBmb3Igc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aGVuIHVzaW5nIFNTRV9LTVMgZW5jcnlwdGlvbiBtb2RlIGZvciBTMyBkYXRhIGxha2Ugc2VjdXJpdHkuIFNwZWNpZmllcyB0aGUgQVdTIEtNUyBrZXkgZm9yIGVuY3J5cHRpbmcgUzMgb2JqZWN0cywgcmVxdWlyaW5nIGF0dGFjaGVkIHBvbGljeSBlbmFibGluZyBJQU0gdXNlciBwZXJtaXNzaW9ucyBhbmQga2V5IHVzYWdlIGZvciBzZWN1cmUgZGF0YSBsYWtlIHN0b3JhZ2UgYW5kIGNvbXBsaWFuY2UuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGF0YSBlbmNyeXB0aW9uOyBLTVMgaW50ZWdyYXRpb247IFMzIHNlY3VyaXR5OyBDb21wbGlhbmNlIHJlcXVpcmVtZW50czsgRGF0YSBwcm90ZWN0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIEtNUyBrZXkgSUQgZm9yIFMzIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBjdXN0b21lci1tYW5hZ2VkIGtleXNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBLTVMga2V5IElEOyByZXF1aXJlZCB3aGVuIEVuY3J5cHRpb25Nb2RlIGlzIFNTRV9LTVM7IHJlcXVpcmVzIHByb3BlciBJQU0gcGVybWlzc2lvbnMgYW5kIGtleSBwb2xpY3lcbiAgICoqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlRW5jcnlwdGlvbkttc0tleUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIEFSTiBmb3IgRE1TIHNlcnZpY2UgYWNjZXNzIHRvIFMzIGJ1Y2tldCBvcGVyYXRpb25zIGZvciBkYXRhIGxha2UgaW50ZWdyYXRpb24uIFNwZWNpZmllcyB0aGUgc2VydmljZSByb2xlIGVuYWJsaW5nIERNUyB0byByZWFkIGFuZCB3cml0ZSBTMyBvYmplY3RzLCByZXF1aXJpbmcgaWFtOlBhc3NSb2xlIGFjdGlvbiBmb3Igc2VjdXJlIFMzIGJ1Y2tldCBhY2Nlc3MgYW5kIGRhdGEgbWlncmF0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU2VydmljZSBhY2Nlc3M7IElBTSByb2xlIGNvbmZpZ3VyYXRpb247IFMzIHBlcm1pc3Npb25zOyBTZWN1cmUgYWNjZXNzOyBEYXRhIG1pZ3JhdGlvbiBhdXRob3JpemF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIElBTSByb2xlIEFSTiBmb3IgRE1TIHNlcnZpY2UgYWNjZXNzIHRvIFMzIGJ1Y2tldCBvcGVyYXRpb25zIGFuZCBkYXRhIGxha2UgaW50ZWdyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBJQU0gcm9sZSBBUk4gaWYgcHJvdmlkZWQ7IHJlcXVpcmVzIGlhbTpQYXNzUm9sZSBhY3Rpb247IGVuYWJsZXMgUzMgcmVhZC93cml0ZSBvcGVyYXRpb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgc2VydmljZUFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHRpbWVzdGFtcCBjb2x1bW4gbmFtZSBmb3IgYWRkaW5nIG1pZ3JhdGlvbiB0aW1pbmcgaW5mb3JtYXRpb24gdG8gUzMgZGF0YSBsYWtlIGZpbGVzLiBBZGRzIFNUUklORyBjb2x1bW4gd2l0aCB0aW1lc3RhbXAgaW5mb3JtYXRpb24gdG8gQ1NWIG9yIFBhcnF1ZXQgZmlsZXMsIGNvbnRhaW5pbmcgdHJhbnNmZXIgdGltZXN0YW1wcyBmb3IgZnVsbCBsb2FkIGFuZCBjb21taXQgdGltZXN0YW1wcyBmb3IgQ0RDLCB3aXRoIG1pY3Jvc2Vjb25kIHByZWNpc2lvbiBmb3JtYXQgeXl5eS1NTS1kZCBISDptbTpzcy5TU1NTU1MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGF0YSBsaW5lYWdlOyBNaWdyYXRpb24gdHJhY2tpbmc7IFRpbWVzdGFtcCBpbmZvcm1hdGlvbjsgRGF0YSBhdWRpdGluZzsgQ2hhbmdlIHRyYWNraW5nXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCB0aW1lc3RhbXBDb2x1bW5OYW1lIGZvciBtaWdyYXRpb24gdGltZXN0YW1wIHRyYWNraW5nIGluIGRhdGEgbGFrZSBmaWxlc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGNvbHVtbiBuYW1lIGlmIHByb3ZpZGVkOyByZXF1aXJlcyBETVMgdmVyc2lvbiAzLjEuNCs7IGFkZHMgdGltZXN0YW1wIGNvbHVtbiB0byBvdXRwdXQgZmlsZXNcbiAgICoqL1xuICByZWFkb25seSB0aW1lc3RhbXBDb2x1bW5OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHVzZSB0YXNrIHN0YXJ0IHRpbWUgZm9yIGZ1bGwgbG9hZCB0aW1lc3RhbXAgY29sdW1uIGluc3RlYWQgb2YgZGF0YSBhcnJpdmFsIHRpbWUuIENvbnRyb2xzIHRpbWVzdGFtcCBiZWhhdmlvciB3aXRoIHRydWUgdXNpbmcgdGFzayBzdGFydCB0aW1lIGZvciBmdWxsIGxvYWQgYW5kIHRyYW5zYWN0aW9uIGNvbW1pdCB0aW1lIGZvciBDREMsIGFuZCBmYWxzZSB1c2luZyBpbmNyZW1lbnRhbCBkYXRhIGFycml2YWwgdGltZSBmb3IgZnVsbCBsb2FkIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVGltZXN0YW1wIGNvbnNpc3RlbmN5OyBUYXNrIHRpbWluZzsgRnVsbCBsb2FkIHRpbWluZzsgVGltZXN0YW1wIGJlaGF2aW9yOyBEYXRhIGxpbmVhZ2VcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFMzIGVuZHBvaW50IHVzZVRhc2tTdGFydFRpbWVGb3JGdWxsTG9hZFRpbWVzdGFtcCBmb3IgdGltZXN0YW1wIGNvbHVtbiBiZWhhdmlvciBjb250cm9sXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgYWZmZWN0cyB0aW1lc3RhbXAgY29sdW1uIGJlaGF2aW9yIGZvciBmdWxsIGxvYWQgb3BlcmF0aW9uczsgQ0RDIGFsd2F5cyB1c2VzIGNvbW1pdCB0aW1lXG4gICAqKi9cbiAgcmVhZG9ubHkgdXNlVGFza1N0YXJ0VGltZUZvckZ1bGxMb2FkVGltZXN0YW1wPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byB1c2UgQ3N2Tm9TdXBWYWx1ZSBmb3IgY29sdW1ucyBub3QgaW4gc3VwcGxlbWVudGFsIGxvZyBkdXJpbmcgQ0RDIENTViBvcGVyYXRpb25zLiBDb250cm9scyBoYW5kbGluZyBvZiBjb2x1bW5zIG5vdCBpbmNsdWRlZCBpbiBzdXBwbGVtZW50YWwgbG9nIHdpdGggdHJ1ZSB1c2luZyBDc3ZOb1N1cFZhbHVlIGFuZCBmYWxzZSB1c2luZyBudWxsIHZhbHVlLCBhZmZlY3RpbmcgQ0RDIGRhdGEgY29tcGxldGVuZXNzIGluIENTViBmb3JtYXQgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTdXBwbGVtZW50YWwgbG9nIGhhbmRsaW5nOyBDREMgZGF0YSBjb21wbGV0ZW5lc3M7IE1pc3NpbmcgY29sdW1uIHZhbHVlczsgQ1NWIENEQyBvcGVyYXRpb25zOyBEYXRhIGNvbnNpc3RlbmN5XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBTMyBlbmRwb2ludCB1c2VDc3ZOb1N1cFZhbHVlIGZvciBzdXBwbGVtZW50YWwgbG9nIGNvbHVtbiBoYW5kbGluZyBpbiBDREMgQ1NWIG9wZXJhdGlvbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIGlmIHByb3ZpZGVkOyB3b3JrcyB3aXRoIENzdk5vU3VwVmFsdWUgc2V0dGluZzsgYXBwbGllcyBvbmx5IHRvIENEQyBsb2FkcyBpbiBDU1YgZm9ybWF0XG4gICAqKi9cbiAgcmVhZG9ubHkgdXNlQ3N2Tm9TdXBWYWx1ZT86IGJvb2xlYW47XG59XG4vKipcbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZGVzY3JpYmVzIGFuIEFtYXpvbiBLaW5lc2lzIERhdGEgU3RyZWFtIGVuZHBvaW50LiBNb2RpZmllZCBmcm9tIHRoZSBlcXVpdmFsZW50IEwxIENvbnN0cnVjdCB0byBwcmV2ZW50IHVzZSBvZiBwbGFpbnRleHQgY3JlZGVudGlhbHMgYW5kIGVuZm9yY2UgdXNlIG9mIEtNUyBlbmNyeXB0aW9uLlxuICogVGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgb3V0cHV0IGZvcm1hdCBvZiByZWNvcmRzIGFwcGxpZWQgdG8gdGhlIGVuZHBvaW50IGFuZCBkZXRhaWxzIG9mIHRyYW5zYWN0aW9uIGFuZCBjb250cm9sIHRhYmxlIGRhdGEgaW5mb3JtYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIGF2YWlsYWJsZSBzZXR0aW5ncywgc2VlIFtVc2luZyBvYmplY3QgbWFwcGluZyB0byBtaWdyYXRlIGRhdGEgdG8gYSBLaW5lc2lzIGRhdGEgc3RyZWFtXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9UYXJnZXQuS2luZXNpcy5odG1sI0NIQVBfVGFyZ2V0LktpbmVzaXMuT2JqZWN0TWFwcGluZykgaW4gdGhlICpBV1MgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgVXNlciBHdWlkZSogLlxuICogQHN0cnVjdFxuICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1raW5lc2lzc2V0dGluZ3MuaHRtbFxuICovXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBLaW5lc2lzIHNldHRpbmdzIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBETVMgcHJvdmlkaW5nIHN0cmVhbWluZyBkYXRhIGludGVncmF0aW9uIGFuZCByZWFsLXRpbWUgbWlncmF0aW9uIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBLaW5lc2lzLXNwZWNpZmljIHByb3BlcnRpZXMgZm9yIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIGluY2x1ZGluZyBzdHJlYW1pbmcgY29uZmlndXJhdGlvbiwgZGF0YSBmb3JtYXQgc2V0dGluZ3MsIGFuZCBLaW5lc2lzIGludGVncmF0aW9uIGZvciByZWFsLXRpbWUgZGF0YWJhc2Ugc3RyZWFtaW5nIHdvcmtmbG93cy5cbiAqXG4gKiBVc2UgY2FzZXM6IFJlYWwtdGltZSBkYXRhYmFzZSBzdHJlYW1pbmc7IFN0cmVhbWluZyBkYXRhIGludGVncmF0aW9uOyBLaW5lc2lzIGRhdGEgc3RyZWFtczsgUmVhbC10aW1lIG1pZ3JhdGlvbjsgRGF0YWJhc2Ugc3RyZWFtaW5nIHdvcmtmbG93czsgRE1TIEtpbmVzaXMgaW50ZWdyYXRpb25cbiAqXG4gKiBBV1M6IEFXUyBETVMgS2luZXNpcyBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdpdGggc3RyZWFtaW5nIGRhdGEgaW50ZWdyYXRpb24gYW5kIHJlYWwtdGltZSBtaWdyYXRpb24gY2FwYWJpbGl0aWVzXG4gKlxuICogVmFsaWRhdGlvbjogQ29uZmlndXJhdGlvbiBtdXN0IGJlIHZhbGlkIGZvciBETVMgbWlncmF0aW9uOyBwcm9wZXJ0aWVzIG11c3QgY29uZm9ybSB0byBBV1MgRE1TIGFuZCBkYXRhYmFzZS1zcGVjaWZpYyByZXF1aXJlbWVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLaW5lc2lzU2V0dGluZ3NQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gc2hvdyBkZXRhaWxlZCBjb250cm9sIGluZm9ybWF0aW9uIGZvciB0YWJsZSBhbmQgY29sdW1uIGNoYW5nZXMgaW4gS2luZXNpcyBtZXNzYWdlIG91dHB1dCBmb3IgY2hhbmdlIHRyYWNraW5nLiBFbmFibGVzIGRldGFpbGVkIGNvbnRyb2wgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHRhYmxlIGRlZmluaXRpb24sIGNvbHVtbiBkZWZpbml0aW9uLCBhbmQgdGFibGUvY29sdW1uIGNoYW5nZXMgaW4gS2luZXNpcyBzdHJlYW1pbmcgb3V0cHV0IHdpdGggZGVmYXVsdCBmYWxzZSBmb3IgZW5oYW5jZWQgY2hhbmdlIHZpc2liaWxpdHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ2hhbmdlIHRyYWNraW5nOyBDb250cm9sIGluZm9ybWF0aW9uOyBUYWJsZSBtb25pdG9yaW5nOyBDb2x1bW4gY2hhbmdlczsgRGV0YWlsZWQgc3RyZWFtaW5nXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBLaW5lc2lzIGVuZHBvaW50IGluY2x1ZGVDb250cm9sRGV0YWlscyBmb3IgZGV0YWlsZWQgY29udHJvbCBpbmZvcm1hdGlvbiBpbiBzdHJlYW1pbmcgb3V0cHV0XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgZGVmYXVsdCBmYWxzZTsgZW5hYmxlcyBkZXRhaWxlZCBjb250cm9sIGluZm9ybWF0aW9uIGluIEtpbmVzaXMgbWVzc2FnZSBvdXRwdXRcbiAgICoqL1xuICByZWFkb25seSBpbmNsdWRlQ29udHJvbERldGFpbHM/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGluY2x1ZGUgTlVMTCBhbmQgZW1wdHkgY29sdW1ucyBpbiByZWNvcmRzIG1pZ3JhdGVkIHRvIEtpbmVzaXMgZW5kcG9pbnQgZm9yIGNvbXBsZXRlIGRhdGEgcmVwcmVzZW50YXRpb24uIEVuYWJsZXMgaW5jbHVzaW9uIG9mIE5VTEwgYW5kIGVtcHR5IGNvbHVtbiB2YWx1ZXMgaW4gS2luZXNpcyBzdHJlYW1pbmcgb3V0cHV0IHdpdGggZGVmYXVsdCBmYWxzZSwgZW5zdXJpbmcgY29tcGxldGUgZGF0YSByZXByZXNlbnRhdGlvbiBpbiByZWFsLXRpbWUgc3RyZWFtaW5nIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ29tcGxldGUgZGF0YSByZXByZXNlbnRhdGlvbjsgTlVMTCBoYW5kbGluZzsgRW1wdHkgY29sdW1uIGluY2x1c2lvbjsgRGF0YSBjb21wbGV0ZW5lc3M7IFN0cmVhbWluZyBpbnRlZ3JpdHlcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIEtpbmVzaXMgZW5kcG9pbnQgaW5jbHVkZU51bGxBbmRFbXB0eSBmb3IgTlVMTCBhbmQgZW1wdHkgY29sdW1uIGluY2x1c2lvbiBpbiBzdHJlYW1pbmcgb3V0cHV0XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgZGVmYXVsdCBmYWxzZTsgaW5jbHVkZXMgTlVMTCBhbmQgZW1wdHkgY29sdW1ucyBpbiBLaW5lc2lzIHN0cmVhbWluZyByZWNvcmRzXG4gICAqKi9cbiAgcmVhZG9ubHkgaW5jbHVkZU51bGxBbmRFbXB0eT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gc2hvdyBwYXJ0aXRpb24gdmFsdWUgaW4gS2luZXNpcyBtZXNzYWdlIG91dHB1dCB1bmxlc3MgcGFydGl0aW9uIHR5cGUgaXMgc2NoZW1hLXRhYmxlLXR5cGUuIEVuYWJsZXMgcGFydGl0aW9uIHZhbHVlIHZpc2liaWxpdHkgaW4gS2luZXNpcyBzdHJlYW1pbmcgb3V0cHV0IHdpdGggZGVmYXVsdCBmYWxzZSwgcHJvdmlkaW5nIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZGF0YSBvcmdhbml6YXRpb24gYW5kIHJvdXRpbmcgaW4gc3RyZWFtaW5nIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogUGFydGl0aW9uIHZpc2liaWxpdHk7IERhdGEgb3JnYW5pemF0aW9uOyBTdHJlYW1pbmcgcm91dGluZzsgUGFydGl0aW9uIGluZm9ybWF0aW9uOyBNZXNzYWdlIG9yZ2FuaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgS2luZXNpcyBlbmRwb2ludCBpbmNsdWRlUGFydGl0aW9uVmFsdWUgZm9yIHBhcnRpdGlvbiB2YWx1ZSB2aXNpYmlsaXR5IGluIHN0cmVhbWluZyBvdXRwdXRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIGlmIHByb3ZpZGVkOyBkZWZhdWx0IGZhbHNlOyBzaG93cyBwYXJ0aXRpb24gdmFsdWUgdW5sZXNzIHBhcnRpdGlvbiB0eXBlIGlzIHNjaGVtYS10YWJsZS10eXBlXG4gICAqKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVBhcnRpdGlvblZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBpbmNsdWRlIERETCBvcGVyYXRpb25zIHRoYXQgY2hhbmdlIHRhYmxlIHN0cnVjdHVyZSBpbiBjb250cm9sIGRhdGEgZm9yIHNjaGVtYSBjaGFuZ2UgdHJhY2tpbmcuIEVuYWJsZXMgaW5jbHVzaW9uIG9mIERETCBvcGVyYXRpb25zIGxpa2UgcmVuYW1lLXRhYmxlLCBkcm9wLXRhYmxlLCBhZGQtY29sdW1uLCBkcm9wLWNvbHVtbiwgYW5kIHJlbmFtZS1jb2x1bW4gaW4gY29udHJvbCBkYXRhIHdpdGggZGVmYXVsdCBmYWxzZSBmb3Igc2NoZW1hIGV2b2x1dGlvbiB0cmFja2luZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTY2hlbWEgY2hhbmdlIHRyYWNraW5nOyBEREwgbW9uaXRvcmluZzsgVGFibGUgc3RydWN0dXJlIGNoYW5nZXM7IFNjaGVtYSBldm9sdXRpb247IENvbnRyb2wgZGF0YSBlbmhhbmNlbWVudFxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgS2luZXNpcyBlbmRwb2ludCBpbmNsdWRlVGFibGVBbHRlck9wZXJhdGlvbnMgZm9yIERETCBvcGVyYXRpb24gaW5jbHVzaW9uIGluIGNvbnRyb2wgZGF0YVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gaWYgcHJvdmlkZWQ7IGRlZmF1bHQgZmFsc2U7IGluY2x1ZGVzIERETCBvcGVyYXRpb25zIGluIGNvbnRyb2wgZGF0YSBmb3Igc2NoZW1hIGNoYW5nZSB0cmFja2luZ1xuICAgKiovXG4gIHJlYWRvbmx5IGluY2x1ZGVUYWJsZUFsdGVyT3BlcmF0aW9ucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gcHJvdmlkZSBkZXRhaWxlZCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHNvdXJjZSBkYXRhYmFzZSBmb3IgdHJhbnNhY3Rpb24gdHJhY2tpbmcuIEVuYWJsZXMgZGV0YWlsZWQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gaW5jbHVkaW5nIGNvbW1pdCB0aW1lc3RhbXAsIGxvZyBwb3NpdGlvbiwgdHJhbnNhY3Rpb25faWQsIHByZXZpb3VzIHRyYW5zYWN0aW9uX2lkLCBhbmQgdHJhbnNhY3Rpb25fcmVjb3JkX2lkIHdpdGggZGVmYXVsdCBmYWxzZSBmb3IgZW5oYW5jZWQgdHJhbnNhY3Rpb24gdmlzaWJpbGl0eSBpbiBzdHJlYW1pbmcuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVHJhbnNhY3Rpb24gdHJhY2tpbmc7IENvbW1pdCBpbmZvcm1hdGlvbjsgVHJhbnNhY3Rpb24gZGV0YWlsczsgTG9nIHBvc2l0aW9uIHRyYWNraW5nOyBUcmFuc2FjdGlvbiBsaW5lYWdlXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBLaW5lc2lzIGVuZHBvaW50IGluY2x1ZGVUcmFuc2FjdGlvbkRldGFpbHMgZm9yIGRldGFpbGVkIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIGluIHN0cmVhbWluZyBvdXRwdXRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIGlmIHByb3ZpZGVkOyBkZWZhdWx0IGZhbHNlOyBwcm92aWRlcyBkZXRhaWxlZCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBmcm9tIHNvdXJjZSBkYXRhYmFzZVxuICAgKiovXG4gIHJlYWRvbmx5IGluY2x1ZGVUcmFuc2FjdGlvbkRldGFpbHM/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBvdXRwdXQgZm9ybWF0IHNwZWNpZmljYXRpb24gZm9yIHJlY29yZHMgY3JlYXRlZCBvbiBLaW5lc2lzIGVuZHBvaW50IGZvciBzdHJlYW1pbmcgZGF0YSBmb3JtYXQgY29udHJvbC4gU3BlY2lmaWVzIG1lc3NhZ2UgZm9ybWF0IHdpdGggSlNPTiAoZGVmYXVsdCkgZm9yIGZvcm1hdHRlZCBvdXRwdXQgb3IgSlNPTl9VTkZPUk1BVFRFRCBmb3Igc2luZ2xlLWxpbmUgb3V0cHV0IHdpdGhvdXQgdGFicywgYWZmZWN0aW5nIHN0cmVhbWluZyBkYXRhIHN0cnVjdHVyZSBhbmQgcmVhZGFiaWxpdHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTWVzc2FnZSBmb3JtYXR0aW5nOyBKU09OIHN0cnVjdHVyZTsgT3V0cHV0IGZvcm1hdDsgU3RyZWFtaW5nIGZvcm1hdDsgRGF0YSBzdHJ1Y3R1cmUgY29udHJvbFxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgS2luZXNpcyBlbmRwb2ludCBtZXNzYWdlRm9ybWF0IGZvciBzdHJlYW1pbmcgcmVjb3JkIG91dHB1dCBmb3JtYXQgc3BlY2lmaWNhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlICdKU09OJyBvciAnSlNPTl9VTkZPUk1BVFRFRCcgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgSlNPTjsgY29udHJvbHMgc3RyZWFtaW5nIG1lc3NhZ2UgZm9ybWF0IGFuZCBzdHJ1Y3R1cmVcbiAgICoqL1xuICByZWFkb25seSBtZXNzYWdlRm9ybWF0Pzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGF2b2lkIGFkZGluZyAnMHgnIHByZWZpeCB0byByYXcgZGF0YSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQgZm9yIGNsZWFuZXIgZGF0YSByZXByZXNlbnRhdGlvbi4gRW5hYmxlcyBtaWdyYXRpb24gb2YgUkFXIGRhdGEgdHlwZSBjb2x1bW5zIHdpdGhvdXQgJzB4JyBwcmVmaXgsIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIExPQiBjb2x1bW5zIGZyb20gT3JhY2xlIHNvdXJjZXMgdG8gS2luZXNpcyB0YXJnZXRzIGZvciBjbGVhbmVyIGhleGFkZWNpbWFsIGRhdGEgcmVwcmVzZW50YXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogSGV4YWRlY2ltYWwgZm9ybWF0dGluZzsgUkFXIGRhdGEgbWlncmF0aW9uOyBMT0IgaGFuZGxpbmc7IERhdGEgZm9ybWF0IGNvbnRyb2w7IE9yYWNsZSB0byBLaW5lc2lzIG1pZ3JhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgS2luZXNpcyBlbmRwb2ludCBub0hleFByZWZpeCBmb3IgaGV4YWRlY2ltYWwgZGF0YSBmb3JtYXR0aW5nIGNvbnRyb2wgaW4gc3RyZWFtaW5nIG91dHB1dFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gaWYgcHJvdmlkZWQ7IHJlbW92ZXMgJzB4JyBwcmVmaXggZnJvbSBoZXhhZGVjaW1hbCBSQVcgZGF0YSBpbiBzdHJlYW1pbmcgb3V0cHV0XG4gICAqKi9cbiAgcmVhZG9ubHkgbm9IZXhQcmVmaXg/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHByZWZpeCBzY2hlbWEgYW5kIHRhYmxlIG5hbWVzIHRvIHBhcnRpdGlvbiB2YWx1ZXMgZm9yIGltcHJvdmVkIGRhdGEgZGlzdHJpYnV0aW9uIGFjcm9zcyBLaW5lc2lzIHNoYXJkcy4gRW5hYmxlcyBzY2hlbWEgYW5kIHRhYmxlIG5hbWUgcHJlZml4aW5nIHdoZW4gcGFydGl0aW9uIHR5cGUgaXMgcHJpbWFyeS1rZXktdHlwZSwgaW1wcm92aW5nIGRhdGEgZGlzdHJpYnV0aW9uIGFuZCByZWR1Y2luZyB0aHJvdHRsaW5nIGZvciB0YWJsZXMgd2l0aCBsaW1pdGVkIHByaW1hcnkga2V5IHJhbmdlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhIGRpc3RyaWJ1dGlvbjsgU2hhcmQgb3B0aW1pemF0aW9uOyBUaHJvdHRsaW5nIHByZXZlbnRpb247IFBhcnRpdGlvbiBzdHJhdGVneTsgUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBLaW5lc2lzIGVuZHBvaW50IHBhcnRpdGlvbkluY2x1ZGVTY2hlbWFUYWJsZSBmb3IgcGFydGl0aW9uIHZhbHVlIHByZWZpeGluZyBhbmQgc2hhcmQgZGlzdHJpYnV0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgZGVmYXVsdCBmYWxzZTsgaW1wcm92ZXMgZGF0YSBkaXN0cmlidXRpb24gd2hlbiBwYXJ0aXRpb24gdHlwZSBpcyBwcmltYXJ5LWtleS10eXBlXG4gICAqKi9cbiAgcmVhZG9ubHkgcGFydGl0aW9uSW5jbHVkZVNjaGVtYVRhYmxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgSUFNIHJvbGUgQVJOIGZvciBETVMgc2VydmljZSBhY2Nlc3MgdG8gS2luZXNpcyBkYXRhIHN0cmVhbSBmb3Igc2VjdXJlIHN0cmVhbWluZyBvcGVyYXRpb25zLiBTcGVjaWZpZXMgdGhlIElBTSByb2xlIGVuYWJsaW5nIERNUyB0byB3cml0ZSB0byBLaW5lc2lzIGRhdGEgc3RyZWFtLCByZXF1aXJpbmcgaWFtOlBhc3NSb2xlIGFjdGlvbiBmb3Igc2VjdXJlIHN0cmVhbWluZyBkYXRhIGludGVncmF0aW9uIGFuZCByZWFsLXRpbWUgZGF0YSBtaWdyYXRpb24gb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTZXJ2aWNlIGFjY2VzczsgSUFNIHJvbGUgY29uZmlndXJhdGlvbjsgS2luZXNpcyBwZXJtaXNzaW9uczsgU2VjdXJlIHN0cmVhbWluZzsgRGF0YSBtaWdyYXRpb24gYXV0aG9yaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBJQU0gcm9sZSBBUk4gZm9yIERNUyBzZXJ2aWNlIGFjY2VzcyB0byBLaW5lc2lzIGRhdGEgc3RyZWFtIG9wZXJhdGlvbnMgYW5kIHN0cmVhbWluZyBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIElBTSByb2xlIEFSTiBpZiBwcm92aWRlZDsgcmVxdWlyZXMgaWFtOlBhc3NSb2xlIGFjdGlvbjsgZW5hYmxlcyBLaW5lc2lzIGRhdGEgc3RyZWFtIHdyaXRlIG9wZXJhdGlvbnNcbiAgICoqL1xuICByZWFkb25seSBzZXJ2aWNlQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgQW1hem9uIEtpbmVzaXMgRGF0YSBTdHJlYW1zIGVuZHBvaW50IEFSTiBmb3IgRE1TIHN0cmVhbWluZyBkZXN0aW5hdGlvbiBjb25maWd1cmF0aW9uLiBTcGVjaWZpZXMgdGhlIHRhcmdldCBLaW5lc2lzIGRhdGEgc3RyZWFtIHdoZXJlIG1pZ3JhdGVkIGRhdGFiYXNlIGRhdGEgd2lsbCBiZSBzdHJlYW1lZCwgc2VydmluZyBhcyB0aGUgcHJpbWFyeSBkZXN0aW5hdGlvbiBmb3IgcmVhbC10aW1lIGRhdGFiYXNlIHN0cmVhbWluZyB3b3JrZmxvd3MgYW5kIGRhdGEgaW50ZWdyYXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogU3RyZWFtaW5nIGRlc3RpbmF0aW9uOyBLaW5lc2lzIGludGVncmF0aW9uOyBSZWFsLXRpbWUgbWlncmF0aW9uOyBEYXRhIHN0cmVhbSB0YXJnZXQ7IERhdGFiYXNlIHN0cmVhbWluZyBlbmRwb2ludFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBLaW5lc2lzIERhdGEgU3RyZWFtcyBBUk4gZm9yIERNUyBzdHJlYW1pbmcgZGVzdGluYXRpb24gYW5kIHJlYWwtdGltZSBkYXRhIGludGVncmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgS2luZXNpcyBEYXRhIFN0cmVhbXMgQVJOOyByZXF1aXJlZCBmb3IgS2luZXNpcyBlbmRwb2ludCBjb25maWd1cmF0aW9uIGFuZCBzdHJlYW1pbmcgZGVzdGluYXRpb25cbiAgICoqL1xuICByZWFkb25seSBzdHJlYW1Bcm46IHN0cmluZztcbn1cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBkZWZpbmVzIGFuIEFtYXpvbiBSZWRzaGlmdCBlbmRwb2ludC4gTW9kaWZpZWQgZnJvbSB0aGUgZXF1aXZhbGVudCBMMSBDb25zdHJ1Y3QgdG8gcHJldmVudCB1c2Ugb2YgcGxhaW50ZXh0IGNyZWRlbnRpYWxzIGFuZCBlbmZvcmNlIHVzZSBvZiBLTVMgZW5jcnlwdGlvbi5cbiAqIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIG91dHB1dCBmb3JtYXQgb2YgcmVjb3JkcyBhcHBsaWVkIHRvIHRoZSBlbmRwb2ludCBhbmQgZGV0YWlscyBvZiB0cmFuc2FjdGlvbiBhbmQgY29udHJvbCB0YWJsZSBkYXRhIGluZm9ybWF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBhdmFpbGFibGUgc2V0dGluZ3MsIHNlZSBbRXh0cmEgY29ubmVjdGlvbiBhdHRyaWJ1dGVzIHdoZW4gdXNpbmcgQW1hem9uIFJlZHNoaWZ0IGFzIGEgdGFyZ2V0IGZvciBBV1MgRE1TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9UYXJnZXQuUmVkc2hpZnQuaHRtbCNDSEFQX1RhcmdldC5SZWRzaGlmdC5Db25uZWN0aW9uQXR0cmliKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gKiBAc3RydWN0XG4gKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LXJlZHNoaWZ0c2V0dGluZ3MuaHRtbFxuICovXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBSZWRzaGlmdCBzZXR0aW5ncyBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgRE1TIHByb3ZpZGluZyBkYXRhIHdhcmVob3VzZSBpbnRlZ3JhdGlvbiBhbmQgYnVsayBsb2FkaW5nIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBSZWRzaGlmdC1zcGVjaWZpYyBwcm9wZXJ0aWVzIGZvciBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBpbmNsdWRpbmcgZGF0YSBsb2FkaW5nIGNvbmZpZ3VyYXRpb24sIFMzIGludGVncmF0aW9uLCBhbmQgUmVkc2hpZnQgb3B0aW1pemF0aW9uIGZvciBkYXRhIHdhcmVob3VzZSBtaWdyYXRpb24gd29ya2Zsb3dzLlxuICpcbiAqIFVzZSBjYXNlczogRGF0YSB3YXJlaG91c2UgbWlncmF0aW9uOyBSZWRzaGlmdCBpbnRlZ3JhdGlvbjsgQnVsayBkYXRhIGxvYWRpbmc7IERhdGEgd2FyZWhvdXNlIHdvcmtmbG93czsgUzMgc3RhZ2luZzsgRE1TIFJlZHNoaWZ0IGludGVncmF0aW9uXG4gKlxuICogQVdTOiBBV1MgRE1TIFJlZHNoaWZ0IGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gd2l0aCBkYXRhIHdhcmVob3VzZSBpbnRlZ3JhdGlvbiBhbmQgYnVsayBsb2FkaW5nIG9wdGltaXphdGlvblxuICpcbiAqIFZhbGlkYXRpb246IENvbmZpZ3VyYXRpb24gbXVzdCBiZSB2YWxpZCBmb3IgRE1TIG1pZ3JhdGlvbjsgcHJvcGVydGllcyBtdXN0IGNvbmZvcm0gdG8gQVdTIERNUyBhbmQgUmVkc2hpZnQtc3BlY2lmaWMgcmVxdWlyZW1lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkc2hpZnRTZXR0aW5nc1Byb3BlcnR5IHtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBhbGxvdyBhbnkgZGF0ZSBmb3JtYXQgaW5jbHVkaW5nIGludmFsaWQgZm9ybWF0cyBmb3IgZmxleGlibGUgZGF0ZSBoYW5kbGluZyBpbiBSZWRzaGlmdCBkYXRhIHdhcmVob3VzZS4gRW5hYmxlcyBsb2FkaW5nIG9mIGFueSBkYXRlIGZvcm1hdCBpbmNsdWRpbmcgaW52YWxpZCBmb3JtYXRzIGxpa2UgMDAvMDAvMDAgMDA6MDA6MDAgd2l0aG91dCBlcnJvcnMsIHdpdGggZmFsc2UgZGVmYXVsdCwgcmVxdWlyaW5nIERBVEVGT1JNQVQgcGFyYW1ldGVyIGZvciBwcm9wZXIgZGF0ZSBoYW5kbGluZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBGbGV4aWJsZSBkYXRlIGhhbmRsaW5nOyBJbnZhbGlkIGRhdGUgcHJvY2Vzc2luZzsgRGF0ZSBmb3JtYXQgdG9sZXJhbmNlOyBEYXRhIHdhcmVob3VzZSBsb2FkaW5nOyBUSU1FU1RBTVAvREFURSBjb2x1bW5zXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCBhY2NlcHRBbnlEYXRlIGZvciBmbGV4aWJsZSBkYXRlIGZvcm1hdCBoYW5kbGluZyBpbiBkYXRhIHdhcmVob3VzZSBsb2FkaW5nXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgZGVmYXVsdCBmYWxzZTsgYXBwbGllcyBvbmx5IHRvIFRJTUVTVEFNUCBhbmQgREFURSBjb2x1bW5zOyByZXF1aXJlcyBEQVRFRk9STUFUIHBhcmFtZXRlclxuICAgKiovXG4gIHJlYWRvbmx5IGFjY2VwdEFueURhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBTUUwgc2NyaXB0IHRvIGV4ZWN1dGUgYWZ0ZXIgY29ubmVjdGluZyB0byBSZWRzaGlmdCBlbmRwb2ludCBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIHNldHVwIHRhc2tzLiBQcm92aWRlcyBjdXN0b20gaW5pdGlhbGl6YXRpb24gbG9naWMgdGhhdCBydW5zIGFmdGVyIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCB0byBSZWRzaGlmdCBkYXRhIHdhcmVob3VzZSwgZW5hYmxpbmcgZGF0YWJhc2Utc3BlY2lmaWMgc2V0dXAgYW5kIGNvbmZpZ3VyYXRpb24gZm9yIGRhdGEgd2FyZWhvdXNlIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGF0YWJhc2UgaW5pdGlhbGl6YXRpb247IENvbm5lY3Rpb24gc2V0dXA7IEN1c3RvbSBjb25maWd1cmF0aW9uOyBQb3N0LWNvbm5lY3Rpb24gdGFza3M7IERhdGEgd2FyZWhvdXNlIHByZXBhcmF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCBhZnRlckNvbm5lY3RTY3JpcHQgZm9yIHBvc3QtY29ubmVjdGlvbiBpbml0aWFsaXphdGlvbiBhbmQgc2V0dXBcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBTUUwgc2NyaXB0IGNvZGUgaWYgcHJvdmlkZWQ7IHNjcmlwdCBjb250ZW50IG5vdCBmaWxlbmFtZTsgZW5hYmxlcyBjdXN0b20gUmVkc2hpZnQgaW5pdGlhbGl6YXRpb25cbiAgICoqL1xuICByZWFkb25seSBhZnRlckNvbm5lY3RTY3JpcHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIFMzIGZvbGRlciBmb3Igc3RvcmluZyBDU1YgZmlsZXMgYmVmb3JlIHVwbG9hZGluZyB0byBSZWRzaGlmdCBjbHVzdGVyIGZvciBzdGFnZWQgZGF0YSBsb2FkaW5nLiBTcGVjaWZpZXMgUzMgZm9sZGVyIHdoZXJlIENTViBmaWxlcyBhcmUgc3RvcmVkIGJlZm9yZSBSZWRzaGlmdCBDT1BZIG9wZXJhdGlvbnMsIHdpdGggZnVsbCBsb2FkIHVzaW5nIEJ1Y2tldEZvbGRlci9UYWJsZUlEIHBhdGggYW5kIENEQyB1c2luZyBCdWNrZXRGb2xkZXIvTmV0Q2hhbmdlc1RhYmxlSUQgcGF0aCBmb3Igb3JnYW5pemVkIGRhdGEgc3RhZ2luZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhIHN0YWdpbmc7IFMzIG9yZ2FuaXphdGlvbjsgQ1NWIHN0b3JhZ2U7IFJlZHNoaWZ0IENPUFkgb3BlcmF0aW9uczsgU3RhZ2VkIGxvYWRpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgUzMgZm9sZGVyIHBhdGggZm9yIERNUyBSZWRzaGlmdCBDU1YgZmlsZSBzdGFnaW5nIGFuZCBDT1BZIG9wZXJhdGlvbiBvcmdhbml6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBTMyBmb2xkZXIgcGF0aCBpZiBwcm92aWRlZDsgdXNlZCBmb3IgQ1NWIHN0YWdpbmcgYmVmb3JlIFJlZHNoaWZ0IENPUFkgb3BlcmF0aW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IGJ1Y2tldEZvbGRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgUzMgYnVja2V0IG5hbWUgZm9yIGludGVybWVkaWF0ZSBDU1YgZmlsZSBzdG9yYWdlIGJlZm9yZSBSZWRzaGlmdCBkYXRhIGxvYWRpbmcgb3BlcmF0aW9ucy4gU3BlY2lmaWVzIHRoZSBTMyBidWNrZXQgd2hlcmUgQ1NWIGZpbGVzIGFyZSBzdG9yZWQgYmVmb3JlIHVwbG9hZGluZyB0byBSZWRzaGlmdCBjbHVzdGVyLCBzZXJ2aW5nIGFzIHN0YWdpbmcgYXJlYSBmb3IgUmVkc2hpZnQgQ09QWSBvcGVyYXRpb25zIGFuZCBkYXRhIHdhcmVob3VzZSBsb2FkaW5nIHdvcmtmbG93cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhIHN0YWdpbmc7IFMzIHN0b3JhZ2U7IENTViBpbnRlcm1lZGlhdGUgc3RvcmFnZTsgUmVkc2hpZnQgbG9hZGluZzsgRGF0YSB3YXJlaG91c2Ugc3RhZ2luZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBTMyBidWNrZXQgbmFtZSBmb3IgRE1TIFJlZHNoaWZ0IENTViBmaWxlIHN0YWdpbmcgYW5kIGRhdGEgd2FyZWhvdXNlIGxvYWRpbmcgb3BlcmF0aW9uc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFMzIGJ1Y2tldCBuYW1lOyByZXF1aXJlZCBmb3IgUmVkc2hpZnQgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBhbmQgQ1NWIHN0YWdpbmcgb3BlcmF0aW9uc1xuICAgKiovXG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBlbmFibGUgY2FzZS1zZW5zaXRpdmUgc2NoZW1hIG5hbWVzIGluIFJlZHNoaWZ0IGRhdGEgd2FyZWhvdXNlIGZvciBwcmVjaXNlIHNjaGVtYSBoYW5kbGluZy4gRW5hYmxlcyBjYXNlLXNlbnNpdGl2ZSBzY2hlbWEgbmFtZSBzdXBwb3J0IHdoZW4gUmVkc2hpZnQgaXMgY29uZmlndXJlZCBmb3IgY2FzZSBzZW5zaXRpdml0eSB3aXRoIGRlZmF1bHQgZmFsc2UsIGVuc3VyaW5nIHByb3BlciBzY2hlbWEgbmFtZSBoYW5kbGluZyBhbmQgZGF0YSBvcmdhbml6YXRpb24gaW4gZGF0YSB3YXJlaG91c2Ugb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDYXNlLXNlbnNpdGl2ZSBzY2hlbWFzOyBTY2hlbWEgbmFtZSBwcmVjaXNpb247IERhdGEgb3JnYW5pemF0aW9uOyBSZWRzaGlmdCBjb25maWd1cmF0aW9uOyBTY2hlbWEgaGFuZGxpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFJlZHNoaWZ0IGVuZHBvaW50IGNhc2VTZW5zaXRpdmVOYW1lcyBmb3IgY2FzZS1zZW5zaXRpdmUgc2NoZW1hIG5hbWUgaGFuZGxpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIGlmIHByb3ZpZGVkOyBkZWZhdWx0IGZhbHNlOyByZXF1aXJlcyBSZWRzaGlmdCBjb25maWd1cmVkIGZvciBjYXNlLXNlbnNpdGl2ZSBzY2hlbWEgbmFtZXNcbiAgICoqL1xuICByZWFkb25seSBjYXNlU2Vuc2l0aXZlTmFtZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIGVuYWJsZSBhdXRvbWF0aWMgY29tcHJlc3Npb24gZm9yIGVtcHR5IFJlZHNoaWZ0IHRhYmxlcyBmb3Igc3RvcmFnZSBvcHRpbWl6YXRpb24uIEVuYWJsZXMgYXV0b21hdGljIGNvbXByZXNzaW9uIHdoZW4gdGFibGUgaXMgZW1wdHkgZXZlbiB3aXRoIGV4aXN0aW5nIGVuY29kaW5ncyBvdGhlciB0aGFuIFJBVywgd2l0aCB0cnVlIGRlZmF1bHQsIG9wdGltaXppbmcgc3RvcmFnZSBlZmZpY2llbmN5IGFuZCBxdWVyeSBwZXJmb3JtYW5jZSBpbiBkYXRhIHdhcmVob3VzZSBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFN0b3JhZ2Ugb3B0aW1pemF0aW9uOyBDb21wcmVzc2lvbiBtYW5hZ2VtZW50OyBQZXJmb3JtYW5jZSB0dW5pbmc7IERhdGEgd2FyZWhvdXNlIG9wdGltaXphdGlvbjsgQXV0b21hdGljIGVuY29kaW5nXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCBjb21wVXBkYXRlIGZvciBhdXRvbWF0aWMgY29tcHJlc3Npb24gYW5kIHN0b3JhZ2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgZGVmYXVsdCB0cnVlOyBhcHBsaWVzIGF1dG9tYXRpYyBjb21wcmVzc2lvbiB0byBlbXB0eSB0YWJsZXMgcmVnYXJkbGVzcyBvZiBleGlzdGluZyBlbmNvZGluZ3NcbiAgICoqL1xuICByZWFkb25seSBjb21wVXBkYXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgY29ubmVjdGlvbiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgUmVkc2hpZnQgZW5kcG9pbnQgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LiBTcGVjaWZpZXMgdGhlIG1heGltdW0gdGltZSB0byB3YWl0IGZvciBpbml0aWFsIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCB0byBSZWRzaGlmdCBkYXRhIHdhcmVob3VzZSwgY29udHJvbGxpbmcgY29ubmVjdGlvbiByZWxpYWJpbGl0eSBhbmQgdGltZW91dCBiZWhhdmlvciBmb3IgZGF0YSB3YXJlaG91c2UgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENvbm5lY3Rpb24gcmVsaWFiaWxpdHk7IFRpbWVvdXQgY29udHJvbDsgTmV0d29yayBjb25maWd1cmF0aW9uOyBDb25uZWN0aW9uIG1hbmFnZW1lbnQ7IERhdGEgd2FyZWhvdXNlIGNvbm5lY3Rpdml0eVxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUmVkc2hpZnQgZW5kcG9pbnQgY29ubmVjdGlvblRpbWVvdXQgZm9yIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCB0aW1lb3V0IGNvbnRyb2xcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIG1pbGxpc2Vjb25kcyBpZiBwcm92aWRlZDsgY29udHJvbHMgaW5pdGlhbCBjb25uZWN0aW9uIHRpbWVvdXQgZm9yIFJlZHNoaWZ0IGVuZHBvaW50XG4gICAqKi9cbiAgcmVhZG9ubHkgY29ubmVjdGlvblRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGRhdGUgZm9ybWF0IHNwZWNpZmljYXRpb24gZm9yIFJlZHNoaWZ0IGRhdGEgbG9hZGluZyBhbmQgZGF0ZSBoYW5kbGluZy4gU3BlY2lmaWVzIGRhdGUgZm9ybWF0IHdpdGggJ2F1dG8nIGZvciBhdXRvbWF0aWMgcmVjb2duaXRpb24sIGN1c3RvbSBmb3JtYXQgc3RyaW5nIGluIHF1b3Rlcywgb3IgTlVMTCBmb3IgZGVmYXVsdCBZWVlZLU1NLUREIGZvcm1hdCwgZW5hYmxpbmcgZmxleGlibGUgZGF0ZSBwYXJzaW5nIGFuZCBkYXRhIHdhcmVob3VzZSBkYXRlIGhhbmRsaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGUgZm9ybWF0IHNwZWNpZmljYXRpb247IEZsZXhpYmxlIGRhdGUgcGFyc2luZzsgRGF0YSB3YXJlaG91c2UgbG9hZGluZzsgRGF0ZSBoYW5kbGluZzsgRm9ybWF0IHJlY29nbml0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCBkYXRlRm9ybWF0IGZvciBkYXRlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGFuZCBwYXJzaW5nIGNvbnRyb2xcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSAnYXV0bycsIHF1b3RlZCBmb3JtYXQgc3RyaW5nLCBvciBOVUxMIGlmIHByb3ZpZGVkOyBkZWZhdWx0IFlZWVktTU0tREQ7IHVzZSAnYXV0bycgZm9yIG1peGVkIGZvcm1hdHNcbiAgICoqL1xuICByZWFkb25seSBkYXRlRm9ybWF0Pzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIG1pZ3JhdGUgZW1wdHkgQ0hBUiBhbmQgVkFSQ0hBUiBmaWVsZHMgYXMgTlVMTCBmb3IgY29uc2lzdGVudCBudWxsIGhhbmRsaW5nLiBFbmFibGVzIG1pZ3JhdGlvbiBvZiBlbXB0eSBzdHJpbmcgZmllbGRzIGFzIE5VTEwgdmFsdWVzIHdpdGggdHJ1ZSBzZXR0aW5nIGFuZCBmYWxzZSBkZWZhdWx0LCBlbnN1cmluZyBjb25zaXN0ZW50IG51bGwgcmVwcmVzZW50YXRpb24gaW4gUmVkc2hpZnQgZGF0YSB3YXJlaG91c2Ugb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBOVUxMIGhhbmRsaW5nOyBFbXB0eSBzdHJpbmcgcHJvY2Vzc2luZzsgRGF0YSBjb25zaXN0ZW5jeTsgUmVkc2hpZnQgbWlncmF0aW9uOyBGaWVsZCByZXByZXNlbnRhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUmVkc2hpZnQgZW5kcG9pbnQgZW1wdHlBc051bGwgZm9yIGVtcHR5IGZpZWxkIE5VTEwgY29udmVyc2lvbiBhbmQgY29uc2lzdGVudCBkYXRhIHJlcHJlc2VudGF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiBpZiBwcm92aWRlZDsgZGVmYXVsdCBmYWxzZTsgY29udmVydHMgZW1wdHkgQ0hBUi9WQVJDSEFSIGZpZWxkcyB0byBOVUxMIHdoZW4gdHJ1ZVxuICAgKiovXG4gIHJlYWRvbmx5IGVtcHR5QXNOdWxsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBvdmVycmlkZSBhdXRvLWdlbmVyYXRlZCBJREVOVElUWSBjb2x1bW4gdmFsdWVzIHdpdGggZXhwbGljaXQgc291cmNlIHZhbHVlcyBmb3IgZnVsbC1sb2FkIG1pZ3JhdGlvbi4gRW5hYmxlcyB0YWJsZXMgd2l0aCBJREVOVElUWSBjb2x1bW5zIHRvIHVzZSBleHBsaWNpdCB2YWx1ZXMgZnJvbSBzb3VyY2UgZGF0YSBmaWxlcyBpbnN0ZWFkIG9mIGF1dG8tZ2VuZXJhdGVkIHZhbHVlcywgYXBwbGljYWJsZSBvbmx5IHRvIGZ1bGwtbG9hZCBtaWdyYXRpb24gdGFza3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogSURFTlRJVFkgY29sdW1uIGhhbmRsaW5nOyBFeHBsaWNpdCB2YWx1ZSBsb2FkaW5nOyBGdWxsLWxvYWQgbWlncmF0aW9uOyBTb3VyY2UgdmFsdWUgcHJlc2VydmF0aW9uOyBJZGVudGl0eSBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCBleHBsaWNpdElkcyBmb3IgSURFTlRJVFkgY29sdW1uIHZhbHVlIG92ZXJyaWRlIGluIGZ1bGwtbG9hZCBtaWdyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIGlmIHByb3ZpZGVkOyBkZWZhdWx0IGZhbHNlOyBhcHBsaWVzIG9ubHkgdG8gZnVsbC1sb2FkIG1pZ3JhdGlvbiB0YXNrcyB3aXRoIElERU5USVRZIGNvbHVtbnNcbiAgICoqL1xuICByZWFkb25seSBleHBsaWNpdElkcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIGZvciBzaW5nbGUgZmlsZSB1cGxvYWQgdG8gb3B0aW1pemUgUzMgbXVsdGlwYXJ0IHVwbG9hZCBwZXJmb3JtYW5jZS4gU3BlY2lmaWVzIHRocmVhZCBjb3VudCAoMS02NCkgZm9yIHVwbG9hZGluZyBzaW5nbGUgQ1NWIGZpbGVzIHRvIFMzIHVzaW5nIG11bHRpcGFydCB1cGxvYWQgd2l0aCBkZWZhdWx0IDEwLCBhZmZlY3RpbmcgdXBsb2FkIHBlcmZvcm1hbmNlIGFuZCB0aHJvdWdocHV0IGZvciBSZWRzaGlmdCBzdGFnaW5nIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVXBsb2FkIG9wdGltaXphdGlvbjsgUGFyYWxsZWwgcHJvY2Vzc2luZzsgUzMgbXVsdGlwYXJ0IHVwbG9hZDsgUGVyZm9ybWFuY2UgdHVuaW5nOyBGaWxlIHRyYW5zZmVyIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBTMyBtdWx0aXBhcnQgdXBsb2FkIHRocmVhZCBjb25maWd1cmF0aW9uIGZvciBETVMgUmVkc2hpZnQgQ1NWIGZpbGUgdXBsb2FkIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGludGVnZXIgYmV0d2VlbiAxLTY0IGlmIHByb3ZpZGVkOyBkZWZhdWx0IDEwOyBjb250cm9scyBwYXJhbGxlbCBzdHJlYW1zIGZvciBTMyBtdWx0aXBhcnQgdXBsb2FkXG4gICAqKi9cbiAgcmVhZG9ubHkgZmlsZVRyYW5zZmVyVXBsb2FkU3RyZWFtcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIFJlZHNoaWZ0IGNsdXN0ZXIgb3BlcmF0aW9ucyBpbmNsdWRpbmcgQ09QWSwgSU5TRVJULCBERUxFVEUsIGFuZCBVUERBVEUuIFNwZWNpZmllcyBtYXhpbXVtIHdhaXQgdGltZSBmb3IgRE1TIG9wZXJhdGlvbnMgb24gUmVkc2hpZnQgY2x1c3RlciwgY29udHJvbGxpbmcgb3BlcmF0aW9uIHRpbWVvdXQgYmVoYXZpb3IgYW5kIHByZXZlbnRpbmcgaHVuZyBvcGVyYXRpb25zIGluIGRhdGEgd2FyZWhvdXNlIGxvYWRpbmcuXG4gICAqXG4gICAqIFVzZSBjYXNlczogT3BlcmF0aW9uIHRpbWVvdXQ7IFBlcmZvcm1hbmNlIGNvbnRyb2w7IFJlZHNoaWZ0IG9wZXJhdGlvbnM7IFRpbWVvdXQgbWFuYWdlbWVudDsgRGF0YSB3YXJlaG91c2UgbG9hZGluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUmVkc2hpZnQgZW5kcG9pbnQgbG9hZFRpbWVvdXQgZm9yIGNsdXN0ZXIgb3BlcmF0aW9uIHRpbWVvdXQgY29udHJvbCBhbmQgcGVyZm9ybWFuY2UgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgaW4gbWlsbGlzZWNvbmRzIGlmIHByb3ZpZGVkOyBjb250cm9scyB0aW1lb3V0IGZvciBSZWRzaGlmdCBDT1BZL0lOU0VSVC9ERUxFVEUvVVBEQVRFIG9wZXJhdGlvbnNcbiAgICoqL1xuICByZWFkb25seSBsb2FkVGltZW91dD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBtaWdyYXRlIGJvb2xlYW4gdHlwZSBhcyBuYXRpdmUgYm9vbGVhbiBpbiBSZWRzaGlmdCBmb3IgcHJvcGVyIGRhdGEgdHlwZSByZXByZXNlbnRhdGlvbi4gRW5hYmxlcyBtaWdyYXRpb24gb2YgYm9vbGVhbiB2YWx1ZXMgYXMgYm9vbGVhbiB0eXBlIGluc3RlYWQgb2YgZGVmYXVsdCB2YXJjaGFyKDEpLCByZXF1aXJpbmcgc2V0dGluZyBvbiBib3RoIHNvdXJjZSBhbmQgdGFyZ2V0IGVuZHBvaW50cyBmb3IgcHJvcGVyIGJvb2xlYW4gZGF0YSB0eXBlIGhhbmRsaW5nIGluIGRhdGEgd2FyZWhvdXNlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEJvb2xlYW4gdHlwZSBwcmVzZXJ2YXRpb247IERhdGEgdHlwZSBhY2N1cmFjeTsgUmVkc2hpZnQgbmF0aXZlIHR5cGVzOyBUeXBlIG1hcHBpbmc7IERhdGEgd2FyZWhvdXNlIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUmVkc2hpZnQgZW5kcG9pbnQgbWFwQm9vbGVhbkFzQm9vbGVhbiBmb3IgbmF0aXZlIGJvb2xlYW4gdHlwZSBtaWdyYXRpb24gYW5kIGRhdGEgdHlwZSBwcmVzZXJ2YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIGlmIHByb3ZpZGVkOyBtdXN0IGJlIHNldCBvbiBib3RoIHNvdXJjZSBhbmQgdGFyZ2V0IGVuZHBvaW50czsgcHJlc2VydmVzIGJvb2xlYW4gZGF0YSB0eXBlIGluIFJlZHNoaWZ0XG4gICAqKi9cbiAgcmVhZG9ubHkgbWFwQm9vbGVhbkFzQm9vbGVhbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG1heGltdW0gQ1NWIGZpbGUgc2l6ZSBpbiBLQiBmb3IgUzMgc3RhZ2luZyBhbmQgUmVkc2hpZnQgZGF0YSB0cmFuc2ZlciBvcHRpbWl6YXRpb24uIFNwZWNpZmllcyBtYXhpbXVtIHNpemUgbGltaXQgZm9yIENTViBmaWxlcyB1c2VkIGluIFMzIGJ1Y2tldCBsb2FkaW5nIGFuZCBSZWRzaGlmdCBkYXRhIHRyYW5zZmVyIHdpdGggZGVmYXVsdCAxIEdCICgxMDQ4NTc2S0IpLCBhZmZlY3Rpbmcgc3RhZ2luZyBwZXJmb3JtYW5jZSBhbmQgdHJhbnNmZXIgZWZmaWNpZW5jeS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBGaWxlIHNpemUgY29udHJvbDsgUzMgc3RhZ2luZyBvcHRpbWl6YXRpb247IFRyYW5zZmVyIHBlcmZvcm1hbmNlOyBEYXRhIHdhcmVob3VzZSBsb2FkaW5nOyBTdG9yYWdlIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFJlZHNoaWZ0IGVuZHBvaW50IG1heEZpbGVTaXplIGZvciBDU1YgZmlsZSBzaXplIGxpbWl0cyBpbiBTMyBzdGFnaW5nIGFuZCBkYXRhIHRyYW5zZmVyXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcG9zaXRpdmUgaW50ZWdlciBpbiBLQiBpZiBwcm92aWRlZDsgZGVmYXVsdCAxIEdCOyBjb250cm9scyBDU1YgZmlsZSBzaXplIGZvciBTMyBzdGFnaW5nIGFuZCBSZWRzaGlmdCB0cmFuc2ZlclxuICAgKiovXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHJlbW92ZSBzdXJyb3VuZGluZyBxdW90YXRpb24gbWFya3MgZnJvbSBzdHJpbmdzIGluIGluY29taW5nIGRhdGEgZm9yIGNsZWFuZXIgZGF0YSBwcm9jZXNzaW5nLiBFbmFibGVzIHJlbW92YWwgb2YgcXVvdGF0aW9uIG1hcmtzIHdoaWxlIHJldGFpbmluZyBhbGwgY2hhcmFjdGVycyB3aXRoaW4gcXVvdGVzIGluY2x1ZGluZyBkZWxpbWl0ZXJzLCB3aXRoIGZhbHNlIGRlZmF1bHQsIGFmZmVjdGluZyBzdHJpbmcgZGF0YSBwcm9jZXNzaW5nIGluIFJlZHNoaWZ0IG1pZ3JhdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTdHJpbmcgcHJvY2Vzc2luZzsgUXVvdGF0aW9uIGhhbmRsaW5nOyBEYXRhIGNsZWFuaW5nOyBDaGFyYWN0ZXIgcHJvY2Vzc2luZzsgU3RyaW5nIGZvcm1hdHRpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFJlZHNoaWZ0IGVuZHBvaW50IHJlbW92ZVF1b3RlcyBmb3IgcXVvdGF0aW9uIG1hcmsgcmVtb3ZhbCBhbmQgc3RyaW5nIGRhdGEgcHJvY2Vzc2luZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gaWYgcHJvdmlkZWQ7IGRlZmF1bHQgZmFsc2U7IHJlbW92ZXMgc3Vycm91bmRpbmcgcXVvdGF0aW9uIG1hcmtzIHdoaWxlIHByZXNlcnZpbmcgaW50ZXJuYWwgY29udGVudFxuICAgKiovXG4gIHJlYWRvbmx5IHJlbW92ZVF1b3Rlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHJlcGxhY2VtZW50IGNoYXJhY3RlciBmb3IgaW52YWxpZCBjaGFyYWN0ZXJzIHNwZWNpZmllZCBpbiBSZXBsYWNlSW52YWxpZENoYXJzIGZvciBkYXRhIGNsZWFuaW5nLiBTcGVjaWZpZXMgdGhlIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIgZm9yIGludmFsaWQgY2hhcmFjdGVycyBkdXJpbmcgZGF0YSBtaWdyYXRpb24gd2l0aCBkZWZhdWx0IFwiP1wiIGNoYXJhY3Rlciwgd29ya2luZyB3aXRoIFJlcGxhY2VJbnZhbGlkQ2hhcnMgZm9yIGNoYXJhY3RlciByZXBsYWNlbWVudCBhbmQgZGF0YSBjbGVhbmluZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDaGFyYWN0ZXIgcmVwbGFjZW1lbnQ7IERhdGEgY2xlYW5pbmc7IEludmFsaWQgY2hhcmFjdGVyIGhhbmRsaW5nOyBTdHJpbmcgcHJvY2Vzc2luZzsgRGF0YSBzYW5pdGl6YXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFJlZHNoaWZ0IGVuZHBvaW50IHJlcGxhY2VDaGFycyBmb3IgaW52YWxpZCBjaGFyYWN0ZXIgcmVwbGFjZW1lbnQgYW5kIGRhdGEgY2xlYW5pbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgXCI/XCI7IHdvcmtzIHdpdGggUmVwbGFjZUludmFsaWRDaGFycyBmb3IgY2hhcmFjdGVyIHN1YnN0aXR1dGlvblxuICAgKiovXG4gIHJlYWRvbmx5IHJlcGxhY2VDaGFycz86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbGlzdCBvZiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UgZHVyaW5nIGRhdGEgbWlncmF0aW9uIGZvciBkYXRhIGNsZWFuaW5nLiBTcGVjaWZpZXMgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSByZXBsYWNlZCB1c2luZyBSZXBsYWNlQ2hhcnMgc3Vic3RpdHV0aW9uLCBlbmFibGluZyBkYXRhIHNhbml0aXphdGlvbiBhbmQgY2hhcmFjdGVyIG5vcm1hbGl6YXRpb24gZHVyaW5nIFJlZHNoaWZ0IGRhdGEgd2FyZWhvdXNlIG1pZ3JhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENoYXJhY3RlciBmaWx0ZXJpbmc7IERhdGEgc2FuaXRpemF0aW9uOyBJbnZhbGlkIGNoYXJhY3RlciByZW1vdmFsOyBTdHJpbmcgbm9ybWFsaXphdGlvbjsgRGF0YSBjbGVhbmluZ1xuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUmVkc2hpZnQgZW5kcG9pbnQgcmVwbGFjZUludmFsaWRDaGFycyBmb3IgY2hhcmFjdGVyIGZpbHRlcmluZyBhbmQgZGF0YSBzYW5pdGl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBjaGFyYWN0ZXIgbGlzdCBpZiBwcm92aWRlZDsgd29ya3Mgd2l0aCBSZXBsYWNlQ2hhcnMgZm9yIGNoYXJhY3RlciByZXBsYWNlbWVudCBhbmQgZGF0YSBjbGVhbmluZ1xuICAgKiovXG4gIHJlYWRvbmx5IHJlcGxhY2VJbnZhbGlkQ2hhcnM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIEFSTiBmb3IgQVdTIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgdG8gUmVkc2hpZnQgZW5kcG9pbnQgY3JlZGVudGlhbHMuIFNwZWNpZmllcyB0aGUgSUFNIHJvbGUgd2l0aCByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgU2VjcmV0c01hbmFnZXJTZWNyZXQgY29udGFpbmluZyBSZWRzaGlmdCBlbmRwb2ludCBjcmVkZW50aWFscywgZW5hYmxpbmcgc2VjdXJlIGNyZWRlbnRpYWwgbWFuYWdlbWVudCBhbmQgYWNjZXNzIGNvbnRyb2wgZm9yIGRhdGEgd2FyZWhvdXNlIGNvbm5lY3Rpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENyZWRlbnRpYWwgbWFuYWdlbWVudDsgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uOyBTZWN1cmUgYWNjZXNzOyBJQU0gcm9sZSBjb25maWd1cmF0aW9uOyBSZWRzaGlmdCBhdXRoZW50aWNhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBJQU0gcm9sZSBBUk4gZm9yIFNlY3JldHMgTWFuYWdlciBhY2Nlc3MgdG8gUmVkc2hpZnQgZW5kcG9pbnQgY3JlZGVudGlhbHMgYW5kIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgSUFNIHJvbGUgQVJOIGlmIHByb3ZpZGVkOyByZXF1aXJlcyBpYW06UGFzc1JvbGUgYWN0aW9uIGFuZCBTZWNyZXRzIE1hbmFnZXIgYWNjZXNzIHBlcm1pc3Npb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJBY2Nlc3NSb2xlQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTiBjb250YWluaW5nIFJlZHNoaWZ0IGVuZHBvaW50IGNvbm5lY3Rpb24gZGV0YWlscyBmb3Igc2VjdXJlIGNyZWRlbnRpYWwgbWFuYWdlbWVudC4gU3BlY2lmaWVzIHRoZSBmdWxsIEFSTiBvZiB0aGUgc2VjcmV0IGNvbnRhaW5pbmcgUmVkc2hpZnQgZGF0YWJhc2UgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgY3JlZGVudGlhbHMsIGVuYWJsaW5nIHNlY3VyZSBzdG9yYWdlIGFuZCBhY2Nlc3Mgb2YgUmVkc2hpZnQgZW5kcG9pbnQgYXV0aGVudGljYXRpb24gZGV0YWlscy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTZWN1cmUgY3JlZGVudGlhbCBzdG9yYWdlOyBSZWRzaGlmdCBhdXRoZW50aWNhdGlvbjsgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uOyBEYXRhYmFzZSBjb25uZWN0aW9uIHNlY3VyaXR5OyBDcmVkZW50aWFsIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk4gY29udGFpbmluZyBSZWRzaGlmdCBlbmRwb2ludCBjb25uZWN0aW9uIGRldGFpbHMgYW5kIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk47IHJlcXVpcmVkIGZvciBzZWN1cmUgUmVkc2hpZnQgZW5kcG9pbnQgY3JlZGVudGlhbCBtYW5hZ2VtZW50IGFuZCBhdXRoZW50aWNhdGlvblxuICAgKiovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0QXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIEtNUyBrZXkgQVJOIGZvciBlbmNyeXB0aW5nIFJlZHNoaWZ0IGVuZHBvaW50IGNyZWRlbnRpYWxzIHNlY3JldCBpbiBTZWNyZXRzIE1hbmFnZXIuIFNwZWNpZmllcyB0aGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhlIGNyZWRlbnRpYWxzIHNlY3JldCwgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZW5jcnlwdGlvbiBsYXllciBmb3IgUmVkc2hpZnQgZW5kcG9pbnQgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gc3RvcmVkIGluIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3JlZGVudGlhbCBlbmNyeXB0aW9uOyBLTVMgaW50ZWdyYXRpb247IEVuaGFuY2VkIHNlY3VyaXR5OyBTZWNyZXQgZW5jcnlwdGlvbjsgUmVkc2hpZnQgY3JlZGVudGlhbCBwcm90ZWN0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIEtNUyBrZXkgQVJOIGZvciBlbmNyeXB0aW5nIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgY29udGFpbmluZyBSZWRzaGlmdCBlbmRwb2ludCBjcmVkZW50aWFsc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIEtNUyBrZXkgQVJOIGlmIHByb3ZpZGVkOyBwcm92aWRlcyBhZGRpdGlvbmFsIGVuY3J5cHRpb24gZm9yIFJlZHNoaWZ0IGNyZWRlbnRpYWxzIGluIFNlY3JldHMgTWFuYWdlclxuICAgKiovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0S01TQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBLTVMga2V5IElEIGZvciBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdoZW4gdXNpbmcgU1NFX0tNUyBlbmNyeXB0aW9uIG1vZGUgZm9yIFJlZHNoaWZ0IFMzIHN0YWdpbmcgc2VjdXJpdHkuIFNwZWNpZmllcyB0aGUgQVdTIEtNUyBrZXkgZm9yIGVuY3J5cHRpbmcgUzMgc3RhZ2luZyBvYmplY3RzLCByZXF1aXJpbmcgYXR0YWNoZWQgcG9saWN5IGVuYWJsaW5nIElBTSB1c2VyIHBlcm1pc3Npb25zIGFuZCBrZXkgdXNhZ2UgZm9yIHNlY3VyZSBkYXRhIHdhcmVob3VzZSBzdGFnaW5nIGFuZCBjb21wbGlhbmNlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgZW5jcnlwdGlvbjsgS01TIGludGVncmF0aW9uOyBTMyBzZWN1cml0eTsgQ29tcGxpYW5jZSByZXF1aXJlbWVudHM7IERhdGEgcHJvdGVjdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBLTVMga2V5IElEIGZvciBTMyBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggY3VzdG9tZXItbWFuYWdlZCBrZXlzIGluIFJlZHNoaWZ0IHN0YWdpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBLTVMga2V5IElEOyByZXF1aXJlZCB3aGVuIEVuY3J5cHRpb25Nb2RlIGlzIFNTRV9LTVM7IHJlcXVpcmVzIHByb3BlciBJQU0gcGVybWlzc2lvbnMgYW5kIGtleSBwb2xpY3lcbiAgICoqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlRW5jcnlwdGlvbkttc0tleUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIEFSTiBmb3IgRE1TIHNlcnZpY2UgYWNjZXNzIHRvIFJlZHNoaWZ0IHNlcnZpY2Ugb3BlcmF0aW9ucyBmb3IgZGF0YSB3YXJlaG91c2UgaW50ZWdyYXRpb24uIFNwZWNpZmllcyB0aGUgc2VydmljZSByb2xlIGVuYWJsaW5nIERNUyB0byBhY2Nlc3MgUmVkc2hpZnQgc2VydmljZSwgcmVxdWlyaW5nIGlhbTpQYXNzUm9sZSBhY3Rpb24gZm9yIHNlY3VyZSBSZWRzaGlmdCBhY2Nlc3MgYW5kIGRhdGEgd2FyZWhvdXNlIG1pZ3JhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNlcnZpY2UgYWNjZXNzOyBJQU0gcm9sZSBjb25maWd1cmF0aW9uOyBSZWRzaGlmdCBwZXJtaXNzaW9uczsgU2VjdXJlIGFjY2VzczsgRGF0YSB3YXJlaG91c2UgYXV0aG9yaXphdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBJQU0gcm9sZSBBUk4gZm9yIERNUyBzZXJ2aWNlIGFjY2VzcyB0byBSZWRzaGlmdCBzZXJ2aWNlIG9wZXJhdGlvbnMgYW5kIGRhdGEgd2FyZWhvdXNlIGludGVncmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgSUFNIHJvbGUgQVJOIGlmIHByb3ZpZGVkOyByZXF1aXJlcyBpYW06UGFzc1JvbGUgYWN0aW9uOyBlbmFibGVzIFJlZHNoaWZ0IHNlcnZpY2UgYWNjZXNzIG9wZXJhdGlvbnNcbiAgICoqL1xuICByZWFkb25seSBzZXJ2aWNlQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgdGltZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBmb3IgUmVkc2hpZnQgZGF0YSBsb2FkaW5nIGFuZCB0aW1lIGhhbmRsaW5nLiBTcGVjaWZpZXMgdGltZSBmb3JtYXQgd2l0aCAnYXV0bycgZm9yIGF1dG9tYXRpYyByZWNvZ25pdGlvbiwgY3VzdG9tIHRpbWVmb3JtYXRfc3RyaW5nLCBlcG9jaHNlY3MsIG9yIGVwb2NobWlsbGlzZWNzIG9wdGlvbnMsIGVuYWJsaW5nIGZsZXhpYmxlIHRpbWUgcGFyc2luZyBhbmQgZGF0YSB3YXJlaG91c2UgdGltZSBoYW5kbGluZyB3aXRoIGRlZmF1bHQgMTAuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVGltZSBmb3JtYXQgc3BlY2lmaWNhdGlvbjsgRmxleGlibGUgdGltZSBwYXJzaW5nOyBEYXRhIHdhcmVob3VzZSBsb2FkaW5nOyBUaW1lIGhhbmRsaW5nOyBGb3JtYXQgcmVjb2duaXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFJlZHNoaWZ0IGVuZHBvaW50IHRpbWVGb3JtYXQgZm9yIHRpbWUgZm9ybWF0IHNwZWNpZmljYXRpb24gYW5kIHBhcnNpbmcgY29udHJvbFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlICdhdXRvJywgdGltZWZvcm1hdF9zdHJpbmcsICdlcG9jaHNlY3MnLCBvciAnZXBvY2htaWxsaXNlY3MnIGlmIHByb3ZpZGVkOyBkZWZhdWx0IDEwOyB1c2UgJ2F1dG8nIGZvciBtaXhlZCBmb3JtYXRzXG4gICAqKi9cbiAgcmVhZG9ubHkgdGltZUZvcm1hdD86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byByZW1vdmUgdHJhaWxpbmcgd2hpdGUgc3BhY2UgY2hhcmFjdGVycyBmcm9tIFZBUkNIQVIgc3RyaW5ncyBmb3IgY2xlYW5lciBkYXRhIHByb2Nlc3NpbmcuIEVuYWJsZXMgcmVtb3ZhbCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gVkFSQ0hBUiBjb2x1bW5zIHdpdGggdHJ1ZSBzZXR0aW5nIGFuZCBmYWxzZSBkZWZhdWx0LCBpbXByb3ZpbmcgZGF0YSBxdWFsaXR5IGFuZCBjb25zaXN0ZW5jeSBpbiBSZWRzaGlmdCBkYXRhIHdhcmVob3VzZSBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgY2xlYW5pbmc7IFdoaXRlc3BhY2UgcmVtb3ZhbDsgVkFSQ0hBUiBwcm9jZXNzaW5nOyBEYXRhIHF1YWxpdHk7IFN0cmluZyBub3JtYWxpemF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCB0cmltQmxhbmtzIGZvciB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92YWwgZnJvbSBWQVJDSEFSIGNvbHVtbnNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIGlmIHByb3ZpZGVkOyBkZWZhdWx0IGZhbHNlOyBhcHBsaWVzIG9ubHkgdG8gVkFSQ0hBUiBkYXRhIHR5cGUgY29sdW1uczsgcmVtb3ZlcyB0cmFpbGluZyB3aGl0ZXNwYWNlXG4gICAqKi9cbiAgcmVhZG9ubHkgdHJpbUJsYW5rcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gdHJ1bmNhdGUgZGF0YSBpbiBjb2x1bW5zIHRvIGZpdCBjb2x1bW4gc2l6ZSBsaW1pdHMgZm9yIGRhdGEgaW50ZWdyaXR5IGluIFJlZHNoaWZ0LiBFbmFibGVzIHRydW5jYXRpb24gb2YgZGF0YSBpbiBWQVJDSEFSIG9yIENIQVIgY29sdW1ucyB0byBhcHByb3ByaWF0ZSBjaGFyYWN0ZXIgbGltaXRzIGZvciByb3dzIDRNQiBvciBsZXNzLCB3aXRoIGZhbHNlIGRlZmF1bHQsIGVuc3VyaW5nIGRhdGEgZml0cyBjb2x1bW4gY29uc3RyYWludHMgaW4gZGF0YSB3YXJlaG91c2Ugb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhIHRydW5jYXRpb247IENvbHVtbiBzaXplIGNvbXBsaWFuY2U7IERhdGEgaW50ZWdyaXR5OyBWQVJDSEFSL0NIQVIgaGFuZGxpbmc7IFNpemUgY29uc3RyYWludCBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCB0cnVuY2F0ZUNvbHVtbnMgZm9yIGRhdGEgdHJ1bmNhdGlvbiBhbmQgY29sdW1uIHNpemUgY29tcGxpYW5jZVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gaWYgcHJvdmlkZWQ7IGRlZmF1bHQgZmFsc2U7IGFwcGxpZXMgb25seSB0byBWQVJDSEFSL0NIQVIgY29sdW1ucyB3aXRoIHJvd3Mg4omkNE1COyBlbnN1cmVzIGRhdGEgZml0cyBjb2x1bW5zXG4gICAqKi9cbiAgcmVhZG9ubHkgdHJ1bmNhdGVDb2x1bW5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgaW4tbWVtb3J5IGZpbGUgd3JpdGUgYnVmZmVyIHNpemUgaW4gS0IgZm9yIENTViBmaWxlIGdlbmVyYXRpb24gcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBTcGVjaWZpZXMgYnVmZmVyIHNpemUgZm9yIGdlbmVyYXRpbmcgQ1NWIGZpbGVzIG9uIGxvY2FsIGRpc2sgYXQgRE1TIHJlcGxpY2F0aW9uIGluc3RhbmNlIHdpdGggZGVmYXVsdCAxMDAwS0IgKDFNQiksIGFmZmVjdGluZyBDU1YgZ2VuZXJhdGlvbiBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IHVzYWdlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjsgQnVmZmVyIG1hbmFnZW1lbnQ7IENTViBnZW5lcmF0aW9uOyBNZW1vcnkgb3B0aW1pemF0aW9uOyBGaWxlIHdyaXRlIHBlcmZvcm1hbmNlXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBSZWRzaGlmdCBlbmRwb2ludCB3cml0ZUJ1ZmZlclNpemUgZm9yIENTViBmaWxlIGdlbmVyYXRpb24gYnVmZmVyIG9wdGltaXphdGlvbiBhbmQgcGVyZm9ybWFuY2UgdHVuaW5nXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcG9zaXRpdmUgaW50ZWdlciBpbiBLQiBpZiBwcm92aWRlZDsgZGVmYXVsdCAxMDAwS0I7IGNvbnRyb2xzIGluLW1lbW9yeSBidWZmZXIgc2l6ZSBmb3IgQ1NWIGZpbGUgZ2VuZXJhdGlvblxuICAgKiovXG4gIHJlYWRvbmx5IHdyaXRlQnVmZmVyU2l6ZT86IG51bWJlcjtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBkZWZpbmVzIGEgTW9uZ29EQiBlbmRwb2ludC4gTW9kaWZpZWQgZnJvbSB0aGUgZXF1aXZhbGVudCBMMSBDb25zdHJ1Y3QgdG8gcHJldmVudCB1c2Ugb2YgcGxhaW50ZXh0IGNyZWRlbnRpYWxzIGFuZCBlbmZvcmNlIHVzZSBvZiBLTVMgZW5jcnlwdGlvbi5cbiAqIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIG91dHB1dCBmb3JtYXQgb2YgcmVjb3JkcyBhcHBsaWVkIHRvIHRoZSBlbmRwb2ludCBhbmQgZGV0YWlscyBvZiB0cmFuc2FjdGlvbiBhbmQgY29udHJvbCB0YWJsZSBkYXRhIGluZm9ybWF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBhdmFpbGFibGUgc2V0dGluZ3MsIHNlZSBbRW5kcG9pbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB3aGVuIHVzaW5nIE1vbmdvREIgYXMgYSBzb3VyY2UgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1NvdXJjZS5Nb25nb0RCLmh0bWwjQ0hBUF9Tb3VyY2UuTW9uZ29EQi5Db25maWd1cmF0aW9uKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gKiBAc3RydWN0XG4gKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW1vbmdvZGJzZXR0aW5ncy5odG1sXG4gKi9cbi8qKlxuICogUS1FTkhBTkNFRC1JTlRFUkZBQ0VcbiAqIE1vbmdvREIgc2V0dGluZ3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIERNUyBwcm92aWRpbmcgTm9TUUwgZGF0YWJhc2UgbWlncmF0aW9uIGFuZCBkb2N1bWVudCBkYXRhYmFzZSBjYXBhYmlsaXRpZXMuIERlZmluZXMgTW9uZ29EQi1zcGVjaWZpYyBwcm9wZXJ0aWVzIGZvciBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBpbmNsdWRpbmcgZG9jdW1lbnQgbWlncmF0aW9uLCBhdXRoZW50aWNhdGlvbiBzZXR0aW5ncywgYW5kIE1vbmdvREIgaW50ZWdyYXRpb24gZm9yIE5vU1FMIGRhdGFiYXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3MuXG4gKlxuICogVXNlIGNhc2VzOiBOb1NRTCBkYXRhYmFzZSBtaWdyYXRpb247IERvY3VtZW50IGRhdGFiYXNlIG1pZ3JhdGlvbjsgTW9uZ29EQiBjb25uZWN0aXZpdHk7IE5vU1FMIG1pZ3JhdGlvbiB3b3JrZmxvd3M7IERvY3VtZW50IGRhdGEgbWlncmF0aW9uOyBETVMgTW9uZ29EQiBpbnRlZ3JhdGlvblxuICpcbiAqIEFXUzogQVdTIERNUyBNb25nb0RCIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gd2l0aCBOb1NRTCBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIGRvY3VtZW50IGRhdGFiYXNlIGNhcGFiaWxpdGllc1xuICpcbiAqIFZhbGlkYXRpb246IENvbmZpZ3VyYXRpb24gbXVzdCBiZSB2YWxpZCBmb3IgRE1TIG1pZ3JhdGlvbjsgcHJvcGVydGllcyBtdXN0IGNvbmZvcm0gdG8gQVdTIERNUyBhbmQgZGF0YWJhc2Utc3BlY2lmaWMgcmVxdWlyZW1lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uZ29EYlNldHRpbmdzUHJvcGVydHkge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gZm9yIE1vbmdvREIgc291cmNlIGVuZHBvaW50IGFjY2VzcyB3aXRoIHZlcnNpb24tc3BlY2lmaWMgZGVmYXVsdHMuIFNwZWNpZmllcyBhdXRoZW50aWNhdGlvbiBtZXRob2Qgd2l0aCBkZWZhdWx0IFwibW9uZ29kYl9jclwiIGZvciBNb25nb0RCIDIueCBhbmQgXCJzY3JhbV9zaGFfMVwiIGZvciBNb25nb0RCIDMueCssIG5vdCB1c2VkIHdoZW4gQXV0aFR5cGUgaXMgXCJub1wiLCBlbmFibGluZyBzZWN1cmUgTW9uZ29EQiBkYXRhYmFzZSBjb25uZWN0aXZpdHkgYW5kIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE1vbmdvREIgYXV0aGVudGljYXRpb247IFZlcnNpb24tc3BlY2lmaWMgYXV0aDsgRGF0YWJhc2Ugc2VjdXJpdHk7IENvbm5lY3Rpb24gYXV0aGVudGljYXRpb247IE1vbmdvREIgY29ubmVjdGl2aXR5XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBNb25nb0RCIGVuZHBvaW50IGF1dGhNZWNoYW5pc20gZm9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBzcGVjaWZpY2F0aW9uIGFuZCBzZWN1cmUgZGF0YWJhc2UgYWNjZXNzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgTW9uZ29EQiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaWYgcHJvdmlkZWQ7IHZlcnNpb24tZGVwZW5kZW50IGRlZmF1bHRzOyBub3QgdXNlZCB3aGVuIEF1dGhUeXBlIGlzIFwibm9cIlxuICAgKiovXG4gIHJlYWRvbmx5IGF1dGhNZWNoYW5pc20/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIE1vbmdvREIgZGF0YWJhc2UgbmFtZSBmb3IgYXV0aGVudGljYXRpb24gd2l0aCBkZWZhdWx0IFwiYWRtaW5cIiBkYXRhYmFzZS4gU3BlY2lmaWVzIHRoZSBkYXRhYmFzZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbiBvcGVyYXRpb25zLCBub3QgdXNlZCB3aGVuIEF1dGhUeXBlIGlzIFwibm9cIiwgZW5hYmxpbmcgcHJvcGVyIGF1dGhlbnRpY2F0aW9uIGNvbnRleHQgYW5kIGRhdGFiYXNlLXNwZWNpZmljIGFjY2VzcyBjb250cm9sIGZvciBNb25nb0RCIG1pZ3JhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dGhlbnRpY2F0aW9uIGRhdGFiYXNlOyBNb25nb0RCIGF1dGggY29udGV4dDsgRGF0YWJhc2Utc3BlY2lmaWMgYXV0aDsgQXV0aGVudGljYXRpb24gc2NvcGU7IE1vbmdvREIgc2VjdXJpdHlcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE1vbmdvREIgZW5kcG9pbnQgYXV0aFNvdXJjZSBmb3IgYXV0aGVudGljYXRpb24gZGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBhbmQgYWNjZXNzIGNvbnRyb2xcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBNb25nb0RCIGRhdGFiYXNlIG5hbWUgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgXCJhZG1pblwiOyBub3QgdXNlZCB3aGVuIEF1dGhUeXBlIGlzIFwibm9cIlxuICAgKiovXG4gIHJlYWRvbmx5IGF1dGhTb3VyY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGF1dGhlbnRpY2F0aW9uIHR5cGUgZm9yIE1vbmdvREIgc291cmNlIGVuZHBvaW50IGFjY2VzcyBjb250cm9sLiBTcGVjaWZpZXMgYXV0aGVudGljYXRpb24gdHlwZSB3aXRoIFwibm9cIiBkaXNhYmxpbmcgdXNlcm5hbWUvcGFzc3dvcmQgcmVxdWlyZW1lbnRzIGFuZCBhbGxvd2luZyBlbXB0eSBjcmVkZW50aWFscywgZW5hYmxpbmcgZmxleGlibGUgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgTW9uZ29EQiBkYXRhYmFzZSBjb25uZWN0aXZpdHkgYW5kIG1pZ3JhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEF1dGhlbnRpY2F0aW9uIGNvbnRyb2w7IE1vbmdvREIgc2VjdXJpdHk7IENyZWRlbnRpYWwgbWFuYWdlbWVudDsgQWNjZXNzIGNvbnRyb2w7IERhdGFiYXNlIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBNb25nb0RCIGVuZHBvaW50IGF1dGhUeXBlIGZvciBhdXRoZW50aWNhdGlvbiB0eXBlIHNwZWNpZmljYXRpb24gYW5kIGFjY2VzcyBjb250cm9sXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgYXV0aGVudGljYXRpb24gdHlwZSBpZiBwcm92aWRlZDsgXCJub1wiIGRpc2FibGVzIHVzZXJuYW1lL3Bhc3N3b3JkIHJlcXVpcmVtZW50czsgY29udHJvbHMgTW9uZ29EQiBhdXRoZW50aWNhdGlvblxuICAgKiovXG4gIHJlYWRvbmx5IGF1dGhUeXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSBuYW1lIG9uIE1vbmdvREIgc291cmNlIGVuZHBvaW50IGZvciBtaWdyYXRpb24gc2NvcGUgc3BlY2lmaWNhdGlvbi4gU3BlY2lmaWVzIHRoZSB0YXJnZXQgZGF0YWJhc2UgbmFtZSBmb3IgTW9uZ29EQiBtaWdyYXRpb24gb3BlcmF0aW9ucywgZGVmaW5pbmcgdGhlIHNjb3BlIG9mIGRhdGEgbWlncmF0aW9uIGFuZCBkYXRhYmFzZS1zcGVjaWZpYyBvcGVyYXRpb25zIGZvciBOb1NRTCBkb2N1bWVudCBkYXRhYmFzZSBtaWdyYXRpb24gd29ya2Zsb3dzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGFiYXNlIHNjb3BlOyBNaWdyYXRpb24gdGFyZ2V0OyBNb25nb0RCIGRhdGFiYXNlIHNlbGVjdGlvbjsgRGF0YSBzY29wZTsgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvblxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgTW9uZ29EQiBlbmRwb2ludCBkYXRhYmFzZU5hbWUgZm9yIG1pZ3JhdGlvbiBkYXRhYmFzZSBzcGVjaWZpY2F0aW9uIGFuZCBzY29wZSBkZWZpbml0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgTW9uZ29EQiBkYXRhYmFzZSBuYW1lIGlmIHByb3ZpZGVkOyBkZWZpbmVzIG1pZ3JhdGlvbiBzY29wZSBhbmQgdGFyZ2V0IGRhdGFiYXNlIGZvciBvcGVyYXRpb25zXG4gICAqKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBudW1iZXIgb2YgZG9jdW1lbnRzIHRvIHByZXZpZXcgZm9yIGRvY3VtZW50IG9yZ2FuaXphdGlvbiBhbmFseXNpcyB3aGVuIHVzaW5nIHRhYmxlIG1vZGUuIFNwZWNpZmllcyBkb2N1bWVudCBjb3VudCBmb3IgcHJldmlldyBhbmFseXNpcyB3aXRoIGRlZmF1bHQgMTAwMCwgdXNlZCB3aGVuIE5lc3RpbmdMZXZlbCBpcyBcIm9uZVwiLCBlbmFibGluZyBwcm9wZXIgZG9jdW1lbnQgc3RydWN0dXJlIGFuYWx5c2lzIGFuZCB0YWJsZSBtb2RlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogRG9jdW1lbnQgYW5hbHlzaXM7IFN0cnVjdHVyZSBwcmV2aWV3OyBUYWJsZSBtb2RlIGNvbmZpZ3VyYXRpb247IERvY3VtZW50IG9yZ2FuaXphdGlvbjsgU2NoZW1hIGFuYWx5c2lzXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBNb25nb0RCIGVuZHBvaW50IGRvY3NUb0ludmVzdGlnYXRlIGZvciBkb2N1bWVudCBzdHJ1Y3R1cmUgYW5hbHlzaXMgYW5kIHRhYmxlIG1vZGUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgZ3JlYXRlciB0aGFuIDAgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgMTAwMDsgdXNlZCB3aGVuIE5lc3RpbmdMZXZlbCBpcyBcIm9uZVwiXG4gICAqKi9cbiAgcmVhZG9ubHkgZG9jc1RvSW52ZXN0aWdhdGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gc3BlY2lmeSBkb2N1bWVudCBJRCBleHRyYWN0aW9uIHdoZW4gdXNpbmcgZG9jdW1lbnQgbW9kZS4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gZXh0cmFjdCBkb2N1bWVudCBJRCB3aXRoIGRlZmF1bHQgXCJmYWxzZVwiLCB1c2VkIHdoZW4gTmVzdGluZ0xldmVsIGlzIFwibm9uZVwiLCBlbmFibGluZyBkb2N1bWVudCBJRCBoYW5kbGluZyBhbmQgZG9jdW1lbnQgbW9kZSBjb25maWd1cmF0aW9uIGZvciBNb25nb0RCIG1pZ3JhdGlvbiBvcGVyYXRpb25zLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERvY3VtZW50IElEIGV4dHJhY3Rpb247IERvY3VtZW50IG1vZGU7IElEIGhhbmRsaW5nOyBEb2N1bWVudCBjb25maWd1cmF0aW9uOyBNb25nb0RCIGRvY3VtZW50IHByb2Nlc3NpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE1vbmdvREIgZW5kcG9pbnQgZXh0cmFjdERvY0lkIGZvciBkb2N1bWVudCBJRCBleHRyYWN0aW9uIGFuZCBkb2N1bWVudCBtb2RlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBcInRydWVcIiBvciBcImZhbHNlXCIgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgXCJmYWxzZVwiOyB1c2VkIHdoZW4gTmVzdGluZ0xldmVsIGlzIFwibm9uZVwiXG4gICAqKi9cbiAgcmVhZG9ubHkgZXh0cmFjdERvY0lkPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBuZXN0aW5nIGxldmVsIHNwZWNpZmljYXRpb24gZm9yIGRvY3VtZW50IG9yIHRhYmxlIG1vZGUgc2VsZWN0aW9uLiBTcGVjaWZpZXMgbWlncmF0aW9uIG1vZGUgd2l0aCBcIm5vbmVcIiBmb3IgZG9jdW1lbnQgbW9kZSBhbmQgXCJvbmVcIiBmb3IgdGFibGUgbW9kZSwgd2l0aCBkZWZhdWx0IFwibm9uZVwiLCBjb250cm9sbGluZyBob3cgTW9uZ29EQiBkb2N1bWVudHMgYXJlIHByb2Nlc3NlZCBhbmQgbWlncmF0ZWQgaW4gTm9TUUwgZGF0YWJhc2Ugb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNaWdyYXRpb24gbW9kZTsgRG9jdW1lbnQgcHJvY2Vzc2luZzsgVGFibGUgbW9kZTsgRG9jdW1lbnQgbW9kZTsgTW9uZ29EQiBzdHJ1Y3R1cmUgaGFuZGxpbmdcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIE1vbmdvREIgZW5kcG9pbnQgbmVzdGluZ0xldmVsIGZvciBtaWdyYXRpb24gbW9kZSBzcGVjaWZpY2F0aW9uIGFuZCBkb2N1bWVudCBwcm9jZXNzaW5nIGNvbnRyb2xcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBcIm5vbmVcIiBvciBcIm9uZVwiIGlmIHByb3ZpZGVkOyBkZWZhdWx0IFwibm9uZVwiOyBcIm5vbmVcIiB1c2VzIGRvY3VtZW50IG1vZGUsIFwib25lXCIgdXNlcyB0YWJsZSBtb2RlXG4gICAqKi9cbiAgcmVhZG9ubHkgbmVzdGluZ0xldmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9ydCB2YWx1ZSBmb3IgdGhlIE1vbmdvREIgc291cmNlIGVuZHBvaW50LlxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW1vbmdvZGJzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtbW9uZ29kYnNldHRpbmdzLXBvcnRcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIHJvbGUgdGhhdCBzcGVjaWZpZXMgQVdTIERNUyBhcyB0aGUgdHJ1c3RlZCBlbnRpdHkgYW5kIGdyYW50cyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHRoZSB2YWx1ZSBpbiBgU2VjcmV0c01hbmFnZXJTZWNyZXRgIC5cbiAgICogVGhlIHJvbGUgbXVzdCBhbGxvdyB0aGUgYGlhbTpQYXNzUm9sZWAgYWN0aW9uLiBgU2VjcmV0c01hbmFnZXJTZWNyZXRgIGhhcyB0aGUgdmFsdWUgb2YgdGhlIEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IHRoYXQgYWxsb3dzIGFjY2VzcyB0byB0aGUgTW9uZ29EQiBlbmRwb2ludC5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1tb25nb2Ric2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1vbmdvZGJzZXR0aW5ncy1zZWNyZXRzbWFuYWdlcmFjY2Vzc3JvbGVhcm5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmdWxsIEFSTiBvZiB0aGUgYFNlY3JldHNNYW5hZ2VyU2VjcmV0YCB0aGF0IGNvbnRhaW5zIHRoZSBNb25nb0RCIGVuZHBvaW50IGNvbm5lY3Rpb24gZGV0YWlscy5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1tb25nb2Ric2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1vbmdvZGJzZXR0aW5ncy1zZWNyZXRzbWFuYWdlcnNlY3JldGlkXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgY3JlZGVudGlhbHMgc2VjcmV0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VydmVyIG9uIHRoZSBNb25nb0RCIHNvdXJjZSBlbmRwb2ludC5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1tb25nb2Ric2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1vbmdvZGJzZXR0aW5ncy1zZXJ2ZXJuYW1lXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJOYW1lPzogc3RyaW5nO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IGRlZmluZXMgYW4gSUJNREIyIGVuZHBvaW50LiBNb2RpZmllZCBmcm9tIHRoZSBlcXVpdmFsZW50IEwxIENvbnN0cnVjdCB0byBwcmV2ZW50IHVzZSBvZiBwbGFpbnRleHQgY3JlZGVudGlhbHMgYW5kIGVuZm9yY2UgdXNlIG9mIEtNUyBlbmNyeXB0aW9uLlxuICogVGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgb3V0cHV0IGZvcm1hdCBvZiByZWNvcmRzIGFwcGxpZWQgdG8gdGhlIGVuZHBvaW50IGFuZCBkZXRhaWxzIG9mIHRyYW5zYWN0aW9uIGFuZCBjb250cm9sIHRhYmxlIGRhdGEgaW5mb3JtYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIGF2YWlsYWJsZSBzZXR0aW5ncywgc2VlIFtFeHRyYSBjb25uZWN0aW9uIGF0dHJpYnV0ZXMgd2hlbiB1c2luZyBEYjIgTFVXIGFzIGEgc291cmNlIGZvciBBV1MgRE1TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9Tb3VyY2UuREIyLmh0bWwjQ0hBUF9Tb3VyY2UuREIyLkNvbm5lY3Rpb25BdHRyaWIpIGluIHRoZSAqQVdTIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIFVzZXIgR3VpZGUqIC5cbiAqIEBzdHJ1Y3RcbiAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtaWJtZGIyc2V0dGluZ3MuaHRtbFxuICovXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBJQk0gREIyIHNldHRpbmdzIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBETVMgcHJvdmlkaW5nIG1haW5mcmFtZSBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIGVudGVycHJpc2UgZGF0YWJhc2UgY2FwYWJpbGl0aWVzLiBEZWZpbmVzIElCTSBEQjItc3BlY2lmaWMgcHJvcGVydGllcyBmb3IgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgaW5jbHVkaW5nIG1haW5mcmFtZSBjb25uZWN0aXZpdHksIGVudGVycHJpc2UgZmVhdHVyZXMsIGFuZCBEQjIgaW50ZWdyYXRpb24gZm9yIGVudGVycHJpc2UgZGF0YWJhc2UgbWlncmF0aW9uIHdvcmtmbG93cy5cbiAqXG4gKiBVc2UgY2FzZXM6IE1haW5mcmFtZSBkYXRhYmFzZSBtaWdyYXRpb247IEVudGVycHJpc2UgZGF0YWJhc2UgbWlncmF0aW9uOyBJQk0gREIyIGNvbm5lY3Rpdml0eTsgTWFpbmZyYW1lIGludGVncmF0aW9uOyBFbnRlcnByaXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3M7IERNUyBEQjIgaW50ZWdyYXRpb25cbiAqXG4gKiBBV1M6IEFXUyBETVMgSUJNIERCMiBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdpdGggbWFpbmZyYW1lIGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgZW50ZXJwcmlzZSBkYXRhYmFzZSBjYXBhYmlsaXRpZXNcbiAqXG4gKiBWYWxpZGF0aW9uOiBDb25maWd1cmF0aW9uIG11c3QgYmUgdmFsaWQgZm9yIERNUyBtaWdyYXRpb247IHByb3BlcnRpZXMgbXVzdCBjb25mb3JtIHRvIEFXUyBETVMgYW5kIGRhdGFiYXNlLXNwZWNpZmljIHJlcXVpcmVtZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElibURiMlNldHRpbmdzUHJvcGVydHkge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBsb2cgc2VxdWVuY2UgbnVtYmVyIChMU04pIGZvciBJQk0gREIyIGNoYW5nZSBkYXRhIGNhcHR1cmUgKENEQykgcmVwbGljYXRpb24gc3RhcnRpbmcgcG9pbnQgZW5hYmxpbmcgcHJlY2lzZSByZXBsaWNhdGlvbiBjb250cm9sLiBTcGVjaWZpZXMgdGhlIGV4YWN0IExTTiB3aGVyZSBvbmdvaW5nIHJlcGxpY2F0aW9uIHNob3VsZCBiZWdpbiBmb3IgQ0RDIG9wZXJhdGlvbnMsIHByb3ZpZGluZyBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIGRhdGEgc3luY2hyb25pemF0aW9uIHN0YXJ0aW5nIHBvaW50cyBpbiBtYWluZnJhbWUgZGF0YWJhc2UgbWlncmF0aW9uIHNjZW5hcmlvcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDREMgcmVwbGljYXRpb24gY29udHJvbDsgUHJlY2lzZSByZXBsaWNhdGlvbiBzdGFydGluZyBwb2ludHM7IE1haW5mcmFtZSBkYXRhIHN5bmNocm9uaXphdGlvbjsgTG9nLWJhc2VkIHJlcGxpY2F0aW9uOyBEYXRhIG1pZ3JhdGlvbiBjb250cm9sXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBJQk0gREIyIGN1cnJlbnQgTFNOIGZvciBDREMgcmVwbGljYXRpb24gc3RhcnRpbmcgcG9pbnQgY29udHJvbCBhbmQgbG9nLWJhc2VkIGRhdGEgc3luY2hyb25pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgTFNOIHN0cmluZyBpZiBwcm92aWRlZDsgdXNlZCBmb3IgQ0RDIHJlcGxpY2F0aW9uOyBvcHRpb25hbCBmb3IgcmVwbGljYXRpb24gc3RhcnRpbmcgcG9pbnQgY29udHJvbFxuICAgKiovXG4gIHJlYWRvbmx5IGN1cnJlbnRMc24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG1heGltdW0gYnl0ZXMgcGVyIHJlYWQgb3BlcmF0aW9uIGZvciBJQk0gREIyIGRhdGEgdHJhbnNmZXIgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGVuYWJsaW5nIHRocm91Z2hwdXQgdHVuaW5nLiBEZWZpbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBraWxvYnl0ZXMgdGhhdCB3aWxsIGJlIHJlYWQgaW4gYSBzaW5nbGUgb3BlcmF0aW9uIGR1cmluZyBkYXRhIG1pZ3JhdGlvbiwgYWxsb3dpbmcgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGZvciBtYWluZnJhbWUgZGF0YWJhc2UgdHJhbnNmZXJzIHdpdGggY29uZmlndXJhYmxlIHJlYWQgYnVmZmVyIHNpemVzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjsgVGhyb3VnaHB1dCB0dW5pbmc7IFJlYWQgYnVmZmVyIGNvbmZpZ3VyYXRpb247IE1pZ3JhdGlvbiBwZXJmb3JtYW5jZTsgTWFpbmZyYW1lIGRhdGEgdHJhbnNmZXIgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBJQk0gREIyIG1heGltdW0ga2lsb2J5dGVzIHBlciByZWFkIGZvciBkYXRhIHRyYW5zZmVyIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBhbmQgdGhyb3VnaHB1dCBjb250cm9sXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcG9zaXRpdmUgbnVtYmVyIGlmIHByb3ZpZGVkOyBkZWZhdWx0cyB0byA2NCBLQjsgb3B0aW9uYWwgZm9yIHBlcmZvcm1hbmNlIHR1bmluZ1xuICAgKiovXG4gIHJlYWRvbmx5IG1heEtCeXRlc1BlclJlYWQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIHJvbGUgdGhhdCBzcGVjaWZpZXMgQVdTIERNUyBhcyB0aGUgdHJ1c3RlZCBlbnRpdHkgYW5kIGdyYW50cyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHRoZSB2YWx1ZSBpbiBgU2VjcmV0c01hbmFnZXJTZWNyZXRgIC5cbiAgICogVGhlIHJvbGUgbXVzdCBhbGxvdyB0aGUgYGlhbTpQYXNzUm9sZWAgYWN0aW9uLiBgU2VjcmV0c01hbmFnZXJTZWNyZXRgIGhhcyB0aGUgdmFsdWUgb2Z0aGUgQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBhbGxvd3MgYWNjZXNzIHRvIHRoZSBEYjIgTFVXIGVuZHBvaW50LlxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWlibWRiMnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1pYm1kYjJzZXR0aW5ncy1zZWNyZXRzbWFuYWdlcmFjY2Vzc3JvbGVhcm5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmdWxsIEFSTiBvZiB0aGUgYFNlY3JldHNNYW5hZ2VyU2VjcmV0YCB0aGF0IGNvbnRhaW5zIHRoZSBJQk1EQjIgZW5kcG9pbnQgY29ubmVjdGlvbiBkZXRhaWxzLlxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWlibWRiMnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1pYm1kYjJzZXR0aW5ncy1zZWNyZXRzbWFuYWdlcnNlY3JldGlkXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgY3JlZGVudGlhbHMgc2VjcmV0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbmFibGVzIG9uZ29pbmcgcmVwbGljYXRpb24gKENEQykgYXMgYSBCT09MRUFOIHZhbHVlLlxuICAgKiBUaGUgZGVmYXVsdCBpcyB0cnVlLlxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWlibWRiMnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1pYm1kYjJzZXR0aW5ncy1zZXRkYXRhY2FwdHVyZWNoYW5nZXNcbiAgICovXG4gIHJlYWRvbmx5IHNldERhdGFDYXB0dXJlQ2hhbmdlcz86IGJvb2xlYW47XG59XG4vKipcbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZGVmaW5lcyBhbiBBbWF6b24gTmVwdHVuZSBlbmRwb2ludC4gTW9kaWZpZWQgZnJvbSB0aGUgZXF1aXZhbGVudCBMMSBDb25zdHJ1Y3QgdG8gcHJldmVudCB1c2Ugb2YgcGxhaW50ZXh0IGNyZWRlbnRpYWxzIGFuZCBlbmZvcmNlIHVzZSBvZiBLTVMgZW5jcnlwdGlvbi5cbiAqIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIG91dHB1dCBmb3JtYXQgb2YgcmVjb3JkcyBhcHBsaWVkIHRvIHRoZSBlbmRwb2ludCBhbmQgZGV0YWlscyBvZiB0cmFuc2FjdGlvbiBhbmQgY29udHJvbCB0YWJsZSBkYXRhIGluZm9ybWF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXZhaWxhYmxlIHNldHRpbmdzLCBzZWUgW1NwZWNpZnlpbmcgZW5kcG9pbnQgc2V0dGluZ3MgZm9yIEFtYXpvbiBOZXB0dW5lIGFzIGEgdGFyZ2V0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9UYXJnZXQuTmVwdHVuZS5odG1sI0NIQVBfVGFyZ2V0Lk5lcHR1bmUuRW5kcG9pbnRTZXR0aW5ncykgaW4gdGhlICpBV1MgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgVXNlciBHdWlkZSogLlxuICogQHN0cnVjdFxuICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1uZXB0dW5lc2V0dGluZ3MuaHRtbFxuICovXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBOZXB0dW5lIHNldHRpbmdzIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBETVMgcHJvdmlkaW5nIGdyYXBoIGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgZ3JhcGggZGF0YSBjYXBhYmlsaXRpZXMuIERlZmluZXMgTmVwdHVuZS1zcGVjaWZpYyBwcm9wZXJ0aWVzIGZvciBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBpbmNsdWRpbmcgZ3JhcGggZGF0YSBtaWdyYXRpb24sIGdyYXBoIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSwgYW5kIE5lcHR1bmUgaW50ZWdyYXRpb24gZm9yIGdyYXBoIGRhdGFiYXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3MuXG4gKlxuICogVXNlIGNhc2VzOiBHcmFwaCBkYXRhYmFzZSBtaWdyYXRpb247IEdyYXBoIGRhdGEgbWlncmF0aW9uOyBOZXB0dW5lIGNvbm5lY3Rpdml0eTsgR3JhcGggZGF0YWJhc2Ugd29ya2Zsb3dzOyBHcmFwaCBkYXRhIGludGVncmF0aW9uOyBETVMgTmVwdHVuZSBpbnRlZ3JhdGlvblxuICpcbiAqIEFXUzogQVdTIERNUyBOZXB0dW5lIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gd2l0aCBncmFwaCBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIGdyYXBoIGRhdGEgY2FwYWJpbGl0aWVzXG4gKlxuICogVmFsaWRhdGlvbjogQ29uZmlndXJhdGlvbiBtdXN0IGJlIHZhbGlkIGZvciBETVMgbWlncmF0aW9uOyBwcm9wZXJ0aWVzIG11c3QgY29uZm9ybSB0byBBV1MgRE1TIGFuZCBkYXRhYmFzZS1zcGVjaWZpYyByZXF1aXJlbWVudHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXB0dW5lU2V0dGluZ3NQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHJldHJ5IGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyBmb3IgRE1TIGJ1bGstbG9hZCBvcGVyYXRpb25zIHRvIE5lcHR1bmUgdGFyZ2V0IGRhdGFiYXNlIGVuYWJsaW5nIHJlc2lsaWVudCBncmFwaCBkYXRhIG1pZ3JhdGlvbiB3aXRoIGNvbmZpZ3VyYWJsZSBlcnJvciByZWNvdmVyeS4gRGVmaW5lcyB0aGUgd2FpdCB0aW1lIGJlZm9yZSByZXRyeWluZyBmYWlsZWQgYnVsay1sb2FkIG9wZXJhdGlvbnMgZm9yIG1pZ3JhdGVkIGdyYXBoIGRhdGEgdG8gZW5zdXJlIHJlbGlhYmxlIGRhdGEgdHJhbnNmZXIgdG8gTmVwdHVuZS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBHcmFwaCBkYXRhIG1pZ3JhdGlvbiByZXNpbGllbmNlOyBCdWxrLWxvYWQgZXJyb3IgcmVjb3Zlcnk7IE5lcHR1bmUgbWlncmF0aW9uIG9wdGltaXphdGlvbjsgUmV0cnkgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBOZXB0dW5lIGVuZHBvaW50IGVycm9yUmV0cnlEdXJhdGlvbiBzZXR0aW5nIGZvciBidWxrLWxvYWQgcmV0cnkgdGltaW5nIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIG1pbGxpc2Vjb25kczsgZGVmYXVsdCBpcyAyNTBtczsgY29udHJvbHMgcmV0cnkgdGltaW5nIGZvciBmYWlsZWQgYnVsayBvcGVyYXRpb25zXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbmVwdHVuZXNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1uZXB0dW5lc2V0dGluZ3MtZXJyb3JyZXRyeWR1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBlcnJvclJldHJ5RHVyYXRpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbWF4aW11bSBmaWxlIHNpemUgaW4ga2lsb2J5dGVzIGZvciBDU1YgZmlsZXMgY29udGFpbmluZyBtaWdyYXRlZCBncmFwaCBkYXRhIGJlZm9yZSBETVMgYnVsay1sb2FkcyB0byBOZXB0dW5lIHRhcmdldCBkYXRhYmFzZSBlbmFibGluZyBvcHRpbWl6ZWQgYmF0Y2ggcHJvY2Vzc2luZy4gRGVmaW5lcyB0aGUgc2l6ZSB0aHJlc2hvbGQgZm9yIENTViBmaWxlcyBzdG9yaW5nIGdyYXBoIGRhdGEgYmVmb3JlIHRyaWdnZXJpbmcgYnVsay1sb2FkIG9wZXJhdGlvbnMgdG8gTmVwdHVuZSwgb3B0aW1pemluZyBtZW1vcnkgdXNhZ2UgYW5kIHRyYW5zZmVyIGVmZmljaWVuY3kuXG4gICAqXG4gICAqIFVzZSBjYXNlczogR3JhcGggZGF0YSBiYXRjaCBvcHRpbWl6YXRpb247IE1lbW9yeSBtYW5hZ2VtZW50OyBDU1YgZmlsZSBzaXplIGNvbnRyb2w7IE5lcHR1bmUgYnVsay1sb2FkIGVmZmljaWVuY3lcbiAgICpcbiAgICogQVdTOiBETVMgTmVwdHVuZSBlbmRwb2ludCBtYXhGaWxlU2l6ZSBzZXR0aW5nIGZvciBDU1YgZmlsZSBzaXplIHRocmVzaG9sZCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcG9zaXRpdmUgaW50ZWdlciBpbiBraWxvYnl0ZXM7IGRlZmF1bHQgaXMgMSwwNDgsNTc2IEtCICgxR0IpOyBjb250cm9scyBDU1YgYmF0Y2ggc2l6ZSBmb3IgYnVsayBvcGVyYXRpb25zXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbmVwdHVuZXNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1uZXB0dW5lc2V0dGluZ3MtbWF4ZmlsZXNpemVcbiAgICovXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBtYXhpbXVtIHJldHJ5IGNvdW50IGZvciBETVMgYnVsay1sb2FkIG9wZXJhdGlvbnMgdG8gTmVwdHVuZSB0YXJnZXQgZGF0YWJhc2UgZW5hYmxpbmcgY29uZmlndXJhYmxlIHJlc2lsaWVuY2UgZm9yIGdyYXBoIGRhdGEgbWlncmF0aW9uLiBEZWZpbmVzIHRoZSBudW1iZXIgb2YgcmV0cnkgYXR0ZW1wdHMgZm9yIGZhaWxlZCBidWxrLWxvYWQgb3BlcmF0aW9ucyBiZWZvcmUgcmFpc2luZyBhbiBlcnJvciwgZW5zdXJpbmcgcmVsaWFibGUgZ3JhcGggZGF0YSB0cmFuc2ZlciB3aXRoIGNvbnRyb2xsZWQgcmV0cnkgYmVoYXZpb3IuXG4gICAqXG4gICAqIFVzZSBjYXNlczogR3JhcGggbWlncmF0aW9uIHJlc2lsaWVuY2U7IEJ1bGstbG9hZCByZXRyeSBjb250cm9sOyBOZXB0dW5lIG1pZ3JhdGlvbiByZWxpYWJpbGl0eTsgRXJyb3IgaGFuZGxpbmcgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBOZXB0dW5lIGVuZHBvaW50IG1heFJldHJ5Q291bnQgc2V0dGluZyBmb3IgYnVsay1sb2FkIHJldHJ5IGF0dGVtcHQgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXI7IGRlZmF1bHQgaXMgNSByZXRyaWVzOyBjb250cm9scyBtYXhpbXVtIHJldHJ5IGF0dGVtcHRzIGZvciBmYWlsZWQgYnVsayBvcGVyYXRpb25zXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbmVwdHVuZXNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1uZXB0dW5lc2V0dGluZ3MtbWF4cmV0cnljb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UmV0cnlDb3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgUzMgYnVja2V0IGZvbGRlciBwYXRoIGZvciBzdG9yaW5nIG1pZ3JhdGVkIGdyYXBoIGRhdGEgZHVyaW5nIERNUyBOZXB0dW5lIG1pZ3JhdGlvbiBlbmFibGluZyBvcmdhbml6ZWQgZGF0YSBzdGFnaW5nIGFuZCBwcm9jZXNzaW5nLiBEZWZpbmVzIHRoZSBmb2xkZXIgc3RydWN0dXJlIHdpdGhpbiB0aGUgUzMgYnVja2V0IGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiBncmFwaCBkYXRhIENTViBmaWxlcyBiZWZvcmUgYnVsay1sb2FkaW5nIHRvIE5lcHR1bmUgdGFyZ2V0IGRhdGFiYXNlLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEdyYXBoIGRhdGEgb3JnYW5pemF0aW9uOyBTMyBzdGFnaW5nIHN0cnVjdHVyZTsgTWlncmF0aW9uIGRhdGEgbWFuYWdlbWVudDsgVGVtcG9yYXJ5IHN0b3JhZ2Ugb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIEFXUzogRE1TIE5lcHR1bmUgZW5kcG9pbnQgczNCdWNrZXRGb2xkZXIgc2V0dGluZyBmb3IgUzMgc3RhZ2luZyBmb2xkZXIgcGF0aCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUzMgZm9sZGVyIHBhdGggaWYgcHJvdmlkZWQ7IGVuYWJsZXMgb3JnYW5pemVkIHN0YWdpbmcgb2YgZ3JhcGggbWlncmF0aW9uIGRhdGFcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1uZXB0dW5lc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW5lcHR1bmVzZXR0aW5ncy1zM2J1Y2tldGZvbGRlclxuICAgKi9cbiAgcmVhZG9ubHkgczNCdWNrZXRGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIFMzIGJ1Y2tldCBuYW1lIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiBtaWdyYXRlZCBncmFwaCBkYXRhIGR1cmluZyBETVMgTmVwdHVuZSBtaWdyYXRpb24gZW5hYmxpbmcgc3RhZ2VkIGRhdGEgcHJvY2Vzc2luZyBhbmQgYnVsay1sb2FkaW5nLiBEZWZpbmVzIHRoZSBTMyBidWNrZXQgd2hlcmUgRE1TIHN0b3JlcyBDU1YgZmlsZXMgY29udGFpbmluZyBncmFwaCBkYXRhIGJlZm9yZSBidWxrLWxvYWRpbmcgdG8gTmVwdHVuZSB0YXJnZXQgZGF0YWJhc2UuXG4gICAqXG4gICAqIFVzZSBjYXNlczogR3JhcGggZGF0YSBzdGFnaW5nOyBOZXB0dW5lIG1pZ3JhdGlvbiBzdG9yYWdlOyBUZW1wb3JhcnkgQ1NWIHN0b3JhZ2U7IEJ1bGstbG9hZCBkYXRhIHByZXBhcmF0aW9uXG4gICAqXG4gICAqIEFXUzogRE1TIE5lcHR1bmUgZW5kcG9pbnQgczNCdWNrZXROYW1lIHNldHRpbmcgZm9yIFMzIHN0YWdpbmcgYnVja2V0IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBTMyBidWNrZXQgbmFtZTsgcmVxdWlyZWQgZm9yIE5lcHR1bmUgZW5kcG9pbnQgY29uZmlndXJhdGlvbjsgYnVja2V0IG11c3QgZXhpc3QgYW5kIGJlIGFjY2Vzc2libGVcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1uZXB0dW5lc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW5lcHR1bmVzZXR0aW5ncy1zM2J1Y2tldG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBJQU0gc2VydmljZSByb2xlIEFSTiBmb3IgRE1TIE5lcHR1bmUgZW5kcG9pbnQgYWNjZXNzIGVuYWJsaW5nIHNlY3VyZSBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBmb3IgZ3JhcGggZGF0YWJhc2Ugb3BlcmF0aW9ucy4gRGVmaW5lcyB0aGUgSUFNIHJvbGUgdGhhdCBETVMgYXNzdW1lcyB0byBhY2Nlc3MgTmVwdHVuZSB0YXJnZXQgZGF0YWJhc2Ugd2l0aCByZXF1aXJlZCBwZXJtaXNzaW9ucyBmb3IgYnVsay1sb2FkaW5nIGFuZCBncmFwaCBkYXRhIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTmVwdHVuZSBhY2Nlc3MgY29udHJvbDsgRE1TIHNlcnZpY2UgYXV0aGVudGljYXRpb247IElBTSByb2xlLWJhc2VkIHNlY3VyaXR5OyBHcmFwaCBkYXRhYmFzZSBwZXJtaXNzaW9uc1xuICAgKlxuICAgKiBBV1M6IERNUyBOZXB0dW5lIGVuZHBvaW50IHNlcnZpY2VBY2Nlc3NSb2xlQXJuIHNldHRpbmcgZm9yIElBTSByb2xlLWJhc2VkIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgSUFNIHJvbGUgQVJOIGlmIHByb3ZpZGVkOyByb2xlIG11c3QgaGF2ZSBpYW06UGFzc1JvbGUgcGVybWlzc2lvbiBhbmQgTmVwdHVuZSBhY2Nlc3MgcG9saWNpZXNcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1uZXB0dW5lc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW5lcHR1bmVzZXR0aW5ncy1zZXJ2aWNlYWNjZXNzcm9sZWFyblxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZUFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG59XG4vKipcbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIHRoYXQgZGVmaW5lcyBhbiBPcGVuU2VhcmNoIGVuZHBvaW50LiBNb2RpZmllZCBmcm9tIHRoZSBlcXVpdmFsZW50IEwxIENvbnN0cnVjdCB0byBwcmV2ZW50IHVzZSBvZiBwbGFpbnRleHQgY3JlZGVudGlhbHMgYW5kIGVuZm9yY2UgdXNlIG9mIEtNUyBlbmNyeXB0aW9uLlxuICogVGhpcyBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgb3V0cHV0IGZvcm1hdCBvZiByZWNvcmRzIGFwcGxpZWQgdG8gdGhlIGVuZHBvaW50IGFuZCBkZXRhaWxzIG9mIHRyYW5zYWN0aW9uIGFuZCBjb250cm9sIHRhYmxlIGRhdGEgaW5mb3JtYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdmFpbGFibGUgc2V0dGluZ3MsIHNlZSBbRXh0cmEgY29ubmVjdGlvbiBhdHRyaWJ1dGVzIHdoZW4gdXNpbmcgT3BlblNlYXJjaCBhcyBhIHRhcmdldCBmb3IgQVdTIERNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Rtcy9sYXRlc3QvdXNlcmd1aWRlL0NIQVBfVGFyZ2V0LkVsYXN0aWNzZWFyY2guaHRtbCNDSEFQX1RhcmdldC5FbGFzdGljc2VhcmNoLkNvbmZpZ3VyYXRpb24pIGluIHRoZSAqQVdTIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIFVzZXIgR3VpZGUqIC5cbiAqIEBzdHJ1Y3RcbiAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtZWxhc3RpY3NlYXJjaHNldHRpbmdzLmh0bWxcbiAqL1xuLyoqXG4gKiBRLUVOSEFOQ0VELUlOVEVSRkFDRVxuICogRWxhc3RpY3NlYXJjaCBzZXR0aW5ncyBjb25maWd1cmF0aW9uIGludGVyZmFjZSBmb3IgRE1TIHByb3ZpZGluZyBzZWFyY2ggZW5naW5lIG1pZ3JhdGlvbiBhbmQgc2VhcmNoIGRhdGEgY2FwYWJpbGl0aWVzLiBEZWZpbmVzIEVsYXN0aWNzZWFyY2gtc3BlY2lmaWMgcHJvcGVydGllcyBmb3IgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgaW5jbHVkaW5nIHNlYXJjaCBkYXRhIG1pZ3JhdGlvbiwgaW5kZXggY29uZmlndXJhdGlvbiwgYW5kIEVsYXN0aWNzZWFyY2ggaW50ZWdyYXRpb24gZm9yIHNlYXJjaCBlbmdpbmUgbWlncmF0aW9uIHdvcmtmbG93cy5cbiAqXG4gKiBVc2UgY2FzZXM6IFNlYXJjaCBlbmdpbmUgbWlncmF0aW9uOyBTZWFyY2ggZGF0YSBtaWdyYXRpb247IEVsYXN0aWNzZWFyY2ggY29ubmVjdGl2aXR5OyBTZWFyY2ggaW5kZXggbWlncmF0aW9uOyBTZWFyY2ggZGF0YSBpbnRlZ3JhdGlvbjsgRE1TIEVsYXN0aWNzZWFyY2ggaW50ZWdyYXRpb25cbiAqXG4gKiBBV1M6IEFXUyBETVMgRWxhc3RpY3NlYXJjaCBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdpdGggc2VhcmNoIGVuZ2luZSBtaWdyYXRpb24gYW5kIHNlYXJjaCBkYXRhIGNhcGFiaWxpdGllc1xuICpcbiAqIFZhbGlkYXRpb246IENvbmZpZ3VyYXRpb24gbXVzdCBiZSB2YWxpZCBmb3IgRE1TIG1pZ3JhdGlvbjsgcHJvcGVydGllcyBtdXN0IGNvbmZvcm0gdG8gQVdTIERNUyBhbmQgZGF0YWJhc2Utc3BlY2lmaWMgcmVxdWlyZW1lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxhc3RpY3NlYXJjaFNldHRpbmdzUHJvcGVydHkge1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBPcGVuU2VhcmNoIGNsdXN0ZXIgZW5kcG9pbnQgVVJJIGZvciBETVMgdGFyZ2V0IGNvbm5lY3Rpdml0eSBlbmFibGluZyBzZWFyY2ggZW5naW5lIGRhdGEgbWlncmF0aW9uIGFuZCBpbmRleGluZy4gRGVmaW5lcyB0aGUgY29ubmVjdGlvbiBlbmRwb2ludCBmb3IgT3BlblNlYXJjaCBjbHVzdGVyIHdoZXJlIERNUyB3aWxsIG1pZ3JhdGUgYW5kIGluZGV4IGRhdGEgZnJvbSBzb3VyY2UgZGF0YWJhc2VzIGZvciBzZWFyY2ggYW5kIGFuYWx5dGljcyBjYXBhYmlsaXRpZXMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU2VhcmNoIGVuZ2luZSBtaWdyYXRpb247IERhdGEgaW5kZXhpbmc7IE9wZW5TZWFyY2ggY29ubmVjdGl2aXR5OyBTZWFyY2ggZGF0YSBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBFbGFzdGljc2VhcmNoIGVuZHBvaW50IGVuZHBvaW50VXJpIHNldHRpbmcgZm9yIE9wZW5TZWFyY2ggY2x1c3RlciBjb25uZWN0aXZpdHlcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBIVFRQUyBVUkkgaWYgcHJvdmlkZWQ7IERNUyB1c2VzIEhUVFBTIGJ5IGRlZmF1bHQgZm9yIHNlY3VyZSBzZWFyY2ggZW5naW5lIGNvbm5lY3Rpdml0eVxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWVsYXN0aWNzZWFyY2hzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtZWxhc3RpY3NlYXJjaHNldHRpbmdzLWVuZHBvaW50dXJpXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludFVyaT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbWF4aW11bSByZXRyeSBkdXJhdGlvbiBpbiBzZWNvbmRzIGZvciBmYWlsZWQgRE1TIEFQSSByZXF1ZXN0cyB0byBPcGVuU2VhcmNoIGNsdXN0ZXIgZW5hYmxpbmcgcmVzaWxpZW50IHNlYXJjaCBkYXRhIG1pZ3JhdGlvbi4gRGVmaW5lcyB0aGUgbWF4aW11bSB0aW1lIERNUyB3aWxsIHJldHJ5IGZhaWxlZCBBUEkgcmVxdWVzdHMgdG8gdGhlIE9wZW5TZWFyY2ggY2x1c3RlciBmb3IgaW1wcm92ZWQgcmVsaWFiaWxpdHkgYW5kIGZhdWx0IHRvbGVyYW5jZSBkdXJpbmcgc2VhcmNoIGRhdGEgbWlncmF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNlYXJjaCBtaWdyYXRpb24gcmVzaWxpZW5jZTsgQVBJIHJldHJ5IGNvbmZpZ3VyYXRpb247IE9wZW5TZWFyY2ggY29ubmVjdGl2aXR5IHJlbGlhYmlsaXR5OyBNaWdyYXRpb24gZmF1bHQgdG9sZXJhbmNlXG4gICAqXG4gICAqIEFXUzogRE1TIEVsYXN0aWNzZWFyY2ggZW5kcG9pbnQgZXJyb3JSZXRyeUR1cmF0aW9uIHNldHRpbmcgZm9yIEFQSSByZXRyeSB0aW1pbmcgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgaW4gc2Vjb25kcyBpZiBwcm92aWRlZDsgY29udHJvbHMgbWF4aW11bSByZXRyeSBkdXJhdGlvbiBmb3IgZmFpbGVkIE9wZW5TZWFyY2ggQVBJIHJlcXVlc3RzXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtZWxhc3RpY3NlYXJjaHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1lbGFzdGljc2VhcmNoc2V0dGluZ3MtZXJyb3JyZXRyeWR1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBlcnJvclJldHJ5RHVyYXRpb24/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG1heGltdW0gcGVyY2VudGFnZSBvZiBmYWlsZWQgcmVjb3JkcyBiZWZvcmUgc3RvcHBpbmcgZnVsbCBsb2FkIG9wZXJhdGlvbiBlbmFibGluZyBjb250cm9sbGVkIHNlYXJjaCBkYXRhIG1pZ3JhdGlvbiBxdWFsaXR5LiBEZWZpbmVzIHRoZSBmYWlsdXJlIHRocmVzaG9sZCBmb3IgcmVjb3JkIHdyaXRlcyB0byBPcGVuU2VhcmNoIGJlZm9yZSBETVMgc3RvcHMgdGhlIGZ1bGwgbG9hZCBvcGVyYXRpb24gdG8gcHJldmVudCBkYXRhIHF1YWxpdHkgaXNzdWVzIGluIHNlYXJjaCBpbmRleGVzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGEgcXVhbGl0eSBjb250cm9sOyBNaWdyYXRpb24gZmFpbHVyZSB0aHJlc2hvbGRzOyBTZWFyY2ggaW5kZXggcXVhbGl0eTsgTG9hZCBvcGVyYXRpb24gY29udHJvbFxuICAgKlxuICAgKiBBV1M6IERNUyBFbGFzdGljc2VhcmNoIGVuZHBvaW50IGZ1bGxMb2FkRXJyb3JQZXJjZW50YWdlIHNldHRpbmcgZm9yIGRhdGEgcXVhbGl0eSBjb250cm9sXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgcGVyY2VudGFnZSB2YWx1ZSBiZXR3ZWVuIDAtMTAwIGlmIHByb3ZpZGVkOyBjb250cm9scyBmYWlsdXJlIHRocmVzaG9sZCBmb3IgZnVsbCBsb2FkIG9wZXJhdGlvbnNcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1lbGFzdGljc2VhcmNoc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LWVsYXN0aWNzZWFyY2hzZXR0aW5ncy1mdWxsbG9hZGVycm9ycGVyY2VudGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVsbExvYWRFcnJvclBlcmNlbnRhZ2U/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSBzZXJ2aWNlIHJvbGUgQVJOIGZvciBETVMgT3BlblNlYXJjaCBlbmRwb2ludCBhY2Nlc3MgZW5hYmxpbmcgc2VjdXJlIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIGZvciBzZWFyY2ggZW5naW5lIG9wZXJhdGlvbnMuIERlZmluZXMgdGhlIElBTSByb2xlIHRoYXQgRE1TIGFzc3VtZXMgdG8gYWNjZXNzIE9wZW5TZWFyY2ggY2x1c3RlciB3aXRoIHJlcXVpcmVkIHBlcm1pc3Npb25zIGZvciBpbmRleGluZyBhbmQgc2VhcmNoIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogT3BlblNlYXJjaCBhY2Nlc3MgY29udHJvbDsgRE1TIHNlcnZpY2UgYXV0aGVudGljYXRpb247IElBTSByb2xlLWJhc2VkIHNlY3VyaXR5OyBTZWFyY2ggZW5naW5lIHBlcm1pc3Npb25zXG4gICAqXG4gICAqIEFXUzogRE1TIEVsYXN0aWNzZWFyY2ggZW5kcG9pbnQgc2VydmljZUFjY2Vzc1JvbGVBcm4gc2V0dGluZyBmb3IgSUFNIHJvbGUtYmFzZWQgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBJQU0gcm9sZSBBUk4gaWYgcHJvdmlkZWQ7IHJvbGUgbXVzdCBoYXZlIGlhbTpQYXNzUm9sZSBwZXJtaXNzaW9uIGFuZCBPcGVuU2VhcmNoIGFjY2VzcyBwb2xpY2llc1xuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWVsYXN0aWNzZWFyY2hzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtZWxhc3RpY3NlYXJjaHNldHRpbmdzLXNlcnZpY2VhY2Nlc3Nyb2xlYXJuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlQWNjZXNzUm9sZUFybj86IHN0cmluZztcbn1cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBkZWZpbmVzIGEgRG9jdW1lbnREQiBlbmRwb2ludC4gTW9kaWZpZWQgZnJvbSB0aGUgZXF1aXZhbGVudCBMMSBDb25zdHJ1Y3QgdG8gcHJldmVudCB1c2Ugb2YgcGxhaW50ZXh0IGNyZWRlbnRpYWxzIGFuZCBlbmZvcmNlIHVzZSBvZiBLTVMgZW5jcnlwdGlvbi5cbiAqIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIG91dHB1dCBmb3JtYXQgb2YgcmVjb3JkcyBhcHBsaWVkIHRvIHRoZSBlbmRwb2ludCBhbmQgZGV0YWlscyBvZiB0cmFuc2FjdGlvbiBhbmQgY29udHJvbCB0YWJsZSBkYXRhIGluZm9ybWF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBhdmFpbGFibGUgc2V0dGluZ3MsIHNlZSBbVXNpbmcgZXh0cmEgY29ubmVjdGlvbnMgYXR0cmlidXRlcyB3aXRoIEFtYXpvbiBEb2N1bWVudERCIGFzIGEgc291cmNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9Tb3VyY2UuRG9jdW1lbnREQi5odG1sI0NIQVBfU291cmNlLkRvY3VtZW50REIuRUNBcykgYW5kIFtVc2luZyBBbWF6b24gRG9jdW1lbnREQiBhcyBhIHRhcmdldCBmb3IgQVdTIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9UYXJnZXQuRG9jdW1lbnREQi5odG1sKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gKiBAc3RydWN0XG4gKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWRvY2Ric2V0dGluZ3MuaHRtbFxuICovXG4vKipcbiAqIFEtRU5IQU5DRUQtSU5URVJGQUNFXG4gKiBEb2N1bWVudERCIHNldHRpbmdzIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciBETVMgcHJvdmlkaW5nIGRvY3VtZW50IGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgTW9uZ29EQi1jb21wYXRpYmxlIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBEb2N1bWVudERCLXNwZWNpZmljIHByb3BlcnRpZXMgZm9yIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIGluY2x1ZGluZyBkb2N1bWVudCBtaWdyYXRpb24sIE1vbmdvREIgY29tcGF0aWJpbGl0eSwgYW5kIERvY3VtZW50REIgaW50ZWdyYXRpb24gZm9yIGRvY3VtZW50IGRhdGFiYXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3MuXG4gKlxuICogVXNlIGNhc2VzOiBEb2N1bWVudCBkYXRhYmFzZSBtaWdyYXRpb247IE1vbmdvREItY29tcGF0aWJsZSBtaWdyYXRpb247IERvY3VtZW50REIgY29ubmVjdGl2aXR5OyBEb2N1bWVudCBkYXRhIG1pZ3JhdGlvbjsgTW9uZ29EQiBjb21wYXRpYmlsaXR5OyBETVMgRG9jdW1lbnREQiBpbnRlZ3JhdGlvblxuICpcbiAqIEFXUzogQVdTIERNUyBEb2N1bWVudERCIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gd2l0aCBkb2N1bWVudCBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIE1vbmdvREItY29tcGF0aWJsZSBjYXBhYmlsaXRpZXNcbiAqXG4gKiBWYWxpZGF0aW9uOiBDb25maWd1cmF0aW9uIG11c3QgYmUgdmFsaWQgZm9yIERNUyBtaWdyYXRpb247IHByb3BlcnRpZXMgbXVzdCBjb25mb3JtIHRvIEFXUyBETVMgYW5kIGRhdGFiYXNlLXNwZWNpZmljIHJlcXVpcmVtZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY0RiU2V0dGluZ3NQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIG51bWJlciBvZiBkb2N1bWVudHMgdG8gcHJldmlldyBmb3IgZGV0ZXJtaW5pbmcgZG9jdW1lbnQgb3JnYW5pemF0aW9uIGFuZCBzY2hlbWEgaW5mZXJlbmNlIGluIERvY3VtZW50REIgbWlncmF0aW9uLiBEZWZpbmVzIHRoZSBzYW1wbGUgc2l6ZSBmb3IgZG9jdW1lbnQgYW5hbHlzaXMgd2hlbiBuZXN0aW5nIGxldmVsIGlzIHNldCB0byBcIm9uZVwiIGZvciB0YWJsZSBtb2RlIG1pZ3JhdGlvbiwgZW5hYmxpbmcgcHJvcGVyIHNjaGVtYSBkZXRlY3Rpb24gYW5kIGRhdGEgbWFwcGluZy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEb2N1bWVudCBzY2hlbWEgaW5mZXJlbmNlOyBNaWdyYXRpb24gcGxhbm5pbmc7IFRhYmxlIG1vZGUgY29uZmlndXJhdGlvbjsgRG9jdW1lbnQgb3JnYW5pemF0aW9uIGFuYWx5c2lzXG4gICAqXG4gICAqIEFXUzogRE1TIERvY3VtZW50REIgZW5kcG9pbnQgZG9jc1RvSW52ZXN0aWdhdGUgc2V0dGluZyBmb3IgZG9jdW1lbnQgc2FtcGxpbmcgYW5kIHNjaGVtYSBhbmFseXNpc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgZ3JlYXRlciB0aGFuIDAgaWYgcHJvdmlkZWQ7IGRlZmF1bHQgaXMgMTAwMDsgdXNlZCBmb3IgZG9jdW1lbnQgb3JnYW5pemF0aW9uIGFuYWx5c2lzXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtZG9jZGJzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtZG9jZGJzZXR0aW5ncy1kb2NzdG9pbnZlc3RpZ2F0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9jc1RvSW52ZXN0aWdhdGU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZsYWcgdG8gZXh0cmFjdCBkb2N1bWVudCBJRCBkdXJpbmcgRG9jdW1lbnREQiBtaWdyYXRpb24gZW5hYmxpbmcgZG9jdW1lbnQgaWRlbnRpZmljYXRpb24gYW5kIHRyYWNraW5nLiBTcGVjaWZpZXMgd2hldGhlciB0byBleHRyYWN0IHRoZSBkb2N1bWVudCBJRCB3aGVuIG5lc3RpbmcgbGV2ZWwgaXMgc2V0IHRvIFwibm9uZVwiIGZvciBkb2N1bWVudCBtb2RlIG1pZ3JhdGlvbiwgZW5hYmxpbmcgZG9jdW1lbnQtbGV2ZWwgdHJhY2tpbmcgYW5kIGlkZW50aWZpY2F0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERvY3VtZW50IGlkZW50aWZpY2F0aW9uOyBEb2N1bWVudCBtb2RlIG1pZ3JhdGlvbjsgRG9jdW1lbnQgdHJhY2tpbmc7IElEIGV4dHJhY3Rpb25cbiAgICpcbiAgICogQVdTOiBETVMgRG9jdW1lbnREQiBlbmRwb2ludCBleHRyYWN0RG9jSWQgc2V0dGluZyBmb3IgZG9jdW1lbnQgSUQgZXh0cmFjdGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgZGVmYXVsdCBpcyBmYWxzZTsgdXNlZCB3aGVuIG5lc3RpbmcgbGV2ZWwgaXMgXCJub25lXCJcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1kb2NkYnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1kb2NkYnNldHRpbmdzLWV4dHJhY3Rkb2NpZFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFjdERvY0lkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbmVzdGluZyBsZXZlbCBzcGVjaWZpY2F0aW9uIGZvciBEb2N1bWVudERCIG1pZ3JhdGlvbiBtb2RlIHNlbGVjdGlvbiBlbmFibGluZyBkb2N1bWVudCBvciB0YWJsZSBtb2RlIG1pZ3JhdGlvbi4gRGVmaW5lcyB0aGUgbWlncmF0aW9uIGFwcHJvYWNoIHdpdGggXCJub25lXCIgZm9yIGRvY3VtZW50IG1vZGUgcHJlc2VydmluZyBkb2N1bWVudCBzdHJ1Y3R1cmUgb3IgXCJvbmVcIiBmb3IgdGFibGUgbW9kZSBmbGF0dGVuaW5nIGRvY3VtZW50cyBpbnRvIHJlbGF0aW9uYWwgZm9ybWF0LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE1pZ3JhdGlvbiBtb2RlIHNlbGVjdGlvbjsgRG9jdW1lbnQgc3RydWN0dXJlIHByZXNlcnZhdGlvbjsgVGFibGUgbW9kZSBmbGF0dGVuaW5nOyBNaWdyYXRpb24gc3RyYXRlZ3kgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBEb2N1bWVudERCIGVuZHBvaW50IG5lc3RpbmdMZXZlbCBzZXR0aW5nIGZvciBtaWdyYXRpb24gbW9kZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgXCJub25lXCIgb3IgXCJvbmVcIiBpZiBwcm92aWRlZDsgZGVmYXVsdCBpcyBcIm5vbmVcIjsgZGV0ZXJtaW5lcyBkb2N1bWVudCB2cyB0YWJsZSBtaWdyYXRpb24gbW9kZVxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWRvY2Ric2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LWRvY2Ric2V0dGluZ3MtbmVzdGluZ2xldmVsXG4gICAqL1xuICByZWFkb25seSBuZXN0aW5nTGV2ZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIElBTSByb2xlIEFSTiBmb3IgRE1TIHRvIGFjY2VzcyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgRG9jdW1lbnREQiBjcmVkZW50aWFscyBlbmFibGluZyBzZWN1cmUgY3JlZGVudGlhbCBtYW5hZ2VtZW50LiBEZWZpbmVzIHRoZSBJQU0gcm9sZSB0aGF0IERNUyBhc3N1bWVzIHRvIHJldHJpZXZlIGRhdGFiYXNlIGNyZWRlbnRpYWxzIGZyb20gU2VjcmV0cyBNYW5hZ2VyIGZvciBEb2N1bWVudERCIGVuZHBvaW50IGNvbm5lY3Rpdml0eSB3aXRoIHJvbGUtYmFzZWQgc2VjdXJpdHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU2VjdXJlIGNyZWRlbnRpYWwgYWNjZXNzOyBJQU0gcm9sZS1iYXNlZCBzZWN1cml0eTsgU2VjcmV0cyBNYW5hZ2VyIGludGVncmF0aW9uOyBETVMgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogQVdTOiBETVMgRG9jdW1lbnREQiBlbmRwb2ludCBzZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm4gc2V0dGluZyBmb3IgSUFNIHJvbGUtYmFzZWQgY3JlZGVudGlhbCBhY2Nlc3NcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBJQU0gcm9sZSBBUk4gaWYgcHJvdmlkZWQ7IHJvbGUgbXVzdCBoYXZlIGlhbTpQYXNzUm9sZSBhbmQgU2VjcmV0cyBNYW5hZ2VyIGFjY2VzcyBwZXJtaXNzaW9uc1xuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWRvY2Ric2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LWRvY2Ric2V0dGluZ3Mtc2VjcmV0c21hbmFnZXJhY2Nlc3Nyb2xlYXJuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgQVJOIGNvbnRhaW5pbmcgRG9jdW1lbnREQiBlbmRwb2ludCBjb25uZWN0aW9uIGRldGFpbHMgZW5hYmxpbmcgc2VjdXJlIGNyZWRlbnRpYWwgc3RvcmFnZSBmb3IgZG9jdW1lbnQgZGF0YWJhc2UgY29ubmVjdGl2aXR5LiBEZWZpbmVzIHRoZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCB0aGF0IHN0b3JlcyBkYXRhYmFzZSBjb25uZWN0aW9uIGNyZWRlbnRpYWxzIGluY2x1ZGluZyB1c2VybmFtZSwgcGFzc3dvcmQsIGFuZCBjb25uZWN0aW9uIHBhcmFtZXRlcnMgZm9yIERvY3VtZW50REIgZW5kcG9pbnQgYWNjZXNzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNlY3VyZSBjcmVkZW50aWFsIHN0b3JhZ2U7IERvY3VtZW50REIgY29ubmVjdGl2aXR5OyBEYXRhYmFzZSBhdXRoZW50aWNhdGlvbjsgU2VjcmV0cyBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogRE1TIERvY3VtZW50REIgZW5kcG9pbnQgc2VjcmV0c01hbmFnZXJTZWNyZXRJZCBzZXR0aW5nIGZvciBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IHJlZmVyZW5jZVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgQVJOOyByZXF1aXJlZDsgc2VjcmV0IG11c3QgY29udGFpbiB2YWxpZCBEb2N1bWVudERCIGNvbm5lY3Rpb24gY3JlZGVudGlhbHNcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1kb2NkYnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1kb2NkYnNldHRpbmdzLXNlY3JldHNtYW5hZ2Vyc2VjcmV0aWRcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0QXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIEtNUyBrZXkgQVJOIGZvciBlbmNyeXB0aW5nIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgY29udGFpbmluZyBEb2N1bWVudERCIGNyZWRlbnRpYWxzIGVuYWJsaW5nIGVuaGFuY2VkIHNlY3VyaXR5IGZvciBkYXRhYmFzZSBjb25uZWN0aW9uIGRldGFpbHMuIERlZmluZXMgdGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IHRoYXQgc3RvcmVzIERvY3VtZW50REIgZW5kcG9pbnQgY3JlZGVudGlhbHMgZm9yIGFkZGl0aW9uYWwgc2VjdXJpdHkgbGF5ZXIuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3JlZGVudGlhbCBlbmNyeXB0aW9uOyBFbmhhbmNlZCBzZWN1cml0eTsgS01TIGludGVncmF0aW9uOyBTZWNyZXRzIE1hbmFnZXIgZW5jcnlwdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBEb2N1bWVudERCIGVuZHBvaW50IHNlY3JldHNNYW5hZ2VyU2VjcmV0S01TQXJuIHNldHRpbmcgZm9yIEtNUyBlbmNyeXB0aW9uIG9mIGNyZWRlbnRpYWxzXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgS01TIGtleSBBUk4gaWYgcHJvdmlkZWQ7IGVuYWJsZXMgZW5jcnlwdGlvbiBvZiBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgY3JlZGVudGlhbHNcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0S01TQXJuPzogc3RyaW5nO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIHRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIHJvbGUgdXNlZCB0byBkZWZpbmUgYW4gQW1hem9uIER5bmFtb0RCIHRhcmdldCBlbmRwb2ludC4gIE1vZGlmaWVkIGZyb20gdGhlIGVxdWl2YWxlbnQgTDEgQ29uc3RydWN0IHRvIHByZXZlbnQgdXNlIG9mIHBsYWludGV4dCBjcmVkZW50aWFscyBhbmQgZW5mb3JjZSB1c2Ugb2YgS01TIGVuY3J5cHRpb24uXG4gKiBUaGlzIGluZm9ybWF0aW9uIGFsc28gaW5jbHVkZXMgdGhlIG91dHB1dCBmb3JtYXQgb2YgcmVjb3JkcyBhcHBsaWVkIHRvIHRoZSBlbmRwb2ludCBhbmQgZGV0YWlscyBvZiB0cmFuc2FjdGlvbiBhbmQgY29udHJvbCB0YWJsZSBkYXRhIGluZm9ybWF0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgYXZhaWxhYmxlIHNldHRpbmdzLCBzZWUgW1VzaW5nIG9iamVjdCBtYXBwaW5nIHRvIG1pZ3JhdGUgZGF0YSB0byBEeW5hbW9EQl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Rtcy9sYXRlc3QvdXNlcmd1aWRlL0NIQVBfVGFyZ2V0LkR5bmFtb0RCLmh0bWwjQ0hBUF9UYXJnZXQuRHluYW1vREIuT2JqZWN0TWFwcGluZykgaW4gdGhlICpBV1MgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgVXNlciBHdWlkZSogLlxuICogQHN0cnVjdFxuICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1keW5hbW9kYnNldHRpbmdzLmh0bWxcbiAqL1xuLyoqXG4gKiBRLUVOSEFOQ0VELUlOVEVSRkFDRVxuICogRHluYW1vREIgc2V0dGluZ3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIERNUyBwcm92aWRpbmcgTm9TUUwgZGF0YWJhc2UgbWlncmF0aW9uIGFuZCBzZXJ2ZXJsZXNzIGRhdGFiYXNlIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBEeW5hbW9EQi1zcGVjaWZpYyBwcm9wZXJ0aWVzIGZvciBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBpbmNsdWRpbmcgTm9TUUwgbWlncmF0aW9uLCBzZXJ2ZXJsZXNzIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSwgYW5kIER5bmFtb0RCIGludGVncmF0aW9uIGZvciBzZXJ2ZXJsZXNzIGRhdGFiYXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3MuXG4gKlxuICogVXNlIGNhc2VzOiBOb1NRTCBkYXRhYmFzZSBtaWdyYXRpb247IFNlcnZlcmxlc3MgZGF0YWJhc2UgbWlncmF0aW9uOyBEeW5hbW9EQiBjb25uZWN0aXZpdHk7IE5vU1FMIGRhdGEgbWlncmF0aW9uOyBTZXJ2ZXJsZXNzIGRhdGEgaW50ZWdyYXRpb247IERNUyBEeW5hbW9EQiBpbnRlZ3JhdGlvblxuICpcbiAqIEFXUzogQVdTIERNUyBEeW5hbW9EQiBlbmRwb2ludCBjb25maWd1cmF0aW9uIHdpdGggTm9TUUwgZGF0YWJhc2UgbWlncmF0aW9uIGFuZCBzZXJ2ZXJsZXNzIGRhdGFiYXNlIGNhcGFiaWxpdGllc1xuICpcbiAqIFZhbGlkYXRpb246IENvbmZpZ3VyYXRpb24gbXVzdCBiZSB2YWxpZCBmb3IgRE1TIG1pZ3JhdGlvbjsgcHJvcGVydGllcyBtdXN0IGNvbmZvcm0gdG8gQVdTIERNUyBhbmQgZGF0YWJhc2Utc3BlY2lmaWMgcmVxdWlyZW1lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1vRGJTZXR0aW5nc1Byb3BlcnR5IHtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgSUFNIHNlcnZpY2Ugcm9sZSBBUk4gZm9yIERNUyBEeW5hbW9EQiBlbmRwb2ludCBhY2Nlc3MgZW5hYmxpbmcgc2VjdXJlIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIGZvciBOb1NRTCBkYXRhYmFzZSBvcGVyYXRpb25zLiBEZWZpbmVzIHRoZSBJQU0gcm9sZSB0aGF0IERNUyBhc3N1bWVzIHRvIGFjY2VzcyBEeW5hbW9EQiB0YWJsZXMgd2l0aCByZXF1aXJlZCBwZXJtaXNzaW9ucyBmb3IgZGF0YSBtaWdyYXRpb24gYW5kIE5vU1FMIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRHluYW1vREIgYWNjZXNzIGNvbnRyb2w7IERNUyBzZXJ2aWNlIGF1dGhlbnRpY2F0aW9uOyBJQU0gcm9sZS1iYXNlZCBzZWN1cml0eTsgTm9TUUwgZGF0YWJhc2UgcGVybWlzc2lvbnNcbiAgICpcbiAgICogQVdTOiBETVMgRHluYW1vREIgZW5kcG9pbnQgc2VydmljZUFjY2Vzc1JvbGVBcm4gc2V0dGluZyBmb3IgSUFNIHJvbGUtYmFzZWQgYXV0aGVudGljYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBJQU0gcm9sZSBBUk4gaWYgcHJvdmlkZWQ7IHJvbGUgbXVzdCBoYXZlIGlhbTpQYXNzUm9sZSBwZXJtaXNzaW9uIGFuZCBEeW5hbW9EQiBhY2Nlc3MgcG9saWNpZXNcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1keW5hbW9kYnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1keW5hbW9kYnNldHRpbmdzLXNlcnZpY2VhY2Nlc3Nyb2xlYXJuXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlQWNjZXNzUm9sZUFybj86IHN0cmluZztcbn1cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBkZWZpbmVzIGEgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgZW5kcG9pbnQuIE1vZGlmaWVkIGZyb20gdGhlIGVxdWl2YWxlbnQgTDEgQ29uc3RydWN0IHRvIHByZXZlbnQgdXNlIG9mIHBsYWludGV4dCBjcmVkZW50aWFscyBhbmQgZW5mb3JjZSB1c2Ugb2YgS01TIGVuY3J5cHRpb24uXG4gKiBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBvdXRwdXQgZm9ybWF0IG9mIHJlY29yZHMgYXBwbGllZCB0byB0aGUgZW5kcG9pbnQgYW5kIGRldGFpbHMgb2YgdHJhbnNhY3Rpb24gYW5kIGNvbnRyb2wgdGFibGUgZGF0YSBpbmZvcm1hdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIGF2YWlsYWJsZSBzZXR0aW5ncywgc2VlIFtFeHRyYSBjb25uZWN0aW9uIGF0dHJpYnV0ZXMgd2hlbiB1c2luZyBTUUwgU2VydmVyIGFzIGEgc291cmNlIGZvciBBV1MgRE1TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC91c2VyZ3VpZGUvQ0hBUF9Tb3VyY2UuU1FMU2VydmVyLmh0bWwjQ0hBUF9Tb3VyY2UuU1FMU2VydmVyLkNvbm5lY3Rpb25BdHRyaWIpIGFuZCBbRXh0cmEgY29ubmVjdGlvbiBhdHRyaWJ1dGVzIHdoZW4gdXNpbmcgU1FMIFNlcnZlciBhcyBhIHRhcmdldCBmb3IgQVdTIERNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Rtcy9sYXRlc3QvdXNlcmd1aWRlL0NIQVBfVGFyZ2V0LlNRTFNlcnZlci5odG1sI0NIQVBfVGFyZ2V0LlNRTFNlcnZlci5Db25uZWN0aW9uQXR0cmliKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gKiBAc3RydWN0XG4gKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLmh0bWxcbiAqL1xuLyoqXG4gKiBRLUVOSEFOQ0VELUlOVEVSRkFDRVxuICogTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgc2V0dGluZ3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIERNUyBwcm92aWRpbmcgU1FMIFNlcnZlciBtaWdyYXRpb24gYW5kIGVudGVycHJpc2UgZGF0YWJhc2UgY2FwYWJpbGl0aWVzLiBEZWZpbmVzIFNRTCBTZXJ2ZXItc3BlY2lmaWMgcHJvcGVydGllcyBmb3IgRGF0YWJhc2UgTWlncmF0aW9uIFNlcnZpY2UgaW5jbHVkaW5nIGVudGVycHJpc2UgZmVhdHVyZXMsIGJhY2t1cCBpbnRlZ3JhdGlvbiwgYW5kIFNRTCBTZXJ2ZXIgbWlncmF0aW9uIGZvciBlbnRlcnByaXNlIGRhdGFiYXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3MuXG4gKlxuICogVXNlIGNhc2VzOiBTUUwgU2VydmVyIG1pZ3JhdGlvbjsgRW50ZXJwcmlzZSBkYXRhYmFzZSBtaWdyYXRpb247IFNRTCBTZXJ2ZXIgY29ubmVjdGl2aXR5OyBFbnRlcnByaXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3M7IERhdGFiYXNlIGJhY2t1cCBpbnRlZ3JhdGlvbjsgRE1TIFNRTCBTZXJ2ZXIgaW50ZWdyYXRpb25cbiAqXG4gKiBBV1M6IEFXUyBETVMgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgZW5kcG9pbnQgY29uZmlndXJhdGlvbiB3aXRoIGVudGVycHJpc2UgZGF0YWJhc2UgbWlncmF0aW9uIGFuZCBTUUwgU2VydmVyIGNhcGFiaWxpdGllc1xuICpcbiAqIFZhbGlkYXRpb246IENvbmZpZ3VyYXRpb24gbXVzdCBiZSB2YWxpZCBmb3IgRE1TIG1pZ3JhdGlvbjsgcHJvcGVydGllcyBtdXN0IGNvbmZvcm0gdG8gQVdTIERNUyBhbmQgZGF0YWJhc2Utc3BlY2lmaWMgcmVxdWlyZW1lbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWljcm9zb2Z0U3FsU2VydmVyU2V0dGluZ3NQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIEJDUCBwYWNrZXQgc2l6ZSBpbiBieXRlcyBmb3IgU1FMIFNlcnZlciBkYXRhIHRyYW5zZmVyIG9wdGltaXphdGlvbiBlbmFibGluZyBwZXJmb3JtYW5jZSB0dW5pbmcgZm9yIGJ1bGsgZGF0YSBvcGVyYXRpb25zLiBEZWZpbmVzIHRoZSBtYXhpbXVtIHBhY2tldCBzaXplIHVzZWQgZm9yIEJ1bGsgQ29weSBQcm9ncmFtIChCQ1ApIG9wZXJhdGlvbnMgZHVyaW5nIFNRTCBTZXJ2ZXIgZGF0YSBtaWdyYXRpb24gZm9yIG9wdGltYWwgbmV0d29yayB1dGlsaXphdGlvbiBhbmQgdHJhbnNmZXIgcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIFVzZSBjYXNlczogU1FMIFNlcnZlciBwZXJmb3JtYW5jZSB0dW5pbmc7IEJ1bGsgZGF0YSB0cmFuc2ZlciBvcHRpbWl6YXRpb247IE5ldHdvcmsgdXRpbGl6YXRpb247IE1pZ3JhdGlvbiBwZXJmb3JtYW5jZVxuICAgKlxuICAgKiBBV1M6IERNUyBNaWNyb3NvZnQgU1FMIFNlcnZlciBlbmRwb2ludCBiY3BQYWNrZXRTaXplIHNldHRpbmcgZm9yIEJDUCB0cmFuc2ZlciBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBwYWNrZXQgc2l6ZSBpbiBieXRlcyBpZiBwcm92aWRlZDsgYWZmZWN0cyBCQ1AgdHJhbnNmZXIgcGVyZm9ybWFuY2UgYW5kIG5ldHdvcmsgdXRpbGl6YXRpb25cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MtYmNwcGFja2V0c2l6ZVxuICAgKi9cbiAgcmVhZG9ubHkgYmNwUGFja2V0U2l6ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmlsZSBncm91cCBzcGVjaWZpY2F0aW9uIGZvciBETVMgaW50ZXJuYWwgY29udHJvbCB0YWJsZXMgZW5hYmxpbmcgU1FMIFNlcnZlciBzdG9yYWdlIG9yZ2FuaXphdGlvbiBhbmQgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBEZWZpbmVzIHRoZSBmaWxlIGdyb3VwIHdoZXJlIERNUyBjcmVhdGVzIGludGVybmFsIGNvbnRyb2wgdGFibGVzIChhd3NkbXNfYXBwbHlfZXhjZXB0aW9uLCBhd3NkbXNfYXBwbHksIGF3c2Rtc19jaGFuZ2VzKSBmb3Igb3JnYW5pemVkIHN0b3JhZ2UgbWFuYWdlbWVudCBhbmQgcGVyZm9ybWFuY2UgdHVuaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNRTCBTZXJ2ZXIgc3RvcmFnZSBvcmdhbml6YXRpb247IFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjsgRmlsZSBncm91cCBtYW5hZ2VtZW50OyBDb250cm9sIHRhYmxlIG9yZ2FuaXphdGlvblxuICAgKlxuICAgKiBBV1M6IERNUyBNaWNyb3NvZnQgU1FMIFNlcnZlciBlbmRwb2ludCBjb250cm9sVGFibGVzRmlsZUdyb3VwIHNldHRpbmcgZm9yIGludGVybmFsIHRhYmxlIHN0b3JhZ2Ugb3JnYW5pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgU1FMIFNlcnZlciBmaWxlIGdyb3VwIG5hbWUgaWYgcHJvdmlkZWQ7IGFmZmVjdHMgRE1TIGludGVybmFsIHRhYmxlIHN0b3JhZ2UgbG9jYXRpb25cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MtY29udHJvbHRhYmxlc2ZpbGVncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgY29udHJvbFRhYmxlc0ZpbGVHcm91cD86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZGF0YWJhc2UgbmFtZSBmb3IgU1FMIFNlcnZlciBlbmRwb2ludCBjb25uZWN0aXZpdHkgZW5hYmxpbmcgc3BlY2lmaWMgZGF0YWJhc2UgdGFyZ2V0aW5nIHdpdGhpbiBTUUwgU2VydmVyIGluc3RhbmNlLiBEZWZpbmVzIHRoZSB0YXJnZXQgZGF0YWJhc2UgbmFtZSB3aXRoaW4gdGhlIFNRTCBTZXJ2ZXIgaW5zdGFuY2UgZm9yIGZvY3VzZWQgbWlncmF0aW9uIG9wZXJhdGlvbnMgYW5kIGRhdGFiYXNlLXNwZWNpZmljIGNvbm5lY3Rpdml0eS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhYmFzZS1zcGVjaWZpYyBtaWdyYXRpb247IFNRTCBTZXJ2ZXIgZGF0YWJhc2UgdGFyZ2V0aW5nOyBNdWx0aS1kYXRhYmFzZSBpbnN0YW5jZSBtYW5hZ2VtZW50OyBEYXRhYmFzZSBjb25uZWN0aXZpdHlcbiAgICpcbiAgICogQVdTOiBETVMgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgZW5kcG9pbnQgZGF0YWJhc2VOYW1lIHNldHRpbmcgZm9yIHNwZWNpZmljIGRhdGFiYXNlIGNvbm5lY3Rpdml0eVxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFNRTCBTZXJ2ZXIgZGF0YWJhc2UgbmFtZSBpZiBwcm92aWRlZDsgdGFyZ2V0cyBzcGVjaWZpYyBkYXRhYmFzZSB3aXRoaW4gU1FMIFNlcnZlciBpbnN0YW5jZVxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy1kYXRhYmFzZW5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byBmb3JjZSBMT0IgbG9va3VwIG9uIGlubGluZSBMT0IgZGF0YSBlbmFibGluZyBsYXJnZSBvYmplY3QgaGFuZGxpbmcgaW4gU1FMIFNlcnZlciBtaWdyYXRpb24uIEZvcmNlcyBETVMgdG8gcGVyZm9ybSBMT0IgbG9va3VwIG9wZXJhdGlvbnMgb24gaW5saW5lIExPQiBkYXRhIGZvciBjb21wbGV0ZSBsYXJnZSBvYmplY3QgbWlncmF0aW9uIGFuZCBkYXRhIGludGVncml0eSBpbiBTUUwgU2VydmVyIGVudmlyb25tZW50cy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBMYXJnZSBvYmplY3QgbWlncmF0aW9uOyBTUUwgU2VydmVyIExPQiBoYW5kbGluZzsgRGF0YSBpbnRlZ3JpdHk7IENvbXBsZXRlIGRhdGEgbWlncmF0aW9uXG4gICAqXG4gICAqIEFXUzogRE1TIE1pY3Jvc29mdCBTUUwgU2VydmVyIGVuZHBvaW50IGZvcmNlTG9iTG9va3VwIHNldHRpbmcgZm9yIExPQiBkYXRhIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIHZhbHVlIGlmIHByb3ZpZGVkOyBhZmZlY3RzIExPQiBkYXRhIG1pZ3JhdGlvbiBiZWhhdmlvciBhbmQgY29tcGxldGVuZXNzXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLWZvcmNlbG9ibG9va3VwXG4gICAqL1xuICByZWFkb25seSBmb3JjZUxvYkxvb2t1cD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgVENQIHBvcnQgbnVtYmVyIGZvciBTUUwgU2VydmVyIGVuZHBvaW50IGNvbm5lY3Rpdml0eSBlbmFibGluZyBjdXN0b20gcG9ydCBjb25maWd1cmF0aW9uIGZvciBkYXRhYmFzZSBjb25uZWN0aW9ucy4gRGVmaW5lcyB0aGUgbmV0d29yayBwb3J0IGZvciBTUUwgU2VydmVyIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbGxvd2luZyBmb3Igbm9uLXN0YW5kYXJkIHBvcnQgY29uZmlndXJhdGlvbnMgYW5kIG5ldHdvcmsgc2VjdXJpdHkgcmVxdWlyZW1lbnRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEN1c3RvbSBwb3J0IGNvbmZpZ3VyYXRpb247IE5ldHdvcmsgc2VjdXJpdHk7IFNRTCBTZXJ2ZXIgY29ubmVjdGl2aXR5OyBQb3J0IG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBETVMgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgZW5kcG9pbnQgcG9ydCBzZXR0aW5nIGZvciBkYXRhYmFzZSBjb25uZWN0aXZpdHkgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFRDUCBwb3J0IG51bWJlciBpZiBwcm92aWRlZDsgZW5hYmxlcyBjdXN0b20gU1FMIFNlcnZlciBwb3J0IGNvbm5lY3Rpdml0eVxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy1wb3J0XG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHF1ZXJ5IHNpbmdsZSBBbHdheXMgT24gbm9kZSBpbiBTUUwgU2VydmVyIEFsd2F5cyBPbiBhdmFpbGFiaWxpdHkgZ3JvdXBzIGVuYWJsaW5nIG9wdGltaXplZCBjb25uZWN0aXZpdHkgZm9yIGhpZ2ggYXZhaWxhYmlsaXR5IGVudmlyb25tZW50cy4gRGlyZWN0cyBETVMgdG8gcXVlcnkgb25seSBhIHNpbmdsZSBub2RlIGluIEFsd2F5cyBPbiBhdmFpbGFiaWxpdHkgZ3JvdXBzIGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZSBhbmQgcmVkdWNlZCByZXNvdXJjZSB1dGlsaXphdGlvbiBpbiBoaWdoIGF2YWlsYWJpbGl0eSBTUUwgU2VydmVyIGRlcGxveW1lbnRzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFsd2F5cyBPbiBhdmFpbGFiaWxpdHkgZ3JvdXBzOyBIaWdoIGF2YWlsYWJpbGl0eSBvcHRpbWl6YXRpb247IFBlcmZvcm1hbmNlIHR1bmluZzsgUmVzb3VyY2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIEFXUzogRE1TIE1pY3Jvc29mdCBTUUwgU2VydmVyIGVuZHBvaW50IHF1ZXJ5U2luZ2xlQWx3YXlzT25Ob2RlIHNldHRpbmcgZm9yIEFsd2F5cyBPbiBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIHZhbHVlIGlmIHByb3ZpZGVkOyBvcHRpbWl6ZXMgY29ubmVjdGl2aXR5IGZvciBBbHdheXMgT24gYXZhaWxhYmlsaXR5IGdyb3Vwc1xuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy1xdWVyeXNpbmdsZWFsd2F5c29ubm9kZVxuICAgKi9cbiAgcmVhZG9ubHkgcXVlcnlTaW5nbGVBbHdheXNPbk5vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHJlYWQgY2hhbmdlcyBvbmx5IGZyb20gdHJhbnNhY3Rpb24gbG9nIGJhY2t1cHMgZW5hYmxpbmcgY29udHJvbGxlZCB0cmFuc2FjdGlvbiBsb2cgbWFuYWdlbWVudCBpbiBTUUwgU2VydmVyIG1pZ3JhdGlvbi4gV2hlbiBlbmFibGVkLCBETVMgcmVhZHMgY2hhbmdlcyBvbmx5IGZyb20gdHJhbnNhY3Rpb24gbG9nIGJhY2t1cHMgcmF0aGVyIHRoYW4gYWN0aXZlIHRyYW5zYWN0aW9uIGxvZ3MsIHByb3ZpZGluZyBiZXR0ZXIgY29udHJvbCBvdmVyIGxvZyBmaWxlIGdyb3d0aCBhbmQgcmVwbGljYXRpb24gbGF0ZW5jeS5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBUcmFuc2FjdGlvbiBsb2cgbWFuYWdlbWVudDsgTG9nIGZpbGUgZ3Jvd3RoIGNvbnRyb2w7IFJlcGxpY2F0aW9uIGxhdGVuY3kgY29udHJvbDsgQmFja3VwLWJhc2VkIHJlcGxpY2F0aW9uXG4gICAqXG4gICAqIEFXUzogRE1TIE1pY3Jvc29mdCBTUUwgU2VydmVyIGVuZHBvaW50IHJlYWRCYWNrdXBPbmx5IHNldHRpbmcgZm9yIHRyYW5zYWN0aW9uIGxvZyBtYW5hZ2VtZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgYWZmZWN0cyB0cmFuc2FjdGlvbiBsb2cgcmVhZGluZyBiZWhhdmlvciBhbmQgbG9nIGZpbGUgZ3Jvd3RoXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLXJlYWRiYWNrdXBvbmx5XG4gICAqL1xuICByZWFkb25seSByZWFkQmFja3VwT25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIHNhZmVndWFyZCBwb2xpY3kgZm9yIHRyYW5zYWN0aW9uIGxvZyB0cnVuY2F0aW9uIHByZXZlbnRpb24gZW5hYmxpbmcgY29udHJvbGxlZCBsb2cgbWFuYWdlbWVudCBpbiBTUUwgU2VydmVyIHJlcGxpY2F0aW9uLiBEZWZpbmVzIHRoZSBtZXRob2QgZm9yIHByZXZlbnRpbmcgdHJhbnNhY3Rpb24gbG9nIHRydW5jYXRpb24gd2l0aCBvcHRpb25zIGZvciB0cmFuc2FjdGlvbi1iYXNlZCBvciBzcF9yZXBsZG9uZS1iYXNlZCBhcHByb2FjaGVzIGZvciBvcHRpbWFsIGxvZyBtYW5hZ2VtZW50IGFuZCByZXBsaWNhdGlvbiBjb29yZGluYXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogVHJhbnNhY3Rpb24gbG9nIHRydW5jYXRpb24gcHJldmVudGlvbjsgTG9nIG1hbmFnZW1lbnQ7IFJlcGxpY2F0aW9uIGNvb3JkaW5hdGlvbjsgUGFyYWxsZWwgdGFzayBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogRE1TIE1pY3Jvc29mdCBTUUwgU2VydmVyIGVuZHBvaW50IHNhZmVndWFyZFBvbGljeSBzZXR0aW5nIGZvciB0cmFuc2FjdGlvbiBsb2cgbWFuYWdlbWVudFxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIHNhZmVndWFyZCBwb2xpY3kgdmFsdWUgaWYgcHJvdmlkZWQ7IGNvbnRyb2xzIHRyYW5zYWN0aW9uIGxvZyB0cnVuY2F0aW9uIHByZXZlbnRpb24gbWV0aG9kXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLXNhZmVndWFyZHBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgc2FmZWd1YXJkUG9saWN5Pzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBJQU0gcm9sZSBBUk4gZm9yIERNUyB0byBhY2Nlc3MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIFNRTCBTZXJ2ZXIgY3JlZGVudGlhbHMgZW5hYmxpbmcgc2VjdXJlIGNyZWRlbnRpYWwgbWFuYWdlbWVudC4gRGVmaW5lcyB0aGUgSUFNIHJvbGUgdGhhdCBETVMgYXNzdW1lcyB0byByZXRyaWV2ZSBkYXRhYmFzZSBjcmVkZW50aWFscyBmcm9tIFNlY3JldHMgTWFuYWdlciBmb3IgU1FMIFNlcnZlciBlbmRwb2ludCBjb25uZWN0aXZpdHkgd2l0aCByb2xlLWJhc2VkIHNlY3VyaXR5LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNlY3VyZSBjcmVkZW50aWFsIGFjY2VzczsgSUFNIHJvbGUtYmFzZWQgc2VjdXJpdHk7IFNlY3JldHMgTWFuYWdlciBpbnRlZ3JhdGlvbjsgRE1TIGF1dGhlbnRpY2F0aW9uXG4gICAqXG4gICAqIEFXUzogRE1TIE1pY3Jvc29mdCBTUUwgU2VydmVyIGVuZHBvaW50IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybiBzZXR0aW5nIGZvciBJQU0gcm9sZS1iYXNlZCBjcmVkZW50aWFsIGFjY2Vzc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIElBTSByb2xlIEFSTiBpZiBwcm92aWRlZDsgcm9sZSBtdXN0IGhhdmUgaWFtOlBhc3NSb2xlIGFuZCBTZWNyZXRzIE1hbmFnZXIgYWNjZXNzIHBlcm1pc3Npb25zXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLXNlY3JldHNtYW5hZ2VyYWNjZXNzcm9sZWFyblxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJBY2Nlc3NSb2xlQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBSZXF1aXJlZCBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IEFSTiBjb250YWluaW5nIFNRTCBTZXJ2ZXIgZW5kcG9pbnQgY29ubmVjdGlvbiBkZXRhaWxzIGVuYWJsaW5nIHNlY3VyZSBjcmVkZW50aWFsIHN0b3JhZ2UgZm9yIGRhdGFiYXNlIGNvbm5lY3Rpdml0eS4gRGVmaW5lcyB0aGUgQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBzdG9yZXMgZGF0YWJhc2UgY29ubmVjdGlvbiBjcmVkZW50aWFscyBpbmNsdWRpbmcgdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGZvciBTUUwgU2VydmVyIGVuZHBvaW50IGFjY2Vzcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTZWN1cmUgY3JlZGVudGlhbCBzdG9yYWdlOyBTUUwgU2VydmVyIGNvbm5lY3Rpdml0eTsgRGF0YWJhc2UgYXV0aGVudGljYXRpb247IFNlY3JldHMgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IERNUyBNaWNyb3NvZnQgU1FMIFNlcnZlciBlbmRwb2ludCBzZWNyZXRzTWFuYWdlclNlY3JldElkIHNldHRpbmcgZm9yIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgcmVmZXJlbmNlXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBBUk47IHJlcXVpcmVkOyBzZWNyZXQgbXVzdCBjb250YWluIHZhbGlkIFNRTCBTZXJ2ZXIgY29ubmVjdGlvbiBjcmVkZW50aWFsc1xuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy1zZWNyZXRzbWFuYWdlcnNlY3JldGlkXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldEFybjogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBLTVMga2V5IEFSTiBmb3IgZW5jcnlwdGluZyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGNvbnRhaW5pbmcgU1FMIFNlcnZlciBjcmVkZW50aWFscyBlbmFibGluZyBlbmhhbmNlZCBzZWN1cml0eSBmb3IgZGF0YWJhc2UgY29ubmVjdGlvbiBkZXRhaWxzLiBEZWZpbmVzIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCB0aGF0IHN0b3JlcyBTUUwgU2VydmVyIGVuZHBvaW50IGNyZWRlbnRpYWxzIGZvciBhZGRpdGlvbmFsIHNlY3VyaXR5IGxheWVyLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IENyZWRlbnRpYWwgZW5jcnlwdGlvbjsgRW5oYW5jZWQgc2VjdXJpdHk7IEtNUyBpbnRlZ3JhdGlvbjsgU2VjcmV0cyBNYW5hZ2VyIGVuY3J5cHRpb25cbiAgICpcbiAgICogQVdTOiBETVMgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgZW5kcG9pbnQgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4gc2V0dGluZyBmb3IgS01TIGVuY3J5cHRpb24gb2YgY3JlZGVudGlhbHNcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBLTVMga2V5IEFSTiBpZiBwcm92aWRlZDsgZW5hYmxlcyBlbmNyeXB0aW9uIG9mIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgY29udGFpbmluZyBjcmVkZW50aWFsc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZSBmb3IgU1FMIFNlcnZlciBlbmRwb2ludCBjb25uZWN0aXZpdHkgZW5hYmxpbmcgcHJlY2lzZSBzZXJ2ZXIgaWRlbnRpZmljYXRpb24gYW5kIG5ldHdvcmsgcm91dGluZy4gRGVmaW5lcyB0aGUgY29tcGxldGUgc2VydmVyIG5hbWUgaW5jbHVkaW5nIGRvbWFpbiBmb3IgU1FMIFNlcnZlciBkYXRhYmFzZSBjb25uZWN0aXZpdHksIHR5cGljYWxseSBmcm9tIFJEUyBEZXNjcmliZURCSW5zdGFuY2VzIGVuZHBvaW50IGFkZHJlc3MgZm9yIG1hbmFnZWQgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNlcnZlciBpZGVudGlmaWNhdGlvbjsgTmV0d29yayByb3V0aW5nOyBTUUwgU2VydmVyIGNvbm5lY3Rpdml0eTsgUkRTIGludGVncmF0aW9uXG4gICAqXG4gICAqIEFXUzogRE1TIE1pY3Jvc29mdCBTUUwgU2VydmVyIGVuZHBvaW50IHNlcnZlck5hbWUgc2V0dGluZyBmb3IgZGF0YWJhc2Ugc2VydmVyIGlkZW50aWZpY2F0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgRlFETiBpZiBwcm92aWRlZDsgZW5hYmxlcyBwcmVjaXNlIFNRTCBTZXJ2ZXIgc2VydmVyIGlkZW50aWZpY2F0aW9uIGFuZCBjb25uZWN0aXZpdHlcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3Mtc2VydmVybmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgdHJhbnNhY3Rpb24gbG9nIGFjY2VzcyBtb2RlIGZvciBDREMgZGF0YSBmZXRjaGluZyBlbmFibGluZyBvcHRpbWl6ZWQgY2hhbmdlIGRhdGEgY2FwdHVyZSBpbiBTUUwgU2VydmVyIG1pZ3JhdGlvbi4gRGVmaW5lcyB0aGUgbWV0aG9kIGZvciBhY2Nlc3NpbmcgdHJhbnNhY3Rpb24gbG9nIGRhdGEgZm9yIGNoYW5nZSBkYXRhIGNhcHR1cmUgb3BlcmF0aW9ucywgYWZmZWN0aW5nIENEQyBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXRpbGl6YXRpb24gaW4gU1FMIFNlcnZlciByZXBsaWNhdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBDREMgb3B0aW1pemF0aW9uOyBUcmFuc2FjdGlvbiBsb2cgYWNjZXNzOyBDaGFuZ2UgZGF0YSBjYXB0dXJlOyBSZXBsaWNhdGlvbiBwZXJmb3JtYW5jZVxuICAgKlxuICAgKiBBV1M6IERNUyBNaWNyb3NvZnQgU1FMIFNlcnZlciBlbmRwb2ludCB0bG9nQWNjZXNzTW9kZSBzZXR0aW5nIGZvciBDREMgZGF0YSBhY2Nlc3MgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIHRyYW5zYWN0aW9uIGxvZyBhY2Nlc3MgbW9kZSBpZiBwcm92aWRlZDsgYWZmZWN0cyBDREMgZGF0YSBmZXRjaGluZyBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2VcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MtdGxvZ2FjY2Vzc21vZGVcbiAgICovXG4gIHJlYWRvbmx5IHRsb2dBY2Nlc3NNb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBmbGFnIHRvIHJpZ2h0LXRyaW0gc3BhY2VzIGluIENIQVIgYW5kIE5DSEFSIGRhdGEgdHlwZXMgZHVyaW5nIFNRTCBTZXJ2ZXIgbWlncmF0aW9uIGVuYWJsaW5nIGRhdGEgZm9ybWF0dGluZyBjb25zaXN0ZW5jeS4gQ29udHJvbHMgd2hldGhlciBETVMgcmVtb3ZlcyB0cmFpbGluZyBzcGFjZXMgZnJvbSBDSEFSIGFuZCBOQ0hBUiBjb2x1bW5zIGR1cmluZyBtaWdyYXRpb24gZm9yIGNvbnNpc3RlbnQgZGF0YSBmb3JtYXR0aW5nIGFuZCBzdG9yYWdlIG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhIGZvcm1hdHRpbmcgY29uc2lzdGVuY3k7IFNwYWNlIHRyaW1taW5nOyBDaGFyYWN0ZXIgZGF0YSBvcHRpbWl6YXRpb247IE1pZ3JhdGlvbiBkYXRhIHF1YWxpdHlcbiAgICpcbiAgICogQVdTOiBETVMgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgZW5kcG9pbnQgdHJpbVNwYWNlSW5DaGFyIHNldHRpbmcgZm9yIGNoYXJhY3RlciBkYXRhIGZvcm1hdHRpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIHZhbHVlIGlmIHByb3ZpZGVkOyBkZWZhdWx0IGlzIHRydWU7IGFmZmVjdHMgY2hhcmFjdGVyIGRhdGEgZm9ybWF0dGluZyBkdXJpbmcgbWlncmF0aW9uXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LW1pY3Jvc29mdHNxbHNlcnZlcnNldHRpbmdzLXRyaW1zcGFjZWluY2hhclxuICAgKi9cbiAgcmVhZG9ubHkgdHJpbVNwYWNlSW5DaGFyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZmxhZyB0byB1c2UgQkNQIGZvciBmdWxsLWxvYWQgb3BlcmF0aW9ucyBlbmFibGluZyBvcHRpbWl6ZWQgYnVsayBkYXRhIHRyYW5zZmVyIGluIFNRTCBTZXJ2ZXIgbWlncmF0aW9uLiBDb250cm9scyB3aGV0aGVyIERNUyB1c2VzIEJ1bGsgQ29weSBQcm9ncmFtIChCQ1ApIGZvciBmdWxsLWxvYWQgb3BlcmF0aW9ucywgcHJvdmlkaW5nIGhpZ2gtcGVyZm9ybWFuY2UgZGF0YSB0cmFuc2ZlciBidXQgcmVxdWlyaW5nIGNvbnNpZGVyYXRpb24gb2YgaWRlbnRpdHkgY29sdW1ucyBhbmQgdGFibGUgc3RydWN0dXJlIGNvbXBhdGliaWxpdHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQnVsayBkYXRhIHRyYW5zZmVyIG9wdGltaXphdGlvbjsgRnVsbC1sb2FkIHBlcmZvcm1hbmNlOyBTUUwgU2VydmVyIG1pZ3JhdGlvbiBvcHRpbWl6YXRpb247IEhpZ2gtdm9sdW1lIGRhdGEgdHJhbnNmZXJcbiAgICpcbiAgICogQVdTOiBETVMgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgZW5kcG9pbnQgdXNlQmNwRnVsbExvYWQgc2V0dGluZyBmb3IgYnVsayBjb3B5IG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGJvb2xlYW4gdmFsdWUgaWYgcHJvdmlkZWQ7IGFmZmVjdHMgZnVsbC1sb2FkIHBlcmZvcm1hbmNlIGFuZCBpZGVudGl0eSBjb2x1bW4gaGFuZGxpbmdcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1taWNyb3NvZnRzcWxzZXJ2ZXJzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtbWljcm9zb2Z0c3Fsc2VydmVyc2V0dGluZ3MtdXNlYmNwZnVsbGxvYWRcbiAgICovXG5cbiAgcmVhZG9ubHkgdXNlQmNwRnVsbExvYWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGJvb2xlYW4gZmxhZyB0byBlbmFibGUgcHJvY2Vzc2luZyBvZiB0aGlyZC1wYXJ0eSB0cmFuc2FjdGlvbiBsb2cgYmFja3VwcyBmb3IgU1FMIFNlcnZlciBETVMgbWlncmF0aW9uIGVuYWJsaW5nIGJhY2t1cC1iYXNlZCByZXBsaWNhdGlvbi4gQ29udHJvbHMgd2hldGhlciBETVMgd2lsbCBwcm9jZXNzIHRoaXJkLXBhcnR5IHRyYW5zYWN0aW9uIGxvZyBiYWNrdXBzIGNyZWF0ZWQgaW4gbmF0aXZlIGZvcm1hdCBmb3IgU1FMIFNlcnZlciBtaWdyYXRpb24gc2NlbmFyaW9zLCBwcm92aWRpbmcgZmxleGliaWxpdHkgZm9yIGJhY2t1cC1iYXNlZCBkYXRhIG1pZ3JhdGlvbiBzdHJhdGVnaWVzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFRoaXJkLXBhcnR5IGJhY2t1cCBwcm9jZXNzaW5nOyBCYWNrdXAtYmFzZWQgbWlncmF0aW9uOyBUcmFuc2FjdGlvbiBsb2cgcHJvY2Vzc2luZzsgU1FMIFNlcnZlciBtaWdyYXRpb247IE5hdGl2ZSBiYWNrdXAgaW50ZWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFNRTCBTZXJ2ZXIgdGhpcmQtcGFydHkgYmFja3VwIGRldmljZSBwcm9jZXNzaW5nIGZvciBiYWNrdXAtYmFzZWQgbWlncmF0aW9uIGFuZCB0cmFuc2FjdGlvbiBsb2cgaGFuZGxpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBib29sZWFuIHZhbHVlIGlmIHByb3ZpZGVkOyBvcHRpb25hbCBmb3IgdGhpcmQtcGFydHkgYmFja3VwIHByb2Nlc3NpbmcgY29udHJvbFxuICAgKiovXG4gIHJlYWRvbmx5IHVzZVRoaXJkUGFydHlCYWNrdXBEZXZpY2U/OiBib29sZWFuO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0IGRlZmluZXMgYSBHQ1AgTXlTUUwgZW5kcG9pbnQuIE1vZGlmaWVkIGZyb20gdGhlIGVxdWl2YWxlbnQgTDEgQ29uc3RydWN0IHRvIHByZXZlbnQgdXNlIG9mIHBsYWludGV4dCBjcmVkZW50aWFscyBhbmQgZW5mb3JjZSB1c2Ugb2YgS01TIGVuY3J5cHRpb24uXG4gKiBUaGlzIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZSBvdXRwdXQgZm9ybWF0IG9mIHJlY29yZHMgYXBwbGllZCB0byB0aGUgZW5kcG9pbnQgYW5kIGRldGFpbHMgb2YgdHJhbnNhY3Rpb24gYW5kIGNvbnRyb2wgdGFibGUgZGF0YSBpbmZvcm1hdGlvbi4gVGhlc2Ugc2V0dGluZ3MgYXJlIG11Y2ggdGhlIHNhbWUgYXMgdGhlIHNldHRpbmdzIGZvciBhbnkgTXlTUUwtY29tcGF0aWJsZSBlbmRwb2ludC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRXh0cmEgY29ubmVjdGlvbiBhdHRyaWJ1dGVzIHdoZW4gdXNpbmcgTXlTUUwgYXMgYSBzb3VyY2UgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1NvdXJjZS5NeVNRTC5odG1sI0NIQVBfU291cmNlLk15U1FMLkNvbm5lY3Rpb25BdHRyaWIpIGluIHRoZSAqQVdTIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIFVzZXIgR3VpZGUqIC5cbiAqIEBzdHJ1Y3RcbiAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtZ2NwbXlzcWxzZXR0aW5ncy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2NwTXlTUUxTZXR0aW5nc1Byb3BlcnR5IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHNjcmlwdCB0byBydW4gaW1tZWRpYXRlbHkgYWZ0ZXIgQVdTIERNUyBjb25uZWN0cyB0byB0aGUgZW5kcG9pbnQuXG4gICAqIFRoZSBtaWdyYXRpb24gdGFzayBjb250aW51ZXMgcnVubmluZyByZWdhcmRsZXNzIGlmIHRoZSBTUUwgc3RhdGVtZW50IHN1Y2NlZWRzIG9yIGZhaWxzLlxuICAgKiBGb3IgdGhpcyBwYXJhbWV0ZXIsIHByb3ZpZGUgdGhlIGNvZGUgb2YgdGhlIHNjcmlwdCBpdHNlbGYsIG5vdCB0aGUgbmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyB0aGUgc2NyaXB0LlxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWdjcG15c3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LWdjcG15c3Fsc2V0dGluZ3MtYWZ0ZXJjb25uZWN0c2NyaXB0XG4gICAqL1xuICByZWFkb25seSBhZnRlckNvbm5lY3RTY3JpcHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGp1c3RzIHRoZSBiZWhhdmlvciBvZiBBV1MgRE1TIHdoZW4gbWlncmF0aW5nIGZyb20gYW4gU1FMIFNlcnZlciBzb3VyY2UgZGF0YWJhc2UgdGhhdCBpcyBob3N0ZWQgYXMgcGFydCBvZiBhbiBBbHdheXMgT24gYXZhaWxhYmlsaXR5IGdyb3VwIGNsdXN0ZXIuXG4gICAqIElmIHlvdSBuZWVkIEFXUyBETVMgdG8gcG9sbCBhbGwgdGhlIG5vZGVzIGluIHRoZSBBbHdheXMgT24gY2x1c3RlciBmb3IgdHJhbnNhY3Rpb24gYmFja3Vwcywgc2V0IHRoaXMgYXR0cmlidXRlIHRvIGBmYWxzZWAgLlxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWdjcG15c3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LWdjcG15c3Fsc2V0dGluZ3MtY2xlYW5zb3VyY2VtZXRhZGF0YW9ubWlzbWF0Y2hcbiAgICovXG4gIHJlYWRvbmx5IGNsZWFuU291cmNlTWV0YWRhdGFPbk1pc21hdGNoPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERhdGFiYXNlIG5hbWUgZm9yIHRoZSBlbmRwb2ludC5cbiAgICogRm9yIGEgTXlTUUwgc291cmNlIG9yIHRhcmdldCBlbmRwb2ludCwgZG9uJ3QgZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBkYXRhYmFzZSB1c2luZyB0aGUgYERhdGFiYXNlTmFtZWAgcmVxdWVzdCBwYXJhbWV0ZXIgb24gZWl0aGVyIHRoZSBgQ3JlYXRlRW5kcG9pbnRgIG9yIGBNb2RpZnlFbmRwb2ludGAgQVBJIGNhbGwuIFNwZWNpZnlpbmcgYERhdGFiYXNlTmFtZWAgd2hlbiB5b3UgY3JlYXRlIG9yIG1vZGlmeSBhIE15U1FMIGVuZHBvaW50IHJlcGxpY2F0ZXMgYWxsIHRoZSB0YXNrIHRhYmxlcyB0byB0aGlzIHNpbmdsZSBkYXRhYmFzZS4gRm9yIE15U1FMIGVuZHBvaW50cywgeW91IHNwZWNpZnkgdGhlIGRhdGFiYXNlIG9ubHkgd2hlbiB5b3Ugc3BlY2lmeSB0aGUgc2NoZW1hIGluIHRoZSB0YWJsZS1tYXBwaW5nIHJ1bGVzIG9mIHRoZSBBV1MgRE1TIHRhc2suXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtZ2NwbXlzcWxzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtZ2NwbXlzcWxzZXR0aW5ncy1kYXRhYmFzZW5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgb2Z0ZW4gdG8gY2hlY2sgdGhlIGJpbmFyeSBsb2cgZm9yIG5ldyBjaGFuZ2VzL2V2ZW50cyB3aGVuIHRoZSBkYXRhYmFzZSBpcyBpZGxlLlxuICAgKiBUaGUgZGVmYXVsdCBpcyBmaXZlIHNlY29uZHMuXG4gICAqIEV4YW1wbGU6IGBldmVudHNQb2xsSW50ZXJ2YWw9NTtgXG4gICAqIEluIHRoZSBleGFtcGxlLCBBV1MgRE1TIGNoZWNrcyBmb3IgY2hhbmdlcyBpbiB0aGUgYmluYXJ5IGxvZ3MgZXZlcnkgZml2ZSBzZWNvbmRzLlxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LWdjcG15c3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LWdjcG15c3Fsc2V0dGluZ3MtZXZlbnRzcG9sbGludGVydmFsXG4gICAqL1xuICByZWFkb25seSBldmVudHNQb2xsSW50ZXJ2YWw/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gc2l6ZSAoaW4gS0IpIG9mIGFueSAuY3N2IGZpbGUgdXNlZCB0byB0cmFuc2ZlciBkYXRhIHRvIGEgTXlTUUwtY29tcGF0aWJsZSBkYXRhYmFzZS5cbiAgICogRXhhbXBsZTogYG1heEZpbGVTaXplPTUxMmBcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLW1heGZpbGVzaXplXG4gICAqL1xuICByZWFkb25seSBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEltcHJvdmVzIHBlcmZvcm1hbmNlIHdoZW4gbG9hZGluZyBkYXRhIGludG8gdGhlIE15U1FMLWNvbXBhdGlibGUgdGFyZ2V0IGRhdGFiYXNlLlxuICAgKiBTcGVjaWZpZXMgaG93IG1hbnkgdGhyZWFkcyB0byB1c2UgdG8gbG9hZCB0aGUgZGF0YSBpbnRvIHRoZSBNeVNRTC1jb21wYXRpYmxlIHRhcmdldCBkYXRhYmFzZS4gU2V0dGluZyBhIGxhcmdlIG51bWJlciBvZiB0aHJlYWRzIGNhbiBoYXZlIGFuIGFkdmVyc2UgZWZmZWN0IG9uIGRhdGFiYXNlIHBlcmZvcm1hbmNlLCBiZWNhdXNlIGEgc2VwYXJhdGUgY29ubmVjdGlvbiBpcyByZXF1aXJlZCBmb3IgZWFjaCB0aHJlYWQuIFRoZSBkZWZhdWx0IGlzIG9uZS5cbiAgICogRXhhbXBsZTogYHBhcmFsbGVsTG9hZFRocmVhZHM9MWBcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLXBhcmFsbGVsbG9hZHRocmVhZHNcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFsbGVsTG9hZFRocmVhZHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgcG9ydCB1c2VkIGJ5IHRoZSBlbmRwb2ludCBkYXRhYmFzZS5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLXBvcnRcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNIHJvbGUgdGhhdCBzcGVjaWZpZXMgQVdTIERNUyBhcyB0aGUgdHJ1c3RlZCBlbnRpdHkgYW5kIGdyYW50cyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHRoZSB2YWx1ZSBpbiBgU2VjcmV0c01hbmFnZXJTZWNyZXQuYCBUaGUgcm9sZSBtdXN0IGFsbG93IHRoZSBgaWFtOlBhc3NSb2xlYCBhY3Rpb24uIGBTZWNyZXRzTWFuYWdlclNlY3JldGAgaGFzIHRoZSB2YWx1ZSBvZiB0aGUgQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBhbGxvd3MgYWNjZXNzIHRvIHRoZSBNeVNRTCBlbmRwb2ludC5cbiAgICogPiBZb3UgY2FuIHNwZWNpZnkgb25lIG9mIHR3byBzZXRzIG9mIHZhbHVlcyBmb3IgdGhlc2UgcGVybWlzc2lvbnMuIFlvdSBjYW4gc3BlY2lmeSB0aGUgdmFsdWVzIGZvciB0aGlzIHNldHRpbmcgYW5kIGBTZWNyZXRzTWFuYWdlclNlY3JldElkYCAuIE9yIHlvdSBjYW4gc3BlY2lmeSBjbGVhci10ZXh0IHZhbHVlcyBmb3IgYFVzZXJOYW1lYCAsIGBQYXNzd29yZGAgLCBgU2VydmVyTmFtZWAgLCBhbmQgYFBvcnRgIC4gWW91IGNhbid0IHNwZWNpZnkgYm90aC5cbiAgICogPlxuICAgKiA+IEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIHRoaXMgYFNlY3JldHNNYW5hZ2VyU2VjcmV0YCAsIHRoZSBjb3JyZXNwb25kaW5nIGBTZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm5gICwgYW5kIHRoZSBgU2VjcmV0c01hbmFnZXJTZWNyZXRJZGAgcmVxdWlyZWQgdG8gYWNjZXNzIGl0LCBzZWUgW1VzaW5nIHNlY3JldHMgdG8gYWNjZXNzIEFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSByZXNvdXJjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1NlY3VyaXR5Lmh0bWwjc2VjdXJpdHktaWFtLXNlY3JldHNtYW5hZ2VyKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtZ2NwbXlzcWxzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtZ2NwbXlzcWxzZXR0aW5ncy1zZWNyZXRzbWFuYWdlcmFjY2Vzc3JvbGVhcm5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmdWxsIEFSTiBvZiB0aGUgYFNlY3JldHNNYW5hZ2VyU2VjcmV0YCB0aGF0IGNvbnRhaW5zIHRoZSBNeVNRTCBlbmRwb2ludCBjb25uZWN0aW9uIGRldGFpbHMuXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtZ2NwbXlzcWxzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtZ2NwbXlzcWxzZXR0aW5ncy1zZWNyZXRzbWFuYWdlcnNlY3JldGlkXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgY3JlZGVudGlhbHMgc2VjcmV0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRLTVNBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBFbmRwb2ludCBUQ1AgcG9ydC5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLXNlcnZlcm5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHRpbWUgem9uZSBmb3IgdGhlIHNvdXJjZSBNeVNRTCBkYXRhYmFzZS4gRG9uJ3QgZW5jbG9zZSB0aW1lIHpvbmVzIGluIHNpbmdsZSBxdW90YXRpb24gbWFya3MuXG4gICAqIEV4YW1wbGU6IGBzZXJ2ZXJUaW1lem9uZT1VUy9QYWNpZmljO2BcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1nY3BteXNxbHNldHRpbmdzLXNlcnZlcnRpbWV6b25lXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJUaW1lem9uZT86IHN0cmluZztcbn1cbi8qKlxuICogUHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdCBkZWZpbmVzIGEgUG9zdGdyZVNRTCBlbmRwb2ludC4gTW9kaWZpZWQgZnJvbSB0aGUgZXF1aXZhbGVudCBMMSBDb25zdHJ1Y3QgdG8gcHJldmVudCB1c2Ugb2YgcGxhaW50ZXh0IGNyZWRlbnRpYWxzIGFuZCBlbmZvcmNlIHVzZSBvZiBLTVMgZW5jcnlwdGlvbi5cbiAqIFRoaXMgaW5mb3JtYXRpb24gaW5jbHVkZXMgdGhlIG91dHB1dCBmb3JtYXQgb2YgcmVjb3JkcyBhcHBsaWVkIHRvIHRoZSBlbmRwb2ludCBhbmQgZGV0YWlscyBvZiB0cmFuc2FjdGlvbiBhbmQgY29udHJvbCB0YWJsZSBkYXRhIGluZm9ybWF0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgYXZhaWxhYmxlIHNldHRpbmdzLCBzZWUgW0V4dHJhIGNvbm5lY3Rpb24gYXR0cmlidXRlcyB3aGVuIHVzaW5nIFBvc3RncmVTUUwgYXMgYSBzb3VyY2UgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1NvdXJjZS5Qb3N0Z3JlU1FMLmh0bWwjQ0hBUF9Tb3VyY2UuUG9zdGdyZVNRTC5Db25uZWN0aW9uQXR0cmliKSBhbmQgW0V4dHJhIGNvbm5lY3Rpb24gYXR0cmlidXRlcyB3aGVuIHVzaW5nIFBvc3RncmVTUUwgYXMgYSB0YXJnZXQgZm9yIEFXUyBETVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kbXMvbGF0ZXN0L3VzZXJndWlkZS9DSEFQX1RhcmdldC5Qb3N0Z3JlU1FMLmh0bWwjQ0hBUF9UYXJnZXQuUG9zdGdyZVNRTC5Db25uZWN0aW9uQXR0cmliKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuXG4gKiBAc3RydWN0XG4gKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LXBvc3RncmVzcWxzZXR0aW5ncy5odG1sXG4gKi9cbi8qKlxuICogUS1FTkhBTkNFRC1JTlRFUkZBQ0VcbiAqIFBvc3RncmVTUUwgc2V0dGluZ3MgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UgZm9yIERNUyBwcm92aWRpbmcgUG9zdGdyZVNRTCBtaWdyYXRpb24gYW5kIG9wZW4tc291cmNlIGRhdGFiYXNlIGNhcGFiaWxpdGllcy4gRGVmaW5lcyBQb3N0Z3JlU1FMLXNwZWNpZmljIHByb3BlcnRpZXMgZm9yIERhdGFiYXNlIE1pZ3JhdGlvbiBTZXJ2aWNlIGluY2x1ZGluZyBhZHZhbmNlZCBQb3N0Z3JlU1FMIGZlYXR1cmVzLCByZXBsaWNhdGlvbiBzZXR0aW5ncywgYW5kIFBvc3RncmVTUUwgaW50ZWdyYXRpb24gZm9yIG9wZW4tc291cmNlIGRhdGFiYXNlIG1pZ3JhdGlvbiB3b3JrZmxvd3MuXG4gKlxuICogVXNlIGNhc2VzOiBQb3N0Z3JlU1FMIG1pZ3JhdGlvbjsgT3Blbi1zb3VyY2UgZGF0YWJhc2UgbWlncmF0aW9uOyBQb3N0Z3JlU1FMIGNvbm5lY3Rpdml0eTsgQWR2YW5jZWQgUG9zdGdyZVNRTCBmZWF0dXJlczsgRGF0YWJhc2UgcmVwbGljYXRpb247IERNUyBQb3N0Z3JlU1FMIGludGVncmF0aW9uXG4gKlxuICogQVdTOiBBV1MgRE1TIFBvc3RncmVTUUwgZW5kcG9pbnQgY29uZmlndXJhdGlvbiB3aXRoIFBvc3RncmVTUUwgbWlncmF0aW9uIGFuZCBvcGVuLXNvdXJjZSBkYXRhYmFzZSBjYXBhYmlsaXRpZXNcbiAqXG4gKiBWYWxpZGF0aW9uOiBDb25maWd1cmF0aW9uIG11c3QgYmUgdmFsaWQgZm9yIERNUyBtaWdyYXRpb247IHByb3BlcnRpZXMgbXVzdCBjb25mb3JtIHRvIEFXUyBETVMgYW5kIGRhdGFiYXNlLXNwZWNpZmljIHJlcXVpcmVtZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RncmVTcWxTZXR0aW5nc1Byb3BlcnR5IHtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgU1FMIHNjcmlwdCBleGVjdXRlZCBhZnRlciBjb25uZWN0aW5nIHRvIFBvc3RncmVTUUwgc291cmNlIGZvciBjaGFuZ2UgZGF0YSBjYXB0dXJlIChDREMpIG9wdGltaXphdGlvbiBlbmFibGluZyBwZXJmb3JtYW5jZSB0dW5pbmcgYW5kIGNvbnN0cmFpbnQgYnlwYXNzaW5nLiBQcm92aWRlcyBjdXN0b20gU1FMIGNvbW1hbmRzIHRoYXQgcnVuIGltbWVkaWF0ZWx5IGFmdGVyIERNUyBjb25uZWN0cyB0byB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZSwgY29tbW9ubHkgdXNlZCB0byBieXBhc3MgZm9yZWlnbiBrZXlzIGFuZCB0cmlnZ2VycyBkdXJpbmcgYnVsayBsb2FkaW5nIGZvciBpbXByb3ZlZCBtaWdyYXRpb24gcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ0RDIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbjsgQ29uc3RyYWludCBieXBhc3Npbmc7IEN1c3RvbSBjb25uZWN0aW9uIHNldHVwOyBNaWdyYXRpb24gcGVyZm9ybWFuY2UgdHVuaW5nOyBCdWxrIGxvYWQgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBQb3N0Z3JlU1FMIGFmdGVyLWNvbm5lY3Qgc2NyaXB0IGZvciBDREMgb3B0aW1pemF0aW9uIGFuZCBjdXN0b20gY29ubmVjdGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgU1FMIHNjcmlwdCBpZiBwcm92aWRlZDsgY29tbW9ubHkgdXNlZCBmb3Igc2Vzc2lvbiBjb25maWd1cmF0aW9uOyBvcHRpb25hbCBmb3IgY29ubmVjdGlvbiBjdXN0b21pemF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgYWZ0ZXJDb25uZWN0U2NyaXB0Pzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBCYWJlbGZpc2ggZm9yIEF1cm9yYSBQb3N0Z3JlU1FMIGRhdGFiYXNlIG5hbWUgZm9yIERNUyBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIFNRTCBTZXJ2ZXIgY29tcGF0aWJpbGl0eSBsYXllciBhY2Nlc3MuIFNwZWNpZmllcyB0aGUgZGF0YWJhc2UgbmFtZSB3aGVuIHVzaW5nIEJhYmVsZmlzaCBmb3IgQXVyb3JhIFBvc3RncmVTUUwsIHdoaWNoIHByb3ZpZGVzIFNRTCBTZXJ2ZXIgY29tcGF0aWJpbGl0eSBvbiB0b3Agb2YgUG9zdGdyZVNRTCBmb3IgY3Jvc3MtZGF0YWJhc2UgbWlncmF0aW9uIHNjZW5hcmlvcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBCYWJlbGZpc2ggZGF0YWJhc2UgYWNjZXNzOyBTUUwgU2VydmVyIGNvbXBhdGliaWxpdHk7IEF1cm9yYSBQb3N0Z3JlU1FMIHdpdGggQmFiZWxmaXNoOyBDcm9zcy1kYXRhYmFzZSBtaWdyYXRpb247IFNRTCBTZXJ2ZXIgdG8gUG9zdGdyZVNRTCBtaWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIEJhYmVsZmlzaCBmb3IgQXVyb3JhIFBvc3RncmVTUUwgZGF0YWJhc2UgbmFtZSBmb3IgU1FMIFNlcnZlciBjb21wYXRpYmlsaXR5IGxheWVyIGFjY2Vzc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGRhdGFiYXNlIG5hbWUgaWYgcHJvdmlkZWQ7IHVzZWQgd2l0aCBCYWJlbGZpc2gtZW5hYmxlZCBBdXJvcmEgUG9zdGdyZVNRTDsgb3B0aW9uYWwgZm9yIEJhYmVsZmlzaCBjb25maWd1cmF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgYmFiZWxmaXNoRGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBib29sZWFuIGZsYWcgdG8gZW5hYmxlIERETCBldmVudCBjYXB0dXJlIGZvciBQb3N0Z3JlU1FMIERNUyBtaWdyYXRpb24gZW5hYmxpbmcgc2NoZW1hIGNoYW5nZSB0cmFja2luZyBhbmQgcmVwbGljYXRpb24uIENvbnRyb2xzIHdoZXRoZXIgRE1TIHdpbGwgY2FwdHVyZSBEREwgZXZlbnRzIGJ5IGNyZWF0aW5nIGFydGlmYWN0cyBpbiB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZSwgYWxsb3dpbmcgc2NoZW1hIGNoYW5nZXMgdG8gYmUgdHJhY2tlZCBhbmQgcmVwbGljYXRlZCBkdXJpbmcgbWlncmF0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIFVzZSBjYXNlczogRERMIGV2ZW50IGNhcHR1cmU7IFNjaGVtYSBjaGFuZ2UgdHJhY2tpbmc7IERETCByZXBsaWNhdGlvbjsgRGF0YWJhc2Ugc2NoZW1hIG1pZ3JhdGlvbjsgQ2hhbmdlIGRhdGEgY2FwdHVyZVxuICAgKlxuICAgKiBBV1M6IEFXUyBETVMgUG9zdGdyZVNRTCBEREwgY2FwdHVyZSBmb3Igc2NoZW1hIGNoYW5nZSB0cmFja2luZyBhbmQgRERMIGV2ZW50IHJlcGxpY2F0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgb3B0aW9uYWwgZm9yIERETCBjYXB0dXJlIGNvbnRyb2xcbiAgICoqL1xuICByZWFkb25seSBjYXB0dXJlRGRscz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlIG1vZGUgc3BlY2lmaWNhdGlvbiBmb3IgUG9zdGdyZVNRTC1jb21wYXRpYmxlIGVuZHBvaW50cyByZXF1aXJpbmcgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIHNwZWNpYWxpemVkIGVuZHBvaW50IGhhbmRsaW5nLiBEZWZpbmVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBoYW5kbGluZyBQb3N0Z3JlU1FMLWNvbXBhdGlibGUgZW5kcG9pbnRzIHN1Y2ggYXMgQmFiZWxmaXNoIGVuZHBvaW50cyB0aGF0IHJlcXVpcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBhbmQgY29tcGF0aWJpbGl0eSBzZXR0aW5ncy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBQb3N0Z3JlU1FMLWNvbXBhdGlibGUgZW5kcG9pbnQgaGFuZGxpbmc7IEJhYmVsZmlzaCBlbmRwb2ludCBjb25maWd1cmF0aW9uOyBTcGVjaWFsaXplZCBkYXRhYmFzZSBtb2RlczsgRW5kcG9pbnQgY29tcGF0aWJpbGl0eTsgRGF0YWJhc2Utc3BlY2lmaWMgc2V0dGluZ3NcbiAgICpcbiAgICogQVdTOiBBV1MgRE1TIFBvc3RncmVTUUwgZGF0YWJhc2UgbW9kZSBmb3IgUG9zdGdyZVNRTC1jb21wYXRpYmxlIGVuZHBvaW50IGhhbmRsaW5nIGFuZCBzcGVjaWFsaXplZCBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgZGF0YWJhc2UgbW9kZSBzdHJpbmcgaWYgcHJvdmlkZWQ7IG9wdGlvbmFsIGZvciBzcGVjaWFsaXplZCBlbmRwb2ludCBjb25maWd1cmF0aW9uXG4gICAqKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VNb2RlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNjaGVtYSBpbiB3aGljaCB0aGUgb3BlcmF0aW9uYWwgRERMIGRhdGFiYXNlIGFydGlmYWN0cyBhcmUgY3JlYXRlZC5cbiAgICogRXhhbXBsZTogYGRkbEFydGlmYWN0c1NjaGVtYT14eXpkZGxzY2hlbWE7YFxuICAgKiBTZWU6IGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtZG1zLWVuZHBvaW50LXBvc3RncmVzcWxzZXR0aW5ncy5odG1sI2Nmbi1kbXMtZW5kcG9pbnQtcG9zdGdyZXNxbHNldHRpbmdzLWRkbGFydGlmYWN0c3NjaGVtYVxuICAgKi9cbiAgcmVhZG9ubHkgZGRsQXJ0aWZhY3RzU2NoZW1hPzogc3RyaW5nO1xuICAvKipcbiAgICogU2V0cyB0aGUgY2xpZW50IHN0YXRlbWVudCB0aW1lb3V0IGZvciB0aGUgUG9zdGdyZVNRTCBpbnN0YW5jZSwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgNjAgc2Vjb25kcy5cbiAgICogRXhhbXBsZTogYGV4ZWN1dGVUaW1lb3V0PTEwMDtgXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtcG9zdGdyZXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3MtZXhlY3V0ZXRpbWVvdXRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGVUaW1lb3V0PzogbnVtYmVyO1xuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgICwgdGhpcyB2YWx1ZSBjYXVzZXMgYSB0YXNrIHRvIGZhaWwgaWYgdGhlIGFjdHVhbCBzaXplIG9mIGEgTE9CIGNvbHVtbiBpcyBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZCBgTG9iTWF4U2l6ZWAgLlxuICAgKiBJZiB0YXNrIGlzIHNldCB0byBMaW1pdGVkIExPQiBtb2RlIGFuZCB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSwgdGhlIHRhc2sgZmFpbHMgaW5zdGVhZCBvZiB0cnVuY2F0aW5nIHRoZSBMT0IgZGF0YS5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LXBvc3RncmVzcWxzZXR0aW5ncy1mYWlsdGFza3NvbmxvYnRydW5jYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGZhaWxUYXNrc09uTG9iVHJ1bmNhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGJvb2xlYW4gZmxhZyB0byBlbmFibGUgV0FMIGhlYXJ0YmVhdCBmZWF0dXJlIGZvciBQb3N0Z3JlU1FMIERNUyBtaWdyYXRpb24gcHJldmVudGluZyBzdG9yYWdlIGZ1bGwgc2NlbmFyaW9zIGFuZCBtYWludGFpbmluZyByZXBsaWNhdGlvbiBzbG90IGhlYWx0aC4gRW5hYmxlcyB3cml0ZS1haGVhZCBsb2cgaGVhcnRiZWF0IHRoYXQgbWltaWNzIGR1bW15IHRyYW5zYWN0aW9ucyB0byBrZWVwIHJlc3RhcnRfbHNuIG1vdmluZyBhbmQgcHJldmVudCBpZGxlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMgZnJvbSBob2xkaW5nIG9sZCBXQUwgbG9ncy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBXQUwgaGVhcnRiZWF0IG1hbmFnZW1lbnQ7IFN0b3JhZ2UgZnVsbCBwcmV2ZW50aW9uOyBSZXBsaWNhdGlvbiBzbG90IG1haW50ZW5hbmNlOyBMb2dpY2FsIHJlcGxpY2F0aW9uIG9wdGltaXphdGlvbjsgV0FMIGxvZyBtYW5hZ2VtZW50XG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBQb3N0Z3JlU1FMIFdBTCBoZWFydGJlYXQgZm9yIHJlcGxpY2F0aW9uIHNsb3QgbWFpbnRlbmFuY2UgYW5kIHN0b3JhZ2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYm9vbGVhbiB2YWx1ZSBpZiBwcm92aWRlZDsgb3B0aW9uYWwgZm9yIFdBTCBoZWFydGJlYXQgY29udHJvbFxuICAgKiovXG4gIHJlYWRvbmx5IGhlYXJ0YmVhdEVuYWJsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIFdBTCBoZWFydGJlYXQgZnJlcXVlbmN5IGluIG1pbnV0ZXMgZm9yIFBvc3RncmVTUUwgRE1TIG1pZ3JhdGlvbiBlbmFibGluZyBjb25maWd1cmFibGUgaGVhcnRiZWF0IHRpbWluZyBhbmQgcmVwbGljYXRpb24gb3B0aW1pemF0aW9uLiBEZWZpbmVzIGhvdyBmcmVxdWVudGx5IHRoZSBXQUwgaGVhcnRiZWF0IGZlYXR1cmUgd2lsbCBleGVjdXRlIGR1bW15IHRyYW5zYWN0aW9ucyB0byBtYWludGFpbiByZXBsaWNhdGlvbiBzbG90IGhlYWx0aCBhbmQgcHJldmVudCBzdG9yYWdlIGlzc3Vlcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBIZWFydGJlYXQgZnJlcXVlbmN5IGNvbnRyb2w7IFJlcGxpY2F0aW9uIG9wdGltaXphdGlvbjsgV0FMIG1hbmFnZW1lbnQgdGltaW5nOyBTdG9yYWdlIG9wdGltaXphdGlvbjsgUGVyZm9ybWFuY2UgdHVuaW5nXG4gICAqXG4gICAqIEFXUzogQVdTIERNUyBQb3N0Z3JlU1FMIFdBTCBoZWFydGJlYXQgZnJlcXVlbmN5IGZvciBjb25maWd1cmFibGUgcmVwbGljYXRpb24gc2xvdCBtYWludGVuYW5jZSB0aW1pbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBwb3NpdGl2ZSBudW1iZXIgaW4gbWludXRlcyBpZiBwcm92aWRlZDsgb3B0aW9uYWwgZm9yIGhlYXJ0YmVhdCBmcmVxdWVuY3kgY29udHJvbFxuICAgKiovXG4gIHJlYWRvbmx5IGhlYXJ0YmVhdEZyZXF1ZW5jeT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHNjaGVtYSBpbiB3aGljaCB0aGUgaGVhcnRiZWF0IGFydGlmYWN0cyBhcmUgY3JlYXRlZC5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LXBvc3RncmVzcWxzZXR0aW5ncy1oZWFydGJlYXRzY2hlbWFcbiAgICovXG4gIHJlYWRvbmx5IGhlYXJ0YmVhdFNjaGVtYT86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgbGV0cyBQb3N0Z3JlU1FMIG1pZ3JhdGUgdGhlIGJvb2xlYW4gdHlwZSBhcyBib29sZWFuLlxuICAgKiBCeSBkZWZhdWx0LCBQb3N0Z3JlU1FMIG1pZ3JhdGVzIGJvb2xlYW5zIGFzIGB2YXJjaGFyKDUpYCAuIFlvdSBtdXN0IHNldCB0aGlzIHNldHRpbmcgb24gYm90aCB0aGUgc291cmNlIGFuZCB0YXJnZXQgZW5kcG9pbnRzIGZvciBpdCB0byB0YWtlIGVmZmVjdC5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LXBvc3RncmVzcWxzZXR0aW5ncy1tYXBib29sZWFuYXNib29sZWFuXG4gICAqL1xuICByZWFkb25seSBtYXBCb29sZWFuQXNCb29sZWFuPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBzaXplIChpbiBLQikgb2YgYW55IC5jc3YgZmlsZSB1c2VkIHRvIHRyYW5zZmVyIGRhdGEgdG8gUG9zdGdyZVNRTC5cbiAgICogRXhhbXBsZTogYG1heEZpbGVTaXplPTUxMmBcbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LXBvc3RncmVzcWxzZXR0aW5ncy1tYXhmaWxlc2l6ZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4RmlsZVNpemU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHBsdWdpbiB0byB1c2UgdG8gY3JlYXRlIGEgcmVwbGljYXRpb24gc2xvdC5cbiAgICogU2VlOiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3MuaHRtbCNjZm4tZG1zLWVuZHBvaW50LXBvc3RncmVzcWxzZXR0aW5ncy1wbHVnaW5uYW1lXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZ1bGwgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIElBTSByb2xlIHRoYXQgc3BlY2lmaWVzIEFXUyBETVMgYXMgdGhlIHRydXN0ZWQgZW50aXR5IGFuZCBncmFudHMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGFjY2VzcyB0aGUgdmFsdWUgaW4gYFNlY3JldHNNYW5hZ2VyU2VjcmV0YCAuXG4gICAqIFRoZSByb2xlIG11c3QgYWxsb3cgdGhlIGBpYW06UGFzc1JvbGVgIGFjdGlvbi4gYFNlY3JldHNNYW5hZ2VyU2VjcmV0YCBoYXMgdGhlIHZhbHVlIG9mIHRoZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCB0aGF0IGFsbG93cyBhY2Nlc3MgdG8gdGhlIFBvc3RncmVTUUwgZW5kcG9pbnQuXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtcG9zdGdyZXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3Mtc2VjcmV0c21hbmFnZXJhY2Nlc3Nyb2xlYXJuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBBUk4gb2YgdGhlIGBTZWNyZXRzTWFuYWdlclNlY3JldGAgdGhhdCBjb250YWlucyB0aGUgUG9zdGdyZVNRTCBlbmRwb2ludCBjb25uZWN0aW9uIGRldGFpbHMuXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtcG9zdGdyZXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3Mtc2VjcmV0c21hbmFnZXJzZWNyZXRpZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhlIGNyZWRlbnRpYWxzIHNlY3JldC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0S01TQXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogU2V0cyB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgY3JlYXRlZCBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgZm9yIGEgY2hhbmdlIGRhdGEgY2FwdHVyZSAoQ0RDKSBsb2FkIG9mIHRoZSBQb3N0Z3JlU1FMIHNvdXJjZSBpbnN0YW5jZS5cbiAgICogV2hlbiB1c2VkIHdpdGggdGhlIGBDZGNTdGFydFBvc2l0aW9uYCByZXF1ZXN0IHBhcmFtZXRlciBmb3IgdGhlIEFXUyBETVMgQVBJICwgdGhpcyBhdHRyaWJ1dGUgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgbmF0aXZlIENEQyBzdGFydCBwb2ludHMuIERNUyB2ZXJpZmllcyB0aGF0IHRoZSBzcGVjaWZpZWQgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IGV4aXN0cyBiZWZvcmUgc3RhcnRpbmcgdGhlIENEQyBsb2FkIHRhc2suIEl0IGFsc28gdmVyaWZpZXMgdGhhdCB0aGUgdGFzayB3YXMgY3JlYXRlZCB3aXRoIGEgdmFsaWQgc2V0dGluZyBvZiBgQ2RjU3RhcnRQb3NpdGlvbmAgLiBJZiB0aGUgc3BlY2lmaWVkIHNsb3QgZG9lc24ndCBleGlzdCBvciB0aGUgdGFzayBkb2Vzbid0IGhhdmUgYSB2YWxpZCBgQ2RjU3RhcnRQb3NpdGlvbmAgc2V0dGluZywgRE1TIHJhaXNlcyBhbiBlcnJvci5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2V0dGluZyB0aGUgYENkY1N0YXJ0UG9zaXRpb25gIHJlcXVlc3QgcGFyYW1ldGVyLCBzZWUgW0RldGVybWluaW5nIGEgQ0RDIG5hdGl2ZSBzdGFydCBwb2ludF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Rtcy9sYXRlc3QvdXNlcmd1aWRlL0NIQVBfVGFzay5DREMuaHRtbCNDSEFQX1Rhc2suQ0RDLlN0YXJ0UG9pbnQuTmF0aXZlKSBpbiB0aGUgKkFXUyBEYXRhYmFzZSBNaWdyYXRpb24gU2VydmljZSBVc2VyIEd1aWRlKiAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHVzaW5nIGBDZGNTdGFydFBvc2l0aW9uYCAsIHNlZSBbQ3JlYXRlUmVwbGljYXRpb25UYXNrXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVJlcGxpY2F0aW9uVGFzay5odG1sKSAsIFtTdGFydFJlcGxpY2F0aW9uVGFza10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Rtcy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9TdGFydFJlcGxpY2F0aW9uVGFzay5odG1sKSAsIGFuZCBbTW9kaWZ5UmVwbGljYXRpb25UYXNrXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZG1zL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX01vZGlmeVJlcGxpY2F0aW9uVGFzay5odG1sKSAuXG4gICAqIFNlZTogaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1kbXMtZW5kcG9pbnQtcG9zdGdyZXNxbHNldHRpbmdzLmh0bWwjY2ZuLWRtcy1lbmRwb2ludC1wb3N0Z3Jlc3Fsc2V0dGluZ3Mtc2xvdG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNsb3ROYW1lPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgTWRhYUVuZHBvaW50VHlwZSA9ICdzb3VyY2UnIHwgJ3RhcmdldCc7XG5leHBvcnQgdHlwZSBNZGFhRW5kcG9pbnRFbmdpbmUgPVxuICB8IGBteXNxbGBcbiAgfCBgb3JhY2xlYFxuICB8IGBwb3N0Z3Jlc2BcbiAgfCBgbWFyaWFkYmBcbiAgfCBgYXVyb3JhYFxuICB8IGBhdXJvcmEtcG9zdGdyZXNxbGBcbiAgfCBgb3BlbnNlYXJjaGBcbiAgfCBgcmVkc2hpZnRgXG4gIHwgYHJlZHNoaWZ0LXNlcnZlcmxlc3NgXG4gIHwgYHMzYFxuICB8IGBkYjJgXG4gIHwgYGF6dXJlZGJgXG4gIHwgYHN5YmFzZWBcbiAgfCBgZHluYW1vZGJgXG4gIHwgYG1vbmdvZGJgXG4gIHwgYGtpbmVzaXNgXG4gIHwgYGthZmthYFxuICB8IGBlbGFzdGljc2VhcmNoYFxuICB8IGBkb2NkYmBcbiAgfCBgc3Fsc2VydmVyYFxuICB8IGBuZXB0dW5lYDtcbmV4cG9ydCBpbnRlcmZhY2UgTWRhYUVuZHBvaW50UHJvcHMgZXh0ZW5kcyBNZGFhQ29uc3RydWN0UHJvcHMge1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZGF0YWJhc2UgbmFtZSBzcGVjaWZpY2F0aW9uIGZvciBlbmRwb2ludCBjb25uZWN0aXZpdHkgY29udHJvbGxpbmcgdGFyZ2V0IGRhdGFiYXNlIHNlbGVjdGlvbiBhbmQgbWlncmF0aW9uIHNjb3BlLiBEZWZpbmVzIHRoZSBzcGVjaWZpYyBkYXRhYmFzZSB3aXRoaW4gdGhlIGRhdGFiYXNlIHNlcnZlciBmb3IgbWlncmF0aW9uIG9wZXJhdGlvbnMgYW5kIGRhdGEgdHJhbnNmZXIgdGFyZ2V0aW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IERhdGFiYXNlIHRhcmdldGluZzsgTWlncmF0aW9uIHNjb3BlOyBTcGVjaWZpYyBkYXRhYmFzZSBzZWxlY3Rpb247IERhdGEgdHJhbnNmZXIgY29udHJvbFxuICAgKlxuICAgKiBBV1M6IERhdGFiYXNlIG5hbWUgZm9yIERNUyBlbmRwb2ludCBjb25uZWN0aXZpdHkgYW5kIG1pZ3JhdGlvbiB0YXJnZXRpbmdcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBkYXRhYmFzZSBuYW1lIGlmIHByb3ZpZGVkOyBub3QgYXBwbGljYWJsZSBmb3IgTXlTUUwgZW5kcG9pbnRzXG4gICAqKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBlbmRwb2ludElkZW50aWZpZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgZW5kcG9pbnQgdHlwZSBzcGVjaWZpY2F0aW9uIGNvbnRyb2xsaW5nIG1pZ3JhdGlvbiBkaXJlY3Rpb24gYW5kIGRhdGEgZmxvdyBmb3Igc291cmNlIG9yIHRhcmdldCBjb25maWd1cmF0aW9uLiBEZWZpbmVzIHdoZXRoZXIgdGhlIGVuZHBvaW50IHNlcnZlcyBhcyBhIGRhdGEgc291cmNlIG9yIHRhcmdldCBkZXN0aW5hdGlvbiBmb3IgbWlncmF0aW9uIG9wZXJhdGlvbnMgYW5kIGRhdGEgdHJhbnNmZXIgZGlyZWN0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE1pZ3JhdGlvbiBkaXJlY3Rpb247IERhdGEgZmxvdyBjb250cm9sOyBTb3VyY2UvdGFyZ2V0IHNwZWNpZmljYXRpb247IE1pZ3JhdGlvbiBhcmNoaXRlY3R1cmVcbiAgICpcbiAgICogQVdTOiBETVMgZW5kcG9pbnQgdHlwZSBmb3IgbWlncmF0aW9uIGRpcmVjdGlvbiBhbmQgZGF0YSBmbG93IGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSAnc291cmNlJyBvciAndGFyZ2V0JzsgcmVxdWlyZWQgZm9yIGVuZHBvaW50IHJvbGUgYW5kIG1pZ3JhdGlvbiBkaXJlY3Rpb24gc3BlY2lmaWNhdGlvblxuICAgKiAgICoqL1xuICByZWFkb25seSBlbmRwb2ludFR5cGU6IE1kYWFFbmRwb2ludFR5cGU7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIFJlcXVpcmVkIGRhdGFiYXNlIGVuZ2luZSBzcGVjaWZpY2F0aW9uIGNvbnRyb2xsaW5nIGRhdGFiYXNlIHR5cGUgYW5kIGNvbm5lY3Rpdml0eSBwcm90b2NvbHMgZm9yIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24uIERlZmluZXMgdGhlIHNwZWNpZmljIGRhdGFiYXNlIGVuZ2luZSB0eXBlIGZvciBhcHByb3ByaWF0ZSBjb25uZWN0aXZpdHksIHByb3RvY29sIHNlbGVjdGlvbiwgYW5kIGRhdGFiYXNlLXNwZWNpZmljIG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEYXRhYmFzZSBlbmdpbmUgc3BlY2lmaWNhdGlvbjsgQ29ubmVjdGl2aXR5IHByb3RvY29sczsgRW5naW5lLXNwZWNpZmljIG9wdGltaXphdGlvbjsgRGF0YWJhc2UgY29tcGF0aWJpbGl0eVxuICAgKlxuICAgKiBBV1M6IERNUyBlbmRwb2ludCBlbmdpbmUgbmFtZSBmb3IgZGF0YWJhc2UgdHlwZSBzcGVjaWZpY2F0aW9uIGFuZCBjb25uZWN0aXZpdHkgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGVuZ2luZSBuYW1lIChteXNxbCwgb3JhY2xlLCBwb3N0Z3JlcywgZXRjLik7IHJlcXVpcmVkIGZvciBkYXRhYmFzZSBjb25uZWN0aXZpdHlcbiAgICogICAqKi9cbiAgcmVhZG9ubHkgZW5naW5lTmFtZTogTWRhYUVuZHBvaW50RW5naW5lO1xuICByZWFkb25seSBleHRyYUNvbm5lY3Rpb25BdHRyaWJ1dGVzPzogc3RyaW5nO1xuICByZWFkb25seSBrbXNLZXk6IElLZXk7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlIHBvcnQgc3BlY2lmaWNhdGlvbiBmb3IgZW5kcG9pbnQgY29ubmVjdGl2aXR5IGNvbnRyb2xsaW5nIG5ldHdvcmsgY29ubmVjdGlvbiBwYXJhbWV0ZXJzIGFuZCBkYXRhYmFzZSBhY2Nlc3MuIERlZmluZXMgdGhlIG5ldHdvcmsgcG9ydCBmb3IgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGVuYWJsaW5nIHByb3BlciBuZXR3b3JrIHJvdXRpbmcgYW5kIGRhdGFiYXNlIHNlcnZlciBhY2Nlc3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTmV0d29yayBjb25uZWN0aXZpdHk7IFBvcnQgc3BlY2lmaWNhdGlvbjsgRGF0YWJhc2UgYWNjZXNzOyBOZXR3b3JrIHJvdXRpbmdcbiAgICpcbiAgICogQVdTOiBEYXRhYmFzZSBwb3J0IGZvciBETVMgZW5kcG9pbnQgbmV0d29yayBjb25uZWN0aXZpdHkgYW5kIGRhdGFiYXNlIHNlcnZlciBhY2Nlc3NcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBwb3J0IG51bWJlciBpZiBwcm92aWRlZDsgZW5hYmxlcyBwcm9wZXIgbmV0d29yayBjb25uZWN0aXZpdHkgdG8gZGF0YWJhc2Ugc2VydmVyXG4gICAqKi9cbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBzZXJ2ZXIgbmFtZSBzcGVjaWZpY2F0aW9uIGZvciBkYXRhYmFzZSBzZXJ2ZXIgY29ubmVjdGl2aXR5IGVuYWJsaW5nIG5ldHdvcmstYmFzZWQgZGF0YWJhc2UgYWNjZXNzIGFuZCBzZXJ2ZXIgaWRlbnRpZmljYXRpb24uIERlZmluZXMgdGhlIGhvc3RuYW1lIG9yIElQIGFkZHJlc3Mgb2YgdGhlIGRhdGFiYXNlIHNlcnZlciBmb3IgbmV0d29yayBjb25uZWN0aXZpdHkgYW5kIGRhdGFiYXNlIGFjY2Vzcy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTZXJ2ZXIgY29ubmVjdGl2aXR5OyBOZXR3b3JrIGFjY2VzczsgRGF0YWJhc2Ugc2VydmVyIGlkZW50aWZpY2F0aW9uOyBIb3N0bmFtZSBzcGVjaWZpY2F0aW9uXG4gICAqXG4gICAqIEFXUzogRGF0YWJhc2Ugc2VydmVyIG5hbWUgZm9yIERNUyBlbmRwb2ludCBuZXR3b3JrIGNvbm5lY3Rpdml0eSBhbmQgc2VydmVyIGFjY2Vzc1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIGhvc3RuYW1lIG9yIElQIGFkZHJlc3MgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgbmV0d29yayBjb25uZWN0aXZpdHkgdG8gZGF0YWJhc2Ugc2VydmVyXG4gICAqKi9cbiAgcmVhZG9ubHkgc2VydmVyTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc3NsTW9kZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgRG9jdW1lbnREQiBzZXR0aW5ncyBmb3IgRG9jdW1lbnREQiBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIE5vU1FMIGRvY3VtZW50IGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uLiBQcm92aWRlcyBEb2N1bWVudERCLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGRvY3VtZW50IGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgY29ubmVjdGl2aXR5IG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBEb2N1bWVudERCIGNvbm5lY3Rpdml0eTsgTm9TUUwgbWlncmF0aW9uOyBEb2N1bWVudCBkYXRhYmFzZSBvcHRpbWl6YXRpb247IE1vbmdvREIgY29tcGF0aWJpbGl0eVxuICAgKlxuICAgKiBBV1M6IERvY3VtZW50REIgc2V0dGluZ3MgZm9yIERNUyBlbmRwb2ludCBOb1NRTCBkb2N1bWVudCBkYXRhYmFzZSBjb25uZWN0aXZpdHkgYW5kIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIERvY0RiU2V0dGluZ3NQcm9wZXJ0eSBpZiBwcm92aWRlZDsgZW5hYmxlcyBEb2N1bWVudERCLXNwZWNpZmljIGNvbm5lY3Rpdml0eVxuICAgKiAgICoqL1xuICByZWFkb25seSBkb2NEYlNldHRpbmdzPzogRG9jRGJTZXR0aW5nc1Byb3BlcnR5O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBEeW5hbW9EQiBzZXR0aW5ncyBmb3IgRHluYW1vREIgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBlbmFibGluZyBOb1NRTCBrZXktdmFsdWUgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvYmplY3QgbWFwcGluZy4gUHJvdmlkZXMgRHluYW1vREItc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgTm9TUUwgbWlncmF0aW9uIGFuZCBvYmplY3QgbWFwcGluZyBvcHRpbWl6YXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogRHluYW1vREIgY29ubmVjdGl2aXR5OyBOb1NRTCBtaWdyYXRpb247IE9iamVjdCBtYXBwaW5nOyBLZXktdmFsdWUgZGF0YWJhc2Ugb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIEFXUzogRHluYW1vREIgc2V0dGluZ3MgZm9yIERNUyBlbmRwb2ludCBOb1NRTCBrZXktdmFsdWUgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvYmplY3QgbWFwcGluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIER5bmFtb0RiU2V0dGluZ3NQcm9wZXJ0eSBpZiBwcm92aWRlZDsgZW5hYmxlcyBEeW5hbW9EQi1zcGVjaWZpYyBjb25uZWN0aXZpdHlcbiAgICogICAqKi9cbiAgcmVhZG9ubHkgZHluYW1vRGJTZXR0aW5ncz86IER5bmFtb0RiU2V0dGluZ3NQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgRWxhc3RpY3NlYXJjaCBzZXR0aW5ncyBmb3IgT3BlblNlYXJjaCBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIHNlYXJjaCBlbmdpbmUgY29ubmVjdGl2aXR5IGFuZCBkb2N1bWVudCBpbmRleGluZy4gUHJvdmlkZXMgT3BlblNlYXJjaC9FbGFzdGljc2VhcmNoLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHNlYXJjaCBlbmdpbmUgbWlncmF0aW9uIGFuZCBkb2N1bWVudCBpbmRleGluZyBvcHRpbWl6YXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogU2VhcmNoIGVuZ2luZSBjb25uZWN0aXZpdHk7IERvY3VtZW50IGluZGV4aW5nOyBPcGVuU2VhcmNoIG1pZ3JhdGlvbjsgU2VhcmNoIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBBV1M6IE9wZW5TZWFyY2gvRWxhc3RpY3NlYXJjaCBzZXR0aW5ncyBmb3IgRE1TIGVuZHBvaW50IHNlYXJjaCBlbmdpbmUgY29ubmVjdGl2aXR5IGFuZCBpbmRleGluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIEVsYXN0aWNzZWFyY2hTZXR0aW5nc1Byb3BlcnR5IGlmIHByb3ZpZGVkOyBlbmFibGVzIHNlYXJjaCBlbmdpbmUgY29ubmVjdGl2aXR5XG4gICAqICAgKiovXG4gIHJlYWRvbmx5IGVsYXN0aWNzZWFyY2hTZXR0aW5ncz86IEVsYXN0aWNzZWFyY2hTZXR0aW5nc1Byb3BlcnR5O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBJQk0gRGIyIHNldHRpbmdzIGZvciBEYjIgTFVXIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gZW5hYmxpbmcgbWFpbmZyYW1lIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uLiBQcm92aWRlcyBJQk0gRGIyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIG1haW5mcmFtZSBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIGNvbm5lY3Rpdml0eSBvcHRpbWl6YXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogSUJNIERiMiBjb25uZWN0aXZpdHk7IE1haW5mcmFtZSBtaWdyYXRpb247IEVudGVycHJpc2UgZGF0YWJhc2Ugb3B0aW1pemF0aW9uOyBMZWdhY3kgc3lzdGVtIGludGVncmF0aW9uXG4gICAqXG4gICAqIEFXUzogSUJNIERiMiBzZXR0aW5ncyBmb3IgRE1TIGVuZHBvaW50IG1haW5mcmFtZSBkYXRhYmFzZSBjb25uZWN0aXZpdHkgYW5kIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIElibURiMlNldHRpbmdzUHJvcGVydHkgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgSUJNIERiMi1zcGVjaWZpYyBjb25uZWN0aXZpdHlcbiAgICogICAqKi9cbiAgcmVhZG9ubHkgaWJtRGIyU2V0dGluZ3M/OiBJYm1EYjJTZXR0aW5nc1Byb3BlcnR5O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBLaW5lc2lzIHNldHRpbmdzIGZvciBLaW5lc2lzIERhdGEgU3RyZWFtcyBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIHJlYWwtdGltZSBzdHJlYW1pbmcgYW5kIG9iamVjdCBtYXBwaW5nLiBQcm92aWRlcyBLaW5lc2lzLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHJlYWwtdGltZSBkYXRhIHN0cmVhbWluZyBhbmQgb2JqZWN0IG1hcHBpbmcgb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFJlYWwtdGltZSBzdHJlYW1pbmc7IERhdGEgc3RyZWFtczsgT2JqZWN0IG1hcHBpbmc7IFN0cmVhbSBwcm9jZXNzaW5nXG4gICAqXG4gICAqIEFXUzogS2luZXNpcyBEYXRhIFN0cmVhbXMgc2V0dGluZ3MgZm9yIERNUyBlbmRwb2ludCByZWFsLXRpbWUgc3RyZWFtaW5nIGFuZCBvYmplY3QgbWFwcGluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIEtpbmVzaXNTZXR0aW5nc1Byb3BlcnR5IGlmIHByb3ZpZGVkOyBlbmFibGVzIEtpbmVzaXMgc3RyZWFtaW5nIGNvbm5lY3Rpdml0eVxuICAgKiAgICoqL1xuICByZWFkb25seSBraW5lc2lzU2V0dGluZ3M/OiBLaW5lc2lzU2V0dGluZ3NQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgTWljcm9zb2Z0IFNRTCBTZXJ2ZXIgc2V0dGluZ3MgZm9yIFNRTCBTZXJ2ZXIgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBlbmFibGluZyBlbnRlcnByaXNlIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uLiBQcm92aWRlcyBTUUwgU2VydmVyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGVudGVycHJpc2UgZGF0YWJhc2UgbWlncmF0aW9uIGFuZCBjb25uZWN0aXZpdHkgb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IFNRTCBTZXJ2ZXIgY29ubmVjdGl2aXR5OyBFbnRlcnByaXNlIG1pZ3JhdGlvbjsgV2luZG93cyBkYXRhYmFzZSBvcHRpbWl6YXRpb247IE1pY3Jvc29mdCBlY29zeXN0ZW0gaW50ZWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBNaWNyb3NvZnQgU1FMIFNlcnZlciBzZXR0aW5ncyBmb3IgRE1TIGVuZHBvaW50IGVudGVycHJpc2UgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBNaWNyb3NvZnRTcWxTZXJ2ZXJTZXR0aW5nc1Byb3BlcnR5IGlmIHByb3ZpZGVkOyBlbmFibGVzIFNRTCBTZXJ2ZXIgY29ubmVjdGl2aXR5XG4gICAqICAgKiovXG4gIHJlYWRvbmx5IG1pY3Jvc29mdFNxbFNlcnZlclNldHRpbmdzPzogTWljcm9zb2Z0U3FsU2VydmVyU2V0dGluZ3NQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgTW9uZ29EQiBzZXR0aW5ncyBmb3IgTW9uZ29EQiBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIE5vU1FMIGRvY3VtZW50IGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uLiBQcm92aWRlcyBNb25nb0RCLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGRvY3VtZW50IGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgY29ubmVjdGl2aXR5IG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNb25nb0RCIGNvbm5lY3Rpdml0eTsgRG9jdW1lbnQgZGF0YWJhc2UgbWlncmF0aW9uOyBOb1NRTCBvcHRpbWl6YXRpb247IERvY3VtZW50IHN0b3JlIGludGVncmF0aW9uXG4gICAqXG4gICAqIEFXUzogTW9uZ29EQiBzZXR0aW5ncyBmb3IgRE1TIGVuZHBvaW50IE5vU1FMIGRvY3VtZW50IGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgTW9uZ29EYlNldHRpbmdzUHJvcGVydHkgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgTW9uZ29EQi1zcGVjaWZpYyBjb25uZWN0aXZpdHlcbiAgICogICAqKi9cbiAgcmVhZG9ubHkgbW9uZ29EYlNldHRpbmdzPzogTW9uZ29EYlNldHRpbmdzUHJvcGVydHk7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIE15U1FMIHNldHRpbmdzIGZvciBNeVNRTCBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIHJlbGF0aW9uYWwgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvcHRpbWl6YXRpb24uIFByb3ZpZGVzIE15U1FMLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIHJlbGF0aW9uYWwgZGF0YWJhc2UgbWlncmF0aW9uIGFuZCBjb25uZWN0aXZpdHkgb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE15U1FMIGNvbm5lY3Rpdml0eTsgUmVsYXRpb25hbCBtaWdyYXRpb247IE9wZW4tc291cmNlIGRhdGFiYXNlIG9wdGltaXphdGlvbjsgV2ViIGFwcGxpY2F0aW9uIGludGVncmF0aW9uXG4gICAqXG4gICAqIEFXUzogTXlTUUwgc2V0dGluZ3MgZm9yIERNUyBlbmRwb2ludCByZWxhdGlvbmFsIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgTXlTcWxTZXR0aW5nc1Byb3BlcnR5IGlmIHByb3ZpZGVkOyBlbmFibGVzIE15U1FMLXNwZWNpZmljIGNvbm5lY3Rpdml0eVxuICAgKiAgICoqL1xuICByZWFkb25seSBteVNxbFNldHRpbmdzPzogTXlTcWxTZXR0aW5nc1Byb3BlcnR5O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBOZXB0dW5lIHNldHRpbmdzIGZvciBOZXB0dW5lIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gZW5hYmxpbmcgZ3JhcGggZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvcHRpbWl6YXRpb24uIFByb3ZpZGVzIE5lcHR1bmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgZ3JhcGggZGF0YWJhc2UgbWlncmF0aW9uIGFuZCBjb25uZWN0aXZpdHkgb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEdyYXBoIGRhdGFiYXNlIGNvbm5lY3Rpdml0eTsgTmVwdHVuZSBtaWdyYXRpb247IEdyYXBoIGRhdGEgb3B0aW1pemF0aW9uOyBSZWxhdGlvbnNoaXAgZGF0YSBwcm9jZXNzaW5nXG4gICAqXG4gICAqIEFXUzogQW1hem9uIE5lcHR1bmUgc2V0dGluZ3MgZm9yIERNUyBlbmRwb2ludCBncmFwaCBkYXRhYmFzZSBjb25uZWN0aXZpdHkgYW5kIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIE5lcHR1bmVTZXR0aW5nc1Byb3BlcnR5IGlmIHByb3ZpZGVkOyBlbmFibGVzIE5lcHR1bmUtc3BlY2lmaWMgY29ubmVjdGl2aXR5XG4gICAqICAgKiovXG4gIHJlYWRvbmx5IG5lcHR1bmVTZXR0aW5ncz86IE5lcHR1bmVTZXR0aW5nc1Byb3BlcnR5O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBPcmFjbGUgc2V0dGluZ3MgZm9yIE9yYWNsZSBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIGVudGVycHJpc2UgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvcHRpbWl6YXRpb24uIFByb3ZpZGVzIE9yYWNsZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBlbnRlcnByaXNlIGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgY29ubmVjdGl2aXR5IG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBPcmFjbGUgY29ubmVjdGl2aXR5OyBFbnRlcnByaXNlIG1pZ3JhdGlvbjsgQ29tbWVyY2lhbCBkYXRhYmFzZSBvcHRpbWl6YXRpb247IE9yYWNsZSBlY29zeXN0ZW0gaW50ZWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBPcmFjbGUgRGF0YWJhc2Ugc2V0dGluZ3MgZm9yIERNUyBlbmRwb2ludCBlbnRlcnByaXNlIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgT3JhY2xlU2V0dGluZ3NQcm9wZXJ0eSBpZiBwcm92aWRlZDsgZW5hYmxlcyBPcmFjbGUtc3BlY2lmaWMgY29ubmVjdGl2aXR5XG4gICAqICAgKiovXG4gIHJlYWRvbmx5IG9yYWNsZVNldHRpbmdzPzogT3JhY2xlU2V0dGluZ3NQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgUG9zdGdyZVNRTCBzZXR0aW5ncyBmb3IgUG9zdGdyZVNRTCBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIG9wZW4tc291cmNlIHJlbGF0aW9uYWwgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvcHRpbWl6YXRpb24uIFByb3ZpZGVzIFBvc3RncmVTUUwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgcmVsYXRpb25hbCBkYXRhYmFzZSBtaWdyYXRpb24gYW5kIGNvbm5lY3Rpdml0eSBvcHRpbWl6YXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogUG9zdGdyZVNRTCBjb25uZWN0aXZpdHk7IE9wZW4tc291cmNlIG1pZ3JhdGlvbjsgQWR2YW5jZWQgcmVsYXRpb25hbCBmZWF0dXJlczsgRW50ZXJwcmlzZS1ncmFkZSBkYXRhYmFzZVxuICAgKlxuICAgKiBBV1M6IFBvc3RncmVTUUwgc2V0dGluZ3MgZm9yIERNUyBlbmRwb2ludCByZWxhdGlvbmFsIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUG9zdGdyZVNxbFNldHRpbmdzUHJvcGVydHkgaWYgcHJvdmlkZWQ7IGVuYWJsZXMgUG9zdGdyZVNRTC1zcGVjaWZpYyBjb25uZWN0aXZpdHlcbiAgICogICAqKi9cbiAgcmVhZG9ubHkgcG9zdGdyZVNxbFNldHRpbmdzPzogUG9zdGdyZVNxbFNldHRpbmdzUHJvcGVydHk7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIFJlZHNoaWZ0IHNldHRpbmdzIGZvciBSZWRzaGlmdCBlbmRwb2ludCBjb25maWd1cmF0aW9uIGVuYWJsaW5nIGRhdGEgd2FyZWhvdXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uLiBQcm92aWRlcyBSZWRzaGlmdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBkYXRhIHdhcmVob3VzZSBtaWdyYXRpb24gYW5kIGFuYWx5dGljcyBvcHRpbWl6YXRpb24uXG4gICAqXG4gICAqIFVzZSBjYXNlczogRGF0YSB3YXJlaG91c2UgY29ubmVjdGl2aXR5OyBBbmFseXRpY3MgbWlncmF0aW9uOyBSZWRzaGlmdCBvcHRpbWl6YXRpb247IEJ1c2luZXNzIGludGVsbGlnZW5jZSBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBSZWRzaGlmdCBzZXR0aW5ncyBmb3IgRE1TIGVuZHBvaW50IGRhdGEgd2FyZWhvdXNlIGNvbm5lY3Rpdml0eSBhbmQgYW5hbHl0aWNzIG9wdGltaXphdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIFJlZHNoaWZ0U2V0dGluZ3NQcm9wZXJ0eSBpZiBwcm92aWRlZDsgZW5hYmxlcyBSZWRzaGlmdC1zcGVjaWZpYyBjb25uZWN0aXZpdHlcbiAgICogICAqKi9cbiAgcmVhZG9ubHkgcmVkc2hpZnRTZXR0aW5ncz86IFJlZHNoaWZ0U2V0dGluZ3NQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgUzMgc2V0dGluZ3MgZm9yIFMzIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gZW5hYmxpbmcgb2JqZWN0IHN0b3JhZ2UgY29ubmVjdGl2aXR5IGFuZCBmaWxlLWJhc2VkIGRhdGEgdHJhbnNmZXIuIFByb3ZpZGVzIFMzLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIG9iamVjdCBzdG9yYWdlIG1pZ3JhdGlvbiBhbmQgZmlsZS1iYXNlZCBkYXRhIHRyYW5zZmVyIG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBPYmplY3Qgc3RvcmFnZSBjb25uZWN0aXZpdHk7IEZpbGUtYmFzZWQgbWlncmF0aW9uOyBTMyBvcHRpbWl6YXRpb247IERhdGEgbGFrZSBpbnRlZ3JhdGlvblxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBTMyBzZXR0aW5ncyBmb3IgRE1TIGVuZHBvaW50IG9iamVjdCBzdG9yYWdlIGNvbm5lY3Rpdml0eSBhbmQgZmlsZS1iYXNlZCBkYXRhIHRyYW5zZmVyXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgUzNTZXR0aW5nc1Byb3BlcnR5IGlmIHByb3ZpZGVkOyBlbmFibGVzIFMzLXNwZWNpZmljIGNvbm5lY3Rpdml0eSBhbmQgZmlsZSB0cmFuc2ZlclxuICAgKiAgICoqL1xuICByZWFkb25seSBzM1NldHRpbmdzPzogUzNTZXR0aW5nc1Byb3BlcnR5O1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBTeWJhc2Ugc2V0dGluZ3MgZm9yIFNBUCBBU0UgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBlbmFibGluZyBlbnRlcnByaXNlIGRhdGFiYXNlIGNvbm5lY3Rpdml0eSBhbmQgb3B0aW1pemF0aW9uLiBQcm92aWRlcyBTeWJhc2UvU0FQIEFTRS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBlbnRlcnByaXNlIGRhdGFiYXNlIG1pZ3JhdGlvbiBhbmQgY29ubmVjdGl2aXR5IG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBTeWJhc2UgY29ubmVjdGl2aXR5OyBTQVAgQVNFIG1pZ3JhdGlvbjsgRW50ZXJwcmlzZSBkYXRhYmFzZSBvcHRpbWl6YXRpb247IExlZ2FjeSBzeXN0ZW0gaW50ZWdyYXRpb25cbiAgICpcbiAgICogQVdTOiBTeWJhc2UvU0FQIEFTRSBzZXR0aW5ncyBmb3IgRE1TIGVuZHBvaW50IGVudGVycHJpc2UgZGF0YWJhc2UgY29ubmVjdGl2aXR5IGFuZCBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBTeWJhc2VTZXR0aW5nc1Byb3BlcnR5IGlmIHByb3ZpZGVkOyBlbmFibGVzIFN5YmFzZS9TQVAgQVNFIGNvbm5lY3Rpdml0eVxuICAgKiAgICoqL1xuICByZWFkb25seSBzeWJhc2VTZXR0aW5ncz86IFN5YmFzZVNldHRpbmdzUHJvcGVydHk7XG59XG5cbi8qKlxuICogUmV1c2FibGUgQ0RLIGNvbnN0cnVjdCBmb3IgYSBjb21wbGlhbnQgRE1TIEVuZHBvaW50LlxuICogU3BlY2lmaWNhbGx5LCBlbmZvcmNlcyBLTVMgRW5jcnlwdGlvbiwgYW5kIHByZXZlbnRzIHVzZSBvZiBwbGFpbnRleHQgY3JlZGVudGlhbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZGFhRW5kcG9pbnQgZXh0ZW5kcyBDZm5FbmRwb2ludCB7XG4gIC8qKiBPdmVycmlkZXMgc3BlY2lmaWMgY29tcGxpYW5jZS1yZWxhdGVkIHByb3BlcnRpZXMuICovXG4gIHByaXZhdGUgc3RhdGljIHNldFByb3BzKHByb3BzOiBNZGFhRW5kcG9pbnRQcm9wcyk6IENmbkVuZHBvaW50UHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGVuZHBvaW50SWRlbnRpZmllcjogcHJvcHMubmFtaW5nLnJlc291cmNlTmFtZShwcm9wcy5lbmRwb2ludElkZW50aWZpZXIpLFxuICAgICAga21zS2V5SWQ6IHByb3BzLmttc0tleS5rZXlJZCxcbiAgICAgIHMzU2V0dGluZ3M6IHByb3BzLmVuZ2luZU5hbWUgPT0gJ3MzJyA/IHRoaXMuc2V0UzNTZXR0aW5ncyhwcm9wcy5zM1NldHRpbmdzKSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlZHNoaWZ0U2V0dGluZ3M6IHByb3BzLmVuZ2luZU5hbWUgPT0gJ3JlZHNoaWZ0JyA/IHRoaXMuc2V0UmVkc2hpZnRTZXR0aW5ncyhwcm9wcy5yZWRzaGlmdFNldHRpbmdzKSA6IHVuZGVmaW5lZCxcbiAgICAgIG5lcHR1bmVTZXR0aW5nczogcHJvcHMuZW5naW5lTmFtZSA9PSAnbmVwdHVuZScgPyB0aGlzLnNldE5lcHR1bmVTZXR0aW5ncyhwcm9wcy5uZXB0dW5lU2V0dGluZ3MpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXROZXB0dW5lU2V0dGluZ3MobmVwdHVuZVNldHRpbmdzPzogTmVwdHVuZVNldHRpbmdzUHJvcGVydHkpOiBDZm5FbmRwb2ludC5OZXB0dW5lU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm5lcHR1bmVTZXR0aW5ncyxcbiAgICAgIGlhbUF1dGhFbmFibGVkOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXRTM1NldHRpbmdzKHMzU2V0dGluZ3M/OiBTM1NldHRpbmdzUHJvcGVydHkpOiBDZm5FbmRwb2ludC5TM1NldHRpbmdzUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zM1NldHRpbmdzLFxuICAgICAgZW5jcnlwdGlvbk1vZGU6ICdTU0VfS01TJyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgc2V0UmVkc2hpZnRTZXR0aW5ncyhcbiAgICByZWRzaGlmdFNldHRpbmdzPzogUmVkc2hpZnRTZXR0aW5nc1Byb3BlcnR5LFxuICApOiBDZm5FbmRwb2ludC5SZWRzaGlmdFNldHRpbmdzUHJvcGVydHkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5yZWRzaGlmdFNldHRpbmdzLFxuICAgICAgZW5jcnlwdGlvbk1vZGU6ICdTU0VfS01TJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1kYWFFbmRwb2ludFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBNZGFhRW5kcG9pbnQuc2V0UHJvcHMocHJvcHMpKTtcblxuICAgIG5ldyBNZGFhUGFyYW1BbmRPdXRwdXQodGhpcywge1xuICAgICAgLi4ue1xuICAgICAgICByZXNvdXJjZVR5cGU6ICdlbmRwb2ludCcsXG4gICAgICAgIHJlc291cmNlSWQ6IHByb3BzLmVuZHBvaW50SWRlbnRpZmllcixcbiAgICAgICAgbmFtZTogJ2FybicsXG4gICAgICAgIHZhbHVlOiB0aGlzLnJlZixcbiAgICAgIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -49,5 +49,5 @@ class MdaaReplicationInstance extends aws_dms_1.CfnReplicationInstance {
49
49
  }
50
50
  exports.MdaaReplicationInstance = MdaaReplicationInstance;
51
51
  _a = JSII_RTTI_SYMBOL_1;
52
- MdaaReplicationInstance[_a] = { fqn: "@aws-mdaa/dms-constructs.MdaaReplicationInstance", version: "1.3.0" };
52
+ MdaaReplicationInstance[_a] = { fqn: "@aws-mdaa/dms-constructs.MdaaReplicationInstance", version: "1.4.0" };
53
53
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGljYXRpb25faW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXBsaWNhdGlvbl9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7R0FHRztBQUVILG1EQUE2RSxDQUFDLFNBQVM7QUFFdkYsaURBQTBGO0FBRzFGLG1DQUFnRTtBQWlEaEU7OztHQUdHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxnQ0FBc0I7SUFDakUsd0RBQXdEO0lBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBbUM7UUFDekQsTUFBTSw2QkFBNkIsR0FBRyxJQUFBLDZDQUFxQyxFQUN6RSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxDQUFDLENBQ25FLENBQUM7UUFDRixNQUFNLGFBQWEsR0FBRztZQUNwQiw2QkFBNkI7WUFDN0Isa0JBQWtCLEVBQUUsS0FBSztZQUN6QixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1NBQzdCLENBQUM7UUFDRixPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQztRQUMzRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUxRCxJQUFJLDhCQUFrQixDQUFDLElBQUksRUFBRTtZQUMzQixHQUFHO2dCQUNELFlBQVksRUFBRSxxQkFBcUI7Z0JBQ25DLFVBQVUsRUFBRSxLQUFLLENBQUMsNkJBQTZCO2dCQUMvQyxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHO2FBQ2hCO1lBQ0QsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSw4QkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDM0IsR0FBRztnQkFDRCxZQUFZLEVBQUUscUJBQXFCO2dCQUNuQyxVQUFVLEVBQUUsS0FBSyxDQUFDLDZCQUE2QjtnQkFDL0MsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyx5Q0FBeUM7YUFDdEQ7WUFDRCxHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXBDSCwwREFxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBNZGFhQ29uc3RydWN0UHJvcHMsIE1kYWFQYXJhbUFuZE91dHB1dCB9IGZyb20gJ0Bhd3MtbWRhYS9jb25zdHJ1Y3QnOyAvL05PU09OQVJcbmltcG9ydCB7IENmblRhZywgSVJlc29sdmFibGUgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDZm5SZXBsaWNhdGlvbkluc3RhbmNlLCBDZm5SZXBsaWNhdGlvbkluc3RhbmNlUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZG1zJztcbmltcG9ydCB7IElLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgc2FuaXRpemVSZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllciB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1kYWFSZXBsaWNhdGlvbkluc3RhbmNlUHJvcHMgZXh0ZW5kcyBNZGFhQ29uc3RydWN0UHJvcHMge1xuICByZWFkb25seSBhbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuICByZWFkb25seSBhbGxvd01ham9yVmVyc2lvblVwZ3JhZGU/OiBib29sZWFuIHwgSVJlc29sdmFibGU7XG4gIHJlYWRvbmx5IGF1dG9NaW5vclZlcnNpb25VcGdyYWRlPzogYm9vbGVhbiB8IElSZXNvbHZhYmxlO1xuICAvKipcbiAgICogUS1FTkhBTkNFRC1QUk9QRVJUWVxuICAgKiBPcHRpb25hbCBhdmFpbGFiaWxpdHkgem9uZSBzcGVjaWZpY2F0aW9uIGZvciByZXBsaWNhdGlvbiBpbnN0YW5jZSBwbGFjZW1lbnQgY29udHJvbGxpbmcgZ2VvZ3JhcGhpYyBkaXN0cmlidXRpb24gYW5kIGxhdGVuY3kgb3B0aW1pemF0aW9uLiBEZWZpbmVzIHRoZSBzcGVjaWZpYyBhdmFpbGFiaWxpdHkgem9uZSBmb3IgcmVwbGljYXRpb24gaW5zdGFuY2UgZGVwbG95bWVudCBmb3IgbmV0d29yayBwcm94aW1pdHkgYW5kIGRpc2FzdGVyIHJlY292ZXJ5IHBsYW5uaW5nLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEdlb2dyYXBoaWMgcGxhY2VtZW50OyBMYXRlbmN5IG9wdGltaXphdGlvbjsgRGlzYXN0ZXIgcmVjb3Zlcnk7IE5ldHdvcmsgcHJveGltaXR5XG4gICAqXG4gICAqIEFXUzogRE1TIHJlcGxpY2F0aW9uIGluc3RhbmNlIGF2YWlsYWJpbGl0eSB6b25lIGZvciBnZW9ncmFwaGljIHBsYWNlbWVudCBhbmQgbmV0d29yayBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBhdmFpbGFiaWxpdHkgem9uZSBuYW1lIGlmIHByb3ZpZGVkOyBjb250cm9scyBpbnN0YW5jZSBwbGFjZW1lbnQgYW5kIG5ldHdvcmsgcHJveGltaXR5XG4gICAqKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgRE1TIGVuZ2luZSB2ZXJzaW9uIHNwZWNpZmljYXRpb24gZm9yIGZlYXR1cmUgYWNjZXNzIGFuZCBjb21wYXRpYmlsaXR5IGNvbnRyb2wgZW5hYmxpbmcgdmVyc2lvbiBtYW5hZ2VtZW50IGFuZCBjYXBhYmlsaXR5IHNlbGVjdGlvbi4gUHJvdmlkZXMgY29udHJvbCBvdmVyIERNUyBlbmdpbmUgdmVyc2lvbiBmb3IgZmVhdHVyZSBhY2Nlc3MsIGNvbXBhdGliaWxpdHksIGFuZCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MuXG4gICAqXG4gICAqIFVzZSBjYXNlczogVmVyc2lvbiBtYW5hZ2VtZW50OyBGZWF0dXJlIGFjY2VzczsgQ29tcGF0aWJpbGl0eSBjb250cm9sOyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25cbiAgICpcbiAgICogQVdTOiBETVMgcmVwbGljYXRpb24gaW5zdGFuY2UgZW5naW5lIHZlcnNpb24gZm9yIGZlYXR1cmUgYWNjZXNzIGFuZCBjb21wYXRpYmlsaXR5IG1hbmFnZW1lbnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSB2YWxpZCBETVMgZW5naW5lIHZlcnNpb24gaWYgcHJvdmlkZWQ7IGRlZmF1bHRzIHRvIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvblxuICAgKiovXG4gIHJlYWRvbmx5IGVuZ2luZVZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGttc0tleTogSUtleTtcbiAgcmVhZG9ubHkgbXVsdGlBej86IGJvb2xlYW4gfCBJUmVzb2x2YWJsZTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgbWFpbnRlbmFuY2Ugd2luZG93IHNwZWNpZmljYXRpb24gZm9yIHN5c3RlbSB1cGRhdGVzIGFuZCBtYWludGVuYW5jZSBvcGVyYXRpb25zIGNvbnRyb2xsaW5nIG9wZXJhdGlvbmFsIHRpbWluZyBhbmQgaW1wYWN0LiBEZWZpbmVzIHRoZSB3ZWVrbHkgdGltZSByYW5nZSBmb3Igc3lzdGVtIG1haW50ZW5hbmNlIGFjdGl2aXRpZXMgd2l0aCBtaW5pbWFsIGltcGFjdCBvbiBtaWdyYXRpb24gb3BlcmF0aW9ucy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBNYWludGVuYW5jZSBzY2hlZHVsaW5nOyBPcGVyYXRpb25hbCB0aW1pbmc7IEltcGFjdCBjb250cm9sOyBTeXN0ZW0gdXBkYXRlc1xuICAgKlxuICAgKiBBV1M6IERNUyByZXBsaWNhdGlvbiBpbnN0YW5jZSBtYWludGVuYW5jZSB3aW5kb3cgZm9yIHN5c3RlbSB1cGRhdGVzIGFuZCBvcGVyYXRpb25hbCBzY2hlZHVsaW5nXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgdGltZSByYW5nZSBmb3JtYXQgKGRkZDpoaDI0Om1pLWRkZDpoaDI0Om1pKSBpZiBwcm92aWRlZDsgbWluaW11bSAzMC1taW51dGUgd2luZG93XG4gICAqKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzczogc3RyaW5nO1xuICByZWFkb25seSByZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVwbGljYXRpb25TdWJuZXRHcm91cElkZW50aWZpZXI6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVzb3VyY2VJZGVudGlmaWVyPzogc3RyaW5nO1xuICByZWFkb25seSB0YWdzPzogQXJyYXk8Q2ZuVGFnPjtcbiAgcmVhZG9ubHkgdnBjU2VjdXJpdHlHcm91cElkcz86IEFycmF5PHN0cmluZz47XG59XG5cbi8qKlxuICogUmV1c2FibGUgQ0RLIGNvbnN0cnVjdCBmb3IgYSBjb21wbGlhbnQgRE1TIFJlcGxpY2F0aW9uIEluc3RhbmNlLlxuICogU3BlY2lmaWNhbGx5LCBlbmZvcmNlcyBLTVMgRW5jcnlwdGlvbiwgYW5kIHByZXZlbnRzIHB1YmxpYyBhY2Nlc3NpYmlsaXR5LlxuICovXG5leHBvcnQgY2xhc3MgTWRhYVJlcGxpY2F0aW9uSW5zdGFuY2UgZXh0ZW5kcyBDZm5SZXBsaWNhdGlvbkluc3RhbmNlIHtcbiAgLyoqIE92ZXJyaWRlcyBzcGVjaWZpYyBjb21wbGlhbmNlLXJlbGF0ZWQgcHJvcGVydGllcy4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgc2V0UHJvcHMocHJvcHM6IE1kYWFSZXBsaWNhdGlvbkluc3RhbmNlUHJvcHMpOiBDZm5SZXBsaWNhdGlvbkluc3RhbmNlUHJvcHMge1xuICAgIGNvbnN0IHJlcGxpY2F0aW9uSW5zdGFuY2VJZGVudGlmaWVyID0gc2FuaXRpemVSZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllcihcbiAgICAgIHByb3BzLm5hbWluZy5yZXNvdXJjZU5hbWUocHJvcHMucmVwbGljYXRpb25JbnN0YW5jZUlkZW50aWZpZXIsIDYzKSxcbiAgICApO1xuICAgIGNvbnN0IG92ZXJyaWRlUHJvcHMgPSB7XG4gICAgICByZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllcixcbiAgICAgIHB1YmxpY2x5QWNjZXNzaWJsZTogZmFsc2UsXG4gICAgICBrbXNLZXlJZDogcHJvcHMua21zS2V5LmtleUlkLFxuICAgIH07XG4gICAgcmV0dXJuIHsgLi4ucHJvcHMsIC4uLm92ZXJyaWRlUHJvcHMgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNZGFhUmVwbGljYXRpb25JbnN0YW5jZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBNZGFhUmVwbGljYXRpb25JbnN0YW5jZS5zZXRQcm9wcyhwcm9wcykpO1xuXG4gICAgbmV3IE1kYWFQYXJhbUFuZE91dHB1dCh0aGlzLCB7XG4gICAgICAuLi57XG4gICAgICAgIHJlc291cmNlVHlwZTogJ3JlcGxpY2F0aW9uSW5zdGFuY2UnLFxuICAgICAgICByZXNvdXJjZUlkOiBwcm9wcy5yZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllcixcbiAgICAgICAgbmFtZTogJ2lkZW50aWZpZXInLFxuICAgICAgICB2YWx1ZTogdGhpcy5yZWYsXG4gICAgICB9LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG5cbiAgICBuZXcgTWRhYVBhcmFtQW5kT3V0cHV0KHRoaXMsIHtcbiAgICAgIC4uLntcbiAgICAgICAgcmVzb3VyY2VUeXBlOiAncmVwbGljYXRpb25JbnN0YW5jZScsXG4gICAgICAgIHJlc291cmNlSWQ6IHByb3BzLnJlcGxpY2F0aW9uSW5zdGFuY2VJZGVudGlmaWVyLFxuICAgICAgICBuYW1lOiAnaXAnLFxuICAgICAgICB2YWx1ZTogdGhpcy5hdHRyUmVwbGljYXRpb25JbnN0YW5jZVByaXZhdGVJcEFkZHJlc3NlcyxcbiAgICAgIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-mdaa/dms-constructs",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "MDAA DMS Constructs",
5
5
  "license": "Apache-2.0",
6
6
  "author": {
@@ -22,35 +22,31 @@
22
22
  "test-coverage": "jest --passWithNoTests --coverage"
23
23
  },
24
24
  "devDependencies": {
25
- "@aws-mdaa/construct": "1.3.0",
26
- "@aws-mdaa/naming": "1.3.0",
27
- "@aws-mdaa/testing": "1.3.0",
28
- "@types/jest": "29.5.0",
29
- "@types/node": "17.0.23",
25
+ "@aws-mdaa/construct": "1.4.0",
26
+ "@aws-mdaa/naming": "1.4.0",
27
+ "@aws-mdaa/testing": "1.4.0",
28
+ "@types/jest": "29.5.14",
29
+ "@types/node": "22.9.0",
30
30
  "@types/prettier": "2.6.0",
31
31
  "aws-cdk-lib": "2.220.0",
32
32
  "cdk-nag": "2.37.55",
33
33
  "constructs": "10.0.96",
34
- "jest": "29.5.0",
35
- "ts-jest": "29.1.0",
36
- "ts-node": "10.9.1",
37
- "typescript": "4.6.3",
38
- "typescript-json-schema": "0.63.0"
39
- },
40
- "overrides": {
41
- "aws-cdk-lib": "2.220.0",
42
- "@types/babel__traverse": "7.18.2"
34
+ "jest": "29.7.0",
35
+ "ts-jest": "29.4.6",
36
+ "ts-node": "10.9.2",
37
+ "typescript": "5.9.3",
38
+ "typescript-json-schema": "0.67.1"
43
39
  },
44
40
  "dependencies": {
45
- "@aws-mdaa/construct": "1.3.0",
46
- "@aws-mdaa/naming": "1.3.0",
41
+ "@aws-mdaa/construct": "1.4.0",
42
+ "@aws-mdaa/naming": "1.4.0",
47
43
  "aws-cdk-lib": "2.220.0",
48
44
  "cdk-nag": "2.37.55",
49
45
  "constructs": "10.0.96"
50
46
  },
51
47
  "peerDependencies": {
52
- "@aws-mdaa/construct": "1.3.0",
53
- "@aws-mdaa/naming": "1.3.0",
48
+ "@aws-mdaa/construct": "1.4.0",
49
+ "@aws-mdaa/naming": "1.4.0",
54
50
  "aws-cdk-lib": "2.220.0",
55
51
  "cdk-nag": "2.37.55",
56
52
  "constructs": "10.0.96"
@@ -60,18 +56,6 @@
60
56
  "jsii": {
61
57
  "outdir": "jsii-dist",
62
58
  "versionFormat": "full",
63
- "targets": {
64
- "java_disabled": {
65
- "package": "software.amazon.awsmdaa.construct.dms",
66
- "maven": {
67
- "groupId": "software.amazon.awsmdaa.construct",
68
- "artifactId": "dms"
69
- }
70
- },
71
- "python_disabled": {
72
- "distName": "aws-mdaa.dms-constructs",
73
- "module": "aws_mdaa.dms_constructs"
74
- }
75
- }
59
+ "targets": {}
76
60
  }
77
61
  }