@rio-cloud/cdk-v2-constructs 7.8.1-alpha.1 → 7.8.1-alpha.2
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/docs/changelog.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [7.8.1-alpha.2](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.8.1-alpha.1&sourceBranch=refs%2Ftags%2Fv7.8.1-alpha.2) (2025-08-05)
|
|
6
|
+
|
|
5
7
|
## [7.8.1-alpha.1](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.8.1-alpha.0&sourceBranch=refs%2Ftags%2Fv7.8.1-alpha.1) (2025-08-05)
|
|
6
8
|
|
|
7
9
|
## [7.8.1-alpha.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.8.0&sourceBranch=refs%2Ftags%2Fv7.8.1-alpha.0) (2025-08-05)
|
|
@@ -165,6 +165,9 @@ class RioFargateServiceBlueGreenAlpha extends constructs.Construct {
|
|
|
165
165
|
this.DEFAULT_DATADOG_SIDECAR_TAG, // These are positional parameters,
|
|
166
166
|
additionalTags: datadogOptions?.additionalTags,
|
|
167
167
|
});
|
|
168
|
+
if (this.taskDefinition.executionRole) {
|
|
169
|
+
datadogSecret.grantRead(this.taskDefinition.executionRole);
|
|
170
|
+
}
|
|
168
171
|
datadog.ensureLoggingAndMonitoringAreReadyBeforeServiceStarts(this);
|
|
169
172
|
const loadBalancerOptionsForFargateService = loadBalancerOptions
|
|
170
173
|
? { healthCheckGracePeriod: loadBalancerOptions.healthCheckGracePeriod }
|
|
@@ -416,4 +419,4 @@ class ClusterVpcValidator {
|
|
|
416
419
|
return result;
|
|
417
420
|
}
|
|
418
421
|
}
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFDbEMsNENBQW9EO0FBQ3BELDRDQUFtRDtBQWdGbkQsTUFBYSwrQkFDWCxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBa0Q1QixZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUEyQztRQUUzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBbENGLHdDQUFtQyxHQUFhLEVBQUUsQ0FBQztRQUNuRCxnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsNkNBQXdDLEdBQUcsR0FBRyxDQUFDO1FBQy9DLHNDQUFpQyxHQUFHLElBQUksQ0FBQztRQUN6QyxxQ0FBZ0MsR0FDL0Msd0NBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDckIsNkNBQXdDLEdBQ3ZELHdDQUFrQixDQUFDLElBQUksQ0FBQztRQUNULGlDQUE0QixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELHVCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUMvQixnQ0FBMkIsR0FBRyxRQUFRLENBQUM7UUFFdkMsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBRWpDLCtCQUEwQixH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QUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUMvSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb2RlZGVwbG95IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlZGVwbG95JztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIG5vZGVqc2xhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGRhdGFkb2cgZnJvbSAnLi9kYXRhZG9nJztcbmltcG9ydCB7IEZyYW1ld29yaywgQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMsIEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzLCBMb2FkQmFsYW5jZXJPcHRpb25zLCBEYXRhZG9nSW50ZWdyYXRpb25Qcm9wcywgRGF0YURvZ0xvZ2dpbmdNb2RlIH0gZnJvbSAnLi9yaW8tZmFyZ2F0ZS1zZXJ2aWNlJztcbmltcG9ydCB7IFNwcmluZyB9IGZyb20gJy4vc3ByaW5nJztcbmltcG9ydCB7IERFRkFVTFRfTk9ERV9SVU5USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERhdGFkb2dTaGFyZWRTZWNyZXQgfSBmcm9tICcuLi9kYXRhZG9ndjInO1xuXG4vKipcbiAqIEZhcmdhdGUgVGFzayBEZWZpbml0aW9uIFByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhbWV3b3Jrcz86IEZyYW1ld29ya1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZXJ2aWNlJ3MgZWNzLkNsdXN0ZXIgaWYgbm8gY2x1c3RlciBpcyBleHBsaWNpdGx5IHBhc3NlZCBhcyBwcm9wLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIEZhcmdhdGUgY2x1c3RlciB0byBydW4gdGhlIHNlcnZpY2UgaW4uXG4gICAqIElmIG5vdCBudWxsLCB0aGUgY2x1c3Rlci52cGMgTVVTVCBtYXRjaCB0aGUgdnBjIHByb3ZpZGVkIGFzIGRpcmVjdCBhcmd1bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIENyZWF0ZSBhIG5ldyBGYXJnYXRlIGNsdXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9uIG9wdGlvbnMgbGlrZSBpbWFnZSwgY3B1LCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uOiBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGZhcmdhdGVPcHRpb25zOiBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcztcblxuICAvKipcbiAgICogTG9hZGJhbGFuY2VyIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJPcHRpb25zPzogTG9hZEJhbGFuY2VyT3B0aW9ucztcblxuICAvKipcbiAgICogRGF0YWRvZyBpbnRlZ3JhdGlvbiBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nT3B0aW9ucz86IERhdGFkb2dJbnRlZ3JhdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBCbHVlIGdyZWVuIGRlcGxveW1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz86IEJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyB7XG4gIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGZvciB0ZXN0aW5nIGJlZm9yZSBwcm9tb3RpbmcgdHJhZmZpYyB0byBwcm9kdWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IC0gTm8gdGFyZ2V0IGdyb3VwLlxuICAgICAqL1xuICByZWFkb25seSB0ZXN0TGlzdGVuZXI/OiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjYXBhYmlsaXRpZXMgdG8gcnVuIHdpdGggdGhlIG1vbml0b3JpbmcgdGVzdCBzdWl0ZSBydW5uZXIgdGVzdGluZ1xuICAgICAqL1xuICByZWFkb25seSBjYXBhYmlsaXR5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFcbiAgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9FTlZfREVOWV9MSVNUID0gW1xuICAgICdERF9FTlYnLFxuICAgICdERF9UQUdTJyxcbiAgICAnRERfU0VSVklDRScsXG4gICAgJ0REX1ZFUlNJT04nLFxuICAgICdERF9MT0dTX0lOSkVDVElPTicsXG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfVEFHX0RFTllfTElTVCA9IFtcbiAgICAnZW52JyxcbiAgICAnc2VydmljZScsXG4gICAgJ3ZlcnNpb24nLFxuICAgICdhY2NvdW50X2lkJyxcbiAgICAnYWNjb3VudF9uYW1lJyxcbiAgICAncmVnaW9uJyxcbiAgICAndGVhbScsXG4gICAgJ3RlYW1faWRlbnRpZmllcicsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCID0gMTI4O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0UgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVkgPSBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1NMT1dfU1RBUlQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHID0gJ2xhdGVzdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQiA9IDY0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4gPVxuICAgICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSBibHVlVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGdyZWVuVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMsXG4gICAgICB2cGMsXG4gICAgICBjbHVzdGVyLFxuICAgICAgZmFyZ2F0ZU9wdGlvbnMsXG4gICAgICBkYXRhZG9nT3B0aW9ucyxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbixcbiAgICAgIHN0YWdlLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGZyYW1ld29ya3MsXG4gICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICAgIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEuRERfRU5WX0RFTllfTElTVCxcbiAgICAgICAgcHJvcHMuY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBFbnZpcm9ubWVudCAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICAgICksXG4gICAgKTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX1RBR19ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBUYWcgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihuZXcgQ2x1c3RlclZwY1ZhbGlkYXRvcihwcm9wcy52cGMsIHByb3BzLmNsdXN0ZXIpKTtcblxuICAgIGNvbnN0IGZhcmdhdGVDbHVzdGVyID1cbiAgICAgIGNsdXN0ZXIgPz9cbiAgICAgIG5ldyBlY3MuQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgICAgdnBjOiB2cGMsXG4gICAgICB9KTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ1Rhc2tEZWZpbml0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgY3B1OiBmYXJnYXRlT3B0aW9ucy5jcHUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQixcbiAgICAgICAgcnVudGltZVBsYXRmb3JtOiB7XG4gICAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOlxuICAgICAgICAgICAgZmFyZ2F0ZU9wdGlvbnMucnVudGltZVBsYXRmb3JtPy5jcHVBcmNoaXRlY3R1cmUgPz9cbiAgICAgICAgICAgIGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbUZhbWlseTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8ub3BlcmF0aW5nU3lzdGVtRmFtaWx5ID8/XG4gICAgICAgICAgICBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnQWNjb3VudE5hbWUnLFxuICAgICAgJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1OYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbU5hbWUnLFxuICAgICAgJy9jb25maWcvdGVhbS9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbUlkZW50aWZpZXInLFxuICAgICAgJy9jb25maWcvdGVhbS9pZGVudGlmaWVyJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NlY3JldCA9IERhdGFkb2dTaGFyZWRTZWNyZXQuY3JlZGVudGlhbHNTZWNyZXQodGhpcyk7XG4gICAgY29uc3QgZGF0YWRvZ1NpdGUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldFZhbHVlKCdTaXRlJykudG9TdHJpbmcoKTtcbiAgICBjb25zdCBkYXRhZG9nQXBpS2V5ID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXQoJ0FwaUtleScpO1xuICAgIGRhdGFkb2dTZWNyZXQuZ3JhbnRSZWFkKHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJDcHUgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmNwdSA/PyB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVTtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubWVtb3J5TGltaXRNaUIgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQjtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuXG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvclNlcnZpY2UgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0U7XG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID8/XG4gICAgICB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVI7XG4gICAgY29uc3QgZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCA9XG4gICAgICBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TIHx8XG4gICAgICBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM7XG5cbiAgICBsZXQgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzO1xuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUI7XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHUgLSB0aGlzLkxPR19ST1VURVJfQ1BVO1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLVxuICAgICAgICBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiAtXG4gICAgICAgIHRoaXMuTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCO1xuICAgICAgZGF0YWRvZy5hZGRGaXJlbGVuc0NvbmZpZ1VwbG9hZEZyb21TM1Blcm1pc3Npb25zKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmltYWdlLFxuICAgICAgICBjcHU6IHNlcnZpY2VDb250YWluZXJDcHVVbml0cyxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7XG4gICAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICAgIHN0YWdlLFxuICAgICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgICB9LFxuICAgICAgICBkb2NrZXJMYWJlbHM6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWx0aENoZWNrOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmhlYWx0aENoZWNrLFxuICAgICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBkYXRhZG9nQXBpS2V5LFxuICAgICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VjcmV0czogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5zZWNyZXRzLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGZyYW1ld29ya3M/LmluY2x1ZGVzKEZyYW1ld29yay5TUFJJTkcpKSB7XG4gICAgICBTcHJpbmcuYWxsb3dQYXJhbWV0ZXJTdG9yZUFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgICBTcHJpbmcuYWxsb3dTZWNyZXRzTWFuYWdlckFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiB0aGlzLkxPR19ST1VURVJfQ1BVLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIsXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19GSUxFX1BBVEgsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRGF0YWRvZ1NpZGVjYXIoe1xuICAgICAgc2NvcGUsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIHN0YWdlLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGF0YWRvZ0FwaUtleSxcbiAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCxcbiAgICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlOlxuICAgICAgICBkYXRhZG9nT3B0aW9ucz8uYXBtR2V0RW5kcG9pbnRzVG9JZ25vcmUgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRSxcbiAgICAgIGNwdTogZGF0YWRvZ1NpZGVjYXJDcHUsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIsXG4gICAgICBlc3NlbnRpYWw6IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsLFxuICAgICAgZW5hYmxlUmVzdGFydFBvbGljeTogdHJ1ZSxcbiAgICAgIHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzOiBbMF0sXG4gICAgICBjb250YWluZXJUYWc6XG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhclRhZyA/P1xuICAgICAgICB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRywgLy8gVGhlc2UgYXJlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG5cbiAgICBkYXRhZG9nLmVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHRoaXMpO1xuXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyT3B0aW9uc0ZvckZhcmdhdGVTZXJ2aWNlID0gbG9hZEJhbGFuY2VyT3B0aW9uc1xuICAgICAgPyB7IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCB9XG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5zZXJ2aWNlID0gbmV3IGVjcy5GYXJnYXRlU2VydmljZSh0aGlzLCAnU2VydmljZScsIHtcbiAgICAgIGNsdXN0ZXI6IGZhcmdhdGVDbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBtYXhIZWFsdGh5UGVyY2VudDogMjAwLFxuICAgICAgbWluSGVhbHRoeVBlcmNlbnQ6IDEwMCxcbiAgICAgIGRlc2lyZWRDb3VudDogZmFyZ2F0ZU9wdGlvbnM/LmRlc2lyZWRDb3VudCxcbiAgICAgIGRlcGxveW1lbnRDb250cm9sbGVyOiB7IHR5cGU6IGVjcy5EZXBsb3ltZW50Q29udHJvbGxlclR5cGUuQ09ERV9ERVBMT1kgfSxcbiAgICAgIC4uLmxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSxcbiAgICAgIHByb3BhZ2F0ZVRhZ3M6IGVjcy5Qcm9wYWdhdGVkVGFnU291cmNlLlNFUlZJQ0UsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5zZXJ2aWNlLmNvbm5lY3Rpb25zO1xuXG4gICAgaWYgKGxvYWRCYWxhbmNlck9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGFpbmVyUG9ydCA9IDQ0MztcbiAgICAgIHRoaXMuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgY29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5UQ1AsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYmx1ZVRhcmdldEdyb3VwID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdCbHVlVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ3JlZW5UYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnR3JlZW5UYXJnZXRHcm91cCcsXG4gICAgICAgIHtcbiAgICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgICBwb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTLFxuICAgICAgICAgIHRhcmdldFR5cGU6IGVsYnYyLlRhcmdldFR5cGUuSVAsXG4gICAgICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICAgICAgaGVhbHRoQ2hlY2s6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2ssXG4gICAgICAgICAgc2xvd1N0YXJ0OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uc2xvd1N0YXJ0ID8/IHRoaXMuREVGQVVMVF9TTE9XX1NUQVJULFxuICAgICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5kZXJlZ2lzdHJhdGlvbkRlbGF5ID8/XG4gICAgICAgICAgICB0aGlzLkRFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyUnVsZXMuZm9yRWFjaCgoeyBwcmlvcml0eSwgY29uZGl0aW9ucyB9KSA9PiB7XG4gICAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXIuYWRkVGFyZ2V0R3JvdXBzKGBQcmlvcml0eSR7cHJpb3JpdHl9TGlzdGVuZXJSdWxlYCwge1xuICAgICAgICAgIHRhcmdldEdyb3VwczogW3RoaXMuYmx1ZVRhcmdldEdyb3VwIGFzIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBdLFxuICAgICAgICAgIHByaW9yaXR5OiBwcmlvcml0eSxcbiAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LnRlc3RMaXN0ZW5lcikge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyUnVsZXMuZm9yRWFjaCgoeyBwcmlvcml0eSwgY29uZGl0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy50ZXN0TGlzdGVuZXI/LmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICAgIHRhcmdldEdyb3VwczogW3RoaXMuZ3JlZW5UYXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICAgIHByaW9yaXR5OiBwcmlvcml0eSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IGNvbmRpdGlvbnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlY3NEZXBsb3ltZW50R3JvdXAgPSBuZXcgY29kZWRlcGxveS5FY3NEZXBsb3ltZW50R3JvdXAodGhpcywgJ0RlcGxveW1lbnRHcm91cCcsIHtcbiAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxuICAgICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnOiB7XG4gICAgICAgICAgYmx1ZVRhcmdldEdyb3VwOiB0aGlzLmJsdWVUYXJnZXRHcm91cCxcbiAgICAgICAgICBncmVlblRhcmdldEdyb3VwOiB0aGlzLmdyZWVuVGFyZ2V0R3JvdXAsXG4gICAgICAgICAgbGlzdGVuZXI6IGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXIsXG4gICAgICAgICAgdGVzdExpc3RlbmVyOiBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy50ZXN0TGlzdGVuZXIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlcGxveW1lbnRDb25maWc6XG4gICAgICAgICAgY29kZWRlcGxveS5FY3NEZXBsb3ltZW50Q29uZmlnLkNBTkFSWV8xMFBFUkNFTlRfNU1JTlVURVMsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY3JlYXRlRGVwbG95bWVudExhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ0NyZWF0ZURlcGxveW1lbnRMYW1iZGEnLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpLCB7XG4gICAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgICB9KSxcbiAgICAgICAgaGFuZGxlcjogJ2NyZWF0ZS1kZXBsb3ltZW50LW9uLWNyZWF0ZS5oYW5kbGVyJyxcbiAgICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0NyZWF0ZURlcGxveW1lbnRMYW1iZGFMb2dHcm91cCcsIHtcbiAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICAgIGNyZWF0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldEFwcGxpY2F0aW9uUmV2aXNpb24nLFxuICAgICAgICAgICdjb2RlZGVwbG95OlJlZ2lzdGVyQXBwbGljYXRpb25SZXZpc2lvbicsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbkFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNyZWF0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkNyZWF0ZURlcGxveW1lbnQnLFxuICAgICAgICAgICdjb2RlZGVwbG95OlN0b3BEZXBsb3ltZW50JyxcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cEFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNyZWF0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnRDb25maWcnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudENvbmZpZy5kZXBsb3ltZW50Q29uZmlnQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuXG4gICAgICBjb25zdCBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ0lzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsICdjb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMnKSwge1xuICAgICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgICAgfSksXG4gICAgICAgIGhhbmRsZXI6ICdjcmVhdGUtZGVwbG95bWVudC1pcy1jb21wbGV0ZS5oYW5kbGVyJyxcbiAgICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0lzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhTG9nR3JvdXAnLCB7XG4gICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgICBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudCcsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjb25zdCBjcmVhdGVEZXBsb3ltZW50TGFtYmRhUHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ0NyZWF0ZURlcGxveW1lbnRQcm92aWRlcicsIHtcbiAgICAgICAgb25FdmVudEhhbmRsZXI6IGNyZWF0ZURlcGxveW1lbnRMYW1iZGEsXG4gICAgICAgIGlzQ29tcGxldGVIYW5kbGVyOiBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYSxcbiAgICAgICAgdG90YWxUaW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICB9KTtcbiAgICAgIGxldCBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhOiBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8uY2FwYWJpbGl0eU5hbWVzKSB7XG4gICAgICAgIC8vIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEgPSBuZXcgbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdSdW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhJywge1xuICAgICAgICAvLyAgIGVudHJ5OiAnLi9zcmMvZmFyZ2F0ZS9jb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMvcnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIudHMnLFxuICAgICAgICAvLyAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgICAgLy8gICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgLy8gICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgLy8gICBlbnZpcm9ubWVudDoge1xuICAgICAgICAvLyAgICAgQ0FQQUJJTElUSUVTX05BTUU6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcuY2FwYWJpbGl0eU5hbWVzLmpvaW4oJywnKSxcbiAgICAgICAgLy8gICAgIFNVQk5FVFM6IHZwYy5zZWxlY3RTdWJuZXRzKHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9KS5zdWJuZXRJZHMuam9pbignLCcpLFxuICAgICAgICAvLyAgIH0sXG4gICAgICAgIC8vIH0pO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYScsIHtcbiAgICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsICdjb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMnKSwge1xuICAgICAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGhhbmRsZXI6ICdydW4tbW9uaXRvcmluZy10ZXN0LXN1aXRlLXJ1bm5lci5oYW5kbGVyJyxcbiAgICAgICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYXJMb2dHcm91cCcsIHtcbiAgICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICBDQVBBQklMSVRJRVNfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy5jYXBhYmlsaXR5TmFtZXMuam9pbignLCcpLFxuICAgICAgICAgICAgU1VCTkVUUzogdnBjLnNlbGVjdFN1Ym5ldHMoeyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0pLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkucmVnaW9uO1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5hY2NvdW50O1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjczpSdW5UYXNrJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6ZWNzOiR7cmVnaW9ufToke2FjY291bnR9OnRhc2stZGVmaW5pdGlvbi9tb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXIqYCxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWNzOkxpc3RDTHVzdGVycycsXG4gICAgICAgICAgICAnZWNzOkxpc3RUYXNrRGVmaW5pdGlvbnMnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAnKicsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydpYW06UGFzc1JvbGUnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czppYW06OiR7YWNjb3VudH06cm9sZS9tb25pdG9yaW5nLXRlc3RzdWl0ZSpgXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50Jywge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBBcHBsaWNhdGlvbk5hbWU6IGVjc0RlcGxveW1lbnRHcm91cC5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbk5hbWUsXG4gICAgICAgICAgRGVwbG95bWVudEdyb3VwTmFtZTogZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cE5hbWUsXG4gICAgICAgICAgVGFza0RlZmluaXRpb25Bcm46IHRoaXMudGFza0RlZmluaXRpb24udGFza0RlZmluaXRpb25Bcm4sXG4gICAgICAgICAgQ29udGFpbmVyTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgICAgQ29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBBZnRlckFsbG93VGVzdFRyYWZmaWNIb29rOiBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhPy5mdW5jdGlvbkFybixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZW55TGlzdDogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZUdlbmVyYXRvcjogKGtleU5hbWU6IHN0cmluZykgPT4gc3RyaW5nLFxuICApIHt9XG5cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5kaWN0KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuZGVueUxpc3QuZm9yRWFjaCgoa2V5TmFtZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGljdCAmJiBrZXlOYW1lIGluIHRoaXMuZGljdCkge1xuICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1lc3NhZ2VHZW5lcmF0b3Ioa2V5TmFtZSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jbGFzcyBDbHVzdGVyVnBjVmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXIsXG4gICkge31cblxuICB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKHRoaXMuY2x1c3RlciAmJiB0aGlzLmNsdXN0ZXIudnBjLnZwY0lkICE9PSB0aGlzLnZwYy52cGNJZCkge1xuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIGBUaGUgVlBDIHByb3ZpZGVkIGluIHRoZSBjbHVzdGVyICgke3RoaXMuY2x1c3Rlci52cGMubm9kZS5pZH0pIE1VU1QgbWF0Y2ggdGhlIFZQQyBwcm92aWRlZCBhcyBhcmd1bWVudCAoJHt0aGlzLnZwYy5ub2RlLmlkfSkuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZS1ibHVlLWdyZWVuLWFscGhhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLG1DQUFtQztBQUNuQyx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLCtEQUE0SztBQUM1SyxxQ0FBa0M7QUFDbEMsNENBQW9EO0FBQ3BELDRDQUFtRDtBQWdGbkQsTUFBYSwrQkFDWCxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBa0Q1QixZQUNFLEtBQTJCLEVBQzNCLEVBQVUsRUFDVixLQUEyQztRQUUzQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBbENGLHdDQUFtQyxHQUFhLEVBQUUsQ0FBQztRQUNuRCxnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsNkNBQXdDLEdBQUcsR0FBRyxDQUFDO1FBQy9DLHNDQUFpQyxHQUFHLElBQUksQ0FBQztRQUN6QyxxQ0FBZ0MsR0FDL0Msd0NBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDckIsNkNBQXdDLEdBQ3ZELHdDQUFrQixDQUFDLElBQUksQ0FBQztRQUNULGlDQUE0QixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELHVCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUMvQixnQ0FBMkIsR0FBRyxRQUFRLENBQUM7UUFFdkMsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBRWpDLCtCQUEwQixH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Q0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUQsTUFBTSxDQUFDLElBQUksQ0FDVCxvQ0FBb0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsOENBQThDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUMvSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb2RlZGVwbG95IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlZGVwbG95JztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIG5vZGVqc2xhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGRhdGFkb2cgZnJvbSAnLi9kYXRhZG9nJztcbmltcG9ydCB7IEZyYW1ld29yaywgQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMsIEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzLCBMb2FkQmFsYW5jZXJPcHRpb25zLCBEYXRhZG9nSW50ZWdyYXRpb25Qcm9wcywgRGF0YURvZ0xvZ2dpbmdNb2RlIH0gZnJvbSAnLi9yaW8tZmFyZ2F0ZS1zZXJ2aWNlJztcbmltcG9ydCB7IFNwcmluZyB9IGZyb20gJy4vc3ByaW5nJztcbmltcG9ydCB7IERFRkFVTFRfTk9ERV9SVU5USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERhdGFkb2dTaGFyZWRTZWNyZXQgfSBmcm9tICcuLi9kYXRhZG9ndjInO1xuXG4vKipcbiAqIEZhcmdhdGUgVGFzayBEZWZpbml0aW9uIFByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmlvRmFyZ2F0ZVNlcnZpY2VCbHVlR3JlZW5BbHBoYVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBmcmFtZXdvcmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJhbWV3b3Jrcz86IEZyYW1ld29ya1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZXJ2aWNlJ3MgZWNzLkNsdXN0ZXIgaWYgbm8gY2x1c3RlciBpcyBleHBsaWNpdGx5IHBhc3NlZCBhcyBwcm9wLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIEZhcmdhdGUgY2x1c3RlciB0byBydW4gdGhlIHNlcnZpY2UgaW4uXG4gICAqIElmIG5vdCBudWxsLCB0aGUgY2x1c3Rlci52cGMgTVVTVCBtYXRjaCB0aGUgdnBjIHByb3ZpZGVkIGFzIGRpcmVjdCBhcmd1bWVudC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIENyZWF0ZSBhIG5ldyBGYXJnYXRlIGNsdXN0ZXIgd2l0aCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXI7XG5cbiAgLyoqXG4gICAqIENvbnRhaW5lciBkZWZpbml0aW9uIG9wdGlvbnMgbGlrZSBpbWFnZSwgY3B1LCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uOiBDb250YWluZXJEZWZpbml0aW9uT3B0aW9ucztcblxuICAvKipcbiAgICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IGZhcmdhdGVPcHRpb25zOiBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcztcblxuICAvKipcbiAgICogTG9hZGJhbGFuY2VyIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJPcHRpb25zPzogTG9hZEJhbGFuY2VyT3B0aW9ucztcblxuICAvKipcbiAgICogRGF0YWRvZyBpbnRlZ3JhdGlvbiBwcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nT3B0aW9ucz86IERhdGFkb2dJbnRlZ3JhdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBCbHVlIGdyZWVuIGRlcGxveW1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz86IEJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZyB7XG4gIC8qKlxuICAgICAqIFRoZSB0YXJnZXQgZ3JvdXAgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGZvciB0ZXN0aW5nIGJlZm9yZSBwcm9tb3RpbmcgdHJhZmZpYyB0byBwcm9kdWN0aW9uLlxuICAgICAqIEBkZWZhdWx0IC0gTm8gdGFyZ2V0IGdyb3VwLlxuICAgICAqL1xuICByZWFkb25seSB0ZXN0TGlzdGVuZXI/OiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjYXBhYmlsaXRpZXMgdG8gcnVuIHdpdGggdGhlIG1vbml0b3JpbmcgdGVzdCBzdWl0ZSBydW5uZXIgdGVzdGluZ1xuICAgICAqL1xuICByZWFkb25seSBjYXBhYmlsaXR5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFcbiAgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdFxuICBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9FTlZfREVOWV9MSVNUID0gW1xuICAgICdERF9FTlYnLFxuICAgICdERF9UQUdTJyxcbiAgICAnRERfU0VSVklDRScsXG4gICAgJ0REX1ZFUlNJT04nLFxuICAgICdERF9MT0dTX0lOSkVDVElPTicsXG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfVEFHX0RFTllfTElTVCA9IFtcbiAgICAnZW52JyxcbiAgICAnc2VydmljZScsXG4gICAgJ3ZlcnNpb24nLFxuICAgICdhY2NvdW50X2lkJyxcbiAgICAnYWNjb3VudF9uYW1lJyxcbiAgICAncmVnaW9uJyxcbiAgICAndGVhbScsXG4gICAgJ3RlYW1faWRlbnRpZmllcicsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRTogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCID0gMTI4O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0VTU0VOVElBTCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0UgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPVxuICAgIERhdGFEb2dMb2dnaW5nTW9kZS5OT05FO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVkgPSBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1NMT1dfU1RBUlQgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHID0gJ2xhdGVzdCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IExPR19ST1VURVJfTUVNT1JZX0xJTUlUX01JQiA9IDY0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0JVQ0tFVF9BUk4gPVxuICAgICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSBibHVlVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGdyZWVuVGFyZ2V0R3JvdXA6IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGFQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMsXG4gICAgICB2cGMsXG4gICAgICBjbHVzdGVyLFxuICAgICAgZmFyZ2F0ZU9wdGlvbnMsXG4gICAgICBkYXRhZG9nT3B0aW9ucyxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbixcbiAgICAgIHN0YWdlLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGZyYW1ld29ya3MsXG4gICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKFxuICAgICAgbmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICAgIFJpb0ZhcmdhdGVTZXJ2aWNlQmx1ZUdyZWVuQWxwaGEuRERfRU5WX0RFTllfTElTVCxcbiAgICAgICAgcHJvcHMuY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBFbnZpcm9ubWVudCAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICAgICksXG4gICAgKTtcbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihcbiAgICAgIG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgICBSaW9GYXJnYXRlU2VydmljZUJsdWVHcmVlbkFscGhhLkREX1RBR19ERU5ZX0xJU1QsXG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgKGl0KSA9PlxuICAgICAgICAgIGBUYWcgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgICApLFxuICAgICk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbihuZXcgQ2x1c3RlclZwY1ZhbGlkYXRvcihwcm9wcy52cGMsIHByb3BzLmNsdXN0ZXIpKTtcblxuICAgIGNvbnN0IGZhcmdhdGVDbHVzdGVyID1cbiAgICAgIGNsdXN0ZXIgPz9cbiAgICAgIG5ldyBlY3MuQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgICAgdnBjOiB2cGMsXG4gICAgICB9KTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ1Rhc2tEZWZpbml0aW9uJyxcbiAgICAgIHtcbiAgICAgICAgY3B1OiBmYXJnYXRlT3B0aW9ucy5jcHUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQixcbiAgICAgICAgcnVudGltZVBsYXRmb3JtOiB7XG4gICAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOlxuICAgICAgICAgICAgZmFyZ2F0ZU9wdGlvbnMucnVudGltZVBsYXRmb3JtPy5jcHVBcmNoaXRlY3R1cmUgPz9cbiAgICAgICAgICAgIGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICAgIG9wZXJhdGluZ1N5c3RlbUZhbWlseTpcbiAgICAgICAgICAgIGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8ub3BlcmF0aW5nU3lzdGVtRmFtaWx5ID8/XG4gICAgICAgICAgICBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnQWNjb3VudE5hbWUnLFxuICAgICAgJy9jb25maWcvYWNjb3VudC9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1OYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbU5hbWUnLFxuICAgICAgJy9jb25maWcvdGVhbS9uYW1lJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICAnVGVhbUlkZW50aWZpZXInLFxuICAgICAgJy9jb25maWcvdGVhbS9pZGVudGlmaWVyJyxcbiAgICApLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NlY3JldCA9IERhdGFkb2dTaGFyZWRTZWNyZXQuY3JlZGVudGlhbHNTZWNyZXQodGhpcyk7XG4gICAgY29uc3QgZGF0YWRvZ1NpdGUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldFZhbHVlKCdTaXRlJykudG9TdHJpbmcoKTtcbiAgICBjb25zdCBkYXRhZG9nQXBpS2V5ID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXQoJ0FwaUtleScpO1xuICAgIGRhdGFkb2dTZWNyZXQuZ3JhbnRSZWFkKHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJDcHUgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmNwdSA/PyB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVTtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8ubWVtb3J5TGltaXRNaUIgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQjtcbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCA9XG4gICAgICBkYXRhZG9nT3B0aW9ucz8uZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuXG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID1cbiAgICAgIGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvclNlcnZpY2UgPz9cbiAgICAgIHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX1NFUlZJQ0U7XG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPVxuICAgICAgZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID8/XG4gICAgICB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVI7XG4gICAgY29uc3QgZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCA9XG4gICAgICBsb2dnaW5nTW9kZUZvclNlcnZpY2UgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TIHx8XG4gICAgICBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM7XG5cbiAgICBsZXQgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzO1xuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUI7XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHUgLSB0aGlzLkxPR19ST1VURVJfQ1BVO1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLVxuICAgICAgICBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQiAtXG4gICAgICAgIHRoaXMuTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCO1xuICAgICAgZGF0YWRvZy5hZGRGaXJlbGVuc0NvbmZpZ1VwbG9hZEZyb21TM1Blcm1pc3Npb25zKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID1cbiAgICAgICAgZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB7XG4gICAgICAgIGltYWdlOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmltYWdlLFxuICAgICAgICBjcHU6IHNlcnZpY2VDb250YWluZXJDcHVVbml0cyxcbiAgICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyh7XG4gICAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICAgIHN0YWdlLFxuICAgICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgICB0ZWFtTmFtZSxcbiAgICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgICB9LFxuICAgICAgICBkb2NrZXJMYWJlbHM6IHtcbiAgICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWx0aENoZWNrOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmhlYWx0aENoZWNrLFxuICAgICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICAgICAgc3RhZ2UsXG4gICAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbixcbiAgICAgICAgICBkYXRhZG9nQXBpS2V5LFxuICAgICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgICB9KSxcbiAgICAgICAgc2VjcmV0czogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5zZWNyZXRzLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKGZyYW1ld29ya3M/LmluY2x1ZGVzKEZyYW1ld29yay5TUFJJTkcpKSB7XG4gICAgICBTcHJpbmcuYWxsb3dQYXJhbWV0ZXJTdG9yZUFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgICBTcHJpbmcuYWxsb3dTZWNyZXRzTWFuYWdlckFjY2Vzc0ZvclNwcmluZ0Nsb3VkQXdzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiB0aGlzLkxPR19ST1VURVJfQ1BVLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIsXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19GSUxFX1BBVEgsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRGF0YWRvZ1NpZGVjYXIoe1xuICAgICAgc2NvcGUsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIHN0YWdlLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGF0YWRvZ0FwaUtleSxcbiAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCxcbiAgICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlOlxuICAgICAgICBkYXRhZG9nT3B0aW9ucz8uYXBtR2V0RW5kcG9pbnRzVG9JZ25vcmUgPz9cbiAgICAgICAgdGhpcy5ERUZBVUxUX0FQTV9HRVRfRU5EUE9JTlRTX1RPX0lHTk9SRSxcbiAgICAgIGNwdTogZGF0YWRvZ1NpZGVjYXJDcHUsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIsXG4gICAgICBlc3NlbnRpYWw6IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsLFxuICAgICAgZW5hYmxlUmVzdGFydFBvbGljeTogdHJ1ZSxcbiAgICAgIHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzOiBbMF0sXG4gICAgICBjb250YWluZXJUYWc6XG4gICAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhclRhZyA/P1xuICAgICAgICB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRywgLy8gVGhlc2UgYXJlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy50YXNrRGVmaW5pdGlvbi5leGVjdXRpb25Sb2xlKSB7XG4gICAgICBkYXRhZG9nU2VjcmV0LmdyYW50UmVhZCh0aGlzLnRhc2tEZWZpbml0aW9uLmV4ZWN1dGlvblJvbGUpO1xuICAgIH1cbiAgICBkYXRhZG9nLmVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHRoaXMpO1xuXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyT3B0aW9uc0ZvckZhcmdhdGVTZXJ2aWNlID0gbG9hZEJhbGFuY2VyT3B0aW9uc1xuICAgICAgPyB7IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCB9XG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5zZXJ2aWNlID0gbmV3IGVjcy5GYXJnYXRlU2VydmljZSh0aGlzLCAnU2VydmljZScsIHtcbiAgICAgIGNsdXN0ZXI6IGZhcmdhdGVDbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBtYXhIZWFsdGh5UGVyY2VudDogMjAwLFxuICAgICAgbWluSGVhbHRoeVBlcmNlbnQ6IDEwMCxcbiAgICAgIGRlc2lyZWRDb3VudDogZmFyZ2F0ZU9wdGlvbnM/LmRlc2lyZWRDb3VudCxcbiAgICAgIGRlcGxveW1lbnRDb250cm9sbGVyOiB7IHR5cGU6IGVjcy5EZXBsb3ltZW50Q29udHJvbGxlclR5cGUuQ09ERV9ERVBMT1kgfSxcbiAgICAgIC4uLmxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSxcbiAgICAgIHByb3BhZ2F0ZVRhZ3M6IGVjcy5Qcm9wYWdhdGVkVGFnU291cmNlLlNFUlZJQ0UsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5zZXJ2aWNlLmNvbm5lY3Rpb25zO1xuXG4gICAgaWYgKGxvYWRCYWxhbmNlck9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGFpbmVyUG9ydCA9IDQ0MztcbiAgICAgIHRoaXMuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgY29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5UQ1AsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYmx1ZVRhcmdldEdyb3VwID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdCbHVlVGFyZ2V0R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB2cGMsXG4gICAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgICB0YXJnZXRUeXBlOiBlbGJ2Mi5UYXJnZXRUeXBlLklQLFxuICAgICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICAgIHNsb3dTdGFydDpcbiAgICAgICAgICAgIHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgICBkZXJlZ2lzdHJhdGlvbkRlbGF5OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/P1xuICAgICAgICAgICAgdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ3JlZW5UYXJnZXRHcm91cCA9IG5ldyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnR3JlZW5UYXJnZXRHcm91cCcsXG4gICAgICAgIHtcbiAgICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgICBwb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFBTLFxuICAgICAgICAgIHRhcmdldFR5cGU6IGVsYnYyLlRhcmdldFR5cGUuSVAsXG4gICAgICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICAgICAgaGVhbHRoQ2hlY2s6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2ssXG4gICAgICAgICAgc2xvd1N0YXJ0OlxuICAgICAgICAgICAgcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uc2xvd1N0YXJ0ID8/IHRoaXMuREVGQVVMVF9TTE9XX1NUQVJULFxuICAgICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6XG4gICAgICAgICAgICBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5kZXJlZ2lzdHJhdGlvbkRlbGF5ID8/XG4gICAgICAgICAgICB0aGlzLkRFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVksXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyUnVsZXMuZm9yRWFjaCgoeyBwcmlvcml0eSwgY29uZGl0aW9ucyB9KSA9PiB7XG4gICAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXIuYWRkVGFyZ2V0R3JvdXBzKGBQcmlvcml0eSR7cHJpb3JpdHl9TGlzdGVuZXJSdWxlYCwge1xuICAgICAgICAgIHRhcmdldEdyb3VwczogW3RoaXMuYmx1ZVRhcmdldEdyb3VwIGFzIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBdLFxuICAgICAgICAgIHByaW9yaXR5OiBwcmlvcml0eSxcbiAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWc/LnRlc3RMaXN0ZW5lcikge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyUnVsZXMuZm9yRWFjaCgoeyBwcmlvcml0eSwgY29uZGl0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy50ZXN0TGlzdGVuZXI/LmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICAgIHRhcmdldEdyb3VwczogW3RoaXMuZ3JlZW5UYXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICAgIHByaW9yaXR5OiBwcmlvcml0eSxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IGNvbmRpdGlvbnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlY3NEZXBsb3ltZW50R3JvdXAgPSBuZXcgY29kZWRlcGxveS5FY3NEZXBsb3ltZW50R3JvdXAodGhpcywgJ0RlcGxveW1lbnRHcm91cCcsIHtcbiAgICAgICAgc2VydmljZTogdGhpcy5zZXJ2aWNlLFxuICAgICAgICBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnOiB7XG4gICAgICAgICAgYmx1ZVRhcmdldEdyb3VwOiB0aGlzLmJsdWVUYXJnZXRHcm91cCxcbiAgICAgICAgICBncmVlblRhcmdldEdyb3VwOiB0aGlzLmdyZWVuVGFyZ2V0R3JvdXAsXG4gICAgICAgICAgbGlzdGVuZXI6IGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXIsXG4gICAgICAgICAgdGVzdExpc3RlbmVyOiBibHVlR3JlZW5EZXBsb3ltZW50Q29uZmlnPy50ZXN0TGlzdGVuZXIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlcGxveW1lbnRDb25maWc6XG4gICAgICAgICAgY29kZWRlcGxveS5FY3NEZXBsb3ltZW50Q29uZmlnLkNBTkFSWV8xMFBFUkNFTlRfNU1JTlVURVMsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY3JlYXRlRGVwbG95bWVudExhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ0NyZWF0ZURlcGxveW1lbnRMYW1iZGEnLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2NvZGVkZXBsb3ktY3VzdG9tLXJlc291cmNlcycpLCB7XG4gICAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgICB9KSxcbiAgICAgICAgaGFuZGxlcjogJ2NyZWF0ZS1kZXBsb3ltZW50LW9uLWNyZWF0ZS5oYW5kbGVyJyxcbiAgICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0NyZWF0ZURlcGxveW1lbnRMYW1iZGFMb2dHcm91cCcsIHtcbiAgICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICAgIGNyZWF0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldEFwcGxpY2F0aW9uUmV2aXNpb24nLFxuICAgICAgICAgICdjb2RlZGVwbG95OlJlZ2lzdGVyQXBwbGljYXRpb25SZXZpc2lvbicsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbkFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNyZWF0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkNyZWF0ZURlcGxveW1lbnQnLFxuICAgICAgICAgICdjb2RlZGVwbG95OlN0b3BEZXBsb3ltZW50JyxcbiAgICAgICAgICAnY29kZWRlcGxveTpHZXREZXBsb3ltZW50JyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cEFybixcbiAgICAgICAgXSxcbiAgICAgIH0pKTtcbiAgICAgIGNyZWF0ZURlcGxveW1lbnRMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlZGVwbG95OkdldERlcGxveW1lbnRDb25maWcnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBlY3NEZXBsb3ltZW50R3JvdXAuZGVwbG95bWVudENvbmZpZy5kZXBsb3ltZW50Q29uZmlnQXJuLFxuICAgICAgICBdLFxuICAgICAgfSkpO1xuXG4gICAgICBjb25zdCBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgJ0lzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhJywge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsICdjb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMnKSwge1xuICAgICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgICAgfSksXG4gICAgICAgIGhhbmRsZXI6ICdjcmVhdGUtZGVwbG95bWVudC1pcy1jb21wbGV0ZS5oYW5kbGVyJyxcbiAgICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBsb2dHcm91cDogbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0lzQ29tcGxldGVEZXBsb3ltZW50TGFtYmRhTG9nR3JvdXAnLCB7XG4gICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgICBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVkZXBsb3k6R2V0RGVwbG95bWVudCcsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGVjc0RlcGxveW1lbnRHcm91cC5kZXBsb3ltZW50R3JvdXBBcm4sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgICBjb25zdCBjcmVhdGVEZXBsb3ltZW50TGFtYmRhUHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ0NyZWF0ZURlcGxveW1lbnRQcm92aWRlcicsIHtcbiAgICAgICAgb25FdmVudEhhbmRsZXI6IGNyZWF0ZURlcGxveW1lbnRMYW1iZGEsXG4gICAgICAgIGlzQ29tcGxldGVIYW5kbGVyOiBpc0NvbXBsZXRlRGVwbG95bWVudExhbWJkYSxcbiAgICAgICAgdG90YWxUaW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICB9KTtcbiAgICAgIGxldCBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhOiBub2RlanNsYW1iZGEuTm9kZWpzRnVuY3Rpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZz8uY2FwYWJpbGl0eU5hbWVzKSB7XG4gICAgICAgIC8vIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEgPSBuZXcgbm9kZWpzbGFtYmRhLk5vZGVqc0Z1bmN0aW9uKHRoaXMsICdSdW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhJywge1xuICAgICAgICAvLyAgIGVudHJ5OiAnLi9zcmMvZmFyZ2F0ZS9jb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMvcnVuLW1vbml0b3JpbmctdGVzdC1zdWl0ZS1ydW5uZXIudHMnLFxuICAgICAgICAvLyAgIGhhbmRsZXI6ICdoYW5kbGVyJyxcbiAgICAgICAgLy8gICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgLy8gICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgLy8gICBlbnZpcm9ubWVudDoge1xuICAgICAgICAvLyAgICAgQ0FQQUJJTElUSUVTX05BTUU6IGJsdWVHcmVlbkRlcGxveW1lbnRDb25maWcuY2FwYWJpbGl0eU5hbWVzLmpvaW4oJywnKSxcbiAgICAgICAgLy8gICAgIFNVQk5FVFM6IHZwYy5zZWxlY3RTdWJuZXRzKHsgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB9KS5zdWJuZXRJZHMuam9pbignLCcpLFxuICAgICAgICAvLyAgIH0sXG4gICAgICAgIC8vIH0pO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYScsIHtcbiAgICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsICdjb2RlZGVwbG95LWN1c3RvbS1yZXNvdXJjZXMnKSwge1xuICAgICAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGhhbmRsZXI6ICdydW4tbW9uaXRvcmluZy10ZXN0LXN1aXRlLXJ1bm5lci5oYW5kbGVyJyxcbiAgICAgICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnUnVuTW9uaXRvcmluZ1Rlc3RTdWl0ZVJ1bm5lckxhbWJkYXJMb2dHcm91cCcsIHtcbiAgICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICBDQVBBQklMSVRJRVNfTkFNRTogYmx1ZUdyZWVuRGVwbG95bWVudENvbmZpZy5jYXBhYmlsaXR5TmFtZXMuam9pbignLCcpLFxuICAgICAgICAgICAgU1VCTkVUUzogdnBjLnNlbGVjdFN1Ym5ldHMoeyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0pLnN1Ym5ldElkcy5qb2luKCcsJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkucmVnaW9uO1xuICAgICAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5hY2NvdW50O1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgJ2VjczpSdW5UYXNrJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6ZWNzOiR7cmVnaW9ufToke2FjY291bnR9OnRhc2stZGVmaW5pdGlvbi9tb25pdG9yaW5nLXRlc3RzdWl0ZS1ydW5uZXIqYCxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJ1bk1vbml0b3JpbmdUZXN0U3VpdGVSdW5uZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAnZWNzOkxpc3RDTHVzdGVycycsXG4gICAgICAgICAgICAnZWNzOkxpc3RUYXNrRGVmaW5pdGlvbnMnLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAnKicsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkpO1xuICAgICAgICBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhLmFkZFRvUm9sZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydpYW06UGFzc1JvbGUnXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czppYW06OiR7YWNjb3VudH06cm9sZS9tb25pdG9yaW5nLXRlc3RzdWl0ZSpgXSxcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdDcmVhdGVEZXBsb3ltZW50Jywge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IGNyZWF0ZURlcGxveW1lbnRMYW1iZGFQcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBBcHBsaWNhdGlvbk5hbWU6IGVjc0RlcGxveW1lbnRHcm91cC5hcHBsaWNhdGlvbi5hcHBsaWNhdGlvbk5hbWUsXG4gICAgICAgICAgRGVwbG95bWVudEdyb3VwTmFtZTogZWNzRGVwbG95bWVudEdyb3VwLmRlcGxveW1lbnRHcm91cE5hbWUsXG4gICAgICAgICAgVGFza0RlZmluaXRpb25Bcm46IHRoaXMudGFza0RlZmluaXRpb24udGFza0RlZmluaXRpb25Bcm4sXG4gICAgICAgICAgQ29udGFpbmVyTmFtZTogc2VydmljZU5hbWUsXG4gICAgICAgICAgQ29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgICBBZnRlckFsbG93VGVzdFRyYWZmaWNIb29rOiBydW5Nb25pdG9yaW5nVGVzdFN1aXRlUnVubmVyTGFtYmRhPy5mdW5jdGlvbkFybixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG59XG5cbmNsYXNzIERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZW55TGlzdDogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVzc2FnZUdlbmVyYXRvcjogKGtleU5hbWU6IHN0cmluZykgPT4gc3RyaW5nLFxuICApIHt9XG5cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5kaWN0KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuZGVueUxpc3QuZm9yRWFjaCgoa2V5TmFtZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGljdCAmJiBrZXlOYW1lIGluIHRoaXMuZGljdCkge1xuICAgICAgICByZXN1bHQucHVzaCh0aGlzLm1lc3NhZ2VHZW5lcmF0b3Ioa2V5TmFtZSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jbGFzcyBDbHVzdGVyVnBjVmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsdXN0ZXI/OiBlY3MuSUNsdXN0ZXIsXG4gICkge31cblxuICB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKHRoaXMuY2x1c3RlciAmJiB0aGlzLmNsdXN0ZXIudnBjLnZwY0lkICE9PSB0aGlzLnZwYy52cGNJZCkge1xuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIGBUaGUgVlBDIHByb3ZpZGVkIGluIHRoZSBjbHVzdGVyICgke3RoaXMuY2x1c3Rlci52cGMubm9kZS5pZH0pIE1VU1QgbWF0Y2ggdGhlIFZQQyBwcm92aWRlZCBhcyBhcmd1bWVudCAoJHt0aGlzLnZwYy5ub2RlLmlkfSkuYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -174,6 +174,9 @@ class RioFargateService extends constructs.Construct {
|
|
|
174
174
|
});
|
|
175
175
|
this.taskDefinition.executionRole?.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonECSTaskExecutionRolePolicy'));
|
|
176
176
|
}
|
|
177
|
+
if (this.taskDefinition.executionRole) {
|
|
178
|
+
datadogSecret.grantRead(this.taskDefinition.executionRole);
|
|
179
|
+
}
|
|
177
180
|
this.datadogSideCarContainerDefinition = datadog.addDatadogSidecar({
|
|
178
181
|
scope,
|
|
179
182
|
taskDefinition: this.taskDefinition,
|
|
@@ -322,4 +325,4 @@ class FirelensSideCarValidator {
|
|
|
322
325
|
return result;
|
|
323
326
|
}
|
|
324
327
|
}
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL3Jpby1mYXJnYXRlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLHlDQUF5QztBQUN6QyxxQ0FBcUM7QUFDckMscUNBQWtDO0FBQ2xDLDRDQUErRTtBQThEL0UsSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25COztPQUVHO0lBQ0gsNkNBQU0sQ0FBQTtBQUNSLENBQUMsRUFMVyxTQUFTLHlCQUFULFNBQVMsUUFLcEI7QUFvUUQsSUFBWSxrQkEwQlg7QUExQkQsV0FBWSxrQkFBa0I7SUFDNUI7OztPQUdHO0lBQ0gsNkVBQWEsQ0FBQTtJQUViOzs7Ozs7T0FNRztJQUNILG1GQUFnQixDQUFBO0lBRWhCOzs7T0FHRztJQUNILG1HQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsMkRBQUksQ0FBQTtBQUNOLENBQUMsRUExQlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUEwQjdCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQWdEekQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBNUJGLHdDQUFtQyxHQUFhLEVBQUUsQ0FBQztRQUNuRCxnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsNkNBQXdDLEdBQUcsR0FBRyxDQUFDO1FBQy9DLHNDQUFpQyxHQUFHLElBQUksQ0FBQztRQUN6QywwQ0FBcUMsR0FBRyxJQUFJLENBQUM7UUFDN0MsK0NBQTBDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxxQ0FBZ0MsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RSw2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O0lBQUcsQ0FBQztJQUN6RSxRQUFRO1FBQ04sTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDNUgsTUFBTSxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLHdCQUF3QjtJQUM1QixZQUE2QixjQUF3QztRQUF4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7SUFDckUsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsSUFBSSxrQkFBa0IsQ0FBQyxhQUFhO21CQUM3RixJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixJQUFJLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztZQUMxRixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUM7WUFFakgsSUFBSSxDQUFDLGNBQWMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLHdIQUF3SCxDQUFDLENBQUM7WUFDeEksQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGRhdGFkb2cgZnJvbSAnLi9kYXRhZG9nJztcbmltcG9ydCB7IFNwcmluZyB9IGZyb20gJy4vc3ByaW5nJztcbmltcG9ydCB7IERhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5LCBEYXRhZG9nU2hhcmVkU2VjcmV0IH0gZnJvbSAnLi4vZGF0YWRvZ3YyJztcblxuLyoqXG4gKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJpb0ZhcmdhdGVTZXJ2aWNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHN0YWdlIG9mIHRoZSBzZXJ2aWNlLCBlLmcuICdwcm9kJy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcnZpY2UsIGUuZy4gdGhlIGdpdCBoYXNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNvbW1pdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyYW1ld29ya3MgaW4gdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIE5vIGZyYW1ld29ya3MuXG4gICAqL1xuICByZWFkb25seSBmcmFtZXdvcmtzPzogRnJhbWV3b3JrW107XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgb2YgdGhlIHNlcnZpY2UncyBlY3MuQ2x1c3RlciBpZiBubyBjbHVzdGVyIGlzIGV4cGxpY2l0bHkgcGFzc2VkIGFzIHByb3AuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgRmFyZ2F0ZSBjbHVzdGVyIHRvIHJ1biB0aGUgc2VydmljZSBpbi5cbiAgICogSWYgbm90IG51bGwsIHRoZSBjbHVzdGVyLnZwYyBNVVNUIG1hdGNoIHRoZSB2cGMgcHJvdmlkZWQgYXMgZGlyZWN0IGFyZ3VtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gQ3JlYXRlIGEgbmV3IEZhcmdhdGUgY2x1c3RlciB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGRlZmluaXRpb24gb3B0aW9ucyBsaWtlIGltYWdlLCBjcHUsIG1lbW9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb246IENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFyZ2F0ZU9wdGlvbnM6IEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBMb2FkYmFsYW5jZXIgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlck9wdGlvbnM/OiBMb2FkQmFsYW5jZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhZG9nIGludGVncmF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHM7XG59XG5cbmV4cG9ydCBlbnVtIEZyYW1ld29yayB7XG4gIC8qKlxuICAgKiBTcHJpbmcgRnJhbWV3b3JrLCBTcHJpbmcgQm9vdCwgYW5kIFNwcmluZyBDbG91ZCBBV1MuXG4gICAqL1xuICBTUFJJTkcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGltYWdlIHVzZWQgdG8gc3RhcnQgYSBjb250YWluZXIuXG4gICAqXG4gICAqIFRoaXMgc3RyaW5nIGlzIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgRG9ja2VyIGRhZW1vbi5cbiAgICogSW1hZ2VzIGluIHRoZSBEb2NrZXIgSHViIHJlZ2lzdHJ5IGFyZSBhdmFpbGFibGUgYnkgZGVmYXVsdC5cbiAgICogT3RoZXIgcmVwb3NpdG9yaWVzIGFyZSBzcGVjaWZpZWQgd2l0aCBlaXRoZXIgcmVwb3NpdG9yeS11cmwvaW1hZ2U6dGFnIG9yIHJlcG9zaXRvcnktdXJsL2ltYWdlXFxAZGlnZXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIFNvbWUgRGF0YWRvZyBzcGVjaWZpYyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHNldCxcbiAgICogYmVjYXVzZSB0aGV5IGFyZSBzZXQgYXV0b21hdGljYWxseSBvciBjb21wdXRlZCBmcm9tIG90aGVyIGF0dHJpYnV0ZXMuXG4gICAqIFRoZXNlIGFyZTpcbiAgICogKiBERF9FTlY6IFNldCBzYW1lIGFzIHByb3Agc3RhZ2VcbiAgICogKiBERF9TRVJWSUNFOiBTZXQgc2FtZSBhcyBwcm9wIHNlcnZpY2VOYW1lXG4gICAqICogRERfVkVSU0lPTjogU2V0IHNhbWUgYXMgcHJvcCB2ZXJzaW9uXG4gICAqICogRERfVEFHUzogU2V0IHNhbWUgYXMgRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMjYWRkaXRpb25hbFRhZ3NcbiAgICogKiBERF9MT0dTX0lOSkVDVElPTjogdHJ1ZVxuICAgKiBPdGhlciBERF8tcHJlZml4ZWQgdmFpYWJsZSBtYXkgYmUgYWRkZWQgdG8gdGhpcyBsaXN0LlxuICAgKlxuICAgKiBPdGhlciBFbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IGJ5IGRlZmF1bHQgYXJlIG92ZXJ3cml0dGVuIGlmIHBhc3NlZC5cbiAgICogVGhlc2UgYXJlOlxuICAgKiAqIEREX1NFUlZJQ0VfTUFQUElORzogZGF0YWJhc2U6ZmFyZ2F0ZS13ZWItYXBwLWF1cm9yYSxqYXZhLWF3cy1zZGs6ZmFyZ2F0ZS13ZWItYXBwLWF3cy1zZGssa2Fma2E6ZmFyZ2F0ZS13ZWItYXBwLWthZmthLG15c3FsOmZhcmdhdGUtd2ViLWFwcC1hdXJvcmFcbiAgICogKiBERF9UUkFDRV9TQU1QTEVfUkFURTogMS4wXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNyZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgdG8gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIE5vIHNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBlY3MuU2VjcmV0IH07XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFsdGggY2hlY2sgY29tbWFuZCBhbmQgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBIZWFsdGggY2hlY2sgY29uZmlndXJhdGlvbiBmcm9tIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrPzogZWNzLkhlYWx0aENoZWNrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY3B1IHVuaXRzIHVzZWQgYnkgdGhlIHRhc2suIEZvciB0YXNrcyB1c2luZyB0aGUgRmFyZ2F0ZSBsYXVuY2ggdHlwZSxcbiAgICogdGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgeW91IG11c3QgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcyxcbiAgICogd2hpY2ggZGV0ZXJtaW5lcyB5b3VyIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIG1lbW9yeSBwYXJhbWV0ZXI6XG4gICAqXG4gICAqIDI1NiAoLjI1IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDUxMiAoMC41IEdCKSwgMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpXG4gICAqXG4gICAqIDUxMiAoLjUgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpLCAzMDcyICgzIEdCKSwgNDA5NiAoNCBHQilcbiAgICpcbiAgICogMTAyNCAoMSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpLCA1MTIwICg1IEdCKSwgNjE0NCAoNiBHQiksIDcxNjggKDcgR0IpLCA4MTkyICg4IEdCKVxuICAgKlxuICAgKiAyMDQ4ICgyIHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IEJldHdlZW4gNDA5NiAoNCBHQikgYW5kIDE2Mzg0ICgxNiBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKVxuICAgKlxuICAgKiA0MDk2ICg0IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IEJldHdlZW4gODE5MiAoOCBHQikgYW5kIDMwNzIwICgzMCBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKVxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIDUxMlxuICAgKi9cbiAgcmVhZG9ubHkgY3B1OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgKGluIE1pQikgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHRhc2suIEZvciB0YXNrcyB1c2luZyB0aGUgRmFyZ2F0ZSBsYXVuY2ggdHlwZSxcbiAgICogdGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgeW91IG11c3QgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcywgd2hpY2ggZGV0ZXJtaW5lcyB5b3VyIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIGNwdSBwYXJhbWV0ZXI6XG4gICAqXG4gICAqIDUxMiAoMC41IEdCKSwgMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpIC0gQXZhaWxhYmxlIGNwdSB2YWx1ZXM6IDI1NiAoLjI1IHZDUFUpXG4gICAqXG4gICAqIDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpIC0gQXZhaWxhYmxlIGNwdSB2YWx1ZXM6IDUxMiAoLjUgdkNQVSlcbiAgICpcbiAgICogMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKSwgNTEyMCAoNSBHQiksIDYxNDQgKDYgR0IpLCA3MTY4ICg3IEdCKSwgODE5MiAoOCBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogMTAyNCAoMSB2Q1BVKVxuICAgKlxuICAgKiBCZXR3ZWVuIDQwOTYgKDQgR0IpIGFuZCAxNjM4NCAoMTYgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogMjA0OCAoMiB2Q1BVKVxuICAgKlxuICAgKiBCZXR3ZWVuIDgxOTIgKDggR0IpIGFuZCAzMDcyMCAoMzAgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogNDA5NiAoNCB2Q1BVKVxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIDEwMjRcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlc2lyZWQgY291bnQgb2YgcnVubmluZyB0YXNrc1xuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gV2hlbiBjcmVhdGluZyB0aGUgc2VydmljZSwgZGVmYXVsdCBpcyAxOyB3aGVuIHVwZGF0aW5nIHRoZSBzZXJ2aWNlLCBkZWZhdWx0IHVzZXNcbiAgICogdGhlIGN1cnJlbnQgdGFzayBudW1iZXIuXG4gICAqL1xuICByZWFkb25seSBkZXNpcmVkQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgeW91ciB0YXNrIGRlZmluaXRpb25zIGFyZSBydW5uaW5nIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gVXNpbmcgZWNzLk9wZXJhdGluZ1N5c3RlbUZhbWlseS5MSU5VWCBhbmQgZWNzLkNwdUFyY2hpdGVjdHVyZS5YODZfNjRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWVQbGF0Zm9ybT86IGVjcy5SdW50aW1lUGxhdGZvcm07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXJSdWxlIHtcbiAgcmVhZG9ubHkgcHJpb3JpdHk6IG51bWJlcjtcblxuICByZWFkb25seSBjb25kaXRpb25zOiBlbGJ2Mi5MaXN0ZW5lckNvbmRpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlck9wdGlvbnMge1xuICAvKipcbiAgICogTGlzdGVuZXIgZm9yIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyOiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICogT25lIG9yIG1vcmUgcGF0aCBwYXR0ZXJucyB0byBjb21wYXJlIGFnYWluc3QgdGhlIHJlcXVlc3QgVVJMLlxuICAgKiBUaGUgbWF4aW11bSBzaXplIG9mIGVhY2ggc3RyaW5nIGlzIDEyOCBjaGFyYWN0ZXJzLlxuICAgKiBUaGUgY29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS5cbiAgICogVGhlIGZvbGxvd2luZyB3aWxkY2FyZCBjaGFyYWN0ZXJzIGFyZSBzdXBwb3J0ZWQ6ICogKG1hdGNoZXMgMCBvciBtb3JlIGNoYXJhY3RlcnMpIGFuZCA/IChtYXRjaGVzIGV4YWN0bHkgMSBjaGFyYWN0ZXIpLlxuICAgKlxuICAgKiBVcGRhdGUgcmVxdWlyZXM6IE5vIGludGVycnVwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJSdWxlczogTGlzdGVuZXJSdWxlW107XG5cbiAgLyoqXG4gICAqICBIZWFsdGggY2hlY2sgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrOiBlbGJ2Mi5IZWFsdGhDaGVjaztcblxuICAvKipcbiAgICogIEhlYWx0aCBjaGVjayBncmFjZSBwZXJpb2QuXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIHBlcmlvZCBkdXJpbmcgd2hpY2ggdGhlIGxvYWQgYmFsYW5jZXIgc2VuZHMgYSBuZXdseSByZWdpc3RlcmVkIHRhcmdldCBhIGxpbmVhcmx5IGluY3JlYXNpbmcgc2hhcmUgb2YgdGhlIHRyYWZmaWMgdG8gdGhlIHRhcmdldCBncm91cC5cblxuICAgKlRoZSByYW5nZSBpcyAzMC05MDAgc2Vjb25kcyAoMTUgbWludXRlcykuXG5cbiAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgKi9cbiAgcmVhZG9ubHkgc2xvd1N0YXJ0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgZm9yIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgdG8gd2FpdCBiZWZvcmUgZGVyZWdpc3RlcmluZyBhIHRhcmdldC5cblxuICAgKiBUaGUgcmFuZ2UgaXMgMC0zNjAwIHNlY29uZHMuXG5cbiAgICogQGRlZmF1bHRWYWx1ZSA1XG4gICovXG4gIHJlYWRvbmx5IGRlcmVnaXN0cmF0aW9uRGVsYXk/OiBjZGsuRHVyYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIENQVSB1bml0cyB0byByZXNlcnZlIGZvciB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gNjRcbiAgICovXG4gIHJlYWRvbmx5IGNwdT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCAoaW4gTWlCKSBvZiBtZW1vcnkgdG8gcHJlc2VudCB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBJZiB5b3VyIGNvbnRhaW5lciBhdHRlbXB0cyB0byBleGNlZWQgdGhlIGFsbG9jYXRlZCBtZW1vcnksIHRoZSBjb250YWluZXJcbiAgICogaXMgdGVybWluYXRlZC5cbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIG9mIG1lbW9yeUxpbWl0TWlCIGFuZCBtZW1vcnlSZXNlcnZhdGlvbk1pQiBpcyByZXF1aXJlZCBmb3Igbm9uLUZhcmdhdGUgc2VydmljZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSAxMjhcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHZpcnR1YWwgQ1BVIHVuaXRzIHRvIGJlIHJlc2VydmVkIGZvciB0aGUgZmlyZWxlbnMgbG9nLXJvdXRlciBjb250YWluZXIgKGkuZS4gYXdzLWZvci1mbHVlbnQtYml0KS5cbiAgICpcbiAgICogVGhpcyBvbmx5IGFwcGxpZXMgZm9yIHRoZSBBV1NfRklSRV9MRU5TIGxvZ2dpbmcgbW9kZS5cbiAgICogU2V0dGluZyBpdCBmb3IgYW55IG90aGVyIGxvZ2dpbmcgbW9kZSB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIDY0XG4gICAqL1xuICByZWFkb25seSBhd3NGaXJlTGVuc0NwdT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBtZW1vcnkgKGluIE1pQikgcmVzZXJ2ZWQgZm9yIHRoZSBmaXJlbGVucyBsb2ctcm91dGVyIGNvbnRhaW5lciAoaS5lLiBhd3MtZm9yLWZsdWVudC1iaXQpLlxuICAgKlxuICAgKiBUaGlzIG9ubHkgYXBwbGllcyBmb3IgdGhlIEFXU19GSVJFX0xFTlMgbG9nZ2luZyBtb2RlLlxuICAgKiBTZXR0aW5nIGl0IGZvciBhbnkgb3RoZXIgbG9nZ2luZyBtb2RlIHdpbGwgY2F1c2UgYW4gZXhjZXB0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gNjRcbiAgICovXG4gIHJlYWRvbmx5IGF3c0ZpcmVMZW5zTWVtb3J5TGltaXRNaUI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2dnaW5nIG1vZGUgZm9yIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gVXNpbmcgdGhlIERhdGFkb2cgbG9nIGZvcndhcmRlciBsYW1iZGEgcHJvdmlkZWQgYnkgdGhlIGRhdGFkb2ctaW50ZWdyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nTW9kZUZvclNlcnZpY2U/OiBEYXRhRG9nTG9nZ2luZ01vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2dnaW5nIG1vZGUgZm9yIHRoZSBEYXRhZG9nIGFnZW50IHNpZGVjYXIuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBsb2dzIGluIERhdGFkb2csIENsb3Vkd2F0Y2ggb25seS5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50PzogRGF0YURvZ0xvZ2dpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBHRVQgZW5kcG9pbnRzIHRvIGlnbm9yZSBpbiBEYXRhZG9nJ3MgQVBNIG92ZXJ2aWV3LiBUaGlzIGlzIHVzZWZ1bCB0byBmaWx0ZXIgb3V0IGFsbCBoZWFsdGggY2hlY2sgY2FsbHMuXG5cbiAgICAqIEBkZWZhdWx0VmFsdWUgLSBObyBlbmRwb2ludHMgYXJlIGlnbm9yZWQuXG4gICAgKi9cbiAgcmVhZG9ubHkgYXBtR2V0RW5kcG9pbnRzVG9JZ25vcmU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGlmIHRoZSBEYXRhZG9nIGFnZW50IHNpZGVjYXIgaXMgbWFya2VkIGFzIGVzc2VudGlhbC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIHRydWUuXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nU2lkZWNhckVzc2VudGlhbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIGRvY2tlciBpbWFnZSB0YWcgZm9yIGRhdGFkb2cgc2lkZWNhclxuICAgKiBAZGVmYXVsdFZhbHVlIC0gJ2xhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlY2FyVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHlvdSBzZXQgdXAgYSByZXN0YXJ0IHBvbGljeSBmb3IgYSBjb250YWluZXIsIEFtYXpvbiBFQ1MgY2FuIHJlc3RhcnQgdGhlIGNvbnRhaW5lciB3aXRob3V0IG5lZWRpbmcgdG8gcmVwbGFjZSB0aGUgdGFza1xuICAgKiBAZGVmYXVsdFZhbHVlIC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUmVzdGFydFBvbGljeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICogVGhlIGV4aXQgY29kZXMgdG8gYmUgaWdub3JlZCBieSB0aGUgcmVzdGFydCBwb2xpY3lcbiAgKiBAZGVmYXVsdFZhbHVlIC0gWzBdXG4gICovXG4gIHJlYWRvbmx5IHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBhZGRpdGlvbmFsIHRhZ3MsIHdoaWNoIGFyZSBhcHBlbmRlZCB0byB0aGUgZGVmYXVsdHMsXG4gICAqIFdoZW4geW91IGRlZmluZSBjdXN0b20gdGFncyB3ZSB3b3VsZCBiZSBnbGFkIGlmIHlvdSBjb250YWN0IHVzLlxuICAgKiBXZSB3b3VsZCBsaWtlIHRvIGxlYXJuIGFib3V0IHlvdXIgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBEZWZhdWx0IHRhZ3MgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIG92ZXJyaWRkZW4hXG4gICAqXG4gICAqIERlZmF1bHRzIGFyZTpcbiAgICogKiBlbnY6IFNldCB0byBSaW9GYXJnYXRlU2VydmljZVByb3BzI3N0YWdlIHByb3BcbiAgICogKiBzZXJ2aWNlOiBTZXQgdG8gUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcyNzZXJ2aWNlTmFtZSBwcm9wXG4gICAqICogdmVyc2lvbjogU2V0IHRvIFJpb0ZhcmdhdGVTZXJ2aWNlUHJvcHMjdmVyc2lvbiBwcm9wXG4gICAqICogYWNjb3VudF9pZDokXFx7YWNjb3VudElEXFx9XG4gICAqICogYWNjb3VudF9uYW1lOiRcXHthY2NvdW50TmFtZVxcfVxuICAgKiAqIHJlZ2lvbjokXFx7QVdTUmVnaW9uXFx9XG4gICAqICogdGVhbTokXFx7dGVhbU5hbWUgZnJvbSBzc20gcGFyYW0gL2NvbmZpZy90ZWFtL25hbWVcXH1cbiAgICogKiB0ZWFtX2lkZW50aWZpZXI6JFxce3RlYW1JZGVudGlmaWVyIGZyb20gc3NtIHBhcmFtIC9jb25maWcvdGVhbS9pZGVudGlmaWVyXFx9XG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBlbnVtIERhdGFEb2dMb2dnaW5nTW9kZSB7XG4gIC8qKlxuICAgKiBGb3J3YXJkIGxvZ3MgZGlyZWN0bHkgdG8gRGF0YWRvZyB1c2luZyBBV1MgRmlyZUxlbnMgYXMgbG9nIHJvdXRlcixcbiAgICogc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2ludGVncmF0aW9ucy9lY3NfZmFyZ2F0ZS8/dGFiPWZsdWVudGJpdGFuZGZpcmVsZW5zI2xvZy1jb2xsZWN0aW9uLlxuICAgKi9cbiAgQVdTX0ZJUkVfTEVOUyxcblxuICAvKipcbiAgICogU3RvcmUgbG9ncyBpbiBBV1MgQ2xvdWR3YXRjaCBhbmQgdXNlIHRoZSBSSU8gY3VzdG9taXplZCBEYXRhZG9nIGxvZyBmb3J3YXJkZXIgbGFtYmRhIGZyb20gdGhlIGxlZ2FjeVxuICAgKiBkYXRhZG9nLWludGVncmF0aW9uLCB0byBmb3J3YXJkIHRoZSBsb2dzIHRvIERhdGFkb2csXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9iaXRidWNrZXQuY29sbGFib3JhdGlvbi1tYW4uY29tL3Byb2plY3RzL1JJT0RFVi9yZXBvcy9kYXRhZG9nLWludGVncmF0aW9uL2Jyb3dzZVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgREFUQURPR19GT1JXQVJERVJfTEFNQkRBXG4gICAqL1xuICBGT1JXQVJERVJfTEFNQkRBLFxuXG4gIC8qKlxuICAgKiBTdG9yZSBsb2dzIGluIEFXUyBDbG91ZHdhdGNoIGFuZCB1c2UgdGhlIERhdGFkb2cgbG9nIGZvcndhcmRlciBsYW1iZGEgdG8gZm9yd2FyZCB0aGUgbG9ncyB0byBEYXRhZG9nLFxuICAgKiBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2Vjc19mYXJnYXRlLz90YWI9bG9nZHJpdmVyI2xvZy1jb2xsZWN0aW9uLlxuICAgKi9cbiAgREFUQURPR19GT1JXQVJERVJfTEFNQkRBLFxuXG4gIC8qKlxuICAgKiBPbmx5IGxvZyB0byBBV1MgQ2xvdWR3YXRjaCB3aXRob3V0IGZvcndhcmRpbmcgdGhlIGxvZ3MgdG8gRGF0YWRvZy5cbiAgICovXG4gIE5PTkUsXG59XG5cbmV4cG9ydCBjbGFzcyBSaW9GYXJnYXRlU2VydmljZSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IGltcGxlbWVudHMgZWMyLklDb25uZWN0YWJsZSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfRU5WX0RFTllfTElTVCA9IFtcbiAgICAnRERfRU5WJyxcbiAgICAnRERfVEFHUycsXG4gICAgJ0REX1NFUlZJQ0UnLFxuICAgICdERF9WRVJTSU9OJyxcbiAgICAnRERfTE9HU19JTkpFQ1RJT04nLFxuICBdO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEREX1RBR19ERU5ZX0xJU1QgPSBbXG4gICAgJ2VudicsXG4gICAgJ3NlcnZpY2UnLFxuICAgICd2ZXJzaW9uJyxcbiAgICAnYWNjb3VudF9pZCcsXG4gICAgJ2FjY291bnRfbmFtZScsXG4gICAgJ3JlZ2lvbicsXG4gICAgJ3RlYW0nLFxuICAgICd0ZWFtX2lkZW50aWZpZXInLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9BUE1fR0VUX0VORFBPSU5UU19UT19JR05PUkU6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfQ1BVID0gNjQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQiA9IDEyODtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9FU1NFTlRJQUwgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19FTkFCTEVfUkVTVEFSVF9QT0xJQ1kgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19SRVNUQVJUX0lHTk9SRURfRVhJVF9DT0RFUyA9IFswXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRSA9IERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPSBEYXRhRG9nTG9nZ2luZ01vZGUuTk9ORTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZID0gY2RrLkR1cmF0aW9uLnNlY29uZHMoNSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9TTE9XX1NUQVJUID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRyA9ICdsYXRlc3QnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCID0gNjQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTiA9ICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSB0YXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cHx1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLFxuICAgICAgdnBjLFxuICAgICAgY2x1c3RlcixcbiAgICAgIGZhcmdhdGVPcHRpb25zLFxuICAgICAgZGF0YWRvZ09wdGlvbnMsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24sXG4gICAgICBzdGFnZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBmcmFtZXdvcmtzLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2UuRERfRU5WX0RFTllfTElTVCxcbiAgICAgIHByb3BzLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICBpdCA9PiBgRW52aXJvbm1lbnQgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgKSk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICBSaW9GYXJnYXRlU2VydmljZS5ERF9UQUdfREVOWV9MSVNULFxuICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgaXQgPT4gYFRhZyAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICApKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBDbHVzdGVyVnBjVmFsaWRhdG9yKFxuICAgICAgcHJvcHMudnBjLFxuICAgICAgcHJvcHMuY2x1c3RlcixcbiAgICApKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBEYXRhZG9nU2lkZUNhclZhbGlkYXRvcihcbiAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zLFxuICAgICkpO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IEZpcmVsZW5zU2lkZUNhclZhbGlkYXRvcihcbiAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zLFxuICAgICkpO1xuXG4gICAgY29uc3QgZmFyZ2F0ZUNsdXN0ZXIgPSBjbHVzdGVyID8/IG5ldyBlY3MuQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgIHZwYzogdnBjLFxuICAgIH0pO1xuICAgIHRoaXMudGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbih0aGlzLCAnVGFza0RlZmluaXRpb24nLCB7XG4gICAgICBjcHU6IGZhcmdhdGVPcHRpb25zLmNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQixcbiAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICBjcHVBcmNoaXRlY3R1cmU6IGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8uY3B1QXJjaGl0ZWN0dXJlID8/IGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8ub3BlcmF0aW5nU3lzdGVtRmFtaWx5ID8/IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnQWNjb3VudE5hbWUnLCAnL2NvbmZpZy9hY2NvdW50L25hbWUnKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgJ1RlYW1OYW1lJywgJy9jb25maWcvdGVhbS9uYW1lJykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtSWRlbnRpZmllcicsICcvY29uZmlnL3RlYW0vaWRlbnRpZmllcicpLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NlY3JldCA9IERhdGFkb2dTaGFyZWRTZWNyZXQuY3JlZGVudGlhbHNTZWNyZXQodGhpcyk7XG4gICAgY29uc3QgZGF0YWRvZ1NpdGUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldFZhbHVlKCdTaXRlJykudG9TdHJpbmcoKTtcbiAgICBjb25zdCBkYXRhZG9nQXBpS2V5ID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXQoJ0FwaUtleScpO1xuICAgIGRhdGFkb2dTZWNyZXQuZ3JhbnRSZWFkKHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJDcHUgPSBkYXRhZG9nT3B0aW9ucz8uY3B1ID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfQ1BVO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCID0gZGF0YWRvZ09wdGlvbnM/Lm1lbW9yeUxpbWl0TWlCID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQjtcblxuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9IGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvclNlcnZpY2UgPz8gdGhpcy5ERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRTtcbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9IGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA/PyB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVI7XG4gICAgY29uc3QgZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCA9XG4gICAgICAgIGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlMgfHxcbiAgICAgICAgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TO1xuXG4gICAgY29uc3QgZmlyZUxlbnNTaWRlY2FyQ3B1ID0gZGF0YWRvZ09wdGlvbnM/LmF3c0ZpcmVMZW5zQ3B1ID8/IHRoaXMuREVGQVVMVF9MT0dfUk9VVEVSX0NQVTtcbiAgICBjb25zdCBmaXJlTGVuc1NpZGVjYXJNZW1vcnlNaUIgPSBkYXRhZG9nT3B0aW9ucz8uYXdzRmlyZUxlbnNNZW1vcnlMaW1pdE1pQiA/PyB0aGlzLkRFRkFVTFRfTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID0gZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuICAgIGNvbnN0IGRhdGFEb2dFbmFibGVSZXN0YXJ0UG9saWN5ID0gZGF0YWRvZ09wdGlvbnM/LmVuYWJsZVJlc3RhcnRQb2xpY3kgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfRU5BQkxFX1JFU1RBUlRfUE9MSUNZO1xuXG4gICAgZnVuY3Rpb24gZ2V0UmVzdGFydElnbm9yZWRFeGl0Q29kZXMoXG4gICAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICAgICAgcmVzdGFydElnbm9yZWRFeGl0Q29kZXM6IG51bWJlcltdIHwgdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdElnbm9yZWRFeGl0Q29kZXM6IG51bWJlcltdLFxuICAgICk6IG51bWJlcltdIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmIChlbmFibGVSZXN0YXJ0UG9saWN5ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIGlmIChlbmFibGVSZXN0YXJ0UG9saWN5ID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiByZXN0YXJ0SWdub3JlZEV4aXRDb2RlcyA/PyBbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdElnbm9yZWRFeGl0Q29kZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YURvZ3Jlc3RhcnRJZ25vcmVkRXhpdENvZGVzID0gZ2V0UmVzdGFydElnbm9yZWRFeGl0Q29kZXMoXG4gICAgICBkYXRhRG9nRW5hYmxlUmVzdGFydFBvbGljeSxcbiAgICAgIGRhdGFkb2dPcHRpb25zPy5yZXN0YXJ0SWdub3JlZEV4aXRDb2RlcyxcbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1JFU1RBUlRfSUdOT1JFRF9FWElUX0NPREVTLFxuICAgICk7XG5cbiAgICBsZXQgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzO1xuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUI7XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID0gZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHUgLSBmaXJlTGVuc1NpZGVjYXJDcHU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPSBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCIC0gZmlyZUxlbnNTaWRlY2FyTWVtb3J5TWlCO1xuICAgICAgZGF0YWRvZy5hZGRGaXJlbGVuc0NvbmZpZ1VwbG9hZEZyb21TM1Blcm1pc3Npb25zKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID0gZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKHNlcnZpY2VOYW1lLCB7XG4gICAgICBpbWFnZTogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5pbWFnZSxcbiAgICAgIGNwdTogc2VydmljZUNvbnRhaW5lckNwdVVuaXRzLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgfSxcbiAgICAgIGRvY2tlckxhYmVsczoge1xuICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICB9LFxuICAgICAgaGVhbHRoQ2hlY2s6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaGVhbHRoQ2hlY2ssXG4gICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgIHNjb3BlLFxuICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICBzdGFnZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGRhdGFkb2dBcGlLZXksXG4gICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgfSksXG4gICAgICBzZWNyZXRzOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLnNlY3JldHMsXG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWV3b3Jrcz8uaW5jbHVkZXMoRnJhbWV3b3JrLlNQUklORykpIHtcbiAgICAgIFNwcmluZy5hbGxvd1BhcmFtZXRlclN0b3JlQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3ModGhpcywgc2VydmljZU5hbWUsIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuICAgICAgU3ByaW5nLmFsbG93U2VjcmV0c01hbmFnZXJBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyh0aGlzLCBzZXJ2aWNlTmFtZSwgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiBmaXJlTGVuc1NpZGVjYXJDcHUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBmaXJlTGVuc1NpZGVjYXJNZW1vcnlNaUIsXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19GSUxFX1BBVEgsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLmV4ZWN1dGlvblJvbGU/LmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3knKSk7XG4gICAgfVxuICAgIHRoaXMuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5LFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50LFxuICAgICAgYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmU6IGRhdGFkb2dPcHRpb25zPy5hcG1HZXRFbmRwb2ludHNUb0lnbm9yZSA/PyB0aGlzLkRFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFLFxuICAgICAgY3B1OiBkYXRhZG9nU2lkZWNhckNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQixcbiAgICAgIGVzc2VudGlhbDogZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwsXG4gICAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiBkYXRhRG9nRW5hYmxlUmVzdGFydFBvbGljeSxcbiAgICAgIHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzOiBkYXRhRG9ncmVzdGFydElnbm9yZWRFeGl0Q29kZXMsXG4gICAgICBjb250YWluZXJUYWc6IHByb3BzLmRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhclRhZyA/PyB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRywgLy8gVGhlc2UgYXJlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG5cbiAgICBkYXRhZG9nLmVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHRoaXMpO1xuXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyT3B0aW9uc0ZvckZhcmdhdGVTZXJ2aWNlID0gbG9hZEJhbGFuY2VyT3B0aW9uc1xuICAgICAgPyB7IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCB9XG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5zZXJ2aWNlID0gbmV3IGVjcy5GYXJnYXRlU2VydmljZSh0aGlzLCAnU2VydmljZScsIHtcbiAgICAgIGNsdXN0ZXI6IGZhcmdhdGVDbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBjaXJjdWl0QnJlYWtlcjogeyByb2xsYmFjazogdHJ1ZSB9LFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQ6IGZhcmdhdGVPcHRpb25zPy5kZXNpcmVkQ291bnQsXG4gICAgICAuLi5sb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UsXG4gICAgICBwcm9wYWdhdGVUYWdzOiBlY3MuUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuc2VydmljZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChsb2FkQmFsYW5jZXJPcHRpb25zICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSA0NDM7XG4gICAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRhcmdldEdyb3VwID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAodGhpcywgJ1RhcmdldEdyb3VwJywge1xuICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgIHRhcmdldFR5cGU6IGVsYnYyLlRhcmdldFR5cGUuSVAsXG4gICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgc2xvd1N0YXJ0OiBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6IHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz8gdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgfSk7XG5cbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lci5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy50YXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXcgRGF0YWRvZ1NlcnZpY2VDYXRhbG9nRW50cnkodGhpcywgJ0RhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5Jywge1xuICAgICAgc2VydmljZU5hbWU6IHNlcnZpY2VOYW1lLFxuICAgICAgbGFuZ3VhZ2VzOiBbJ2phdmEnXSxcbiAgICAgIHNlcnZpY2VUeXBlOiAnd2ViJyxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVueUxpc3Q6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGljdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VHZW5lcmF0b3I6IChrZXlOYW1lOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGljdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmRlbnlMaXN0LmZvckVhY2goa2V5TmFtZSA9PiB7XG4gICAgICBpZiAodGhpcy5kaWN0ICYmIGtleU5hbWUgaW4gdGhpcy5kaWN0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWVzc2FnZUdlbmVyYXRvcihrZXlOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIENsdXN0ZXJWcGNWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcixcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5jbHVzdGVyICYmIHRoaXMuY2x1c3Rlci52cGMudnBjSWQgIT09IHRoaXMudnBjLnZwY0lkKSB7XG4gICAgICByZXN1bHQucHVzaChgVGhlIFZQQyBwcm92aWRlZCBpbiB0aGUgY2x1c3RlciAoJHt0aGlzLmNsdXN0ZXIudnBjLm5vZGUuaWR9KSBNVVNUIG1hdGNoIHRoZSBWUEMgcHJvdmlkZWQgYXMgYXJndW1lbnQgKCR7dGhpcy52cGMubm9kZS5pZH0pLmApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIERhdGFkb2dTaWRlQ2FyVmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGF0YWRvZ09wdGlvbnM/OiBEYXRhZG9nSW50ZWdyYXRpb25Qcm9wcykge31cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGFkb2dPcHRpb25zICYmIHRoaXMuZGF0YWRvZ09wdGlvbnMuZW5hYmxlUmVzdGFydFBvbGljeSA9PT0gZmFsc2UgJiYgdGhpcy5kYXRhZG9nT3B0aW9ucy5yZXN0YXJ0SWdub3JlZEV4aXRDb2Rlcykge1xuICAgICAgcmVzdWx0LnB1c2goJ1Jlc3RhcnRJZ25vcmVkRXhpdENvZGVzIGNhbm5vdCBiZSBzcGVjaWZpZWQgaWYgZW5hYmxlUmVzdGFydFBvbGljeSBpcyBmYWxzZScpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIEZpcmVsZW5zU2lkZUNhclZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMpIHtcbiAgfVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5kYXRhZG9nT3B0aW9ucykge1xuICAgICAgY29uc3QgaXNGaXJlbGVuc1VzZWQgPSB0aGlzLmRhdGFkb2dPcHRpb25zLmxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOU1xuICAgICAgICAgIHx8IHRoaXMuZGF0YWRvZ09wdGlvbnMubG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM7XG4gICAgICBjb25zdCBpc0ZpcmVsZW5zQ29uZmlndXJlZCA9IHRoaXMuZGF0YWRvZ09wdGlvbnMuYXdzRmlyZUxlbnNDcHUgfHwgdGhpcy5kYXRhZG9nT3B0aW9ucy5hd3NGaXJlTGVuc01lbW9yeUxpbWl0TWlCO1xuXG4gICAgICBpZiAoIWlzRmlyZWxlbnNVc2VkICYmIGlzRmlyZWxlbnNDb25maWd1cmVkKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCdZb3UgY2Fubm90IG92ZXJyaWRlIHRoZSBjb250YWluZXIgcmVzb3VyY2UgYWxsb2NhdGlvbiBmb3IgZmlyZWxlbnMgaWYgaXQgaXMgbm90IHVzZWQgYXMgbG9nZ2luZyBtb2RlIGZvciBhbnkgY29udGFpbmVyJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL3Jpby1mYXJnYXRlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsMkNBQTJDO0FBQzNDLHlDQUF5QztBQUN6QyxxQ0FBcUM7QUFDckMscUNBQWtDO0FBQ2xDLDRDQUErRTtBQThEL0UsSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25COztPQUVHO0lBQ0gsNkNBQU0sQ0FBQTtBQUNSLENBQUMsRUFMVyxTQUFTLHlCQUFULFNBQVMsUUFLcEI7QUFvUUQsSUFBWSxrQkEwQlg7QUExQkQsV0FBWSxrQkFBa0I7SUFDNUI7OztPQUdHO0lBQ0gsNkVBQWEsQ0FBQTtJQUViOzs7Ozs7T0FNRztJQUNILG1GQUFnQixDQUFBO0lBRWhCOzs7T0FHRztJQUNILG1HQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsMkRBQUksQ0FBQTtBQUNOLENBQUMsRUExQlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUEwQjdCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQWdEekQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBNUJGLHdDQUFtQyxHQUFhLEVBQUUsQ0FBQztRQUNuRCxnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsNkNBQXdDLEdBQUcsR0FBRyxDQUFDO1FBQy9DLHNDQUFpQyxHQUFHLElBQUksQ0FBQztRQUN6QywwQ0FBcUMsR0FBRyxJQUFJLENBQUM7UUFDN0MsK0NBQTBDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxxQ0FBZ0MsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RSw2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bXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGRhdGFkb2cgZnJvbSAnLi9kYXRhZG9nJztcbmltcG9ydCB7IFNwcmluZyB9IGZyb20gJy4vc3ByaW5nJztcbmltcG9ydCB7IERhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5LCBEYXRhZG9nU2hhcmVkU2VjcmV0IH0gZnJvbSAnLi4vZGF0YWRvZ3YyJztcblxuLyoqXG4gKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJpb0ZhcmdhdGVTZXJ2aWNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHN0YWdlIG9mIHRoZSBzZXJ2aWNlLCBlLmcuICdwcm9kJy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOYW1lIG9mIHRoZSBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcnZpY2UsIGUuZy4gdGhlIGdpdCBoYXNoIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNvbW1pdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZyYW1ld29ya3MgaW4gdXNlcy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIE5vIGZyYW1ld29ya3MuXG4gICAqL1xuICByZWFkb25seSBmcmFtZXdvcmtzPzogRnJhbWV3b3JrW107XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgb2YgdGhlIHNlcnZpY2UncyBlY3MuQ2x1c3RlciBpZiBubyBjbHVzdGVyIGlzIGV4cGxpY2l0bHkgcGFzc2VkIGFzIHByb3AuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgRmFyZ2F0ZSBjbHVzdGVyIHRvIHJ1biB0aGUgc2VydmljZSBpbi5cbiAgICogSWYgbm90IG51bGwsIHRoZSBjbHVzdGVyLnZwYyBNVVNUIG1hdGNoIHRoZSB2cGMgcHJvdmlkZWQgYXMgZGlyZWN0IGFyZ3VtZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gQ3JlYXRlIGEgbmV3IEZhcmdhdGUgY2x1c3RlciB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGRlZmluaXRpb24gb3B0aW9ucyBsaWtlIGltYWdlLCBjcHUsIG1lbW9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb246IENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFyZ2F0ZU9wdGlvbnM6IEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBMb2FkYmFsYW5jZXIgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlck9wdGlvbnM/OiBMb2FkQmFsYW5jZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhZG9nIGludGVncmF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHM7XG59XG5cbmV4cG9ydCBlbnVtIEZyYW1ld29yayB7XG4gIC8qKlxuICAgKiBTcHJpbmcgRnJhbWV3b3JrLCBTcHJpbmcgQm9vdCwgYW5kIFNwcmluZyBDbG91ZCBBV1MuXG4gICAqL1xuICBTUFJJTkcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGltYWdlIHVzZWQgdG8gc3RhcnQgYSBjb250YWluZXIuXG4gICAqXG4gICAqIFRoaXMgc3RyaW5nIGlzIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgRG9ja2VyIGRhZW1vbi5cbiAgICogSW1hZ2VzIGluIHRoZSBEb2NrZXIgSHViIHJlZ2lzdHJ5IGFyZSBhdmFpbGFibGUgYnkgZGVmYXVsdC5cbiAgICogT3RoZXIgcmVwb3NpdG9yaWVzIGFyZSBzcGVjaWZpZWQgd2l0aCBlaXRoZXIgcmVwb3NpdG9yeS11cmwvaW1hZ2U6dGFnIG9yIHJlcG9zaXRvcnktdXJsL2ltYWdlXFxAZGlnZXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIFNvbWUgRGF0YWRvZyBzcGVjaWZpYyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHNldCxcbiAgICogYmVjYXVzZSB0aGV5IGFyZSBzZXQgYXV0b21hdGljYWxseSBvciBjb21wdXRlZCBmcm9tIG90aGVyIGF0dHJpYnV0ZXMuXG4gICAqIFRoZXNlIGFyZTpcbiAgICogKiBERF9FTlY6IFNldCBzYW1lIGFzIHByb3Agc3RhZ2VcbiAgICogKiBERF9TRVJWSUNFOiBTZXQgc2FtZSBhcyBwcm9wIHNlcnZpY2VOYW1lXG4gICAqICogRERfVkVSU0lPTjogU2V0IHNhbWUgYXMgcHJvcCB2ZXJzaW9uXG4gICAqICogRERfVEFHUzogU2V0IHNhbWUgYXMgRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMjYWRkaXRpb25hbFRhZ3NcbiAgICogKiBERF9MT0dTX0lOSkVDVElPTjogdHJ1ZVxuICAgKiBPdGhlciBERF8tcHJlZml4ZWQgdmFpYWJsZSBtYXkgYmUgYWRkZWQgdG8gdGhpcyBsaXN0LlxuICAgKlxuICAgKiBPdGhlciBFbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IGJ5IGRlZmF1bHQgYXJlIG92ZXJ3cml0dGVuIGlmIHBhc3NlZC5cbiAgICogVGhlc2UgYXJlOlxuICAgKiAqIEREX1NFUlZJQ0VfTUFQUElORzogZGF0YWJhc2U6ZmFyZ2F0ZS13ZWItYXBwLWF1cm9yYSxqYXZhLWF3cy1zZGs6ZmFyZ2F0ZS13ZWItYXBwLWF3cy1zZGssa2Fma2E6ZmFyZ2F0ZS13ZWItYXBwLWthZmthLG15c3FsOmZhcmdhdGUtd2ViLWFwcC1hdXJvcmFcbiAgICogKiBERF9UUkFDRV9TQU1QTEVfUkFURTogMS4wXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNyZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgdG8gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIE5vIHNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBlY3MuU2VjcmV0IH07XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFsdGggY2hlY2sgY29tbWFuZCBhbmQgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBIZWFsdGggY2hlY2sgY29uZmlndXJhdGlvbiBmcm9tIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrPzogZWNzLkhlYWx0aENoZWNrO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY3B1IHVuaXRzIHVzZWQgYnkgdGhlIHRhc2suIEZvciB0YXNrcyB1c2luZyB0aGUgRmFyZ2F0ZSBsYXVuY2ggdHlwZSxcbiAgICogdGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgeW91IG11c3QgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcyxcbiAgICogd2hpY2ggZGV0ZXJtaW5lcyB5b3VyIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIG1lbW9yeSBwYXJhbWV0ZXI6XG4gICAqXG4gICAqIDI1NiAoLjI1IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDUxMiAoMC41IEdCKSwgMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpXG4gICAqXG4gICAqIDUxMiAoLjUgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpLCAzMDcyICgzIEdCKSwgNDA5NiAoNCBHQilcbiAgICpcbiAgICogMTAyNCAoMSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpLCA1MTIwICg1IEdCKSwgNjE0NCAoNiBHQiksIDcxNjggKDcgR0IpLCA4MTkyICg4IEdCKVxuICAgKlxuICAgKiAyMDQ4ICgyIHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IEJldHdlZW4gNDA5NiAoNCBHQikgYW5kIDE2Mzg0ICgxNiBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKVxuICAgKlxuICAgKiA0MDk2ICg0IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IEJldHdlZW4gODE5MiAoOCBHQikgYW5kIDMwNzIwICgzMCBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKVxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIDUxMlxuICAgKi9cbiAgcmVhZG9ubHkgY3B1OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgKGluIE1pQikgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHRhc2suIEZvciB0YXNrcyB1c2luZyB0aGUgRmFyZ2F0ZSBsYXVuY2ggdHlwZSxcbiAgICogdGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgeW91IG11c3QgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcywgd2hpY2ggZGV0ZXJtaW5lcyB5b3VyIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBmb3IgdGhlIGNwdSBwYXJhbWV0ZXI6XG4gICAqXG4gICAqIDUxMiAoMC41IEdCKSwgMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpIC0gQXZhaWxhYmxlIGNwdSB2YWx1ZXM6IDI1NiAoLjI1IHZDUFUpXG4gICAqXG4gICAqIDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpIC0gQXZhaWxhYmxlIGNwdSB2YWx1ZXM6IDUxMiAoLjUgdkNQVSlcbiAgICpcbiAgICogMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKSwgNTEyMCAoNSBHQiksIDYxNDQgKDYgR0IpLCA3MTY4ICg3IEdCKSwgODE5MiAoOCBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogMTAyNCAoMSB2Q1BVKVxuICAgKlxuICAgKiBCZXR3ZWVuIDQwOTYgKDQgR0IpIGFuZCAxNjM4NCAoMTYgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogMjA0OCAoMiB2Q1BVKVxuICAgKlxuICAgKiBCZXR3ZWVuIDgxOTIgKDggR0IpIGFuZCAzMDcyMCAoMzAgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogNDA5NiAoNCB2Q1BVKVxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIDEwMjRcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlc2lyZWQgY291bnQgb2YgcnVubmluZyB0YXNrc1xuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gV2hlbiBjcmVhdGluZyB0aGUgc2VydmljZSwgZGVmYXVsdCBpcyAxOyB3aGVuIHVwZGF0aW5nIHRoZSBzZXJ2aWNlLCBkZWZhdWx0IHVzZXNcbiAgICogdGhlIGN1cnJlbnQgdGFzayBudW1iZXIuXG4gICAqL1xuICByZWFkb25seSBkZXNpcmVkQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtIHRoYXQgeW91ciB0YXNrIGRlZmluaXRpb25zIGFyZSBydW5uaW5nIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gVXNpbmcgZWNzLk9wZXJhdGluZ1N5c3RlbUZhbWlseS5MSU5VWCBhbmQgZWNzLkNwdUFyY2hpdGVjdHVyZS5YODZfNjRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWVQbGF0Zm9ybT86IGVjcy5SdW50aW1lUGxhdGZvcm07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuZXJSdWxlIHtcbiAgcmVhZG9ubHkgcHJpb3JpdHk6IG51bWJlcjtcblxuICByZWFkb25seSBjb25kaXRpb25zOiBlbGJ2Mi5MaXN0ZW5lckNvbmRpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRCYWxhbmNlck9wdGlvbnMge1xuICAvKipcbiAgICogTGlzdGVuZXIgZm9yIGFuIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXJcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyOiBlbGJ2Mi5JQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICAvKipcbiAgICogT25lIG9yIG1vcmUgcGF0aCBwYXR0ZXJucyB0byBjb21wYXJlIGFnYWluc3QgdGhlIHJlcXVlc3QgVVJMLlxuICAgKiBUaGUgbWF4aW11bSBzaXplIG9mIGVhY2ggc3RyaW5nIGlzIDEyOCBjaGFyYWN0ZXJzLlxuICAgKiBUaGUgY29tcGFyaXNvbiBpcyBjYXNlIHNlbnNpdGl2ZS5cbiAgICogVGhlIGZvbGxvd2luZyB3aWxkY2FyZCBjaGFyYWN0ZXJzIGFyZSBzdXBwb3J0ZWQ6ICogKG1hdGNoZXMgMCBvciBtb3JlIGNoYXJhY3RlcnMpIGFuZCA/IChtYXRjaGVzIGV4YWN0bHkgMSBjaGFyYWN0ZXIpLlxuICAgKlxuICAgKiBVcGRhdGUgcmVxdWlyZXM6IE5vIGludGVycnVwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJSdWxlczogTGlzdGVuZXJSdWxlW107XG5cbiAgLyoqXG4gICAqICBIZWFsdGggY2hlY2sgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrOiBlbGJ2Mi5IZWFsdGhDaGVjaztcblxuICAvKipcbiAgICogIEhlYWx0aCBjaGVjayBncmFjZSBwZXJpb2QuXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja0dyYWNlUGVyaW9kOiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIHBlcmlvZCBkdXJpbmcgd2hpY2ggdGhlIGxvYWQgYmFsYW5jZXIgc2VuZHMgYSBuZXdseSByZWdpc3RlcmVkIHRhcmdldCBhIGxpbmVhcmx5IGluY3JlYXNpbmcgc2hhcmUgb2YgdGhlIHRyYWZmaWMgdG8gdGhlIHRhcmdldCBncm91cC5cblxuICAgKlRoZSByYW5nZSBpcyAzMC05MDAgc2Vjb25kcyAoMTUgbWludXRlcykuXG5cbiAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgKi9cbiAgcmVhZG9ubHkgc2xvd1N0YXJ0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgZm9yIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgdG8gd2FpdCBiZWZvcmUgZGVyZWdpc3RlcmluZyBhIHRhcmdldC5cblxuICAgKiBUaGUgcmFuZ2UgaXMgMC0zNjAwIHNlY29uZHMuXG5cbiAgICogQGRlZmF1bHRWYWx1ZSA1XG4gICovXG4gIHJlYWRvbmx5IGRlcmVnaXN0cmF0aW9uRGVsYXk/OiBjZGsuRHVyYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIENQVSB1bml0cyB0byByZXNlcnZlIGZvciB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gNjRcbiAgICovXG4gIHJlYWRvbmx5IGNwdT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCAoaW4gTWlCKSBvZiBtZW1vcnkgdG8gcHJlc2VudCB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBJZiB5b3VyIGNvbnRhaW5lciBhdHRlbXB0cyB0byBleGNlZWQgdGhlIGFsbG9jYXRlZCBtZW1vcnksIHRoZSBjb250YWluZXJcbiAgICogaXMgdGVybWluYXRlZC5cbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIG9mIG1lbW9yeUxpbWl0TWlCIGFuZCBtZW1vcnlSZXNlcnZhdGlvbk1pQiBpcyByZXF1aXJlZCBmb3Igbm9uLUZhcmdhdGUgc2VydmljZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSAxMjhcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHZpcnR1YWwgQ1BVIHVuaXRzIHRvIGJlIHJlc2VydmVkIGZvciB0aGUgZmlyZWxlbnMgbG9nLXJvdXRlciBjb250YWluZXIgKGkuZS4gYXdzLWZvci1mbHVlbnQtYml0KS5cbiAgICpcbiAgICogVGhpcyBvbmx5IGFwcGxpZXMgZm9yIHRoZSBBV1NfRklSRV9MRU5TIGxvZ2dpbmcgbW9kZS5cbiAgICogU2V0dGluZyBpdCBmb3IgYW55IG90aGVyIGxvZ2dpbmcgbW9kZSB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIDY0XG4gICAqL1xuICByZWFkb25seSBhd3NGaXJlTGVuc0NwdT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBtZW1vcnkgKGluIE1pQikgcmVzZXJ2ZWQgZm9yIHRoZSBmaXJlbGVucyBsb2ctcm91dGVyIGNvbnRhaW5lciAoaS5lLiBhd3MtZm9yLWZsdWVudC1iaXQpLlxuICAgKlxuICAgKiBUaGlzIG9ubHkgYXBwbGllcyBmb3IgdGhlIEFXU19GSVJFX0xFTlMgbG9nZ2luZyBtb2RlLlxuICAgKiBTZXR0aW5nIGl0IGZvciBhbnkgb3RoZXIgbG9nZ2luZyBtb2RlIHdpbGwgY2F1c2UgYW4gZXhjZXB0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gNjRcbiAgICovXG4gIHJlYWRvbmx5IGF3c0ZpcmVMZW5zTWVtb3J5TGltaXRNaUI/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2dnaW5nIG1vZGUgZm9yIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIC0gVXNpbmcgdGhlIERhdGFkb2cgbG9nIGZvcndhcmRlciBsYW1iZGEgcHJvdmlkZWQgYnkgdGhlIGRhdGFkb2ctaW50ZWdyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nTW9kZUZvclNlcnZpY2U/OiBEYXRhRG9nTG9nZ2luZ01vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2dnaW5nIG1vZGUgZm9yIHRoZSBEYXRhZG9nIGFnZW50IHNpZGVjYXIuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgLSBObyBsb2dzIGluIERhdGFkb2csIENsb3Vkd2F0Y2ggb25seS5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50PzogRGF0YURvZ0xvZ2dpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBHRVQgZW5kcG9pbnRzIHRvIGlnbm9yZSBpbiBEYXRhZG9nJ3MgQVBNIG92ZXJ2aWV3LiBUaGlzIGlzIHVzZWZ1bCB0byBmaWx0ZXIgb3V0IGFsbCBoZWFsdGggY2hlY2sgY2FsbHMuXG5cbiAgICAqIEBkZWZhdWx0VmFsdWUgLSBObyBlbmRwb2ludHMgYXJlIGlnbm9yZWQuXG4gICAgKi9cbiAgcmVhZG9ubHkgYXBtR2V0RW5kcG9pbnRzVG9JZ25vcmU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ29uZmlndXJlIGlmIHRoZSBEYXRhZG9nIGFnZW50IHNpZGVjYXIgaXMgbWFya2VkIGFzIGVzc2VudGlhbC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIHRydWUuXG4gICAqL1xuICByZWFkb25seSBkYXRhZG9nU2lkZWNhckVzc2VudGlhbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgdGhlIGRvY2tlciBpbWFnZSB0YWcgZm9yIGRhdGFkb2cgc2lkZWNhclxuICAgKiBAZGVmYXVsdFZhbHVlIC0gJ2xhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlY2FyVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIHlvdSBzZXQgdXAgYSByZXN0YXJ0IHBvbGljeSBmb3IgYSBjb250YWluZXIsIEFtYXpvbiBFQ1MgY2FuIHJlc3RhcnQgdGhlIGNvbnRhaW5lciB3aXRob3V0IG5lZWRpbmcgdG8gcmVwbGFjZSB0aGUgdGFza1xuICAgKiBAZGVmYXVsdFZhbHVlIC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlUmVzdGFydFBvbGljeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICogVGhlIGV4aXQgY29kZXMgdG8gYmUgaWdub3JlZCBieSB0aGUgcmVzdGFydCBwb2xpY3lcbiAgKiBAZGVmYXVsdFZhbHVlIC0gWzBdXG4gICovXG4gIHJlYWRvbmx5IHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzPzogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBhZGRpdGlvbmFsIHRhZ3MsIHdoaWNoIGFyZSBhcHBlbmRlZCB0byB0aGUgZGVmYXVsdHMsXG4gICAqIFdoZW4geW91IGRlZmluZSBjdXN0b20gdGFncyB3ZSB3b3VsZCBiZSBnbGFkIGlmIHlvdSBjb250YWN0IHVzLlxuICAgKiBXZSB3b3VsZCBsaWtlIHRvIGxlYXJuIGFib3V0IHlvdXIgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBEZWZhdWx0IHRhZ3MgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIG92ZXJyaWRkZW4hXG4gICAqXG4gICAqIERlZmF1bHRzIGFyZTpcbiAgICogKiBlbnY6IFNldCB0byBSaW9GYXJnYXRlU2VydmljZVByb3BzI3N0YWdlIHByb3BcbiAgICogKiBzZXJ2aWNlOiBTZXQgdG8gUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcyNzZXJ2aWNlTmFtZSBwcm9wXG4gICAqICogdmVyc2lvbjogU2V0IHRvIFJpb0ZhcmdhdGVTZXJ2aWNlUHJvcHMjdmVyc2lvbiBwcm9wXG4gICAqICogYWNjb3VudF9pZDokXFx7YWNjb3VudElEXFx9XG4gICAqICogYWNjb3VudF9uYW1lOiRcXHthY2NvdW50TmFtZVxcfVxuICAgKiAqIHJlZ2lvbjokXFx7QVdTUmVnaW9uXFx9XG4gICAqICogdGVhbTokXFx7dGVhbU5hbWUgZnJvbSBzc20gcGFyYW0gL2NvbmZpZy90ZWFtL25hbWVcXH1cbiAgICogKiB0ZWFtX2lkZW50aWZpZXI6JFxce3RlYW1JZGVudGlmaWVyIGZyb20gc3NtIHBhcmFtIC9jb25maWcvdGVhbS9pZGVudGlmaWVyXFx9XG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBlbnVtIERhdGFEb2dMb2dnaW5nTW9kZSB7XG4gIC8qKlxuICAgKiBGb3J3YXJkIGxvZ3MgZGlyZWN0bHkgdG8gRGF0YWRvZyB1c2luZyBBV1MgRmlyZUxlbnMgYXMgbG9nIHJvdXRlcixcbiAgICogc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2ludGVncmF0aW9ucy9lY3NfZmFyZ2F0ZS8/dGFiPWZsdWVudGJpdGFuZGZpcmVsZW5zI2xvZy1jb2xsZWN0aW9uLlxuICAgKi9cbiAgQVdTX0ZJUkVfTEVOUyxcblxuICAvKipcbiAgICogU3RvcmUgbG9ncyBpbiBBV1MgQ2xvdWR3YXRjaCBhbmQgdXNlIHRoZSBSSU8gY3VzdG9taXplZCBEYXRhZG9nIGxvZyBmb3J3YXJkZXIgbGFtYmRhIGZyb20gdGhlIGxlZ2FjeVxuICAgKiBkYXRhZG9nLWludGVncmF0aW9uLCB0byBmb3J3YXJkIHRoZSBsb2dzIHRvIERhdGFkb2csXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9iaXRidWNrZXQuY29sbGFib3JhdGlvbi1tYW4uY29tL3Byb2plY3RzL1JJT0RFVi9yZXBvcy9kYXRhZG9nLWludGVncmF0aW9uL2Jyb3dzZVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgREFUQURPR19GT1JXQVJERVJfTEFNQkRBXG4gICAqL1xuICBGT1JXQVJERVJfTEFNQkRBLFxuXG4gIC8qKlxuICAgKiBTdG9yZSBsb2dzIGluIEFXUyBDbG91ZHdhdGNoIGFuZCB1c2UgdGhlIERhdGFkb2cgbG9nIGZvcndhcmRlciBsYW1iZGEgdG8gZm9yd2FyZCB0aGUgbG9ncyB0byBEYXRhZG9nLFxuICAgKiBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2Vjc19mYXJnYXRlLz90YWI9bG9nZHJpdmVyI2xvZy1jb2xsZWN0aW9uLlxuICAgKi9cbiAgREFUQURPR19GT1JXQVJERVJfTEFNQkRBLFxuXG4gIC8qKlxuICAgKiBPbmx5IGxvZyB0byBBV1MgQ2xvdWR3YXRjaCB3aXRob3V0IGZvcndhcmRpbmcgdGhlIGxvZ3MgdG8gRGF0YWRvZy5cbiAgICovXG4gIE5PTkUsXG59XG5cbmV4cG9ydCBjbGFzcyBSaW9GYXJnYXRlU2VydmljZSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IGltcGxlbWVudHMgZWMyLklDb25uZWN0YWJsZSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRERfRU5WX0RFTllfTElTVCA9IFtcbiAgICAnRERfRU5WJyxcbiAgICAnRERfVEFHUycsXG4gICAgJ0REX1NFUlZJQ0UnLFxuICAgICdERF9WRVJTSU9OJyxcbiAgICAnRERfTE9HU19JTkpFQ1RJT04nLFxuICBdO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEREX1RBR19ERU5ZX0xJU1QgPSBbXG4gICAgJ2VudicsXG4gICAgJ3NlcnZpY2UnLFxuICAgICd2ZXJzaW9uJyxcbiAgICAnYWNjb3VudF9pZCcsXG4gICAgJ2FjY291bnRfbmFtZScsXG4gICAgJ3JlZ2lvbicsXG4gICAgJ3RlYW0nLFxuICAgICd0ZWFtX2lkZW50aWZpZXInLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9BUE1fR0VUX0VORFBPSU5UU19UT19JR05PUkU6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfQ1BVID0gNjQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQiA9IDEyODtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RBVEFET0dfU0lERUNBUl9FU1NFTlRJQUwgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19FTkFCTEVfUkVTVEFSVF9QT0xJQ1kgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19SRVNUQVJUX0lHTk9SRURfRVhJVF9DT0RFUyA9IFswXTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRSA9IERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPSBEYXRhRG9nTG9nZ2luZ01vZGUuTk9ORTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZID0gY2RrLkR1cmF0aW9uLnNlY29uZHMoNSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9TTE9XX1NUQVJUID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRyA9ICdsYXRlc3QnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9MT0dfUk9VVEVSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCID0gNjQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBGSVJFTEVOU19DT05GSUdfQlVDS0VUX0FSTiA9ICdhcm46YXdzOnMzOjo6NTc3MTQ2ODk3Nzg1LWV1LXdlc3QtMS1maXJlbGVucy1jb25maWd1cmF0aW9uLWJ1Y2tldCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRklSRUxFTlNfQ09ORklHX0ZJTEVfUEFUSCA9ICcvcGFyc2UtanNvbi5jb25mJztcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSB0YXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cHx1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLFxuICAgICAgdnBjLFxuICAgICAgY2x1c3RlcixcbiAgICAgIGZhcmdhdGVPcHRpb25zLFxuICAgICAgZGF0YWRvZ09wdGlvbnMsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24sXG4gICAgICBzdGFnZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBmcmFtZXdvcmtzLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2UuRERfRU5WX0RFTllfTElTVCxcbiAgICAgIHByb3BzLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICBpdCA9PiBgRW52aXJvbm1lbnQgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgKSk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICBSaW9GYXJnYXRlU2VydmljZS5ERF9UQUdfREVOWV9MSVNULFxuICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgaXQgPT4gYFRhZyAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICApKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBDbHVzdGVyVnBjVmFsaWRhdG9yKFxuICAgICAgcHJvcHMudnBjLFxuICAgICAgcHJvcHMuY2x1c3RlcixcbiAgICApKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBEYXRhZG9nU2lkZUNhclZhbGlkYXRvcihcbiAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zLFxuICAgICkpO1xuXG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IEZpcmVsZW5zU2lkZUNhclZhbGlkYXRvcihcbiAgICAgIHByb3BzLmRhdGFkb2dPcHRpb25zLFxuICAgICkpO1xuXG4gICAgY29uc3QgZmFyZ2F0ZUNsdXN0ZXIgPSBjbHVzdGVyID8/IG5ldyBlY3MuQ2x1c3Rlcih0aGlzLCAnQ2x1c3RlcicsIHtcbiAgICAgIHZwYzogdnBjLFxuICAgIH0pO1xuICAgIHRoaXMudGFza0RlZmluaXRpb24gPSBuZXcgZWNzLkZhcmdhdGVUYXNrRGVmaW5pdGlvbih0aGlzLCAnVGFza0RlZmluaXRpb24nLCB7XG4gICAgICBjcHU6IGZhcmdhdGVPcHRpb25zLmNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQixcbiAgICAgIHJ1bnRpbWVQbGF0Zm9ybToge1xuICAgICAgICBjcHVBcmNoaXRlY3R1cmU6IGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8uY3B1QXJjaGl0ZWN0dXJlID8/IGVjcy5DcHVBcmNoaXRlY3R1cmUuWDg2XzY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGZhcmdhdGVPcHRpb25zLnJ1bnRpbWVQbGF0Zm9ybT8ub3BlcmF0aW5nU3lzdGVtRmFtaWx5ID8/IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGFjY291bnROYW1lID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnQWNjb3VudE5hbWUnLCAnL2NvbmZpZy9hY2NvdW50L25hbWUnKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0ZWFtTmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgJ1RlYW1OYW1lJywgJy9jb25maWcvdGVhbS9uYW1lJykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtSWRlbnRpZmllcicsICcvY29uZmlnL3RlYW0vaWRlbnRpZmllcicpLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NlY3JldCA9IERhdGFkb2dTaGFyZWRTZWNyZXQuY3JlZGVudGlhbHNTZWNyZXQodGhpcyk7XG4gICAgY29uc3QgZGF0YWRvZ1NpdGUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldFZhbHVlKCdTaXRlJykudG9TdHJpbmcoKTtcbiAgICBjb25zdCBkYXRhZG9nQXBpS2V5ID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXQoJ0FwaUtleScpO1xuICAgIGRhdGFkb2dTZWNyZXQuZ3JhbnRSZWFkKHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuXG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJDcHUgPSBkYXRhZG9nT3B0aW9ucz8uY3B1ID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfQ1BVO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCID0gZGF0YWRvZ09wdGlvbnM/Lm1lbW9yeUxpbWl0TWlCID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfTUVNT1JZX0xJTUlUX01JQjtcblxuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9IGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvclNlcnZpY2UgPz8gdGhpcy5ERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRTtcbiAgICBjb25zdCBsb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA9IGRhdGFkb2dPcHRpb25zPy5sb2dnaW5nTW9kZUZvckRhdGFkb2dBZ2VudCA/PyB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVI7XG4gICAgY29uc3QgZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCA9XG4gICAgICAgIGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlMgfHxcbiAgICAgICAgbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPT09IERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TO1xuXG4gICAgY29uc3QgZmlyZUxlbnNTaWRlY2FyQ3B1ID0gZGF0YWRvZ09wdGlvbnM/LmF3c0ZpcmVMZW5zQ3B1ID8/IHRoaXMuREVGQVVMVF9MT0dfUk9VVEVSX0NQVTtcbiAgICBjb25zdCBmaXJlTGVuc1NpZGVjYXJNZW1vcnlNaUIgPSBkYXRhZG9nT3B0aW9ucz8uYXdzRmlyZUxlbnNNZW1vcnlMaW1pdE1pQiA/PyB0aGlzLkRFRkFVTFRfTE9HX1JPVVRFUl9NRU1PUllfTElNSVRfTUlCO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID0gZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuICAgIGNvbnN0IGRhdGFEb2dFbmFibGVSZXN0YXJ0UG9saWN5ID0gZGF0YWRvZ09wdGlvbnM/LmVuYWJsZVJlc3RhcnRQb2xpY3kgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfRU5BQkxFX1JFU1RBUlRfUE9MSUNZO1xuXG4gICAgZnVuY3Rpb24gZ2V0UmVzdGFydElnbm9yZWRFeGl0Q29kZXMoXG4gICAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICAgICAgcmVzdGFydElnbm9yZWRFeGl0Q29kZXM6IG51bWJlcltdIHwgdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdElnbm9yZWRFeGl0Q29kZXM6IG51bWJlcltdLFxuICAgICk6IG51bWJlcltdIHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmIChlbmFibGVSZXN0YXJ0UG9saWN5ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIGlmIChlbmFibGVSZXN0YXJ0UG9saWN5ID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiByZXN0YXJ0SWdub3JlZEV4aXRDb2RlcyA/PyBbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdElnbm9yZWRFeGl0Q29kZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YURvZ3Jlc3RhcnRJZ25vcmVkRXhpdENvZGVzID0gZ2V0UmVzdGFydElnbm9yZWRFeGl0Q29kZXMoXG4gICAgICBkYXRhRG9nRW5hYmxlUmVzdGFydFBvbGljeSxcbiAgICAgIGRhdGFkb2dPcHRpb25zPy5yZXN0YXJ0SWdub3JlZEV4aXRDb2RlcyxcbiAgICAgIHRoaXMuREVGQVVMVF9EQVRBRE9HX1JFU1RBUlRfSUdOT1JFRF9FWElUX0NPREVTLFxuICAgICk7XG5cbiAgICBsZXQgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzO1xuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUI7XG5cbiAgICBpZiAoZmlyZUxlbnNMb2dSb3V0ZXJSZXF1aXJlZCkge1xuICAgICAgc2VydmljZUNvbnRhaW5lckNwdVVuaXRzID0gZmFyZ2F0ZU9wdGlvbnMuY3B1IC0gZGF0YWRvZ1NpZGVjYXJDcHUgLSBmaXJlTGVuc1NpZGVjYXJDcHU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPSBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCIC0gZmlyZUxlbnNTaWRlY2FyTWVtb3J5TWlCO1xuICAgICAgZGF0YWRvZy5hZGRGaXJlbGVuc0NvbmZpZ1VwbG9hZEZyb21TM1Blcm1pc3Npb25zKHtcbiAgICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID0gZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKHNlcnZpY2VOYW1lLCB7XG4gICAgICBpbWFnZTogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5pbWFnZSxcbiAgICAgIGNwdTogc2VydmljZUNvbnRhaW5lckNwdVVuaXRzLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgfSxcbiAgICAgIGRvY2tlckxhYmVsczoge1xuICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICB9LFxuICAgICAgaGVhbHRoQ2hlY2s6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaGVhbHRoQ2hlY2ssXG4gICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgIHNjb3BlLFxuICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICBzdGFnZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGRhdGFkb2dBcGlLZXksXG4gICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgfSksXG4gICAgICBzZWNyZXRzOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLnNlY3JldHMsXG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWV3b3Jrcz8uaW5jbHVkZXMoRnJhbWV3b3JrLlNQUklORykpIHtcbiAgICAgIFNwcmluZy5hbGxvd1BhcmFtZXRlclN0b3JlQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3ModGhpcywgc2VydmljZU5hbWUsIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuICAgICAgU3ByaW5nLmFsbG93U2VjcmV0c01hbmFnZXJBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyh0aGlzLCBzZXJ2aWNlTmFtZSwgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiBmaXJlTGVuc1NpZGVjYXJDcHUsXG4gICAgICAgIG1lbW9yeUxpbWl0TWlCOiBmaXJlTGVuc1NpZGVjYXJNZW1vcnlNaUIsXG4gICAgICAgIGZpcmVsZW5zQ29uZmlnQnVja2V0QXJuOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19CVUNLRVRfQVJOLFxuICAgICAgICBmaXJlbGVuc0NvbmZpZ0ZpbGVQYXRoOiB0aGlzLkZJUkVMRU5TX0NPTkZJR19GSUxFX1BBVEgsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRhc2tEZWZpbml0aW9uLmV4ZWN1dGlvblJvbGU/LmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3knKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhc2tEZWZpbml0aW9uLmV4ZWN1dGlvblJvbGUpIHtcbiAgICAgIGRhdGFkb2dTZWNyZXQuZ3JhbnRSZWFkKHRoaXMudGFza0RlZmluaXRpb24uZXhlY3V0aW9uUm9sZSk7XG4gICAgfVxuICAgIHRoaXMuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uID0gZGF0YWRvZy5hZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uOiB0aGlzLnRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5LFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50LFxuICAgICAgYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmU6IGRhdGFkb2dPcHRpb25zPy5hcG1HZXRFbmRwb2ludHNUb0lnbm9yZSA/PyB0aGlzLkRFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFLFxuICAgICAgY3B1OiBkYXRhZG9nU2lkZWNhckNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCOiBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQixcbiAgICAgIGVzc2VudGlhbDogZGF0YWRvZ1NpZGVjYXJFc3NlbnRpYWwsXG4gICAgICBlbmFibGVSZXN0YXJ0UG9saWN5OiBkYXRhRG9nRW5hYmxlUmVzdGFydFBvbGljeSxcbiAgICAgIHJlc3RhcnRJZ25vcmVkRXhpdENvZGVzOiBkYXRhRG9ncmVzdGFydElnbm9yZWRFeGl0Q29kZXMsXG4gICAgICBjb250YWluZXJUYWc6IHByb3BzLmRhdGFkb2dPcHRpb25zPy5kYXRhZG9nU2lkZWNhclRhZyA/PyB0aGlzLkRFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRywgLy8gVGhlc2UgYXJlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyxcbiAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG5cbiAgICBkYXRhZG9nLmVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHRoaXMpO1xuXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyT3B0aW9uc0ZvckZhcmdhdGVTZXJ2aWNlID0gbG9hZEJhbGFuY2VyT3B0aW9uc1xuICAgICAgPyB7IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IGxvYWRCYWxhbmNlck9wdGlvbnMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCB9XG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5zZXJ2aWNlID0gbmV3IGVjcy5GYXJnYXRlU2VydmljZSh0aGlzLCAnU2VydmljZScsIHtcbiAgICAgIGNsdXN0ZXI6IGZhcmdhdGVDbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBjaXJjdWl0QnJlYWtlcjogeyByb2xsYmFjazogdHJ1ZSB9LFxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDIwMCxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXG4gICAgICBkZXNpcmVkQ291bnQ6IGZhcmdhdGVPcHRpb25zPy5kZXNpcmVkQ291bnQsXG4gICAgICAuLi5sb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UsXG4gICAgICBwcm9wYWdhdGVUYWdzOiBlY3MuUHJvcGFnYXRlZFRhZ1NvdXJjZS5TRVJWSUNFLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuc2VydmljZS5jb25uZWN0aW9ucztcblxuICAgIGlmIChsb2FkQmFsYW5jZXJPcHRpb25zICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclBvcnQgPSA0NDM7XG4gICAgICB0aGlzLnNlcnZpY2VDb250YWluZXJEZWZpbml0aW9uLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IGNvbnRhaW5lclBvcnQsXG4gICAgICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRhcmdldEdyb3VwID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAodGhpcywgJ1RhcmdldEdyb3VwJywge1xuICAgICAgICB2cGM6IHZwYyxcbiAgICAgICAgcG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICAgIHRhcmdldFR5cGU6IGVsYnYyLlRhcmdldFR5cGUuSVAsXG4gICAgICAgIHRhcmdldHM6IFt0aGlzLnNlcnZpY2VdLFxuICAgICAgICBoZWFsdGhDaGVjazogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVjayxcbiAgICAgICAgc2xvd1N0YXJ0OiBwcm9wcy5sb2FkQmFsYW5jZXJPcHRpb25zPy5zbG93U3RhcnQgPz8gdGhpcy5ERUZBVUxUX1NMT1dfU1RBUlQsXG4gICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6IHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LmRlcmVnaXN0cmF0aW9uRGVsYXkgPz8gdGhpcy5ERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZLFxuICAgICAgfSk7XG5cbiAgICAgIGxvYWRCYWxhbmNlck9wdGlvbnMubGlzdGVuZXJSdWxlcy5mb3JFYWNoKCh7IHByaW9yaXR5LCBjb25kaXRpb25zIH0pID0+IHtcbiAgICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lci5hZGRUYXJnZXRHcm91cHMoYFByaW9yaXR5JHtwcmlvcml0eX1MaXN0ZW5lclJ1bGVgLCB7XG4gICAgICAgICAgdGFyZ2V0R3JvdXBzOiBbdGhpcy50YXJnZXRHcm91cCBhcyBlbGJ2Mi5BcHBsaWNhdGlvblRhcmdldEdyb3VwXSxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgY29uZGl0aW9uczogY29uZGl0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXcgRGF0YWRvZ1NlcnZpY2VDYXRhbG9nRW50cnkodGhpcywgJ0RhdGFkb2dTZXJ2aWNlQ2F0YWxvZ0VudHJ5Jywge1xuICAgICAgc2VydmljZU5hbWU6IHNlcnZpY2VOYW1lLFxuICAgICAgbGFuZ3VhZ2VzOiBbJ2phdmEnXSxcbiAgICAgIHNlcnZpY2VUeXBlOiAnd2ViJyxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVueUxpc3Q6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGljdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VHZW5lcmF0b3I6IChrZXlOYW1lOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGljdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmRlbnlMaXN0LmZvckVhY2goa2V5TmFtZSA9PiB7XG4gICAgICBpZiAodGhpcy5kaWN0ICYmIGtleU5hbWUgaW4gdGhpcy5kaWN0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWVzc2FnZUdlbmVyYXRvcihrZXlOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIENsdXN0ZXJWcGNWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcixcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5jbHVzdGVyICYmIHRoaXMuY2x1c3Rlci52cGMudnBjSWQgIT09IHRoaXMudnBjLnZwY0lkKSB7XG4gICAgICByZXN1bHQucHVzaChgVGhlIFZQQyBwcm92aWRlZCBpbiB0aGUgY2x1c3RlciAoJHt0aGlzLmNsdXN0ZXIudnBjLm5vZGUuaWR9KSBNVVNUIG1hdGNoIHRoZSBWUEMgcHJvdmlkZWQgYXMgYXJndW1lbnQgKCR7dGhpcy52cGMubm9kZS5pZH0pLmApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIERhdGFkb2dTaWRlQ2FyVmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGF0YWRvZ09wdGlvbnM/OiBEYXRhZG9nSW50ZWdyYXRpb25Qcm9wcykge31cbiAgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGFkb2dPcHRpb25zICYmIHRoaXMuZGF0YWRvZ09wdGlvbnMuZW5hYmxlUmVzdGFydFBvbGljeSA9PT0gZmFsc2UgJiYgdGhpcy5kYXRhZG9nT3B0aW9ucy5yZXN0YXJ0SWdub3JlZEV4aXRDb2Rlcykge1xuICAgICAgcmVzdWx0LnB1c2goJ1Jlc3RhcnRJZ25vcmVkRXhpdENvZGVzIGNhbm5vdCBiZSBzcGVjaWZpZWQgaWYgZW5hYmxlUmVzdGFydFBvbGljeSBpcyBmYWxzZScpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIEZpcmVsZW5zU2lkZUNhclZhbGlkYXRvciBpbXBsZW1lbnRzIGNvbnN0cnVjdHMuSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHMpIHtcbiAgfVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5kYXRhZG9nT3B0aW9ucykge1xuICAgICAgY29uc3QgaXNGaXJlbGVuc1VzZWQgPSB0aGlzLmRhdGFkb2dPcHRpb25zLmxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOU1xuICAgICAgICAgIHx8IHRoaXMuZGF0YWRvZ09wdGlvbnMubG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQgPT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM7XG4gICAgICBjb25zdCBpc0ZpcmVsZW5zQ29uZmlndXJlZCA9IHRoaXMuZGF0YWRvZ09wdGlvbnMuYXdzRmlyZUxlbnNDcHUgfHwgdGhpcy5kYXRhZG9nT3B0aW9ucy5hd3NGaXJlTGVuc01lbW9yeUxpbWl0TWlCO1xuXG4gICAgICBpZiAoIWlzRmlyZWxlbnNVc2VkICYmIGlzRmlyZWxlbnNDb25maWd1cmVkKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCdZb3UgY2Fubm90IG92ZXJyaWRlIHRoZSBjb250YWluZXIgcmVzb3VyY2UgYWxsb2NhdGlvbiBmb3IgZmlyZWxlbnMgaWYgaXQgaXMgbm90IHVzZWQgYXMgbG9nZ2luZyBtb2RlIGZvciBhbnkgY29udGFpbmVyJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
package/version.json
CHANGED