@horietakehiro/aws-cdk-utul 0.41.48 → 0.41.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/types/cfn-resource-types/aws-athena-workgroup.d.ts +130 -1
- package/lib/types/cfn-resource-types/aws-athena-workgroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-backup-backupplan.d.ts +14 -13
- package/lib/types/cfn-resource-types/aws-backup-backupplan.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-dataautomationproject.d.ts +8 -0
- package/lib/types/cfn-resource-types/aws-bedrock-dataautomationproject.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-knowledgebase.d.ts +22 -1
- package/lib/types/cfn-resource-types/aws-bedrock-knowledgebase.js +1 -1
- package/lib/types/cfn-resource-types/aws-billingconductor-billinggroup.d.ts +16 -5
- package/lib/types/cfn-resource-types/aws-billingconductor-billinggroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-cassandra-table.d.ts +8 -0
- package/lib/types/cfn-resource-types/aws-cassandra-table.js +1 -1
- package/lib/types/cfn-resource-types/aws-cloudformation-stackset.d.ts +8 -0
- package/lib/types/cfn-resource-types/aws-cloudformation-stackset.js +1 -1
- package/lib/types/cfn-resource-types/aws-cloudfront-connectionfunction.d.ts +29 -0
- package/lib/types/cfn-resource-types/aws-cloudfront-connectionfunction.js +3 -0
- package/lib/types/cfn-resource-types/aws-cloudfront-distribution.d.ts +14 -0
- package/lib/types/cfn-resource-types/aws-cloudfront-distribution.js +1 -1
- package/lib/types/cfn-resource-types/aws-cloudfront-truststore.d.ts +60 -0
- package/lib/types/cfn-resource-types/aws-cloudfront-truststore.js +3 -0
- package/lib/types/cfn-resource-types/aws-cloudtrail-trail.d.ts +26 -0
- package/lib/types/cfn-resource-types/aws-cloudtrail-trail.js +1 -1
- package/lib/types/cfn-resource-types/aws-cognito-terms.d.ts +23 -0
- package/lib/types/cfn-resource-types/aws-cognito-terms.js +3 -0
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.d.ts +166 -172
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.js +1 -1
- package/lib/types/cfn-resource-types/aws-customerprofiles-domain.d.ts +26 -0
- package/lib/types/cfn-resource-types/aws-customerprofiles-domain.js +1 -1
- package/lib/types/cfn-resource-types/aws-dsql-cluster.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-dsql-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-natgateway.d.ts +29 -19
- package/lib/types/cfn-resource-types/aws-ec2-natgateway.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-networkaclentry.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-ec2-networkaclentry.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewaymeteringpolicy.d.ts +30 -0
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewaymeteringpolicy.js +3 -0
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewaymeteringpolicyentry.d.ts +61 -0
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewaymeteringpolicyentry.js +3 -0
- package/lib/types/cfn-resource-types/aws-ec2-vpcencryptioncontrol.d.ts +92 -0
- package/lib/types/cfn-resource-types/aws-ec2-vpcencryptioncontrol.js +3 -0
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.d.ts +6 -0
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecr-pulltimeupdateexclusion.d.ts +10 -0
- package/lib/types/cfn-resource-types/aws-ecr-pulltimeupdateexclusion.js +3 -0
- package/lib/types/cfn-resource-types/aws-ecr-signingconfiguration.d.ts +44 -0
- package/lib/types/cfn-resource-types/aws-ecr-signingconfiguration.js +3 -0
- package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.d.ts +9 -0
- package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-expressgatewayservice.d.ts +83 -0
- package/lib/types/cfn-resource-types/aws-ecs-expressgatewayservice.js +3 -0
- package/lib/types/cfn-resource-types/aws-eks-cluster.d.ts +10 -0
- package/lib/types/cfn-resource-types/aws-eks-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-entityresolution-matchingworkflow.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-entityresolution-matchingworkflow.js +1 -1
- package/lib/types/cfn-resource-types/aws-fsx-filesystem.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-fsx-filesystem.js +1 -1
- package/lib/types/cfn-resource-types/aws-fsx-storagevirtualmachine.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-fsx-storagevirtualmachine.js +1 -1
- package/lib/types/cfn-resource-types/aws-kinesisvideo-stream.d.ts +10 -0
- package/lib/types/cfn-resource-types/aws-kinesisvideo-stream.js +1 -1
- package/lib/types/cfn-resource-types/aws-kms-key.d.ts +3 -0
- package/lib/types/cfn-resource-types/aws-kms-key.js +1 -1
- package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.d.ts +8 -5
- package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.js +1 -1
- package/lib/types/cfn-resource-types/aws-lambda-function.d.ts +7 -0
- package/lib/types/cfn-resource-types/aws-lambda-function.js +1 -1
- package/lib/types/cfn-resource-types/aws-msk-cluster.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-msk-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-opensearchserverless-collection.d.ts +18 -43
- package/lib/types/cfn-resource-types/aws-opensearchserverless-collection.js +1 -1
- package/lib/types/cfn-resource-types/aws-pcs-cluster.d.ts +68 -38
- package/lib/types/cfn-resource-types/aws-pcs-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-rbin-rule.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-rbin-rule.js +1 -1
- package/lib/types/cfn-resource-types/aws-rum-appmonitor.d.ts +79 -34
- package/lib/types/cfn-resource-types/aws-rum-appmonitor.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3-bucket.d.ts +9 -0
- package/lib/types/cfn-resource-types/aws-s3-bucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-cluster.d.ts +59 -0
- package/lib/types/cfn-resource-types/aws-sagemaker-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-partnerapp.d.ts +12 -0
- package/lib/types/cfn-resource-types/aws-sagemaker-partnerapp.js +1 -1
- package/lib/types/cfn-resource-types/aws-secretsmanager-rotationschedule.d.ts +21 -0
- package/lib/types/cfn-resource-types/aws-secretsmanager-rotationschedule.js +1 -1
- package/lib/types/cfn-resource-types/aws-secretsmanager-secret.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-secretsmanager-secret.js +1 -1
- package/lib/types/cfn-resource-types/aws-securityhub-automationrulev2.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-securityhub-automationrulev2.js +1 -1
- package/lib/types/cfn-resource-types/aws-wisdom-aiagent.d.ts +27 -2
- package/lib/types/cfn-resource-types/aws-wisdom-aiagent.js +1 -1
- package/lib/types/cfn-resource-types.d.ts +18 -0
- package/lib/types/cfn-resource-types.js +45 -27
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzLWJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1zMy1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW1hem9uIFMzIGtleSBmb3JtYXQgZm9yIGxvZyBvYmplY3RzLiBPbmx5IG9uZSBmb3JtYXQsIGVpdGhlciBQYXJ0aXRpb25lZFByZWZpeCBvciBTaW1wbGVQcmVmaXgsIGlzIGFsbG93ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFRhcmdldE9iamVjdEtleUZvcm1hdCA9ICh7XG4vKipcbiAqIFRoaXMgZm9ybWF0IGRlZmF1bHRzIHRoZSBwcmVmaXggdG8gdGhlIGdpdmVuIGxvZyBmaWxlIHByZWZpeCBmb3IgZGVsaXZlcmluZyBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlLlxuICovXG5TaW1wbGVQcmVmaXg6IHtcblxufVxufSB8IHtcblBhcnRpdGlvbmVkUHJlZml4OiBQYXJ0aXRpb25lZFByZWZpeFxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OlMzOjpCdWNrZXRgYCByZXNvdXJjZSBjcmVhdGVzIGFuIEFtYXpvbiBTMyBidWNrZXQgaW4gdGhlIHNhbWUgQVdTIFJlZ2lvbiB3aGVyZSB5b3UgY3JlYXRlIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gKiAgVG8gY29udHJvbCBob3cgQVdTIENsb3VkRm9ybWF0aW9uIGhhbmRsZXMgdGhlIGJ1Y2tldCB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLCB5b3UgY2FuIHNldCBhIGRlbGV0aW9uIHBvbGljeSBmb3IgeW91ciBidWNrZXQuIFlvdSBjYW4gY2hvb3NlIHRvICpyZXRhaW4qIHRoZSBidWNrZXQgb3IgdG8gKmRlbGV0ZSogdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRGVsZXRpb25Qb2xpY3kgQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLWRlbGV0aW9ucG9saWN5Lmh0bWwpLlxuICogICBZb3UgY2FuIG9ubHkgZGVsZXRlIGVtcHR5IGJ1Y2tldHMuIERlbGV0aW9uIGZhaWxzIGZvciBidWNrZXRzIHRoYXQgaGF2ZSBjb250ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1MzX0JVQ0tFVCB7XG5BY2NlbGVyYXRlQ29uZmlndXJhdGlvbj86IEFjY2VsZXJhdGVDb25maWd1cmF0aW9uXG4vKipcbiAqIFRoaXMgaXMgYSBsZWdhY3kgcHJvcGVydHksIGFuZCBpdCBpcyBub3QgcmVjb21tZW5kZWQgZm9yIG1vc3QgdXNlIGNhc2VzLiBBIG1ham9yaXR5IG9mIG1vZGVybiB1c2UgY2FzZXMgaW4gQW1hem9uIFMzIG5vIGxvbmdlciByZXF1aXJlIHRoZSB1c2Ugb2YgQUNMcywgYW5kIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBrZWVwIEFDTHMgZGlzYWJsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnRyb2xsaW5nIG9iamVjdCBvd25lcnNoaXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogICBBIGNhbm5lZCBhY2Nlc3MgY29udHJvbCBsaXN0IChBQ0wpIHRoYXQgZ3JhbnRzIHByZWRlZmluZWQgcGVybWlzc2lvbnMgdG8gdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY2FubmVkIEFDTHMsIHNlZSBbQ2FubmVkIEFDTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYWNsLW92ZXJ2aWV3Lmh0bWwjY2FubmVkLWFjbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKiAgIFMzIGJ1Y2tldHMgYXJlIGNyZWF0ZWQgd2l0aCBBQ0xzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoZXJlZm9yZSwgdW5sZXNzIHlvdSBleHBsaWNpdGx5IHNldCB0aGUgW0FXUzo6UzM6Ok93bmVyc2hpcENvbnRyb2xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW93bmVyc2hpcGNvbnRyb2xzLmh0bWwpIHByb3BlcnR5IHRvIGVuYWJsZSBBQ0xzLCB5b3VyIHJlc291cmNlIHdpbGwgZmFpbCB0byBkZXBsb3kgd2l0aCBhbnkgdmFsdWUgb3RoZXIgdGhhbiBQcml2YXRlLiBVc2UgY2FzZXMgcmVxdWlyaW5nIEFDTHMgYXJlIHVuY29tbW9uLlxuICogICBUaGUgbWFqb3JpdHkgb2YgYWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbnMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBhbmQgbW9yZSBlYXNpbHkgYWNoaWV2ZWQgd2l0aCBidWNrZXQgcG9saWNpZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FXUzo6UzM6OkJ1Y2tldFBvbGljeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLXBvbGljeS5odG1sKS4gRm9yIGV4YW1wbGVzIG9mIGNvbW1vbiBwb2xpY3kgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBTMyBTZXJ2ZXIgQWNjZXNzIExvZ3MgYnVja2V0cyBhbmQgbW9yZSwgc2VlIFtCdWNrZXQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9leGFtcGxlLWJ1Y2tldC1wb2xpY2llcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuQWNjZXNzQ29udHJvbD86IChcIkF1dGhlbnRpY2F0ZWRSZWFkXCIgfCBcIkF3c0V4ZWNSZWFkXCIgfCBcIkJ1Y2tldE93bmVyRnVsbENvbnRyb2xcIiB8IFwiQnVja2V0T3duZXJSZWFkXCIgfCBcIkxvZ0RlbGl2ZXJ5V3JpdGVcIiB8IFwiUHJpdmF0ZVwiIHwgXCJQdWJsaWNSZWFkXCIgfCBcIlB1YmxpY1JlYWRXcml0ZVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBhbmFseXNlcyBmb3IgdGhlIGFuYWx5dGljcyBmaWx0ZXIgb2YgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuQW5hbHl0aWNzQ29uZmlndXJhdGlvbnM/OiBBbmFseXRpY3NDb25maWd1cmF0aW9uW11cbkJ1Y2tldEVuY3J5cHRpb24/OiBCdWNrZXRFbmNyeXB0aW9uXG4vKipcbiAqIEEgbmFtZSBmb3IgdGhlIGJ1Y2tldC4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSBuYW1lLCBBV1MgQ2xvdWRGb3JtYXRpb24gZ2VuZXJhdGVzIGEgdW5pcXVlIElEIGFuZCB1c2VzIHRoYXQgSUQgZm9yIHRoZSBidWNrZXQgbmFtZS4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBwZXJpb2RzICguKSwgYW5kIGRhc2hlcyAoLSkgYW5kIG11c3QgZm9sbG93IFtBbWF6b24gUzMgYnVja2V0IHJlc3RyaWN0aW9ucyBhbmQgbGltaXRhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L0J1Y2tldFJlc3RyaWN0aW9ucy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUnVsZXMgZm9yIG5hbWluZyBBbWF6b24gUzMgYnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYnVja2V0bmFtaW5ncnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouIFxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG5hbWUsIHlvdSBjYW4ndCBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIHJlcGxhY2VtZW50IG9mIHRoaXMgcmVzb3VyY2UuIFlvdSBjYW4gcGVyZm9ybSB1cGRhdGVzIHRoYXQgcmVxdWlyZSBubyBvciBzb21lIGludGVycnVwdGlvbi4gSWYgeW91IG5lZWQgdG8gcmVwbGFjZSB0aGUgcmVzb3VyY2UsIHNwZWNpZnkgYSBuZXcgbmFtZS5cbiAqL1xuQnVja2V0TmFtZT86IHN0cmluZ1xuQ29yc0NvbmZpZ3VyYXRpb24/OiBDb3JzQ29uZmlndXJhdGlvblxuLyoqXG4gKiBEZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UuXG4gKi9cbkludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zPzogSW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgUzMgSW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5JbnZlbnRvcnlDb25maWd1cmF0aW9ucz86IEludmVudG9yeUNvbmZpZ3VyYXRpb25bXVxuTGlmZWN5Y2xlQ29uZmlndXJhdGlvbj86IExpZmVjeWNsZUNvbmZpZ3VyYXRpb25cbkxvZ2dpbmdDb25maWd1cmF0aW9uPzogTG9nZ2luZ0NvbmZpZ3VyYXRpb25cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVE1ldHJpY0NvbmZpZ3VyYXRpb24uaHRtbCkuXG4gKi9cbk1ldHJpY3NDb25maWd1cmF0aW9ucz86IE1ldHJpY3NDb25maWd1cmF0aW9uW11cbk1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25cbk1ldGFkYXRhQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhQ29uZmlndXJhdGlvblxuTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbj86IE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25cbk9iamVjdExvY2tDb25maWd1cmF0aW9uPzogT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBidWNrZXQgaGFzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gZW5hYmxlZC4gRW5hYmxlIGBgT2JqZWN0TG9ja0VuYWJsZWRgYCB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuXG4gKi9cbk9iamVjdExvY2tFbmFibGVkPzogYm9vbGVhblxuT3duZXJzaGlwQ29udHJvbHM/OiBPd25lcnNoaXBDb250cm9sc1xuUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uPzogUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uXG5SZXBsaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBSZXBsaWNhdGlvbkNvbmZpZ3VyYXRpb25cbi8qKlxuICogQW4gYXJiaXRyYXJ5IHNldCBvZiB0YWdzIChrZXktdmFsdWUgcGFpcnMpIGZvciB0aGlzIFMzIGJ1Y2tldC5cbiAqL1xuVGFncz86IFRhZ1tdXG5WZXJzaW9uaW5nQ29uZmlndXJhdGlvbj86IFZlcnNpb25pbmdDb25maWd1cmF0aW9uXG5XZWJzaXRlQ29uZmlndXJhdGlvbj86IFdlYnNpdGVDb25maWd1cmF0aW9uXG5Bcm4/OiBzdHJpbmdcbkRvbWFpbk5hbWU/OiBzdHJpbmdcbkR1YWxTdGFja0RvbWFpbk5hbWU/OiBzdHJpbmdcblJlZ2lvbmFsRG9tYWluTmFtZT86IHN0cmluZ1xuV2Vic2l0ZVVSTD86IHN0cmluZ1xufVxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSB0cmFuc2ZlciBhY2NlbGVyYXRpb24gc3RhdGUgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBTMyBUcmFuc2ZlciBBY2NlbGVyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3RyYW5zZmVyLWFjY2VsZXJhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdHJhbnNmZXIgYWNjZWxlcmF0aW9uIHN0YXR1cyBvZiB0aGUgYnVja2V0LlxuICovXG5BY2NlbGVyYXRpb25TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiU3VzcGVuZGVkXCIpXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgYW55IGFuYWx5c2VzIGZvciB0aGUgYW5hbHl0aWNzIGZpbHRlciBvZiBhbiBBbWF6b24gUzMgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5dGljc0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgdGFncyB0byB1c2Ugd2hlbiBldmFsdWF0aW5nIGFuIGFuYWx5dGljcyBmaWx0ZXIuXG4gKiAgVGhlIGFuYWx5dGljcyBvbmx5IGluY2x1ZGVzIG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS4gSWYgbm8gZmlsdGVyIGlzIHNwZWNpZmllZCwgYWxsIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgYnVja2V0IGFyZSBpbmNsdWRlZCBpbiB0aGUgYW5hbHlzaXMuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxuU3RvcmFnZUNsYXNzQW5hbHlzaXM6IFN0b3JhZ2VDbGFzc0FuYWx5c2lzXG4vKipcbiAqIFRoZSBJRCB0aGF0IGlkZW50aWZpZXMgdGhlIGFuYWx5dGljcyBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmVmaXggdGhhdCBhbiBvYmplY3QgbXVzdCBoYXZlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhbmFseXRpY3MgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0YWdzIHRvIHVzZSB0byBpZGVudGlmeSBhIHN1YnNldCBvZiBvYmplY3RzIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDYXRlZ29yaXppbmcgeW91ciBzdG9yYWdlIHVzaW5nIHRhZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC10YWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnRmlsdGVyIHtcbi8qKlxuICogVGhlIHRhZyB2YWx1ZS5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFnIGtleS5cbiAqL1xuS2V5OiBzdHJpbmdcbn1cbi8qKlxuICogQ29udGFpbnMgZGF0YSByZWxhdGVkIHRvIGFjY2VzcyBwYXR0ZXJucyB0byBiZSBjb2xsZWN0ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHRvIGFuYWx5emUgdGhlIHRyYWRlb2ZmcyBiZXR3ZWVuIGRpZmZlcmVudCBzdG9yYWdlIGNsYXNzZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUNsYXNzQW5hbHlzaXMge1xuRGF0YUV4cG9ydD86IERhdGFFeHBvcnRcbn1cbi8qKlxuICogU3BlY2lmaWVzIGhvdyBkYXRhIHJlbGF0ZWQgdG8gdGhlIHN0b3JhZ2UgY2xhc3MgYW5hbHlzaXMgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQgc2hvdWxkIGJlIGV4cG9ydGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFFeHBvcnQge1xuRGVzdGluYXRpb246IERlc3RpbmF0aW9uXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBvdXRwdXQgc2NoZW1hIHRvIHVzZSB3aGVuIGV4cG9ydGluZyBkYXRhLiBNdXN0IGJlIGBgVl8xYGAuXG4gKi9cbk91dHB1dFNjaGVtYVZlcnNpb246IFwiVl8xXCJcbn1cbi8qKlxuICogVGhlIHBsYWNlIHRvIHN0b3JlIHRoZSBkYXRhIGZvciBhbiBhbmFseXNpcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0aW5hdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHRvIHdoaWNoIGRhdGEgaXMgZXhwb3J0ZWQuXG4gKi9cbkJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gUzMgYnVja2V0LiBJZiBubyBhY2NvdW50IElEIGlzIHByb3ZpZGVkLCB0aGUgb3duZXIgaXMgbm90IHZhbGlkYXRlZCBiZWZvcmUgZXhwb3J0aW5nIGRhdGEuXG4gKiAgICBBbHRob3VnaCB0aGlzIHZhbHVlIGlzIG9wdGlvbmFsLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IGl0IHRvIGhlbHAgcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyc2hpcCBjaGFuZ2VzLlxuICovXG5CdWNrZXRBY2NvdW50SWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBmaWxlIGZvcm1hdCB1c2VkIHdoZW4gZXhwb3J0aW5nIGRhdGEgdG8gQW1hem9uIFMzLlxuICogICpBbGxvd2VkIHZhbHVlcyo6IGBgQ1NWYGAgfCBgYE9SQ2BgIHwgYGBQYXJxdWV0YGBcbiAqL1xuRm9ybWF0OiAoXCJDU1ZcIiB8IFwiT1JDXCIgfCBcIlBhcnF1ZXRcIilcbi8qKlxuICogVGhlIHByZWZpeCB0byB1c2Ugd2hlbiBleHBvcnRpbmcgZGF0YS4gVGhlIHByZWZpeCBpcyBwcmVwZW5kZWQgdG8gYWxsIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgZGVmYXVsdCBlbmNyeXB0aW9uIGZvciBhIGJ1Y2tldCB1c2luZyBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggQW1hem9uIFMzLW1hbmFnZWQga2V5cyAoU1NFLVMzKSwgQVdTIEtNUy1tYW5hZ2VkIGtleXMgKFNTRS1LTVMpLCBvciBkdWFsLWxheWVyIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVMtbWFuYWdlZCBrZXlzIChEU1NFLUtNUykuIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQW1hem9uIFMzIGRlZmF1bHQgZW5jcnlwdGlvbiBmZWF0dXJlLCBzZWUgW0FtYXpvbiBTMyBEZWZhdWx0IEVuY3J5cHRpb24gZm9yIFMzIEJ1Y2tldHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2J1Y2tldC1lbmNyeXB0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldEVuY3J5cHRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgc2VydmVyLXNpZGUtZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uLlxuICovXG5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IFNlcnZlclNpZGVFbmNyeXB0aW9uUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiAgICArICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gSWYgeW91J3JlIHNwZWNpZnlpbmcgYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksIHdlIHJlY29tbWVuZCB1c2luZyBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gSWYgeW91IHVzZSBhIEtNUyBrZXkgYWxpYXMgaW5zdGVhZCwgdGhlbiBLTVMgcmVzb2x2ZXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3RlcuKAmXMgYWNjb3VudC4gVGhpcyBiZWhhdmlvciBjYW4gcmVzdWx0IGluIGRhdGEgdGhhdCdzIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHJlcXVlc3RlciwgYW5kIG5vdCB0aGUgYnVja2V0IG93bmVyLlxuICogICArICAqRGlyZWN0b3J5IGJ1Y2tldHMqIC0gV2hlbiB5b3Ugc3BlY2lmeSBhbiBbY3VzdG9tZXIgbWFuYWdlZCBrZXldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2NvbmNlcHRzLmh0bWwjY3VzdG9tZXItY21rKSBmb3IgZW5jcnlwdGlvbiBpbiB5b3VyIGRpcmVjdG9yeSBidWNrZXQsIG9ubHkgdXNlIHRoZSBrZXkgSUQgb3Iga2V5IEFSTi4gVGhlIGtleSBhbGlhcyBmb3JtYXQgb2YgdGhlIEtNUyBrZXkgaXNuJ3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclNpZGVFbmNyeXB0aW9uUnVsZSB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgdXNlIGFuIFMzIEJ1Y2tldCBLZXkgd2l0aCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHVzaW5nIEtNUyAoU1NFLUtNUykgZm9yIG5ldyBvYmplY3RzIGluIHRoZSBidWNrZXQuIEV4aXN0aW5nIG9iamVjdHMgYXJlIG5vdCBhZmZlY3RlZC4gU2V0dGluZyB0aGUgYGBCdWNrZXRLZXlFbmFibGVkYGAgZWxlbWVudCB0byBgYHRydWVgYCBjYXVzZXMgQW1hem9uIFMzIHRvIHVzZSBhbiBTMyBCdWNrZXQgS2V5LiBCeSBkZWZhdWx0LCBTMyBCdWNrZXQgS2V5IGlzIG5vdCBlbmFibGVkLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBTMyBCdWNrZXQgS2V5c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWtleS5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuQnVja2V0S2V5RW5hYmxlZD86IGJvb2xlYW5cblNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0PzogU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHRcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgaW4gdGhlIGJ1Y2tldC4gSWYgYSBQVVQgT2JqZWN0IHJlcXVlc3QgZG9lc24ndCBzcGVjaWZ5IGFueSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLCB0aGlzIGRlZmF1bHQgZW5jcnlwdGlvbiB3aWxsIGJlIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQge1xuLyoqXG4gKiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBjdXN0b21lciBtYW5hZ2VkIGtleSBJRCB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uIFxuICogICAgKyAgKkdlbmVyYWwgcHVycG9zZSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAgb3IgYGBhd3M6a21zOmRzc2VgYC5cbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAuXG4gKiAgIFxuICogICBZb3UgY2FuIHNwZWNpZnkgdGhlIGtleSBJRCwga2V5IGFsaWFzLCBvciB0aGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEtNUyBrZXkuXG4gKiAgICsgIEtleSBJRDogYGAxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJgYFxuICogICArICBLZXkgQVJOOiBgYGFybjphd3M6a21zOnVzLWVhc3QtMjoxMTExMjIyMjMzMzM6a2V5LzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYmBgXG4gKiAgICsgIEtleSBBbGlhczogYGBhbGlhcy9hbGlhcy1uYW1lYGBcbiAqICAgXG4gKiAgSWYgeW91IGFyZSB1c2luZyBlbmNyeXB0aW9uIHdpdGggY3Jvc3MtYWNjb3VudCBvciBBV1Mgc2VydmljZSBvcGVyYXRpb25zLCB5b3UgbXVzdCB1c2UgYSBmdWxseSBxdWFsaWZpZWQgS01TIGtleSBBUk4uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIGVuY3J5cHRpb24gZm9yIGNyb3NzLWFjY291bnQgb3BlcmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCNidWNrZXQtZW5jcnlwdGlvbi11cGRhdGUtYnVja2V0LXBvbGljeSkuXG4gKiAgICArICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gSWYgeW91J3JlIHNwZWNpZnlpbmcgYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksIHdlIHJlY29tbWVuZCB1c2luZyBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gSWYgeW91IHVzZSBhIEtNUyBrZXkgYWxpYXMgaW5zdGVhZCwgdGhlbiBLTVMgcmVzb2x2ZXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3RlcuKAmXMgYWNjb3VudC4gVGhpcyBiZWhhdmlvciBjYW4gcmVzdWx0IGluIGRhdGEgdGhhdCdzIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHJlcXVlc3RlciwgYW5kIG5vdCB0aGUgYnVja2V0IG93bmVyLiBBbHNvLCBpZiB5b3UgdXNlIGEga2V5IElELCB5b3UgY2FuIHJ1biBpbnRvIGEgTG9nRGVzdGluYXRpb24gdW5kZWxpdmVyYWJsZSBlcnJvciB3aGVuIGNyZWF0aW5nIGEgVlBDIGZsb3cgbG9nLiBcbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFdoZW4geW91IHNwZWNpZnkgYW4gW2N1c3RvbWVyIG1hbmFnZWQga2V5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2N1c3RvbWVyLWNtaykgZm9yIGVuY3J5cHRpb24gaW4geW91ciBkaXJlY3RvcnkgYnVja2V0LCBvbmx5IHVzZSB0aGUga2V5IElEIG9yIGtleSBBUk4uIFRoZSBrZXkgYWxpYXMgZm9ybWF0IG9mIHRoZSBLTVMga2V5IGlzbid0IHN1cHBvcnRlZC5cbiAqICAgXG4gKiAgICBBbWF6b24gUzMgb25seSBzdXBwb3J0cyBzeW1tZXRyaWMgZW5jcnlwdGlvbiBLTVMga2V5cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXN5bW1ldHJpYyBrZXlzIGluIEtNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3N5bW1ldHJpYy1hc3ltbWV0cmljLmh0bWwpIGluIHRoZSAqS2V5IE1hbmFnZW1lbnQgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5LTVNNYXN0ZXJLZXlJRD86IHN0cmluZ1xuLyoqXG4gKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uXG4gKiAgIEZvciBkaXJlY3RvcnkgYnVja2V0cywgdGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCB2YWx1ZXMgZm9yIHNlcnZlci1zaWRlIGVuY3J5cHRpb246IGBgQUVTMjU2YGAgYW5kIGBgYXdzOmttc2BgLlxuICovXG5TU0VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIgfCBcImF3czprbXM6ZHNzZVwiKVxufVxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGNyb3NzLW9yaWdpbiBhY2Nlc3MgY29uZmlndXJhdGlvbiBmb3Igb2JqZWN0cyBpbiBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFbmFibGluZyBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvY29ycy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEEgc2V0IG9mIG9yaWdpbnMgYW5kIG1ldGhvZHMgKGNyb3NzLW9yaWdpbiBhY2Nlc3MgdGhhdCB5b3Ugd2FudCB0byBhbGxvdykuIFlvdSBjYW4gYWRkIHVwIHRvIDEwMCBydWxlcyB0byB0aGUgY29uZmlndXJhdGlvbi5cbiAqL1xuQ29yc1J1bGVzOiBDb3JzUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGNyb3NzLW9yaWdpbiBhY2Nlc3MgcnVsZSBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JzUnVsZSB7XG4vKipcbiAqIEhlYWRlcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBgYEFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVyc2BgIGhlYWRlci4gVGhlc2UgaGVhZGVycyBhcmUgYWxsb3dlZCBpbiBhIHByZWZsaWdodCBPUFRJT05TIHJlcXVlc3QuIEluIHJlc3BvbnNlIHRvIGFueSBwcmVmbGlnaHQgT1BUSU9OUyByZXF1ZXN0LCBBbWF6b24gUzMgcmV0dXJucyBhbnkgcmVxdWVzdGVkIGhlYWRlcnMgdGhhdCBhcmUgYWxsb3dlZC5cbiAqL1xuQWxsb3dlZEhlYWRlcnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBBbiBIVFRQIG1ldGhvZCB0aGF0IHlvdSBhbGxvdyB0aGUgb3JpZ2luIHRvIHJ1bi5cbiAqICAqQWxsb3dlZCB2YWx1ZXMqOiBgYEdFVGBgIHwgYGBQVVRgYCB8IGBgSEVBRGBgIHwgYGBQT1NUYGAgfCBgYERFTEVURWBgXG4gKi9cbkFsbG93ZWRNZXRob2RzOiAoXCJHRVRcIiB8IFwiUFVUXCIgfCBcIkhFQURcIiB8IFwiUE9TVFwiIHwgXCJERUxFVEVcIilbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBvcmlnaW5zIHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgYnVja2V0IGZyb20uXG4gKi9cbkFsbG93ZWRPcmlnaW5zOiBzdHJpbmdbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBoZWFkZXJzIGluIHRoZSByZXNwb25zZSB0aGF0IHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyBmcm9tIHRoZWlyIGFwcGxpY2F0aW9ucyAoZm9yIGV4YW1wbGUsIGZyb20gYSBKYXZhU2NyaXB0IGBgWE1MSHR0cFJlcXVlc3RgYCBvYmplY3QpLlxuICovXG5FeHBvc2VkSGVhZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcnVsZS4gVGhlIHZhbHVlIG11c3QgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91ciBicm93c2VyIGlzIHRvIGNhY2hlIHRoZSBwcmVmbGlnaHQgcmVzcG9uc2UgZm9yIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UuXG4gKi9cbk1heEFnZT86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbiBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcywgc2VlIFtTdG9yYWdlIGNsYXNzIGZvciBhdXRvbWF0aWNhbGx5IG9wdGltaXppbmcgZnJlcXVlbnRseSBhbmQgaW5mcmVxdWVudGx5IGFjY2Vzc2VkIG9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3N0b3JhZ2UtY2xhc3MtaW50cm8uaHRtbCNzYy1keW5hbWljLWRhdGEtYWNjZXNzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc3RhdHVzIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbi8qKlxuICogQSBjb250YWluZXIgZm9yIGEga2V5LXZhbHVlIHBhaXIuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaXN0IG9mIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcyB0aWVycyBpbiB0aGUgY29uZmlndXJhdGlvbi4gQXQgbGVhc3Qgb25lIHRpZXIgbXVzdCBiZSBkZWZpbmVkIGluIHRoZSBsaXN0LiBBdCBtb3N0LCB5b3UgY2FuIHNwZWNpZnkgdHdvIHRpZXJzIGluIHRoZSBsaXN0LCBvbmUgZm9yIGVhY2ggYXZhaWxhYmxlIEFjY2Vzc1RpZXI6IGBgQVJDSElWRV9BQ0NFU1NgYCBhbmQgYGBERUVQX0FSQ0hJVkVfQUNDRVNTYGAuXG4gKiAgIFlvdSBvbmx5IG5lZWQgSW50ZWxsaWdlbnQgVGllcmluZyBDb25maWd1cmF0aW9uIGVuYWJsZWQgb24gYSBidWNrZXQgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBtb3ZlIG9iamVjdHMgc3RvcmVkIGluIHRoZSBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MgdG8gQXJjaGl2ZSBBY2Nlc3Mgb3IgRGVlcCBBcmNoaXZlIEFjY2VzcyB0aWVycy5cbiAqL1xuVGllcmluZ3M6IFRpZXJpbmdbXVxufVxuLyoqXG4gKiBUaGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzIGlzIGRlc2lnbmVkIHRvIG9wdGltaXplIHN0b3JhZ2UgY29zdHMgYnkgYXV0b21hdGljYWxseSBtb3ZpbmcgZGF0YSB0byB0aGUgbW9zdCBjb3N0LWVmZmVjdGl2ZSBzdG9yYWdlIGFjY2VzcyB0aWVyLCB3aXRob3V0IGFkZGl0aW9uYWwgb3BlcmF0aW9uYWwgb3ZlcmhlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGllcmluZyB7XG4vKipcbiAqIFMzIEludGVsbGlnZW50LVRpZXJpbmcgYWNjZXNzIHRpZXIuIFNlZSBbU3RvcmFnZSBjbGFzcyBmb3IgYXV0b21hdGljYWxseSBvcHRpbWl6aW5nIGZyZXF1ZW50bHkgYW5kIGluZnJlcXVlbnRseSBhY2Nlc3NlZCBvYmplY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9zdG9yYWdlLWNsYXNzLWludHJvLmh0bWwjc2MtZHluYW1pYy1kYXRhLWFjY2VzcykgZm9yIGEgbGlzdCBvZiBhY2Nlc3MgdGllcnMgaW4gdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcy5cbiAqL1xuQWNjZXNzVGllcjogKFwiQVJDSElWRV9BQ0NFU1NcIiB8IFwiREVFUF9BUkNISVZFX0FDQ0VTU1wiKVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGRheXMgb2Ygbm8gYWNjZXNzIGFmdGVyIHdoaWNoIGFuIG9iamVjdCB3aWxsIGJlIGVsaWdpYmxlIHRvIGJlIHRyYW5zaXRpb25lZCB0byB0aGUgY29ycmVzcG9uZGluZyB0aWVyLiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGF5cyBzcGVjaWZpZWQgZm9yIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCA5MCBkYXlzIGFuZCBEZWVwIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCAxODAgZGF5cy4gVGhlIG1heGltdW0gY2FuIGJlIHVwIHRvIDIgeWVhcnMgKDczMCBkYXlzKS5cbiAqL1xuRGF5czogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgUzMgSW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludmVudG9yeUNvbmZpZ3VyYXRpb24ge1xuRGVzdGluYXRpb246IERlc3RpbmF0aW9uMVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgaW52ZW50b3J5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIElmIHNldCB0byBgYFRydWVgYCwgYW4gaW52ZW50b3J5IGxpc3QgaXMgZ2VuZXJhdGVkLiBJZiBzZXQgdG8gYGBGYWxzZWBgLCBubyBpbnZlbnRvcnkgbGlzdCBpcyBnZW5lcmF0ZWQuXG4gKi9cbkVuYWJsZWQ6IGJvb2xlYW5cbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGludmVudG9yeSBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIE9iamVjdCB2ZXJzaW9ucyB0byBpbmNsdWRlIGluIHRoZSBpbnZlbnRvcnkgbGlzdC4gSWYgc2V0IHRvIGBgQWxsYGAsIHRoZSBsaXN0IGluY2x1ZGVzIGFsbCB0aGUgb2JqZWN0IHZlcnNpb25zLCB3aGljaCBhZGRzIHRoZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzIGBgVmVyc2lvbklkYGAsIGBgSXNMYXRlc3RgYCwgYW5kIGBgRGVsZXRlTWFya2VyYGAgdG8gdGhlIGxpc3QuIElmIHNldCB0byBgYEN1cnJlbnRgYCwgdGhlIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGVzZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzLlxuICovXG5JbmNsdWRlZE9iamVjdFZlcnNpb25zOiAoXCJBbGxcIiB8IFwiQ3VycmVudFwiKVxuLyoqXG4gKiBDb250YWlucyB0aGUgb3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBpbnZlbnRvcnkgcmVzdWx0cy5cbiAqL1xuT3B0aW9uYWxGaWVsZHM/OiAoXCJTaXplXCIgfCBcIkxhc3RNb2RpZmllZERhdGVcIiB8IFwiU3RvcmFnZUNsYXNzXCIgfCBcIkVUYWdcIiB8IFwiSXNNdWx0aXBhcnRVcGxvYWRlZFwiIHwgXCJSZXBsaWNhdGlvblN0YXR1c1wiIHwgXCJFbmNyeXB0aW9uU3RhdHVzXCIgfCBcIk9iamVjdExvY2tSZXRhaW5VbnRpbERhdGVcIiB8IFwiT2JqZWN0TG9ja01vZGVcIiB8IFwiT2JqZWN0TG9ja0xlZ2FsSG9sZFN0YXR1c1wiIHwgXCJJbnRlbGxpZ2VudFRpZXJpbmdBY2Nlc3NUaWVyXCIgfCBcIkJ1Y2tldEtleVN0YXR1c1wiIHwgXCJDaGVja3N1bUFsZ29yaXRobVwiIHwgXCJPYmplY3RBY2Nlc3NDb250cm9sTGlzdFwiIHwgXCJPYmplY3RPd25lclwiKVtdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGZpbHRlciBwcmVmaXguXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNjaGVkdWxlIGZvciBnZW5lcmF0aW5nIGludmVudG9yeSByZXN1bHRzLlxuICovXG5TY2hlZHVsZUZyZXF1ZW5jeTogKFwiRGFpbHlcIiB8IFwiV2Vla2x5XCIpXG59XG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHB1Ymxpc2ggdGhlIGludmVudG9yeSByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3RpbmF0aW9uMSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHRvIHdoaWNoIGRhdGEgaXMgZXhwb3J0ZWQuXG4gKi9cbkJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gUzMgYnVja2V0LiBJZiBubyBhY2NvdW50IElEIGlzIHByb3ZpZGVkLCB0aGUgb3duZXIgaXMgbm90IHZhbGlkYXRlZCBiZWZvcmUgZXhwb3J0aW5nIGRhdGEuXG4gKiAgICBBbHRob3VnaCB0aGlzIHZhbHVlIGlzIG9wdGlvbmFsLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IGl0IHRvIGhlbHAgcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyc2hpcCBjaGFuZ2VzLlxuICovXG5CdWNrZXRBY2NvdW50SWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBmaWxlIGZvcm1hdCB1c2VkIHdoZW4gZXhwb3J0aW5nIGRhdGEgdG8gQW1hem9uIFMzLlxuICogICpBbGxvd2VkIHZhbHVlcyo6IGBgQ1NWYGAgfCBgYE9SQ2BgIHwgYGBQYXJxdWV0YGBcbiAqL1xuRm9ybWF0OiAoXCJDU1ZcIiB8IFwiT1JDXCIgfCBcIlBhcnF1ZXRcIilcbi8qKlxuICogVGhlIHByZWZpeCB0byB1c2Ugd2hlbiBleHBvcnRpbmcgZGF0YS4gVGhlIHByZWZpeCBpcyBwcmVwZW5kZWQgdG8gYWxsIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIGZvciBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW09iamVjdCBMaWZlY3ljbGUgTWFuYWdlbWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvb2JqZWN0LWxpZmVjeWNsZS1tZ210Lmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBBIGxpZmVjeWNsZSBydWxlIGZvciBpbmRpdmlkdWFsIG9iamVjdHMgaW4gYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuUnVsZXM6IFJ1bGVbXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hpY2ggZGVmYXVsdCBtaW5pbXVtIG9iamVjdCBzaXplIGJlaGF2aW9yIGlzIGFwcGxpZWQgdG8gdGhlIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uLlxuICogICBUaGlzIHBhcmFtZXRlciBhcHBsaWVzIHRvIGdlbmVyYWwgcHVycG9zZSBidWNrZXRzIG9ubHkuIEl0IGlzbid0IHN1cHBvcnRlZCBmb3IgZGlyZWN0b3J5IGJ1Y2tldCBsaWZlY3ljbGUgY29uZmlndXJhdGlvbnMuXG4gKiAgICArICBgYGFsbF9zdG9yYWdlX2NsYXNzZXNfMTI4S2BgIC0gT2JqZWN0cyBzbWFsbGVyIHRoYW4gMTI4IEtCIHdpbGwgbm90IHRyYW5zaXRpb24gdG8gYW55IHN0b3JhZ2UgY2xhc3MgYnkgZGVmYXVsdC5cbiAqICAgKyAgYGB2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc2BgIC0gT2JqZWN0cyBzbWFsbGVyIHRoYW4gMTI4IEtCIHdpbGwgdHJhbnNpdGlvbiB0byBHbGFjaWVyIEZsZXhpYmxlIFJldHJpZXZhbCBvciBHbGFjaWVyIERlZXAgQXJjaGl2ZSBzdG9yYWdlIGNsYXNzZXMuIEJ5IGRlZmF1bHQsIGFsbCBvdGhlciBzdG9yYWdlIGNsYXNzZXMgd2lsbCBwcmV2ZW50IHRyYW5zaXRpb25zIHNtYWxsZXIgdGhhbiAxMjggS0IuIFxuICogICBcbiAqICBUbyBjdXN0b21pemUgdGhlIG1pbmltdW0gb2JqZWN0IHNpemUgZm9yIGFueSB0cmFuc2l0aW9uIHlvdSBjYW4gYWRkIGEgZmlsdGVyIHRoYXQgc3BlY2lmaWVzIGEgY3VzdG9tIGBgT2JqZWN0U2l6ZUdyZWF0ZXJUaGFuYGAgb3IgYGBPYmplY3RTaXplTGVzc1RoYW5gYCBpbiB0aGUgYm9keSBvZiB5b3VyIHRyYW5zaXRpb24gcnVsZS4gQ3VzdG9tIGZpbHRlcnMgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBkZWZhdWx0IHRyYW5zaXRpb24gYmVoYXZpb3IuXG4gKi9cblRyYW5zaXRpb25EZWZhdWx0TWluaW11bU9iamVjdFNpemU/OiAoXCJ2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc1wiIHwgXCJhbGxfc3RvcmFnZV9jbGFzc2VzXzEyOEtcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGxpZmVjeWNsZSBydWxlcyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHV0IEJ1Y2tldCBMaWZlY3ljbGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVGxpZmVjeWNsZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6IGBgQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkYGAsIGBgRXhwaXJhdGlvbkRhdGVgYCwgYGBFeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgLCBgYFRyYW5zaXRpb25gYCwgb3IgYGBUcmFuc2l0aW9uc2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGUge1xuQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkPzogQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIGRlbGV0ZWQgZnJvbSBBbWF6b24gUzMgYW5kIEFtYXpvbiBTMyBHbGFjaWVyLiBUaGUgZGF0ZSB2YWx1ZSBtdXN0IGJlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhlIHRpbWUgaXMgYWx3YXlzIG1pZG5pZ2h0IFVUQy4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSBkZWxldGVkIGZyb20gQW1hem9uIFMzIGFuZCBBbWF6b24gUzMgR2xhY2llci4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25JbkRheXM/OiBudW1iZXJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQW1hem9uIFMzIHdpbGwgcmVtb3ZlIGEgZGVsZXRlIG1hcmtlciB3aXRob3V0IGFueSBub25jdXJyZW50IHZlcnNpb25zLiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGRlbGV0ZSBtYXJrZXIgd2lsbCBiZSByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyBub25jdXJyZW50IHZlcnNpb25zLiBUaGlzIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2l0aCBgYEV4cGlyYXRpb25JbkRheXNgYCwgYGBFeHBpcmF0aW9uRGF0ZWBgLCBvciBgYFRhZ0ZpbHRlcnNgYC5cbiAqL1xuRXhwaXJlZE9iamVjdERlbGV0ZU1hcmtlcj86IGJvb2xlYW5cbi8qKlxuICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLiBUaGUgdmFsdWUgY2FuJ3QgYmUgbG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIChEZXByZWNhdGVkLikgRm9yIGJ1Y2tldHMgd2l0aCB2ZXJzaW9uaW5nIGVuYWJsZWQgKG9yIHN1c3BlbmRlZCksIHNwZWNpZmllcyB0aGUgdGltZSwgaW4gZGF5cywgYmV0d2VlbiB3aGVuIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9iamVjdCBpcyB1cGxvYWRlZCB0byB0aGUgYnVja2V0IGFuZCB3aGVuIG9sZCB2ZXJzaW9ucyBvZiB0aGUgb2JqZWN0IGV4cGlyZS4gV2hlbiBvYmplY3QgdmVyc2lvbnMgZXhwaXJlLCBBbWF6b24gUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGVtLiBJZiB5b3Ugc3BlY2lmeSBhIHRyYW5zaXRpb24gYW5kIGV4cGlyYXRpb24gdGltZSwgdGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS5cbiAqL1xuTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzPzogbnVtYmVyXG5Ob25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb24/OiBOb25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb25cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbj86IE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvblxuLyoqXG4gKiBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgb25lIG9yIG1vcmUgdHJhbnNpdGlvbiBydWxlcyB0aGF0IHNwZWNpZnkgd2hlbiBub24tY3VycmVudCBvYmplY3RzIHRyYW5zaXRpb24gdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgeW91IHNwZWNpZnkgYSB0cmFuc2l0aW9uIGFuZCBleHBpcmF0aW9uIHRpbWUsIHRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnM/OiBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24xW11cbi8qKlxuICogT2JqZWN0IGtleSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIG9uZSBvciBtb3JlIG9iamVjdHMgdG8gd2hpY2ggdGhpcyBydWxlIGFwcGxpZXMuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBJZiBgYEVuYWJsZWRgYCwgdGhlIHJ1bGUgaXMgY3VycmVudGx5IGJlaW5nIGFwcGxpZWQuIElmIGBgRGlzYWJsZWRgYCwgdGhlIHJ1bGUgaXMgbm90IGN1cnJlbnRseSBiZWluZyBhcHBsaWVkLlxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcbi8qKlxuICogVGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgbGlmZWN5Y2xlIHJ1bGUgYXBwbGllcy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBvYmplY3Qgc2l6ZSBpbiBieXRlcyBmb3IgdGhpcyBydWxlIHRvIGFwcGx5IHRvLiBPYmplY3RzIG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZSBiYXNlZCBydWxlcywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiB1c2luZyBzaXplLWJhc2VkIHJ1bGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtY29uZmlndXJhdGlvbi1leGFtcGxlcy5odG1sI2xjLXNpemUtcnVsZXMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5PYmplY3RTaXplR3JlYXRlclRoYW4/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG9iamVjdCBzaXplIGluIGJ5dGVzIGZvciB0aGlzIHJ1bGUgdG8gYXBwbHkgdG8uIE9iamVjdHMgbXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZWQgYmFzZWQgcnVsZXMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gdXNpbmcgc2l6ZS1iYXNlZCBydWxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tZXhhbXBsZXMuaHRtbCNsYy1zaXplLXJ1bGVzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuT2JqZWN0U2l6ZUxlc3NUaGFuPzogc3RyaW5nXG5UcmFuc2l0aW9uPzogVHJhbnNpdGlvblxuLyoqXG4gKiBPbmUgb3IgbW9yZSB0cmFuc2l0aW9uIHJ1bGVzIHRoYXQgc3BlY2lmeSB3aGVuIGFuIG9iamVjdCB0cmFuc2l0aW9ucyB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB5b3Ugc3BlY2lmeSBhbiBleHBpcmF0aW9uIGFuZCB0cmFuc2l0aW9uIHRpbWUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSB0aW1lIHVuaXQgZm9yIGJvdGggcHJvcGVydGllcyAoZWl0aGVyIGluIGRheXMgb3IgYnkgZGF0ZSkuIFRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBhbHNvIGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBUcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cblRyYW5zaXRpb25zPzogVHJhbnNpdGlvbjFbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaWZlY3ljbGUgcnVsZSB0aGF0IHN0b3BzIGluY29tcGxldGUgbXVsdGlwYXJ0IHVwbG9hZHMgdG8gYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWQge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIEFtYXpvbiBTMyBzdG9wcyBhbiBpbmNvbXBsZXRlIG11bHRpcGFydCB1cGxvYWQuXG4gKi9cbkRheXNBZnRlckluaXRpYXRpb246IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBub25jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyBleHBpcmUuIFVwb24gZXhwaXJhdGlvbiwgUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMuIFlvdSBzZXQgdGhpcyBsaWZlY3ljbGUgY29uZmlndXJhdGlvbiBhY3Rpb24gb24gYSBidWNrZXQgdGhhdCBoYXMgdmVyc2lvbmluZyBlbmFibGVkIChvciBzdXNwZW5kZWQpIHRvIHJlcXVlc3QgdGhhdCBTMyBkZWxldGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgYXQgYSBzcGVjaWZpYyBwZXJpb2QgaW4gdGhlIG9iamVjdCdzIGxpZmV0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYW4gb2JqZWN0IGlzIG5vbmN1cnJlbnQgYmVmb3JlIFMzIGNhbiBwZXJmb3JtIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub25jdXJyZW50IGRheXMgY2FsY3VsYXRpb25zLCBzZWUgW0hvdyBBbWF6b24gUzMgQ2FsY3VsYXRlcyBXaGVuIGFuIE9iamVjdCBCZWNhbWUgTm9uY3VycmVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwjbm9uLWN1cnJlbnQtZGF5cy1jYWxjdWxhdGlvbnMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Ob25jdXJyZW50RGF5czogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyBob3cgbWFueSBub25jdXJyZW50IHZlcnNpb25zIFMzIHdpbGwgcmV0YWluLiBJZiB0aGVyZSBhcmUgdGhpcyBtYW55IG1vcmUgcmVjZW50IG5vbmN1cnJlbnQgdmVyc2lvbnMsIFMzIHdpbGwgdGFrZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5vbmN1cnJlbnQgdmVyc2lvbnMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3ZXJOb25jdXJyZW50VmVyc2lvbnM/OiBudW1iZXJcbn1cbi8qKlxuICogKERlcHJlY2F0ZWQuKSBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgc3BlY2lmaWVzIHdoZW4gbm9uLWN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGEgdHJhbnNpdGlvbiBhbmQgZXhwaXJhdGlvbiB0aW1lLCB0aGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnNgYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24ge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIENvbnRhaW5lciBmb3IgdGhlIHRyYW5zaXRpb24gcnVsZSB0aGF0IGRlc2NyaWJlcyB3aGVuIG5vbmN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIHRoZSBgYFNUQU5EQVJEX0lBYGAsIGBgT05FWk9ORV9JQWBgLCBgYElOVEVMTElHRU5UX1RJRVJJTkdgYCwgYGBHTEFDSUVSX0lSYGAsIGBgR0xBQ0lFUmBgLCBvciBgYERFRVBfQVJDSElWRWBgIHN0b3JhZ2UgY2xhc3MuIElmIHlvdXIgYnVja2V0IGlzIHZlcnNpb25pbmctZW5hYmxlZCAob3IgdmVyc2lvbmluZyBpcyBzdXNwZW5kZWQpLCB5b3UgY2FuIHNldCB0aGlzIGFjdGlvbiB0byByZXF1ZXN0IHRoYXQgQW1hem9uIFMzIHRyYW5zaXRpb24gbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgdG8gdGhlIGBgU1RBTkRBUkRfSUFgYCwgYGBPTkVaT05FX0lBYGAsIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAgc3RvcmFnZSBjbGFzcyBhdCBhIHNwZWNpZmljIHBlcmlvZCBpbiB0aGUgb2JqZWN0J3MgbGlmZXRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbjEge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIChEZXByZWNhdGVkLikgU3BlY2lmaWVzIHdoZW4gYW4gb2JqZWN0IHRyYW5zaXRpb25zIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gYW5kIHRyYW5zaXRpb24gdGltZSwgeW91IG11c3QgdXNlIHRoZSBzYW1lIHRpbWUgdW5pdCBmb3IgYm90aCBwcm9wZXJ0aWVzIChlaXRoZXIgaW4gZGF5cyBvciBieSBkYXRlKS4gVGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGFsc28gYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYFRyYW5zaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIGNsYXNzIHRvIHdoaWNoIHlvdSB3YW50IHRoZSBvYmplY3QgdG8gdHJhbnNpdGlvbi5cbiAqL1xuU3RvcmFnZUNsYXNzOiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHbGFjaWVyXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIHRyYW5zaXRpb25lZCB0byB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIFRoZSBkYXRlIHZhbHVlIG11c3QgYmUgaW4gSVNPIDg2MDEgZm9ybWF0LiBUaGUgdGltZSBpcyBhbHdheXMgbWlkbmlnaHQgVVRDLlxuICovXG5UcmFuc2l0aW9uRGF0ZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIGNyZWF0aW9uIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAsIHZhbGlkIHZhbHVlcyBhcmUgYGAwYGAgb3IgcG9zaXRpdmUgaW50ZWdlcnMuIElmIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcyBpcyBgYFNUQU5EQVJEX0lBYGAgb3IgYGBPTkVaT05FX0lBYGAsIHZhbGlkIHZhbHVlcyBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgZ3JlYXRlciB0aGFuIGBgMzBgYC4gQmUgYXdhcmUgdGhhdCBzb21lIHN0b3JhZ2UgY2xhc3NlcyBoYXZlIGEgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uIGFuZCB0aGF0IHlvdSdyZSBjaGFyZ2VkIGZvciB0cmFuc2l0aW9uaW5nIG9iamVjdHMgYmVmb3JlIHRoZWlyIG1pbmltdW0gc3RvcmFnZSBkdXJhdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uc3RyYWludHMgYW5kIGNvbnNpZGVyYXRpb25zIGZvciB0cmFuc2l0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLXRyYW5zaXRpb24tZ2VuZXJhbC1jb25zaWRlcmF0aW9ucy5odG1sI2xpZmVjeWNsZS1jb25maWd1cmF0aW9uLWNvbnN0cmFpbnRzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuVHJhbnNpdGlvbkluRGF5cz86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBhbiBvYmplY3QgdHJhbnNpdGlvbnMgdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQW1hem9uIFMzIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIHJ1bGVzLCBzZWUgW1RyYW5zaXRpb25pbmcgT2JqZWN0cyBVc2luZyBBbWF6b24gUzMgTGlmZWN5Y2xlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRpb24xIHtcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gd2hpY2ggeW91IHdhbnQgdGhlIG9iamVjdCB0byB0cmFuc2l0aW9uLlxuICovXG5TdG9yYWdlQ2xhc3M6IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdsYWNpZXJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiU1RBTkRBUkRfSUFcIilcbi8qKlxuICogSW5kaWNhdGVzIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gVGhlIGRhdGUgdmFsdWUgbXVzdCBiZSBpbiBJU08gODYwMSBmb3JtYXQuIFRoZSB0aW1lIGlzIGFsd2F5cyBtaWRuaWdodCBVVEMuXG4gKi9cblRyYW5zaXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MgaXMgYGBJTlRFTExJR0VOVF9USUVSSU5HYGAsIGBgR0xBQ0lFUl9JUmBgLCBgYEdMQUNJRVJgYCwgb3IgYGBERUVQX0FSQ0hJVkVgYCwgdmFsaWQgdmFsdWVzIGFyZSBgYDBgYCBvciBwb3NpdGl2ZSBpbnRlZ2Vycy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgU1RBTkRBUkRfSUFgYCBvciBgYE9ORVpPTkVfSUFgYCwgdmFsaWQgdmFsdWVzIGFyZSBwb3NpdGl2ZSBpbnRlZ2VycyBncmVhdGVyIHRoYW4gYGAzMGBgLiBCZSBhd2FyZSB0aGF0IHNvbWUgc3RvcmFnZSBjbGFzc2VzIGhhdmUgYSBtaW5pbXVtIHN0b3JhZ2UgZHVyYXRpb24gYW5kIHRoYXQgeW91J3JlIGNoYXJnZWQgZm9yIHRyYW5zaXRpb25pbmcgb2JqZWN0cyBiZWZvcmUgdGhlaXIgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25zdHJhaW50cyBhbmQgY29uc2lkZXJhdGlvbnMgZm9yIHRyYW5zaXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwjbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tY29uc3RyYWludHMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5UcmFuc2l0aW9uSW5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIHdoZXJlIGxvZ3MgYXJlIHN0b3JlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQgd2hlcmUgQW1hem9uIFMzIHNob3VsZCBzdG9yZSBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlcy4gWW91IGNhbiBzdG9yZSBsb2cgZmlsZXMgaW4gYW55IGJ1Y2tldCB0aGF0IHlvdSBvd24uIEJ5IGRlZmF1bHQsIGxvZ3MgYXJlIHN0b3JlZCBpbiB0aGUgYnVja2V0IHdoZXJlIHRoZSBgYExvZ2dpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkgaXMgZGVmaW5lZC5cbiAqL1xuRGVzdGluYXRpb25CdWNrZXROYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgcHJlZml4IGZvciBhbGwgbG9nIG9iamVjdCBrZXlzLiBJZiB5b3Ugc3RvcmUgbG9nIGZpbGVzIGZyb20gbXVsdGlwbGUgQW1hem9uIFMzIGJ1Y2tldHMgaW4gYSBzaW5nbGUgYnVja2V0LCB5b3UgY2FuIHVzZSBhIHByZWZpeCB0byBkaXN0aW5ndWlzaCB3aGljaCBsb2cgZmlsZXMgY2FtZSBmcm9tIHdoaWNoIGJ1Y2tldC5cbiAqL1xuTG9nRmlsZVByZWZpeD86IHN0cmluZ1xuVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0PzogVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0XG59XG4vKipcbiAqIEFtYXpvbiBTMyBrZXlzIGZvciBsb2cgb2JqZWN0cyBhcmUgcGFydGl0aW9uZWQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gKiAgIGBgW0Rlc3RpbmF0aW9uUHJlZml4XVtTb3VyY2VBY2NvdW50SWRdL1tTb3VyY2VSZWdpb25dL1tTb3VyY2VCdWNrZXRdL1tZWVlZXS9bTU1dL1tERF0vW1lZWVldLVtNTV0tW0REXS1baGhdLVttbV0tW3NzXS1bVW5pcXVlU3RyaW5nXWBgIFxuICogIFBhcnRpdGlvbmVkUHJlZml4IGRlZmF1bHRzIHRvIEV2ZW50VGltZSBkZWxpdmVyeSB3aGVuIHNlcnZlciBhY2Nlc3MgbG9ncyBhcmUgZGVsaXZlcmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpdGlvbmVkUHJlZml4IHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwYXJ0aXRpb24gZGF0ZSBzb3VyY2UgZm9yIHRoZSBwYXJ0aXRpb25lZCBwcmVmaXguIGBgUGFydGl0aW9uRGF0ZVNvdXJjZWBgIGNhbiBiZSBgYEV2ZW50VGltZWBgIG9yIGBgRGVsaXZlcnlUaW1lYGAuXG4gKiAgRm9yIGBgRGVsaXZlcnlUaW1lYGAsIHRoZSB0aW1lIGluIHRoZSBsb2cgZmlsZSBuYW1lcyBjb3JyZXNwb25kcyB0byB0aGUgZGVsaXZlcnkgdGltZSBmb3IgdGhlIGxvZyBmaWxlcy4gXG4gKiAgIEZvciBgYEV2ZW50VGltZWBgLCBUaGUgbG9ncyBkZWxpdmVyZWQgYXJlIGZvciBhIHNwZWNpZmljIGRheSBvbmx5LiBUaGUgeWVhciwgbW9udGgsIGFuZCBkYXkgY29ycmVzcG9uZCB0byB0aGUgZGF5IG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cnJlZCwgYW5kIHRoZSBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzIGFyZSBzZXQgdG8gMDAgaW4gdGhlIGtleS5cbiAqL1xuUGFydGl0aW9uRGF0ZVNvdXJjZT86IChcIkV2ZW50VGltZVwiIHwgXCJEZWxpdmVyeVRpbWVcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgZXhhbXBsZXMsIHNlZSBbQVdTOjpTMzo6QnVja2V0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQuaHRtbCNhd3MtcHJvcGVydGllcy1zMy1idWNrZXQtLWV4YW1wbGVzKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUFVUIEJ1Y2tldCBtZXRyaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUTWV0cmljQ29uZmlndXJhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBhY2Nlc3MgcG9pbnQgdGhhdCB3YXMgdXNlZCB3aGlsZSBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgb24gdGhlIG9iamVjdC4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBvbmx5IGluY2x1ZGVzIG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuQWNjZXNzUG9pbnRBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbi4gVGhpcyBjYW4gYmUgYW55IHZhbHVlIHlvdSBjaG9vc2UgdGhhdCBoZWxwcyB5b3UgaWRlbnRpZnkgeW91ciBtZXRyaWNzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogVGhlIHByZWZpeCB0aGF0IGFuIG9iamVjdCBtdXN0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1ldHJpY3MgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyBhIGxpc3Qgb2YgdGFnIGZpbHRlcnMgdG8gdXNlIGFzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZpbHRlci4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBvbmx5IG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG59XG4vKipcbiAqIFRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uIG9mIGFuIFMzIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb24ge1xuUzNUYWJsZXNEZXN0aW5hdGlvbjogUzNUYWJsZXNEZXN0aW5hdGlvblxufVxuLyoqXG4gKiBUaGUgZGVzdGluYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0IG11c3QgYmUgaW4gdGhlIHNhbWUgUmVnaW9uIGFuZCBBV1MtYWNjb3VudCBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC4gVGhlIHNwZWNpZmllZCBtZXRhZGF0YSB0YWJsZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYGBhd3NfczNfbWV0YWRhdGFgYCBuYW1lc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1RhYmxlc0Rlc3RpbmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgdGFibGUgYnVja2V0IHRoYXQncyBzcGVjaWZpZWQgYXMgdGhlIGRlc3RpbmF0aW9uIGluIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0IG11c3QgYmUgaW4gdGhlIHNhbWUgUmVnaW9uIGFuZCBBV1MtYWNjb3VudCBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC5cbiAqL1xuVGFibGVCdWNrZXRBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHlvdXIgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhlIHNwZWNpZmllZCBtZXRhZGF0YSB0YWJsZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYGBhd3NfczNfbWV0YWRhdGFgYCBuYW1lc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldC5cbiAqL1xuVGFibGVOYW1lOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhYmxlIGJ1Y2tldCBuYW1lc3BhY2UgZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBpbiB5b3VyIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoaXMgdmFsdWUgaXMgYWx3YXlzIGBgYXdzX3MzX21ldGFkYXRhYGAuXG4gKi9cblRhYmxlTmFtZXNwYWNlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgc3BlY2lmaWVkIG1ldGFkYXRhIHRhYmxlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBgYGF3c19zM19tZXRhZGF0YWBgIG5hbWVzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0LlxuICovXG5UYWJsZUFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgUzMgTWV0YWRhdGEgY29uZmlndXJhdGlvbiBmb3IgYSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ29uZmlndXJhdGlvbiB7XG5EZXN0aW5hdGlvbj86IE1ldGFkYXRhRGVzdGluYXRpb25cbkpvdXJuYWxUYWJsZUNvbmZpZ3VyYXRpb246IEpvdXJuYWxUYWJsZUNvbmZpZ3VyYXRpb25cbkludmVudG9yeVRhYmxlQ29uZmlndXJhdGlvbj86IEludmVudG9yeVRhYmxlQ29uZmlndXJhdGlvblxufVxuLyoqXG4gKiBUaGUgZGVzdGluYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBTMyBNZXRhZGF0YSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhRGVzdGluYXRpb24ge1xuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgdGFibGUgYnVja2V0IHdoZXJlIHRoZSBtZXRhZGF0YSBjb25maWd1cmF0aW9uIGlzIHN0b3JlZC4gVGhlIGBgYXdzYGAgdmFsdWUgaW5kaWNhdGVzIGFuIEFXUyBtYW5hZ2VkIHRhYmxlIGJ1Y2tldCwgYW5kIHRoZSBgYGN1c3RvbWVyYGAgdmFsdWUgaW5kaWNhdGVzIGEgY3VzdG9tZXItbWFuYWdlZCB0YWJsZSBidWNrZXQuIFYyIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25zIGFyZSBzdG9yZWQgaW4gQVdTIG1hbmFnZWQgdGFibGUgYnVja2V0cywgYW5kIFYxIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25zIGFyZSBzdG9yZWQgaW4gY3VzdG9tZXItbWFuYWdlZCB0YWJsZSBidWNrZXRzLlxuICovXG5UYWJsZUJ1Y2tldFR5cGU6IChcImF3c1wiIHwgXCJjdXN0b21lclwiKVxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRhYmxlIGJ1Y2tldCB3aGVyZSB0aGUgbWV0YWRhdGEgY29uZmlndXJhdGlvbiBpcyBzdG9yZWQuXG4gKi9cblRhYmxlQnVja2V0QXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lc3BhY2UgaW4gdGhlIHRhYmxlIGJ1Y2tldCB3aGVyZSB0aGUgbWV0YWRhdGEgdGFibGVzIGZvciBhIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gYXJlIHN0b3JlZC5cbiAqL1xuVGFibGVOYW1lc3BhY2U/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGpvdXJuYWwgdGFibGUgY29uZmlndXJhdGlvbiBmb3IgYSBtZXRhZGF0YSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvdXJuYWxUYWJsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgam91cm5hbCB0YWJsZS5cbiAqL1xuVGFibGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIGpvdXJuYWwgdGFibGUuXG4gKi9cblRhYmxlQXJuPzogc3RyaW5nXG5SZWNvcmRFeHBpcmF0aW9uOiBSZWNvcmRFeHBpcmF0aW9uXG5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvblxufVxuLyoqXG4gKiBUaGUgam91cm5hbCB0YWJsZSByZWNvcmQgZXhwaXJhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIGpvdXJuYWwgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkRXhwaXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIGpvdXJuYWwgdGFibGUgcmVjb3JkIGV4cGlyYXRpb24gaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAqL1xuRXhwaXJhdGlvbjogKFwiRU5BQkxFRFwiIHwgXCJESVNBQkxFRFwiKVxuLyoqXG4gKiBJZiB5b3UgZW5hYmxlIGpvdXJuYWwgdGFibGUgcmVjb3JkIGV4cGlyYXRpb24sIHlvdSBjYW4gc2V0IHRoZSBudW1iZXIgb2YgZGF5cyB0byByZXRhaW4geW91ciBqb3VybmFsIHRhYmxlIHJlY29yZHMuIEpvdXJuYWwgdGFibGUgcmVjb3JkcyBtdXN0IGJlIHJldGFpbmVkIGZvciBhIG1pbmltdW0gb2YgNyBkYXlzLiBUbyBzZXQgdGhpcyB2YWx1ZSwgc3BlY2lmeSBhbnkgd2hvbGUgbnVtYmVyIGZyb20gYGA3YGAgdG8gYGAyMTQ3NDgzNjQ3YGAuIEZvciBleGFtcGxlLCB0byByZXRhaW4geW91ciBqb3VybmFsIHRhYmxlIHJlY29yZHMgZm9yIG9uZSB5ZWFyLCBzZXQgdGhpcyB2YWx1ZSB0byBgYDM2NWBgLlxuICovXG5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBqb3VybmFsIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBlbmNyeXB0aW9uIHR5cGUgc3BlY2lmaWVkIGZvciBhIG1ldGFkYXRhIHRhYmxlLiBUbyBzcGVjaWZ5IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVNsb25nIChLTVMpIGtleXMgKFNTRS1LTVMpLCB1c2UgdGhlIGBgYXdzOmttc2BgIHZhbHVlLiBUbyBzcGVjaWZ5IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMgbWFuYWdlZCBrZXlzIChTU0UtUzMpLCB1c2UgdGhlIGBgQUVTMjU2YGAgdmFsdWUuXG4gKi9cblNzZUFsZ29yaXRobTogKFwiYXdzOmttc1wiIHwgXCJBRVMyNTZcIilcbi8qKlxuICogSWYgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNU2xvbmcgKEtNUykga2V5cyAoU1NFLUtNUykgaXMgc3BlY2lmaWVkLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIEtNUyBrZXkgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikuIFlvdSBtdXN0IHNwZWNpZnkgYSBjdXN0b21lci1tYW5hZ2VkIEtNUyBrZXkgdGhhdCdzIGxvY2F0ZWQgaW4gdGhlIHNhbWUgUmVnaW9uIGFzIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbkttc0tleUFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgaW52ZW50b3J5IHRhYmxlIGNvbmZpZ3VyYXRpb24gZm9yIGEgbWV0YWRhdGEgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZlbnRvcnlUYWJsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5UYWJsZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5UYWJsZUFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBzdGF0ZSBvZiB0aGUgaW52ZW50b3J5IHRhYmxlLCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGludmVudG9yeSB0YWJsZSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLlxuICovXG5Db25maWd1cmF0aW9uU3RhdGU6IChcIkVOQUJMRURcIiB8IFwiRElTQUJMRURcIilcbkVuY3J5cHRpb25Db25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUVuY3J5cHRpb25Db25maWd1cmF0aW9uMVxufVxuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjEge1xuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiB0eXBlIHNwZWNpZmllZCBmb3IgYSBtZXRhZGF0YSB0YWJsZS4gVG8gc3BlY2lmeSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggS01TbG9uZyAoS01TKSBrZXlzIChTU0UtS01TKSwgdXNlIHRoZSBgYGF3czprbXNgYCB2YWx1ZS4gVG8gc3BlY2lmeSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggQW1hem9uIFMzIG1hbmFnZWQga2V5cyAoU1NFLVMzKSwgdXNlIHRoZSBgYEFFUzI1NmBgIHZhbHVlLlxuICovXG5Tc2VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIpXG4vKipcbiAqIElmIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVNsb25nIChLTVMpIGtleXMgKFNTRS1LTVMpIGlzIHNwZWNpZmllZCwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBLTVMga2V5IEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pLiBZb3UgbXVzdCBzcGVjaWZ5IGEgY3VzdG9tZXItbWFuYWdlZCBLTVMga2V5IHRoYXQncyBsb2NhdGVkIGluIHRoZSBzYW1lIFJlZ2lvbiBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLlxuICovXG5LbXNLZXlBcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgaG93IEFtYXpvbiBTMyBoYW5kbGVzIGJ1Y2tldCBub3RpZmljYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuRXZlbnRCcmlkZ2VDb25maWd1cmF0aW9uPzogRXZlbnRCcmlkZ2VDb25maWd1cmF0aW9uXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgTEFNbG9uZyBmdW5jdGlvbnMgdG8gaW52b2tlIGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCB0byBpbnZva2UgdGhlbS5cbiAqL1xuTGFtYmRhQ29uZmlndXJhdGlvbnM/OiBMYW1iZGFDb25maWd1cmF0aW9uW11cbi8qKlxuICogVGhlIEFtYXpvbiBTaW1wbGUgUXVldWUgU2VydmljZSBxdWV1ZXMgdG8gcHVibGlzaCBtZXNzYWdlcyB0byBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggdG8gcHVibGlzaCBtZXNzYWdlcy5cbiAqL1xuUXVldWVDb25maWd1cmF0aW9ucz86IFF1ZXVlQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFRoZSB0b3BpYyB0byB3aGljaCBub3RpZmljYXRpb25zIGFyZSBzZW50IGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCBub3RpZmljYXRpb25zIGFyZSBnZW5lcmF0ZWQuXG4gKi9cblRvcGljQ29uZmlndXJhdGlvbnM/OiBUb3BpY0NvbmZpZ3VyYXRpb25bXVxufVxuLyoqXG4gKiBFbmFibGVzIGRlbGl2ZXJ5IG9mIGV2ZW50cyB0byBBbWF6b24gRXZlbnRCcmlkZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCcmlkZ2VDb25maWd1cmF0aW9uIHtcbi8qKlxuICogRW5hYmxlcyBkZWxpdmVyeSBvZiBldmVudHMgdG8gQW1hem9uIEV2ZW50QnJpZGdlLlxuICovXG5FdmVudEJyaWRnZUVuYWJsZWQ6IChib29sZWFuICYgc3RyaW5nKVxufVxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIExBTWxvbmcgZnVuY3Rpb25zIHRvIGludm9rZSBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggdG8gaW52b2tlIHRoZW0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUzMgYnVja2V0IGV2ZW50IGZvciB3aGljaCB0byBpbnZva2UgdGhlIExBTWxvbmcgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1cHBvcnRlZCBFdmVudCBUeXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkV2ZW50OiBzdHJpbmdcbkZpbHRlcj86IE5vdGlmaWNhdGlvbkZpbHRlclxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIExBTWxvbmcgZnVuY3Rpb24gdGhhdCBBbWF6b24gUzMgaW52b2tlcyB3aGVuIHRoZSBzcGVjaWZpZWQgZXZlbnQgdHlwZSBvY2N1cnMuXG4gKi9cbkZ1bmN0aW9uOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGZpbHRlcmluZyBydWxlcyB0aGF0IGRldGVybWluZSB3aGljaCBvYmplY3RzIGludm9rZSB0aGUgQVdTIExhbWJkYSBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gY3JlYXRlIGEgZmlsdGVyIHNvIHRoYXQgb25seSBpbWFnZSBmaWxlcyB3aXRoIGEgYGAuanBnYGAgZXh0ZW5zaW9uIGludm9rZSB0aGUgZnVuY3Rpb24gd2hlbiB0aGV5IGFyZSBhZGRlZCB0byB0aGUgQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25GaWx0ZXIge1xuUzNLZXk6IFMzS2V5RmlsdGVyXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBvYmplY3Qga2V5IG5hbWUgcHJlZml4IGFuZCBzdWZmaXggZmlsdGVyaW5nIHJ1bGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzS2V5RmlsdGVyIHtcbi8qKlxuICogQSBsaXN0IG9mIGNvbnRhaW5lcnMgZm9yIHRoZSBrZXktdmFsdWUgcGFpciB0aGF0IGRlZmluZXMgdGhlIGNyaXRlcmlhIGZvciB0aGUgZmlsdGVyIHJ1bGUuXG4gKi9cblJ1bGVzOiBGaWx0ZXJSdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBBbWF6b24gUzMgb2JqZWN0IGtleSBuYW1lIHRvIGZpbHRlciBvbi4gQW4gb2JqZWN0IGtleSBuYW1lIGlzIHRoZSBuYW1lIGFzc2lnbmVkIHRvIGFuIG9iamVjdCBpbiB5b3VyIEFtYXpvbiBTMyBidWNrZXQuIFlvdSBzcGVjaWZ5IHdoZXRoZXIgdG8gZmlsdGVyIG9uIHRoZSBzdWZmaXggb3IgcHJlZml4IG9mIHRoZSBvYmplY3Qga2V5IG5hbWUuIEEgcHJlZml4IGlzIGEgc3BlY2lmaWMgc3RyaW5nIG9mIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBvYmplY3Qga2V5IG5hbWUsIHdoaWNoIHlvdSBjYW4gdXNlIHRvIG9yZ2FuaXplIG9iamVjdHMuIEZvciBleGFtcGxlLCB5b3UgY2FuIHN0YXJ0IHRoZSBrZXkgbmFtZXMgb2YgcmVsYXRlZCBvYmplY3RzIHdpdGggYSBwcmVmaXgsIHN1Y2ggYXMgYGAyMDIzLWBgIG9yIGBgZW5naW5lZXJpbmcvYGAuIFRoZW4sIHlvdSBjYW4gdXNlIGBgRmlsdGVyUnVsZWBgIHRvIGZpbmQgb2JqZWN0cyBpbiBhIGJ1Y2tldCB3aXRoIGtleSBuYW1lcyB0aGF0IGhhdmUgdGhlIHNhbWUgcHJlZml4LiBBIHN1ZmZpeCBpcyBzaW1pbGFyIHRvIGEgcHJlZml4LCBidXQgaXQgaXMgYXQgdGhlIGVuZCBvZiB0aGUgb2JqZWN0IGtleSBuYW1lIGluc3RlYWQgb2YgYXQgdGhlIGJlZ2lubmluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJSdWxlIHtcbi8qKlxuICogVGhlIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggb3Igc3VmZml4IGlkZW50aWZ5aW5nIG9uZSBvciBtb3JlIG9iamVjdHMgdG8gd2hpY2ggdGhlIGZpbHRlcmluZyBydWxlIGFwcGxpZXMuIFRoZSBtYXhpbXVtIGxlbmd0aCBpcyAxLDAyNCBjaGFyYWN0ZXJzLiBPdmVybGFwcGluZyBwcmVmaXhlcyBhbmQgc3VmZml4ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyaW5nIEV2ZW50IE5vdGlmaWNhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5OYW1lOiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIHRoYXQgdGhlIGZpbHRlciBzZWFyY2hlcyBmb3IgaW4gb2JqZWN0IGtleSBuYW1lcy5cbiAqL1xuVmFsdWU6IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHB1Ymxpc2hpbmcgbWVzc2FnZXMgdG8gYW4gQW1hem9uIFNpbXBsZSBRdWV1ZSBTZXJ2aWNlIChBbWF6b24gU1FTKSBxdWV1ZSB3aGVuIEFtYXpvbiBTMyBkZXRlY3RzIHNwZWNpZmllZCBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVldWVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBTMyBidWNrZXQgZXZlbnQgYWJvdXQgd2hpY2ggeW91IHdhbnQgdG8gcHVibGlzaCBtZXNzYWdlcyB0byBBbWF6b24gU1FTLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTdXBwb3J0ZWQgRXZlbnQgVHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5FdmVudDogc3RyaW5nXG5GaWx0ZXI/OiBOb3RpZmljYXRpb25GaWx0ZXIxXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIFNRUyBxdWV1ZSB0byB3aGljaCBBbWF6b24gUzMgcHVibGlzaGVzIGEgbWVzc2FnZSB3aGVuIGl0IGRldGVjdHMgZXZlbnRzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS4gRklGTyBxdWV1ZXMgYXJlIG5vdCBhbGxvd2VkIHdoZW4gZW5hYmxpbmcgYW4gU1FTIHF1ZXVlIGFzIHRoZSBldmVudCBub3RpZmljYXRpb24gZGVzdGluYXRpb24uXG4gKi9cblF1ZXVlOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGZpbHRlcmluZyBydWxlcyB0aGF0IGRldGVybWluZSB3aGljaCBvYmplY3RzIHRyaWdnZXIgbm90aWZpY2F0aW9ucy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gY3JlYXRlIGEgZmlsdGVyIHNvIHRoYXQgQW1hem9uIFMzIHNlbmRzIG5vdGlmaWNhdGlvbnMgb25seSB3aGVuIGltYWdlIGZpbGVzIHdpdGggYSBgYC5qcGdgYCBleHRlbnNpb24gYXJlIGFkZGVkIHRvIHRoZSBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyaW5nIGV2ZW50IG5vdGlmaWNhdGlvbnMgdXNpbmcgb2JqZWN0IGtleSBuYW1lIGZpbHRlcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyLWd1aWRlL25vdGlmaWNhdGlvbi1ob3ctdG8tZmlsdGVyaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkZpbHRlcjEge1xuUzNLZXk6IFMzS2V5RmlsdGVyXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBzcGVjaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIGZvciBwdWJsaWNhdGlvbiBvZiBtZXNzYWdlcyB0byBhbiBBbWF6b24gU2ltcGxlIE5vdGlmaWNhdGlvbiBTZXJ2aWNlIChBbWF6b24gU05TKSB0b3BpYyB3aGVuIEFtYXpvbiBTMyBkZXRlY3RzIHNwZWNpZmllZCBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9waWNDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBTMyBidWNrZXQgZXZlbnQgYWJvdXQgd2hpY2ggdG8gc2VuZCBub3RpZmljYXRpb25zLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTdXBwb3J0ZWQgRXZlbnQgVHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5FdmVudDogc3RyaW5nXG5GaWx0ZXI/OiBOb3RpZmljYXRpb25GaWx0ZXIyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIFNOUyB0b3BpYyB0byB3aGljaCBBbWF6b24gUzMgcHVibGlzaGVzIGEgbWVzc2FnZSB3aGVuIGl0IGRldGVjdHMgZXZlbnRzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAqL1xuVG9waWM6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgZmlsdGVyaW5nIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lIGZvciB3aGljaCBvYmplY3RzIHRvIHNlbmQgbm90aWZpY2F0aW9ucy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gY3JlYXRlIGEgZmlsdGVyIHNvIHRoYXQgQW1hem9uIFMzIHNlbmRzIG5vdGlmaWNhdGlvbnMgb25seSB3aGVuIGltYWdlIGZpbGVzIHdpdGggYSBgYC5qcGdgYCBleHRlbnNpb24gYXJlIGFkZGVkIHRvIHRoZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRmlsdGVyMiB7XG5TM0tleTogUzNLZXlGaWx0ZXJcbn1cbi8qKlxuICogVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgZGlyZWN0b3J5IGJ1Y2tldHMuXG4gKiAgIFBsYWNlcyBhbiBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIG9uIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBUaGUgcnVsZSBzcGVjaWZpZWQgaW4gdGhlIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBhcHBsaWVkIGJ5IGRlZmF1bHQgdG8gZXZlcnkgbmV3IG9iamVjdCBwbGFjZWQgaW4gdGhlIHNwZWNpZmllZCBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xvY2tpbmcgT2JqZWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvb2JqZWN0LWxvY2suaHRtbCkuIFxuICogICAgKyAgVGhlIGBgRGVmYXVsdFJldGVudGlvbmBgIHNldHRpbmdzIHJlcXVpcmUgYm90aCBhIG1vZGUgYW5kIGEgcGVyaW9kLlxuICogICArICBUaGUgYGBEZWZhdWx0UmV0ZW50aW9uYGAgcGVyaW9kIGNhbiBiZSBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgIGJ1dCB5b3UgbXVzdCBzZWxlY3Qgb25lLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLlxuICogICArICBZb3UgY2FuIGVuYWJsZSBPYmplY3QgTG9jayBmb3IgbmV3IG9yIGV4aXN0aW5nIGJ1Y2tldHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyaW5nIE9iamVjdCBMb2NrXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3QtbG9jay1jb25maWd1cmUuaHRtbCkuXG4gKiAgIFxuICogICAgWW91IG11c3QgVVJMIGVuY29kZSBhbnkgc2lnbmVkIGhlYWRlciB2YWx1ZXMgdGhhdCBjb250YWluIHNwYWNlcy4gRm9yIGV4YW1wbGUsIGlmIHlvdXIgaGVhZGVyIHZhbHVlIGlzIGBgbXkgZmlsZS50eHRgYCwgY29udGFpbmluZyB0d28gc3BhY2VzIGFmdGVyIGBgbXlgYCwgeW91IG11c3QgVVJMIGVuY29kZSB0aGlzIHZhbHVlIHRvIGBgbXklMjAlMjBmaWxlLnR4dGBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdExvY2tDb25maWd1cmF0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBidWNrZXQgaGFzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gZW5hYmxlZC4gRW5hYmxlIGBgT2JqZWN0TG9ja0VuYWJsZWRgYCB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuXG4gKi9cbk9iamVjdExvY2tFbmFibGVkPzogXCJFbmFibGVkXCJcblJ1bGU/OiBPYmplY3RMb2NrUnVsZVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIE9iamVjdCBMb2NrIHJ1bGUgZm9yIHRoZSBzcGVjaWZpZWQgb2JqZWN0LiBFbmFibGUgdGhpcyBydWxlIHdoZW4geW91IGFwcGx5IGBgT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25gYCB0byBhIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCBidWNrZXQgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGBgTW9kZWBgIGFuZCBhIHBlcmlvZCBvZiBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtPYmplY3RMb2NrUnVsZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW9iamVjdGxvY2tydWxlLmh0bWwpIGFuZCBbRGVmYXVsdFJldGVudGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LWRlZmF1bHRyZXRlbnRpb24uaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0TG9ja1J1bGUge1xuRGVmYXVsdFJldGVudGlvbj86IERlZmF1bHRSZXRlbnRpb25cbn1cbi8qKlxuICogVGhlIGRlZmF1bHQgT2JqZWN0IExvY2sgcmV0ZW50aW9uIG1vZGUgYW5kIHBlcmlvZCB0aGF0IHlvdSB3YW50IHRvIGFwcGx5IHRvIG5ldyBvYmplY3RzIHBsYWNlZCBpbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCBidWNrZXQgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGBgTW9kZWBgIGFuZCBhIHBlcmlvZCBvZiBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhbGxvd2FibGUgdmFsdWVzIGZvciBtb2RlIGFuZCBwZXJpb2QsIHNlZSBbRGVmYXVsdFJldGVudGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LWRlZmF1bHRyZXRlbnRpb24uaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFJldGVudGlvbiB7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgeWVhcnMgdGhhdCB5b3Ugd2FudCB0byBzcGVjaWZ5IGZvciB0aGUgZGVmYXVsdCByZXRlbnRpb24gcGVyaW9kLiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIHlvdSBtdXN0IHNwZWNpZnkgYGBNb2RlYGAgYW5kIHNwZWNpZnkgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC5cbiAqL1xuWWVhcnM/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIHRoYXQgeW91IHdhbnQgdG8gc3BlY2lmeSBmb3IgdGhlIGRlZmF1bHQgcmV0ZW50aW9uIHBlcmlvZC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTW9kZWBgIGFuZCBzcGVjaWZ5IGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuXG4gKi9cbkRheXM/OiBudW1iZXJcbi8qKlxuICogVGhlIGRlZmF1bHQgT2JqZWN0IExvY2sgcmV0ZW50aW9uIG1vZGUgeW91IHdhbnQgdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgcGxhY2VkIGluIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIHlvdSBtdXN0IHNwZWNpZnkgYGBNb2RlYGAgYW5kIHNwZWNpZnkgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC5cbiAqL1xuTW9kZT86IChcIkNPTVBMSUFOQ0VcIiB8IFwiR09WRVJOQU5DRVwiKVxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgT2JqZWN0IE93bmVyc2hpcCBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lcnNoaXBDb250cm9scyB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29udGFpbmVyIGVsZW1lbnQgZm9yIE9iamVjdCBPd25lcnNoaXAgcnVsZXMuXG4gKi9cblJ1bGVzOiBPd25lcnNoaXBDb250cm9sc1J1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gT2JqZWN0IE93bmVyc2hpcCBydWxlLlxuICogIFMzIE9iamVjdCBPd25lcnNoaXAgaXMgYW4gQW1hem9uIFMzIGJ1Y2tldC1sZXZlbCBzZXR0aW5nIHRoYXQgeW91IGNhbiB1c2UgdG8gZGlzYWJsZSBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgYW5kIHRha2Ugb3duZXJzaGlwIG9mIGV2ZXJ5IG9iamVjdCBpbiB5b3VyIGJ1Y2tldCwgc2ltcGxpZnlpbmcgYWNjZXNzIG1hbmFnZW1lbnQgZm9yIGRhdGEgc3RvcmVkIGluIEFtYXpvbiBTMy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29udHJvbGxpbmcgb3duZXJzaGlwIG9mIG9iamVjdHMgYW5kIGRpc2FibGluZyBBQ0xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyc2hpcENvbnRyb2xzUnVsZSB7XG4vKipcbiAqIFNwZWNpZmllcyBhbiBvYmplY3Qgb3duZXJzaGlwIHJ1bGUuXG4gKi9cbk9iamVjdE93bmVyc2hpcD86IChcIk9iamVjdFdyaXRlclwiIHwgXCJCdWNrZXRPd25lclByZWZlcnJlZFwiIHwgXCJCdWNrZXRPd25lckVuZm9yY2VkXCIpXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdGhhdCBkZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBwdWJsaWMgYWNjZXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgYmxvY2sgcHVibGljIGFjY2VzcyBjb250cm9sIGxpc3RzIChBQ0xzKSBmb3IgdGhpcyBidWNrZXQgYW5kIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyB0aGUgZm9sbG93aW5nIGJlaGF2aW9yOlxuICogICArICBQVVQgQnVja2V0IEFDTCBhbmQgUFVUIE9iamVjdCBBQ0wgY2FsbHMgZmFpbCBpZiB0aGUgc3BlY2lmaWVkIEFDTCBpcyBwdWJsaWMuXG4gKiAgICsgIFBVVCBPYmplY3QgY2FsbHMgZmFpbCBpZiB0aGUgcmVxdWVzdCBpbmNsdWRlcyBhIHB1YmxpYyBBQ0wuXG4gKiAgICsgIFBVVCBCdWNrZXQgY2FsbHMgZmFpbCBpZiB0aGUgcmVxdWVzdCBpbmNsdWRlcyBhIHB1YmxpYyBBQ0wuXG4gKiAgIFxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBleGlzdGluZyBwb2xpY2llcyBvciBBQ0xzLlxuICovXG5CbG9ja1B1YmxpY0FjbHM/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgYmxvY2sgcHVibGljIGJ1Y2tldCBwb2xpY2llcyBmb3IgdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyBBbWF6b24gUzMgdG8gcmVqZWN0IGNhbGxzIHRvIFBVVCBCdWNrZXQgcG9saWN5IGlmIHRoZSBzcGVjaWZpZWQgYnVja2V0IHBvbGljeSBhbGxvd3MgcHVibGljIGFjY2Vzcy4gXG4gKiAgRW5hYmxpbmcgdGhpcyBzZXR0aW5nIGRvZXNuJ3QgYWZmZWN0IGV4aXN0aW5nIGJ1Y2tldCBwb2xpY2llcy5cbiAqL1xuQmxvY2tQdWJsaWNQb2xpY3k/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgaWdub3JlIHB1YmxpYyBBQ0xzIGZvciB0aGlzIGJ1Y2tldCBhbmQgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC4gU2V0dGluZyB0aGlzIGVsZW1lbnQgdG8gYGBUUlVFYGAgY2F1c2VzIEFtYXpvbiBTMyB0byBpZ25vcmUgYWxsIHB1YmxpYyBBQ0xzIG9uIHRoaXMgYnVja2V0IGFuZCBvYmplY3RzIGluIHRoaXMgYnVja2V0LlxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCB0aGUgcGVyc2lzdGVuY2Ugb2YgYW55IGV4aXN0aW5nIEFDTHMgYW5kIGRvZXNuJ3QgcHJldmVudCBuZXcgcHVibGljIEFDTHMgZnJvbSBiZWluZyBzZXQuXG4gKi9cbklnbm9yZVB1YmxpY0FjbHM/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgcmVzdHJpY3QgcHVibGljIGJ1Y2tldCBwb2xpY2llcyBmb3IgdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIHJlc3RyaWN0cyBhY2Nlc3MgdG8gdGhpcyBidWNrZXQgdG8gb25seSBBV1Mtc2VydmljZSBwcmluY2lwYWxzIGFuZCBhdXRob3JpemVkIHVzZXJzIHdpdGhpbiB0aGlzIGFjY291bnQgaWYgdGhlIGJ1Y2tldCBoYXMgYSBwdWJsaWMgcG9saWN5LlxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBwcmV2aW91c2x5IHN0b3JlZCBidWNrZXQgcG9saWNpZXMsIGV4Y2VwdCB0aGF0IHB1YmxpYyBhbmQgY3Jvc3MtYWNjb3VudCBhY2Nlc3Mgd2l0aGluIGFueSBwdWJsaWMgYnVja2V0IHBvbGljeSwgaW5jbHVkaW5nIG5vbi1wdWJsaWMgZGVsZWdhdGlvbiB0byBzcGVjaWZpYyBhY2NvdW50cywgaXMgYmxvY2tlZC5cbiAqL1xuUmVzdHJpY3RQdWJsaWNCdWNrZXRzPzogYm9vbGVhblxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciByZXBsaWNhdGluZyBvYmplY3RzIGluIGFuIFMzIGJ1Y2tldC4gVG8gZW5hYmxlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBhbHNvIGVuYWJsZSB2ZXJzaW9uaW5nIGJ5IHVzaW5nIHRoZSBgYFZlcnNpb25pbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkuXG4gKiAgQW1hem9uIFMzIGNhbiBzdG9yZSByZXBsaWNhdGVkIG9iamVjdHMgaW4gYSBzaW5nbGUgZGVzdGluYXRpb24gYnVja2V0IG9yIG11bHRpcGxlIGRlc3RpbmF0aW9uIGJ1Y2tldHMuIFRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3IgYnVja2V0cyBtdXN0IGFscmVhZHkgZXhpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25Db25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBJQU1sb25nIChJQU0pIHJvbGUgdGhhdCBBbWF6b24gUzMgYXNzdW1lcyB3aGVuIHJlcGxpY2F0aW5nIG9iamVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0hvdyB0byBTZXQgVXAgUmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLWhvdy1zZXR1cC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuUm9sZTogc3RyaW5nXG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBvbmUgb3IgbW9yZSByZXBsaWNhdGlvbiBydWxlcy4gQSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgcnVsZSBhbmQgY2FuIGNvbnRhaW4gYSBtYXhpbXVtIG9mIDEsMDAwIHJ1bGVzLlxuICovXG5SdWxlczogUmVwbGljYXRpb25SdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoaWNoIEFtYXpvbiBTMyBvYmplY3RzIHRvIHJlcGxpY2F0ZSBhbmQgd2hlcmUgdG8gc3RvcmUgdGhlIHJlcGxpY2FzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uUnVsZSB7XG5EZWxldGVNYXJrZXJSZXBsaWNhdGlvbj86IERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uXG5EZXN0aW5hdGlvbjogUmVwbGljYXRpb25EZXN0aW5hdGlvblxuRmlsdGVyPzogUmVwbGljYXRpb25SdWxlRmlsdGVyXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLiBUaGUgbWF4aW11bSB2YWx1ZSBpcyAyNTUgY2hhcmFjdGVycy4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSB2YWx1ZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhIHJhbmRvbSBJRC4gV2hlbiB1c2luZyBhIFYyIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gdGhpcyBwcm9wZXJ0eSBpcyBjYXBpdGFsaXplZCBhcyBcIklEXCIuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBvYmplY3Qgb3Igb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLiBUaGUgbWF4aW11bSBwcmVmaXggbGVuZ3RoIGlzIDEsMDI0IGNoYXJhY3RlcnMuIFRvIGluY2x1ZGUgYWxsIG9iamVjdHMgaW4gYSBidWNrZXQsIHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nLiBUbyBmaWx0ZXIgdXNpbmcgYSBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBhZGQgdGhlIGBgUHJlZml4YGAgZGlyZWN0bHkgYXMgYSBjaGlsZCBlbGVtZW50IG9mIHRoZSBgYFJ1bGVgYCBlbGVtZW50LlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogVGhlIHByaW9yaXR5IGluZGljYXRlcyB3aGljaCBydWxlIGhhcyBwcmVjZWRlbmNlIHdoZW5ldmVyIHR3byBvciBtb3JlIHJlcGxpY2F0aW9uIHJ1bGVzIGNvbmZsaWN0LiBBbWF6b24gUzMgd2lsbCBhdHRlbXB0IHRvIHJlcGxpY2F0ZSBvYmplY3RzIGFjY29yZGluZyB0byBhbGwgcmVwbGljYXRpb24gcnVsZXMuIEhvd2V2ZXIsIGlmIHRoZXJlIGFyZSB0d28gb3IgbW9yZSBydWxlcyB3aXRoIHRoZSBzYW1lIGRlc3RpbmF0aW9uIGJ1Y2tldCwgdGhlbiBvYmplY3RzIHdpbGwgYmUgcmVwbGljYXRlZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGUgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eS4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgaGlnaGVyIHRoZSBwcmlvcml0eS4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Qcmlvcml0eT86IG51bWJlclxuU291cmNlU2VsZWN0aW9uQ3JpdGVyaWE/OiBTb3VyY2VTZWxlY3Rpb25Dcml0ZXJpYVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgcnVsZSBpcyBlbmFibGVkLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHJlcGxpY2F0ZXMgZGVsZXRlIG1hcmtlcnMuIElmIHlvdSBzcGVjaWZ5IGEgYGBGaWx0ZXJgYCBpbiB5b3VyIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIHlvdSBtdXN0IGFsc28gaW5jbHVkZSBhIGBgRGVsZXRlTWFya2VyUmVwbGljYXRpb25gYCBlbGVtZW50LiBJZiB5b3VyIGBgRmlsdGVyYGAgaW5jbHVkZXMgYSBgYFRhZ2BgIGVsZW1lbnQsIHRoZSBgYERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uYGBgYFN0YXR1c2BgIG11c3QgYmUgc2V0IHRvIERpc2FibGVkLCBiZWNhdXNlIEFtYXpvbiBTMyBkb2VzIG5vdCBzdXBwb3J0IHJlcGxpY2F0aW5nIGRlbGV0ZSBtYXJrZXJzIGZvciB0YWctYmFzZWQgcnVsZXMuIEZvciBhbiBleGFtcGxlIGNvbmZpZ3VyYXRpb24sIHNlZSBbQmFzaWMgUnVsZSBDb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi1hZGQtY29uZmlnLmh0bWwjcmVwbGljYXRpb24tY29uZmlnLW1pbi1ydWxlLWNvbmZpZykuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGRlbGV0ZSBtYXJrZXIgcmVwbGljYXRpb24sIHNlZSBbQmFzaWMgUnVsZSBDb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9kZWxldGUtbWFya2VyLXJlcGxpY2F0aW9uLmh0bWwpLiBcbiAqICAgSWYgeW91IGFyZSB1c2luZyBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIEFtYXpvbiBTMyBoYW5kbGVzIHJlcGxpY2F0aW9uIG9mIGRlbGV0ZSBtYXJrZXJzIGRpZmZlcmVudGx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtCYWNrd2FyZCBDb21wYXRpYmlsaXR5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi1hZGQtY29uZmlnLmh0bWwjcmVwbGljYXRpb24tYmFja3dhcmQtY29tcGF0LWNvbnNpZGVyYXRpb25zKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVNYXJrZXJSZXBsaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHJlcGxpY2F0ZSBkZWxldGUgbWFya2Vycy5cbiAqL1xuU3RhdHVzPzogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcGxpY2F0aW9uIGRlc3RpbmF0aW9uIGFuZCBpdHMgY29uZmlndXJhdGlvbnMgaW5jbHVkaW5nIGVuYWJsaW5nIHRoZSBTMyBSZXBsaWNhdGlvbiBUaW1lIENvbnRyb2wgKFMzIFJUQykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25EZXN0aW5hdGlvbiB7XG5BY2Nlc3NDb250cm9sVHJhbnNsYXRpb24/OiBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25cbi8qKlxuICogRGVzdGluYXRpb24gYnVja2V0IG93bmVyIGFjY291bnQgSUQuIEluIGEgY3Jvc3MtYWNjb3VudCBzY2VuYXJpbywgaWYgeW91IGRpcmVjdCBBbWF6b24gUzMgdG8gY2hhbmdlIHJlcGxpY2Egb3duZXJzaGlwIHRvIHRoZSBBV1MtYWNjb3VudCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldCBieSBzcGVjaWZ5aW5nIHRoZSBgYEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbmBgIHByb3BlcnR5LCB0aGlzIGlzIHRoZSBhY2NvdW50IElEIG9mIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Nyb3NzLVJlZ2lvbiBSZXBsaWNhdGlvbiBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb246IENoYW5nZSBSZXBsaWNhIE93bmVyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9jcnItY2hhbmdlLW93bmVyLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbmBgIHByb3BlcnR5LCB0aGUgYGBBY2NvdW50YGAgcHJvcGVydHkgaXMgcmVxdWlyZWQuXG4gKi9cbkFjY291bnQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBidWNrZXQgd2hlcmUgeW91IHdhbnQgQW1hem9uIFMzIHRvIHN0b3JlIHRoZSByZXN1bHRzLlxuICovXG5CdWNrZXQ6IHN0cmluZ1xuRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/OiBFbmNyeXB0aW9uQ29uZmlndXJhdGlvblxuTWV0cmljcz86IE1ldHJpY3NcblJlcGxpY2F0aW9uVGltZT86IFJlcGxpY2F0aW9uVGltZVxuLyoqXG4gKiBUaGUgc3RvcmFnZSBjbGFzcyB0byB1c2Ugd2hlbiByZXBsaWNhdGluZyBvYmplY3RzLCBzdWNoIGFzIFMzIFN0YW5kYXJkIG9yIHJlZHVjZWQgcmVkdW5kYW5jeS4gQnkgZGVmYXVsdCwgQW1hem9uIFMzIHVzZXMgdGhlIHN0b3JhZ2UgY2xhc3Mgb2YgdGhlIHNvdXJjZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBvYmplY3QgcmVwbGljYS4gXG4gKiAgRm9yIHZhbGlkIHZhbHVlcywgc2VlIHRoZSBgYFN0b3JhZ2VDbGFzc2BgIGVsZW1lbnQgb2YgdGhlIFtQVVQgQnVja2V0IHJlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUcmVwbGljYXRpb24uaHRtbCkgYWN0aW9uIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICogIGBgRlNYX09QRU5aRlNgYCBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUgd2hlbiByZXBsaWNhdGluZyBvYmplY3RzLlxuICovXG5TdG9yYWdlQ2xhc3M/OiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJSRURVQ0VEX1JFRFVOREFOQ1lcIiB8IFwiU1RBTkRBUkRcIiB8IFwiU1RBTkRBUkRfSUFcIilcbn1cbi8qKlxuICogU3BlY2lmeSB0aGlzIG9ubHkgaW4gYSBjcm9zcy1hY2NvdW50IHNjZW5hcmlvICh3aGVyZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGJ1Y2tldCBvd25lcnMgYXJlIG5vdCB0aGUgc2FtZSksIGFuZCB5b3Ugd2FudCB0byBjaGFuZ2UgcmVwbGljYSBvd25lcnNoaXAgdG8gdGhlIEFXUy1hY2NvdW50IHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gYnVja2V0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIHRoZSByZXBsaWNhcyBhcmUgb3duZWQgYnkgc2FtZSBBV1MtYWNjb3VudCB0aGF0IG93bnMgdGhlIHNvdXJjZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSByZXBsaWNhIG93bmVyc2hpcC4gRm9yIGRlZmF1bHQgYW5kIHZhbGlkIHZhbHVlcywgc2VlIFtQVVQgYnVja2V0IHJlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUcmVwbGljYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgQVBJIFJlZmVyZW5jZSouXG4gKi9cbk93bmVyOiBcIkRlc3RpbmF0aW9uXCJcbn1cbi8qKlxuICogU3BlY2lmaWVzIGVuY3J5cHRpb24tcmVsYXRlZCBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgSUQgKEtleSBBUk4gb3IgQWxpYXMgQVJOKSBvZiB0aGUgY3VzdG9tZXIgbWFuYWdlZCBBV1MgS01TIGtleSBzdG9yZWQgaW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykgZm9yIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQuIEFtYXpvbiBTMyB1c2VzIHRoaXMga2V5IHRvIGVuY3J5cHQgcmVwbGljYSBvYmplY3RzLiBBbWF6b24gUzMgb25seSBzdXBwb3J0cyBzeW1tZXRyaWMgZW5jcnlwdGlvbiBLTVMga2V5cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXN5bW1ldHJpYyBrZXlzIGluIEtNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3N5bW1ldHJpYy1hc3ltbWV0cmljLmh0bWwpIGluIHRoZSAqS2V5IE1hbmFnZW1lbnQgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5SZXBsaWNhS21zS2V5SUQ6IHN0cmluZ1xufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBzcGVjaWZ5aW5nIHJlcGxpY2F0aW9uIG1ldHJpY3MtcmVsYXRlZCBzZXR0aW5ncyBlbmFibGluZyByZXBsaWNhdGlvbiBtZXRyaWNzIGFuZCBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljcyB7XG5FdmVudFRocmVzaG9sZD86IFJlcGxpY2F0aW9uVGltZVZhbHVlXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSByZXBsaWNhdGlvbiBtZXRyaWNzIGFyZSBlbmFibGVkLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyB0aGUgdGltZSB0aHJlc2hvbGQgZm9yIGVtaXR0aW5nIHRoZSBgYHMzOlJlcGxpY2F0aW9uOk9wZXJhdGlvbk1pc3NlZFRocmVzaG9sZGBgIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZVZhbHVlIHtcbi8qKlxuICogQ29udGFpbnMgYW4gaW50ZWdlciBzcGVjaWZ5aW5nIHRpbWUgaW4gbWludXRlcy4gXG4gKiAgIFZhbGlkIHZhbHVlOiAxNVxuICovXG5NaW51dGVzOiBudW1iZXJcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyBTMyBSZXBsaWNhdGlvbiBUaW1lIENvbnRyb2wgKFMzIFJUQyksIGluY2x1ZGluZyB3aGV0aGVyIFMzIFJUQyBpcyBlbmFibGVkIGFuZCB0aGUgdGltZSB3aGVuIGFsbCBvYmplY3RzIGFuZCBvcGVyYXRpb25zIG9uIG9iamVjdHMgbXVzdCBiZSByZXBsaWNhdGVkLiBNdXN0IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGEgYGBNZXRyaWNzYGAgYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25UaW1lIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHJlcGxpY2F0aW9uIHRpbWUgaXMgZW5hYmxlZC5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG5UaW1lOiBSZXBsaWNhdGlvblRpbWVWYWx1ZTFcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyB0aGUgdGltZSBieSB3aGljaCByZXBsaWNhdGlvbiBzaG91bGQgYmUgY29tcGxldGUgZm9yIGFsbCBvYmplY3RzIGFuZCBvcGVyYXRpb25zIG9uIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25UaW1lVmFsdWUxIHtcbi8qKlxuICogQ29udGFpbnMgYW4gaW50ZWdlciBzcGVjaWZ5aW5nIHRpbWUgaW4gbWludXRlcy4gXG4gKiAgIFZhbGlkIHZhbHVlOiAxNVxuICovXG5NaW51dGVzOiBudW1iZXJcbn1cbi8qKlxuICogQSBmaWx0ZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcmVwbGljYXRpb24gcnVsZSBhcHBsaWVzLiBBIGBgRmlsdGVyYGAgbXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIGBgUHJlZml4YGAsIGBgVGFnRmlsdGVyYGAsIG9yIGFuIGBgQW5kYGAgY2hpbGQgZWxlbWVudC4gVGhlIHVzZSBvZiB0aGUgZmlsdGVyIGZpZWxkIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgYSBWMiByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLiBUaGlzIGZpZWxkIGlzbid0IHN1cHBvcnRlZCBpbiBhIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiAgIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gb25seSBzdXBwb3J0cyBmaWx0ZXJpbmcgYnkga2V5IHByZWZpeC4gVG8gZmlsdGVyIHVzaW5nIGEgVjEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgYWRkIHRoZSBgYFByZWZpeGBgIGRpcmVjdGx5IGFzIGEgY2hpbGQgZWxlbWVudCBvZiB0aGUgYGBSdWxlYGAgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblJ1bGVGaWx0ZXIge1xuQW5kPzogUmVwbGljYXRpb25SdWxlQW5kT3BlcmF0b3Jcbi8qKlxuICogQW4gb2JqZWN0IGtleSBuYW1lIHByZWZpeCB0aGF0IGlkZW50aWZpZXMgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuVGFnRmlsdGVyPzogVGFnRmlsdGVyMVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igc3BlY2lmeWluZyBydWxlIGZpbHRlcnMuIFRoZSBmaWx0ZXJzIGRldGVybWluZSB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy4gVGhpcyBlbGVtZW50IGlzIHJlcXVpcmVkIG9ubHkgaWYgeW91IHNwZWNpZnkgbW9yZSB0aGFuIG9uZSBmaWx0ZXIuIEZvciBleGFtcGxlOiBcbiAqICAgKyAgSWYgeW91IHNwZWNpZnkgYm90aCBhIGBgUHJlZml4YGAgYW5kIGEgYGBUYWdGaWx0ZXJgYCwgd3JhcCB0aGVzZSBmaWx0ZXJzIGluIGFuIGBgQW5kYGAgdGFnLlxuICogICArICBJZiB5b3Ugc3BlY2lmeSBhIGZpbHRlciBiYXNlZCBvbiBtdWx0aXBsZSB0YWdzLCB3cmFwIHRoZSBgYFRhZ0ZpbHRlcmBgIGVsZW1lbnRzIGluIGFuIGBgQW5kYGAgdGFnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uUnVsZUFuZE9wZXJhdG9yIHtcbi8qKlxuICogQW4gb2JqZWN0IGtleSBuYW1lIHByZWZpeCB0aGF0IGlkZW50aWZpZXMgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBBbiBhcnJheSBvZiB0YWdzIGNvbnRhaW5pbmcga2V5IGFuZCB2YWx1ZSBwYWlycy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG59XG4vKipcbiAqIFNwZWNpZmllcyB0YWdzIHRvIHVzZSB0byBpZGVudGlmeSBhIHN1YnNldCBvZiBvYmplY3RzIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDYXRlZ29yaXppbmcgeW91ciBzdG9yYWdlIHVzaW5nIHRhZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC10YWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnRmlsdGVyMSB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHRoYXQgZGVzY3JpYmVzIGFkZGl0aW9uYWwgZmlsdGVycyBmb3IgaWRlbnRpZnlpbmcgdGhlIHNvdXJjZSBvYmplY3RzIHRoYXQgeW91IHdhbnQgdG8gcmVwbGljYXRlLiBZb3UgY2FuIGNob29zZSB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgcmVwbGljYXRpb24gb2YgdGhlc2Ugb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VTZWxlY3Rpb25Dcml0ZXJpYSB7XG5SZXBsaWNhTW9kaWZpY2F0aW9ucz86IFJlcGxpY2FNb2RpZmljYXRpb25zXG5Tc2VLbXNFbmNyeXB0ZWRPYmplY3RzPzogU3NlS21zRW5jcnlwdGVkT2JqZWN0c1xufVxuLyoqXG4gKiBBIGZpbHRlciB0aGF0IHlvdSBjYW4gc3BlY2lmeSBmb3Igc2VsZWN0aW9uIGZvciBtb2RpZmljYXRpb25zIG9uIHJlcGxpY2FzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2FNb2RpZmljYXRpb25zIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHJlcGxpY2F0ZXMgbW9kaWZpY2F0aW9ucyBvbiByZXBsaWNhcy5cbiAqICAqQWxsb3dlZCB2YWx1ZXMqOiBgYEVuYWJsZWRgYCB8IGBgRGlzYWJsZWRgYFxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGZpbHRlciBpbmZvcm1hdGlvbiBmb3IgdGhlIHNlbGVjdGlvbiBvZiBBbWF6b24gUzMgb2JqZWN0cyBlbmNyeXB0ZWQgd2l0aCBBV1MgS01TLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNzZUttc0VuY3J5cHRlZE9iamVjdHMge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgcmVwbGljYXRlcyBvYmplY3RzIGNyZWF0ZWQgd2l0aCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHVzaW5nIGFuIEFXUyBLTVMga2V5IHN0b3JlZCBpbiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZS5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIG9mIGEga2V5IHZhbHVlIG5hbWUgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBOYW1lIG9mIHRoZSBvYmplY3Qga2V5LlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBWYWx1ZSBvZiB0aGUgdGFnLlxuICovXG5WYWx1ZTogc3RyaW5nXG59XG4vKipcbiAqIEVuYWJsZXMgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYWxsIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuIFlvdSBtaWdodCBlbmFibGUgdmVyc2lvbmluZyB0byBwcmV2ZW50IG9iamVjdHMgZnJvbSBiZWluZyBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIGJ5IG1pc3Rha2Ugb3IgdG8gYXJjaGl2ZSBvYmplY3RzIHNvIHRoYXQgeW91IGNhbiByZXRyaWV2ZSBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGVtLlxuICogICBXaGVuIHlvdSBlbmFibGUgdmVyc2lvbmluZyBvbiBhIGJ1Y2tldCBmb3IgdGhlIGZpcnN0IHRpbWUsIGl0IG1pZ2h0IHRha2UgYSBzaG9ydCBhbW91bnQgb2YgdGltZSBmb3IgdGhlIGNoYW5nZSB0byBiZSBmdWxseSBwcm9wYWdhdGVkLiBXZSByZWNvbW1lbmQgdGhhdCB5b3Ugd2FpdCBmb3IgMTUgbWludXRlcyBhZnRlciBlbmFibGluZyB2ZXJzaW9uaW5nIGJlZm9yZSBpc3N1aW5nIHdyaXRlIG9wZXJhdGlvbnMgKGBgUFVUYGAgb3IgYGBERUxFVEVgYCkgb24gb2JqZWN0cyBpbiB0aGUgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25pbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIHZlcnNpb25pbmcgc3RhdGUgb2YgdGhlIGJ1Y2tldC5cbiAqL1xuU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIlN1c3BlbmRlZFwiKVxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgYnVja2V0IGFzIGEgc3RhdGljIHdlYnNpdGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0hvc3RpbmcgV2Vic2l0ZXMgb24gQW1hem9uIFMzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9XZWJzaXRlSG9zdGluZy5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJzaXRlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBlcnJvciBkb2N1bWVudCBmb3IgdGhlIHdlYnNpdGUuXG4gKi9cbkVycm9yRG9jdW1lbnQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGluZGV4IGRvY3VtZW50IGZvciB0aGUgd2Vic2l0ZS5cbiAqL1xuSW5kZXhEb2N1bWVudD86IHN0cmluZ1xuLyoqXG4gKiBSdWxlcyB0aGF0IGRlZmluZSB3aGVuIGEgcmVkaXJlY3QgaXMgYXBwbGllZCBhbmQgdGhlIHJlZGlyZWN0IGJlaGF2aW9yLlxuICovXG5Sb3V0aW5nUnVsZXM/OiBSb3V0aW5nUnVsZVtdXG5SZWRpcmVjdEFsbFJlcXVlc3RzVG8/OiBSZWRpcmVjdEFsbFJlcXVlc3RzVG9cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSByZWRpcmVjdCBiZWhhdmlvciBhbmQgd2hlbiBhIHJlZGlyZWN0IGlzIGFwcGxpZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJvdXRpbmcgcnVsZXMsIHNlZSBbQ29uZmlndXJpbmcgYWR2YW5jZWQgY29uZGl0aW9uYWwgcmVkaXJlY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9ob3ctdG8tcGFnZS1yZWRpcmVjdC5odG1sI2FkdmFuY2VkLWNvbmRpdGlvbmFsLXJlZGlyZWN0cykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ1J1bGUge1xuUmVkaXJlY3RSdWxlOiBSZWRpcmVjdFJ1bGVcblJvdXRpbmdSdWxlQ29uZGl0aW9uPzogUm91dGluZ1J1bGVDb25kaXRpb25cbn1cbi8qKlxuICogQ29udGFpbmVyIGZvciByZWRpcmVjdCBpbmZvcm1hdGlvbi4gWW91IGNhbiByZWRpcmVjdCByZXF1ZXN0cyB0byBhbm90aGVyIGhvc3QsIHRvIGFub3RoZXIgcGFnZSwgb3Igd2l0aCBhbm90aGVyIHByb3RvY29sLiBJbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IsIHlvdSBjYW4gc3BlY2lmeSBhIGRpZmZlcmVudCBlcnJvciBjb2RlIHRvIHJldHVybi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdFJ1bGUge1xuLyoqXG4gKiBUaGUgaG9zdCBuYW1lIHRvIHVzZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdC5cbiAqL1xuSG9zdE5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgcmVkaXJlY3QgY29kZSB0byB1c2Ugb24gdGhlIHJlc3BvbnNlLiBOb3QgcmVxdWlyZWQgaWYgb25lIG9mIHRoZSBzaWJsaW5ncyBpcyBwcmVzZW50LlxuICovXG5IdHRwUmVkaXJlY3RDb2RlPzogc3RyaW5nXG4vKipcbiAqIFByb3RvY29sIHRvIHVzZSB3aGVuIHJlZGlyZWN0aW5nIHJlcXVlc3RzLiBUaGUgZGVmYXVsdCBpcyB0aGUgcHJvdG9jb2wgdGhhdCBpcyB1c2VkIGluIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICovXG5Qcm90b2NvbD86IChcImh0dHBcIiB8IFwiaHR0cHNcIilcbi8qKlxuICogVGhlIG9iamVjdCBrZXkgcHJlZml4IHRvIHVzZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdC4gRm9yIGV4YW1wbGUsIHRvIHJlZGlyZWN0IHJlcXVlc3RzIGZvciBhbGwgcGFnZXMgd2l0aCBwcmVmaXggYGBkb2NzL2BgIChvYmplY3RzIGluIHRoZSBgYGRvY3MvYGAgZm9sZGVyKSB0byBgYGRvY3VtZW50cy9gYCwgeW91IGNhbiBzZXQgYSBjb25kaXRpb24gYmxvY2sgd2l0aCBgYEtleVByZWZpeEVxdWFsc2BgIHNldCB0byBgYGRvY3MvYGAgYW5kIGluIHRoZSBSZWRpcmVjdCBzZXQgYGBSZXBsYWNlS2V5UHJlZml4V2l0aGBgIHRvIGBgL2RvY3VtZW50c2BgLiBOb3QgcmVxdWlyZWQgaWYgb25lIG9mIHRoZSBzaWJsaW5ncyBpcyBwcmVzZW50LiBDYW4gYmUgcHJlc2VudCBvbmx5IGlmIGBgUmVwbGFjZUtleVdpdGhgYCBpcyBub3QgcHJvdmlkZWQuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblJlcGxhY2VLZXlQcmVmaXhXaXRoPzogc3RyaW5nXG4vKipcbiAqIFRoZSBzcGVjaWZpYyBvYmplY3Qga2V5IHRvIHVzZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdC4gRm9yIGV4YW1wbGUsIHJlZGlyZWN0IHJlcXVlc3QgdG8gYGBlcnJvci5odG1sYGAuIE5vdCByZXF1aXJlZCBpZiBvbmUgb2YgdGhlIHNpYmxpbmdzIGlzIHByZXNlbnQuIENhbiBiZSBwcmVzZW50IG9ubHkgaWYgYGBSZXBsYWNlS2V5UHJlZml4V2l0aGBgIGlzIG5vdCBwcm92aWRlZC5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUmVwbGFjZUtleVdpdGg/OiBzdHJpbmdcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGRlc2NyaWJpbmcgYSBjb25kaXRpb24gdGhhdCBtdXN0IGJlIG1ldCBmb3IgdGhlIHNwZWNpZmllZCByZWRpcmVjdCB0byBhcHBseS4gRm9yIGV4YW1wbGUsIDEuIElmIHJlcXVlc3QgaXMgZm9yIHBhZ2VzIGluIHRoZSBgYC9kb2NzYGAgZm9sZGVyLCByZWRpcmVjdCB0byB0aGUgYGAvZG9jdW1lbnRzYGAgZm9sZGVyLiAyLiBJZiByZXF1ZXN0IHJlc3VsdHMgaW4gSFRUUCBlcnJvciA0eHgsIHJlZGlyZWN0IHJlcXVlc3QgdG8gYW5vdGhlciBob3N0IHdoZXJlIHlvdSBtaWdodCBwcm9jZXNzIHRoZSBlcnJvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nUnVsZUNvbmRpdGlvbiB7XG4vKipcbiAqIFRoZSBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHdoZW4gdGhlIHJlZGlyZWN0IGlzIGFwcGxpZWQuIEZvciBleGFtcGxlLCB0byByZWRpcmVjdCByZXF1ZXN0cyBmb3IgYGBFeGFtcGxlUGFnZS5odG1sYGAsIHRoZSBrZXkgcHJlZml4IHdpbGwgYmUgYGBFeGFtcGxlUGFnZS5odG1sYGAuIFRvIHJlZGlyZWN0IHJlcXVlc3QgZm9yIGFsbCBwYWdlcyB3aXRoIHRoZSBwcmVmaXggYGBkb2NzL2BgLCB0aGUga2V5IHByZWZpeCB3aWxsIGJlIGBgZG9jcy9gYCwgd2hpY2ggaWRlbnRpZmllcyBhbGwgb2JqZWN0cyBpbiB0aGUgZG9jcy8gZm9sZGVyLlxuICogIFJlcXVpcmVkIHdoZW4gdGhlIHBhcmVudCBlbGVtZW50IGBgQ29uZGl0aW9uYGAgaXMgc3BlY2lmaWVkIGFuZCBzaWJsaW5nIGBgSHR0cEVycm9yQ29kZVJldHVybmVkRXF1YWxzYGAgaXMgbm90IHNwZWNpZmllZC4gSWYgYm90aCBjb25kaXRpb25zIGFyZSBzcGVjaWZpZWQsIGJvdGggbXVzdCBiZSB0cnVlIGZvciB0aGUgcmVkaXJlY3QgdG8gYmUgYXBwbGllZC5cbiAqL1xuS2V5UHJlZml4RXF1YWxzPzogc3RyaW5nXG4vKipcbiAqIFRoZSBIVFRQIGVycm9yIGNvZGUgd2hlbiB0aGUgcmVkaXJlY3QgaXMgYXBwbGllZC4gSW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLCBpZiB0aGUgZXJyb3IgY29kZSBlcXVhbHMgdGhpcyB2YWx1ZSwgdGhlbiB0aGUgc3BlY2lmaWVkIHJlZGlyZWN0IGlzIGFwcGxpZWQuXG4gKiAgUmVxdWlyZWQgd2hlbiBwYXJlbnQgZWxlbWVudCBgYENvbmRpdGlvbmBgIGlzIHNwZWNpZmllZCBhbmQgc2libGluZyBgYEtleVByZWZpeEVxdWFsc2BgIGlzIG5vdCBzcGVjaWZpZWQuIElmIGJvdGggYXJlIHNwZWNpZmllZCwgdGhlbiBib3RoIG11c3QgYmUgdHJ1ZSBmb3IgdGhlIHJlZGlyZWN0IHRvIGJlIGFwcGxpZWQuXG4gKi9cbkh0dHBFcnJvckNvZGVSZXR1cm5lZEVxdWFscz86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgcmVkaXJlY3QgYmVoYXZpb3IgZm9yIGV2ZXJ5IHJlcXVlc3QgdG8gdGhpcyBidWNrZXQncyB3ZWJzaXRlIGVuZHBvaW50LlxuICogICBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCB5b3UgY2FuJ3Qgc3BlY2lmeSBhbnkgb3RoZXIgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXJlY3RBbGxSZXF1ZXN0c1RvIHtcbi8qKlxuICogTmFtZSBvZiB0aGUgaG9zdCB3aGVyZSByZXF1ZXN0cyBhcmUgcmVkaXJlY3RlZC5cbiAqL1xuSG9zdE5hbWU6IHN0cmluZ1xuLyoqXG4gKiBQcm90b2NvbCB0byB1c2Ugd2hlbiByZWRpcmVjdGluZyByZXF1ZXN0cy4gVGhlIGRlZmF1bHQgaXMgdGhlIHByb3RvY29sIHRoYXQgaXMgdXNlZCBpbiB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAqL1xuUHJvdG9jb2w/OiAoXCJodHRwXCIgfCBcImh0dHBzXCIpXG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzLWJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1zMy1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlzdCBvZiBlbmNyeXB0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgdHlwZSBCbG9ja2VkRW5jcnlwdGlvblR5cGVMaXN0ID0gKFwiTk9ORVwiIHwgXCJTU0UtQ1wiKVtdXG4vKipcbiAqIEFtYXpvbiBTMyBrZXkgZm9ybWF0IGZvciBsb2cgb2JqZWN0cy4gT25seSBvbmUgZm9ybWF0LCBlaXRoZXIgUGFydGl0aW9uZWRQcmVmaXggb3IgU2ltcGxlUHJlZml4LCBpcyBhbGxvd2VkLlxuICovXG5leHBvcnQgdHlwZSBUYXJnZXRPYmplY3RLZXlGb3JtYXQgPSAoe1xuLyoqXG4gKiBUaGlzIGZvcm1hdCBkZWZhdWx0cyB0aGUgcHJlZml4IHRvIHRoZSBnaXZlbiBsb2cgZmlsZSBwcmVmaXggZm9yIGRlbGl2ZXJpbmcgc2VydmVyIGFjY2VzcyBsb2cgZmlsZS5cbiAqL1xuU2ltcGxlUHJlZml4OiB7XG5cbn1cbn0gfCB7XG5QYXJ0aXRpb25lZFByZWZpeDogUGFydGl0aW9uZWRQcmVmaXhcbn0pXG5cbi8qKlxuICogVGhlIGBgQVdTOjpTMzo6QnVja2V0YGAgcmVzb3VyY2UgY3JlYXRlcyBhbiBBbWF6b24gUzMgYnVja2V0IGluIHRoZSBzYW1lIEFXUyBSZWdpb24gd2hlcmUgeW91IGNyZWF0ZSB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHN0YWNrLlxuICogIFRvIGNvbnRyb2wgaG93IEFXUyBDbG91ZEZvcm1hdGlvbiBoYW5kbGVzIHRoZSBidWNrZXQgd2hlbiB0aGUgc3RhY2sgaXMgZGVsZXRlZCwgeW91IGNhbiBzZXQgYSBkZWxldGlvbiBwb2xpY3kgZm9yIHlvdXIgYnVja2V0LiBZb3UgY2FuIGNob29zZSB0byAqcmV0YWluKiB0aGUgYnVja2V0IG9yIHRvICpkZWxldGUqIHRoZSBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0RlbGV0aW9uUG9saWN5IEF0dHJpYnV0ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLWF0dHJpYnV0ZS1kZWxldGlvbnBvbGljeS5odG1sKS5cbiAqICAgWW91IGNhbiBvbmx5IGRlbGV0ZSBlbXB0eSBidWNrZXRzLiBEZWxldGlvbiBmYWlscyBmb3IgYnVja2V0cyB0aGF0IGhhdmUgY29udGVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19TM19CVUNLRVQge1xuQWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb24/OiBBY2NlbGVyYXRlQ29uZmlndXJhdGlvblxuLyoqXG4gKiBUaGlzIGlzIGEgbGVnYWN5IHByb3BlcnR5LCBhbmQgaXQgaXMgbm90IHJlY29tbWVuZGVkIGZvciBtb3N0IHVzZSBjYXNlcy4gQSBtYWpvcml0eSBvZiBtb2Rlcm4gdXNlIGNhc2VzIGluIEFtYXpvbiBTMyBubyBsb25nZXIgcmVxdWlyZSB0aGUgdXNlIG9mIEFDTHMsIGFuZCB3ZSByZWNvbW1lbmQgdGhhdCB5b3Uga2VlcCBBQ0xzIGRpc2FibGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb250cm9sbGluZyBvYmplY3Qgb3duZXJzaGlwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYWJvdXQtb2JqZWN0LW93bmVyc2hpcC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqICAgQSBjYW5uZWQgYWNjZXNzIGNvbnRyb2wgbGlzdCAoQUNMKSB0aGF0IGdyYW50cyBwcmVkZWZpbmVkIHBlcm1pc3Npb25zIHRvIHRoZSBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNhbm5lZCBBQ0xzLCBzZWUgW0Nhbm5lZCBBQ0xdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2FjbC1vdmVydmlldy5odG1sI2Nhbm5lZC1hY2wpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogICBTMyBidWNrZXRzIGFyZSBjcmVhdGVkIHdpdGggQUNMcyBkaXNhYmxlZCBieSBkZWZhdWx0LiBUaGVyZWZvcmUsIHVubGVzcyB5b3UgZXhwbGljaXRseSBzZXQgdGhlIFtBV1M6OlMzOjpPd25lcnNoaXBDb250cm9sc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC1vd25lcnNoaXBjb250cm9scy5odG1sKSBwcm9wZXJ0eSB0byBlbmFibGUgQUNMcywgeW91ciByZXNvdXJjZSB3aWxsIGZhaWwgdG8gZGVwbG95IHdpdGggYW55IHZhbHVlIG90aGVyIHRoYW4gUHJpdmF0ZS4gVXNlIGNhc2VzIHJlcXVpcmluZyBBQ0xzIGFyZSB1bmNvbW1vbi5cbiAqICAgVGhlIG1ham9yaXR5IG9mIGFjY2VzcyBjb250cm9sIGNvbmZpZ3VyYXRpb25zIGNhbiBiZSBzdWNjZXNzZnVsbHkgYW5kIG1vcmUgZWFzaWx5IGFjaGlldmVkIHdpdGggYnVja2V0IHBvbGljaWVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBV1M6OlMzOjpCdWNrZXRQb2xpY3ldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1wb2xpY3kuaHRtbCkuIEZvciBleGFtcGxlcyBvZiBjb21tb24gcG9saWN5IGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgUzMgU2VydmVyIEFjY2VzcyBMb2dzIGJ1Y2tldHMgYW5kIG1vcmUsIHNlZSBbQnVja2V0IHBvbGljeSBleGFtcGxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvZXhhbXBsZS1idWNrZXQtcG9saWNpZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkFjY2Vzc0NvbnRyb2w/OiAoXCJBdXRoZW50aWNhdGVkUmVhZFwiIHwgXCJBd3NFeGVjUmVhZFwiIHwgXCJCdWNrZXRPd25lckZ1bGxDb250cm9sXCIgfCBcIkJ1Y2tldE93bmVyUmVhZFwiIHwgXCJMb2dEZWxpdmVyeVdyaXRlXCIgfCBcIlByaXZhdGVcIiB8IFwiUHVibGljUmVhZFwiIHwgXCJQdWJsaWNSZWFkV3JpdGVcIilcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBhbnkgYW5hbHlzZXMgZm9yIHRoZSBhbmFseXRpY3MgZmlsdGVyIG9mIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cbkFuYWx5dGljc0NvbmZpZ3VyYXRpb25zPzogQW5hbHl0aWNzQ29uZmlndXJhdGlvbltdXG5CdWNrZXRFbmNyeXB0aW9uPzogQnVja2V0RW5jcnlwdGlvblxuLyoqXG4gKiBBIG5hbWUgZm9yIHRoZSBidWNrZXQuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgbmFtZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhIHVuaXF1ZSBJRCBhbmQgdXNlcyB0aGF0IElEIGZvciB0aGUgYnVja2V0IG5hbWUuIFRoZSBidWNrZXQgbmFtZSBtdXN0IGNvbnRhaW4gb25seSBsb3dlcmNhc2UgbGV0dGVycywgbnVtYmVycywgcGVyaW9kcyAoLiksIGFuZCBkYXNoZXMgKC0pIGFuZCBtdXN0IGZvbGxvdyBbQW1hem9uIFMzIGJ1Y2tldCByZXN0cmljdGlvbnMgYW5kIGxpbWl0YXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9CdWNrZXRSZXN0cmljdGlvbnMuaHRtbCkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1J1bGVzIGZvciBuYW1pbmcgQW1hem9uIFMzIGJ1Y2tldHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2J1Y2tldG5hbWluZ3J1bGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLiBcbiAqICAgSWYgeW91IHNwZWNpZnkgYSBuYW1lLCB5b3UgY2FuJ3QgcGVyZm9ybSB1cGRhdGVzIHRoYXQgcmVxdWlyZSByZXBsYWNlbWVudCBvZiB0aGlzIHJlc291cmNlLiBZb3UgY2FuIHBlcmZvcm0gdXBkYXRlcyB0aGF0IHJlcXVpcmUgbm8gb3Igc29tZSBpbnRlcnJ1cHRpb24uIElmIHlvdSBuZWVkIHRvIHJlcGxhY2UgdGhlIHJlc291cmNlLCBzcGVjaWZ5IGEgbmV3IG5hbWUuXG4gKi9cbkJ1Y2tldE5hbWU/OiBzdHJpbmdcbkNvcnNDb25maWd1cmF0aW9uPzogQ29yc0NvbmZpZ3VyYXRpb25cbi8qKlxuICogRGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlLlxuICovXG5JbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9ucz86IEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25bXVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFMzIEludmVudG9yeSBjb25maWd1cmF0aW9uIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtHRVQgQnVja2V0IGludmVudG9yeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldEdFVEludmVudG9yeUNvbmZpZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuSW52ZW50b3J5Q29uZmlndXJhdGlvbnM/OiBJbnZlbnRvcnlDb25maWd1cmF0aW9uW11cbkxpZmVjeWNsZUNvbmZpZ3VyYXRpb24/OiBMaWZlY3ljbGVDb25maWd1cmF0aW9uXG5Mb2dnaW5nQ29uZmlndXJhdGlvbj86IExvZ2dpbmdDb25maWd1cmF0aW9uXG4vKipcbiAqIFNwZWNpZmllcyBhIG1ldHJpY3MgY29uZmlndXJhdGlvbiBmb3IgdGhlIENsb3VkV2F0Y2ggcmVxdWVzdCBtZXRyaWNzIChzcGVjaWZpZWQgYnkgdGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBJRCkgZnJvbSBhbiBBbWF6b24gUzMgYnVja2V0LiBJZiB5b3UncmUgdXBkYXRpbmcgYW4gZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLCBub3RlIHRoYXQgdGhpcyBpcyBhIGZ1bGwgcmVwbGFjZW1lbnQgb2YgdGhlIGV4aXN0aW5nIG1ldHJpY3MgY29uZmlndXJhdGlvbi4gSWYgeW91IGRvbid0IGluY2x1ZGUgdGhlIGVsZW1lbnRzIHlvdSB3YW50IHRvIGtlZXAsIHRoZXkgYXJlIGVyYXNlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvQVBJL1JFU1RCdWNrZXRQVVRNZXRyaWNDb25maWd1cmF0aW9uLmh0bWwpLlxuICovXG5NZXRyaWNzQ29uZmlndXJhdGlvbnM/OiBNZXRyaWNzQ29uZmlndXJhdGlvbltdXG5NZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uXG5NZXRhZGF0YUNvbmZpZ3VyYXRpb24/OiBNZXRhZGF0YUNvbmZpZ3VyYXRpb25cbk5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uXG5PYmplY3RMb2NrQ29uZmlndXJhdGlvbj86IE9iamVjdExvY2tDb25maWd1cmF0aW9uXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgYnVja2V0IGhhcyBhbiBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIGVuYWJsZWQuIEVuYWJsZSBgYE9iamVjdExvY2tFbmFibGVkYGAgd2hlbiB5b3UgYXBwbHkgYGBPYmplY3RMb2NrQ29uZmlndXJhdGlvbmBgIHRvIGEgYnVja2V0LlxuICovXG5PYmplY3RMb2NrRW5hYmxlZD86IGJvb2xlYW5cbk93bmVyc2hpcENvbnRyb2xzPzogT3duZXJzaGlwQ29udHJvbHNcblB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbj86IFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvblxuUmVwbGljYXRpb25Db25maWd1cmF0aW9uPzogUmVwbGljYXRpb25Db25maWd1cmF0aW9uXG4vKipcbiAqIEFuIGFyYml0cmFyeSBzZXQgb2YgdGFncyAoa2V5LXZhbHVlIHBhaXJzKSBmb3IgdGhpcyBTMyBidWNrZXQuXG4gKi9cblRhZ3M/OiBUYWdbXVxuQWJhY1N0YXR1cz86IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcblZlcnNpb25pbmdDb25maWd1cmF0aW9uPzogVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb25cbldlYnNpdGVDb25maWd1cmF0aW9uPzogV2Vic2l0ZUNvbmZpZ3VyYXRpb25cbkFybj86IHN0cmluZ1xuRG9tYWluTmFtZT86IHN0cmluZ1xuRHVhbFN0YWNrRG9tYWluTmFtZT86IHN0cmluZ1xuUmVnaW9uYWxEb21haW5OYW1lPzogc3RyaW5nXG5XZWJzaXRlVVJMPzogc3RyaW5nXG59XG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIHRyYW5zZmVyIGFjY2VsZXJhdGlvbiBzdGF0ZSBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIFMzIFRyYW5zZmVyIEFjY2VsZXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvdHJhbnNmZXItYWNjZWxlcmF0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSB0cmFuc2ZlciBhY2NlbGVyYXRpb24gc3RhdHVzIG9mIHRoZSBidWNrZXQuXG4gKi9cbkFjY2VsZXJhdGlvblN0YXR1czogKFwiRW5hYmxlZFwiIHwgXCJTdXNwZW5kZWRcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBhbnkgYW5hbHlzZXMgZm9yIHRoZSBhbmFseXRpY3MgZmlsdGVyIG9mIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl0aWNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSB0YWdzIHRvIHVzZSB3aGVuIGV2YWx1YXRpbmcgYW4gYW5hbHl0aWNzIGZpbHRlci5cbiAqICBUaGUgYW5hbHl0aWNzIG9ubHkgaW5jbHVkZXMgb2JqZWN0cyB0aGF0IG1lZXQgdGhlIGZpbHRlcidzIGNyaXRlcmlhLiBJZiBubyBmaWx0ZXIgaXMgc3BlY2lmaWVkLCBhbGwgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWNrZXQgYXJlIGluY2x1ZGVkIGluIHRoZSBhbmFseXNpcy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG5TdG9yYWdlQ2xhc3NBbmFseXNpczogU3RvcmFnZUNsYXNzQW5hbHlzaXNcbi8qKlxuICogVGhlIElEIHRoYXQgaWRlbnRpZmllcyB0aGUgYW5hbHl0aWNzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogVGhlIHByZWZpeCB0aGF0IGFuIG9iamVjdCBtdXN0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGFuYWx5dGljcyByZXN1bHRzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRhZ3MgdG8gdXNlIHRvIGlkZW50aWZ5IGEgc3Vic2V0IG9mIG9iamVjdHMgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NhdGVnb3JpemluZyB5b3VyIHN0b3JhZ2UgdXNpbmcgdGFnc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LXRhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdGaWx0ZXIge1xuLyoqXG4gKiBUaGUgdGFnIHZhbHVlLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWcga2V5LlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBDb250YWlucyBkYXRhIHJlbGF0ZWQgdG8gYWNjZXNzIHBhdHRlcm5zIHRvIGJlIGNvbGxlY3RlZCBhbmQgbWFkZSBhdmFpbGFibGUgdG8gYW5hbHl6ZSB0aGUgdHJhZGVvZmZzIGJldHdlZW4gZGlmZmVyZW50IHN0b3JhZ2UgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlQ2xhc3NBbmFseXNpcyB7XG5EYXRhRXhwb3J0PzogRGF0YUV4cG9ydFxufVxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IGRhdGEgcmVsYXRlZCB0byB0aGUgc3RvcmFnZSBjbGFzcyBhbmFseXNpcyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldCBzaG91bGQgYmUgZXhwb3J0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUV4cG9ydCB7XG5EZXN0aW5hdGlvbjogRGVzdGluYXRpb25cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIG91dHB1dCBzY2hlbWEgdG8gdXNlIHdoZW4gZXhwb3J0aW5nIGRhdGEuIE11c3QgYmUgYGBWXzFgYC5cbiAqL1xuT3V0cHV0U2NoZW1hVmVyc2lvbjogXCJWXzFcIlxufVxuLyoqXG4gKiBUaGUgcGxhY2UgdG8gc3RvcmUgdGhlIGRhdGEgZm9yIGFuIGFuYWx5c2lzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3RpbmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBidWNrZXQgdG8gd2hpY2ggZGF0YSBpcyBleHBvcnRlZC5cbiAqL1xuQnVja2V0QXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIGFjY291bnQgSUQgdGhhdCBvd25zIHRoZSBkZXN0aW5hdGlvbiBTMyBidWNrZXQuIElmIG5vIGFjY291bnQgSUQgaXMgcHJvdmlkZWQsIHRoZSBvd25lciBpcyBub3QgdmFsaWRhdGVkIGJlZm9yZSBleHBvcnRpbmcgZGF0YS5cbiAqICAgIEFsdGhvdWdoIHRoaXMgdmFsdWUgaXMgb3B0aW9uYWwsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0aGF0IHlvdSBzZXQgaXQgdG8gaGVscCBwcmV2ZW50IHByb2JsZW1zIGlmIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXJzaGlwIGNoYW5nZXMuXG4gKi9cbkJ1Y2tldEFjY291bnRJZD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGZpbGUgZm9ybWF0IHVzZWQgd2hlbiBleHBvcnRpbmcgZGF0YSB0byBBbWF6b24gUzMuXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjogYGBDU1ZgYCB8IGBgT1JDYGAgfCBgYFBhcnF1ZXRgYFxuICovXG5Gb3JtYXQ6IChcIkNTVlwiIHwgXCJPUkNcIiB8IFwiUGFycXVldFwiKVxuLyoqXG4gKiBUaGUgcHJlZml4IHRvIHVzZSB3aGVuIGV4cG9ydGluZyBkYXRhLiBUaGUgcHJlZml4IGlzIHByZXBlbmRlZCB0byBhbGwgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBkZWZhdWx0IGVuY3J5cHRpb24gZm9yIGEgYnVja2V0IHVzaW5nIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMtbWFuYWdlZCBrZXlzIChTU0UtUzMpLCBBV1MgS01TLW1hbmFnZWQga2V5cyAoU1NFLUtNUyksIG9yIGR1YWwtbGF5ZXIgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNUy1tYW5hZ2VkIGtleXMgKERTU0UtS01TKS4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBbWF6b24gUzMgZGVmYXVsdCBlbmNyeXB0aW9uIGZlYXR1cmUsIHNlZSBbQW1hem9uIFMzIERlZmF1bHQgRW5jcnlwdGlvbiBmb3IgUzMgQnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVja2V0RW5jcnlwdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBzZXJ2ZXItc2lkZS1lbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cblNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogU2VydmVyU2lkZUVuY3J5cHRpb25SdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqICAgICsgICpHZW5lcmFsIHB1cnBvc2UgYnVja2V0cyogLSBJZiB5b3UncmUgc3BlY2lmeWluZyBhIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSwgd2UgcmVjb21tZW5kIHVzaW5nIGEgZnVsbHkgcXVhbGlmaWVkIEtNUyBrZXkgQVJOLiBJZiB5b3UgdXNlIGEgS01TIGtleSBhbGlhcyBpbnN0ZWFkLCB0aGVuIEtNUyByZXNvbHZlcyB0aGUga2V5IHdpdGhpbiB0aGUgcmVxdWVzdGVy4oCZcyBhY2NvdW50LiBUaGlzIGJlaGF2aW9yIGNhbiByZXN1bHQgaW4gZGF0YSB0aGF0J3MgZW5jcnlwdGVkIHdpdGggYSBLTVMga2V5IHRoYXQgYmVsb25ncyB0byB0aGUgcmVxdWVzdGVyLCBhbmQgbm90IHRoZSBidWNrZXQgb3duZXIuXG4gKiAgICsgICpEaXJlY3RvcnkgYnVja2V0cyogLSBXaGVuIHlvdSBzcGVjaWZ5IGFuIFtjdXN0b21lciBtYW5hZ2VkIGtleV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ttcy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvY29uY2VwdHMuaHRtbCNjdXN0b21lci1jbWspIGZvciBlbmNyeXB0aW9uIGluIHlvdXIgZGlyZWN0b3J5IGJ1Y2tldCwgb25seSB1c2UgdGhlIGtleSBJRCBvciBrZXkgQVJOLiBUaGUga2V5IGFsaWFzIGZvcm1hdCBvZiB0aGUgS01TIGtleSBpc24ndCBzdXBwb3J0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyU2lkZUVuY3J5cHRpb25SdWxlIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHNob3VsZCB1c2UgYW4gUzMgQnVja2V0IEtleSB3aXRoIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdXNpbmcgS01TIChTU0UtS01TKSBmb3IgbmV3IG9iamVjdHMgaW4gdGhlIGJ1Y2tldC4gRXhpc3Rpbmcgb2JqZWN0cyBhcmUgbm90IGFmZmVjdGVkLiBTZXR0aW5nIHRoZSBgYEJ1Y2tldEtleUVuYWJsZWRgYCBlbGVtZW50IHRvIGBgdHJ1ZWBgIGNhdXNlcyBBbWF6b24gUzMgdG8gdXNlIGFuIFMzIEJ1Y2tldCBLZXkuIEJ5IGRlZmF1bHQsIFMzIEJ1Y2tldCBLZXkgaXMgbm90IGVuYWJsZWQuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIFMzIEJ1Y2tldCBLZXlzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9idWNrZXQta2V5Lmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5CdWNrZXRLZXlFbmFibGVkPzogYm9vbGVhblxuU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ/OiBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdFxuQmxvY2tlZEVuY3J5cHRpb25UeXBlcz86IEJsb2NrZWRFbmNyeXB0aW9uVHlwZXNcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgaW4gdGhlIGJ1Y2tldC4gSWYgYSBQVVQgT2JqZWN0IHJlcXVlc3QgZG9lc24ndCBzcGVjaWZ5IGFueSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLCB0aGlzIGRlZmF1bHQgZW5jcnlwdGlvbiB3aWxsIGJlIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQge1xuLyoqXG4gKiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBjdXN0b21lciBtYW5hZ2VkIGtleSBJRCB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uIFxuICogICAgKyAgKkdlbmVyYWwgcHVycG9zZSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAgb3IgYGBhd3M6a21zOmRzc2VgYC5cbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAuXG4gKiAgIFxuICogICBZb3UgY2FuIHNwZWNpZnkgdGhlIGtleSBJRCwga2V5IGFsaWFzLCBvciB0aGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEtNUyBrZXkuXG4gKiAgICsgIEtleSBJRDogYGAxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJgYFxuICogICArICBLZXkgQVJOOiBgYGFybjphd3M6a21zOnVzLWVhc3QtMjoxMTExMjIyMjMzMzM6a2V5LzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYmBgXG4gKiAgICsgIEtleSBBbGlhczogYGBhbGlhcy9hbGlhcy1uYW1lYGBcbiAqICAgXG4gKiAgSWYgeW91IGFyZSB1c2luZyBlbmNyeXB0aW9uIHdpdGggY3Jvc3MtYWNjb3VudCBvciBBV1Mgc2VydmljZSBvcGVyYXRpb25zLCB5b3UgbXVzdCB1c2UgYSBmdWxseSBxdWFsaWZpZWQgS01TIGtleSBBUk4uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIGVuY3J5cHRpb24gZm9yIGNyb3NzLWFjY291bnQgb3BlcmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCNidWNrZXQtZW5jcnlwdGlvbi11cGRhdGUtYnVja2V0LXBvbGljeSkuXG4gKiAgICArICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gSWYgeW91J3JlIHNwZWNpZnlpbmcgYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksIHdlIHJlY29tbWVuZCB1c2luZyBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gSWYgeW91IHVzZSBhIEtNUyBrZXkgYWxpYXMgaW5zdGVhZCwgdGhlbiBLTVMgcmVzb2x2ZXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3RlcuKAmXMgYWNjb3VudC4gVGhpcyBiZWhhdmlvciBjYW4gcmVzdWx0IGluIGRhdGEgdGhhdCdzIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHJlcXVlc3RlciwgYW5kIG5vdCB0aGUgYnVja2V0IG93bmVyLiBBbHNvLCBpZiB5b3UgdXNlIGEga2V5IElELCB5b3UgY2FuIHJ1biBpbnRvIGEgTG9nRGVzdGluYXRpb24gdW5kZWxpdmVyYWJsZSBlcnJvciB3aGVuIGNyZWF0aW5nIGEgVlBDIGZsb3cgbG9nLiBcbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFdoZW4geW91IHNwZWNpZnkgYW4gW2N1c3RvbWVyIG1hbmFnZWQga2V5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2N1c3RvbWVyLWNtaykgZm9yIGVuY3J5cHRpb24gaW4geW91ciBkaXJlY3RvcnkgYnVja2V0LCBvbmx5IHVzZSB0aGUga2V5IElEIG9yIGtleSBBUk4uIFRoZSBrZXkgYWxpYXMgZm9ybWF0IG9mIHRoZSBLTVMga2V5IGlzbid0IHN1cHBvcnRlZC5cbiAqICAgXG4gKiAgICBBbWF6b24gUzMgb25seSBzdXBwb3J0cyBzeW1tZXRyaWMgZW5jcnlwdGlvbiBLTVMga2V5cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXN5bW1ldHJpYyBrZXlzIGluIEtNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3N5bW1ldHJpYy1hc3ltbWV0cmljLmh0bWwpIGluIHRoZSAqS2V5IE1hbmFnZW1lbnQgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5LTVNNYXN0ZXJLZXlJRD86IHN0cmluZ1xuLyoqXG4gKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uXG4gKiAgIEZvciBkaXJlY3RvcnkgYnVja2V0cywgdGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCB2YWx1ZXMgZm9yIHNlcnZlci1zaWRlIGVuY3J5cHRpb246IGBgQUVTMjU2YGAgYW5kIGBgYXdzOmttc2BgLlxuICovXG5TU0VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIgfCBcImF3czprbXM6ZHNzZVwiKVxufVxuZXhwb3J0IGludGVyZmFjZSBCbG9ja2VkRW5jcnlwdGlvblR5cGVzIHtcbkVuY3J5cHRpb25UeXBlPzogQmxvY2tlZEVuY3J5cHRpb25UeXBlTGlzdFxufVxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGNyb3NzLW9yaWdpbiBhY2Nlc3MgY29uZmlndXJhdGlvbiBmb3Igb2JqZWN0cyBpbiBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFbmFibGluZyBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvY29ycy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEEgc2V0IG9mIG9yaWdpbnMgYW5kIG1ldGhvZHMgKGNyb3NzLW9yaWdpbiBhY2Nlc3MgdGhhdCB5b3Ugd2FudCB0byBhbGxvdykuIFlvdSBjYW4gYWRkIHVwIHRvIDEwMCBydWxlcyB0byB0aGUgY29uZmlndXJhdGlvbi5cbiAqL1xuQ29yc1J1bGVzOiBDb3JzUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGNyb3NzLW9yaWdpbiBhY2Nlc3MgcnVsZSBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JzUnVsZSB7XG4vKipcbiAqIEhlYWRlcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBgYEFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVyc2BgIGhlYWRlci4gVGhlc2UgaGVhZGVycyBhcmUgYWxsb3dlZCBpbiBhIHByZWZsaWdodCBPUFRJT05TIHJlcXVlc3QuIEluIHJlc3BvbnNlIHRvIGFueSBwcmVmbGlnaHQgT1BUSU9OUyByZXF1ZXN0LCBBbWF6b24gUzMgcmV0dXJucyBhbnkgcmVxdWVzdGVkIGhlYWRlcnMgdGhhdCBhcmUgYWxsb3dlZC5cbiAqL1xuQWxsb3dlZEhlYWRlcnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBBbiBIVFRQIG1ldGhvZCB0aGF0IHlvdSBhbGxvdyB0aGUgb3JpZ2luIHRvIHJ1bi5cbiAqICAqQWxsb3dlZCB2YWx1ZXMqOiBgYEdFVGBgIHwgYGBQVVRgYCB8IGBgSEVBRGBgIHwgYGBQT1NUYGAgfCBgYERFTEVURWBgXG4gKi9cbkFsbG93ZWRNZXRob2RzOiAoXCJHRVRcIiB8IFwiUFVUXCIgfCBcIkhFQURcIiB8IFwiUE9TVFwiIHwgXCJERUxFVEVcIilbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBvcmlnaW5zIHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgYnVja2V0IGZyb20uXG4gKi9cbkFsbG93ZWRPcmlnaW5zOiBzdHJpbmdbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBoZWFkZXJzIGluIHRoZSByZXNwb25zZSB0aGF0IHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyBmcm9tIHRoZWlyIGFwcGxpY2F0aW9ucyAoZm9yIGV4YW1wbGUsIGZyb20gYSBKYXZhU2NyaXB0IGBgWE1MSHR0cFJlcXVlc3RgYCBvYmplY3QpLlxuICovXG5FeHBvc2VkSGVhZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcnVsZS4gVGhlIHZhbHVlIG11c3QgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91ciBicm93c2VyIGlzIHRvIGNhY2hlIHRoZSBwcmVmbGlnaHQgcmVzcG9uc2UgZm9yIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UuXG4gKi9cbk1heEFnZT86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbiBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcywgc2VlIFtTdG9yYWdlIGNsYXNzIGZvciBhdXRvbWF0aWNhbGx5IG9wdGltaXppbmcgZnJlcXVlbnRseSBhbmQgaW5mcmVxdWVudGx5IGFjY2Vzc2VkIG9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3N0b3JhZ2UtY2xhc3MtaW50cm8uaHRtbCNzYy1keW5hbWljLWRhdGEtYWNjZXNzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc3RhdHVzIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbi8qKlxuICogQSBjb250YWluZXIgZm9yIGEga2V5LXZhbHVlIHBhaXIuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaXN0IG9mIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcyB0aWVycyBpbiB0aGUgY29uZmlndXJhdGlvbi4gQXQgbGVhc3Qgb25lIHRpZXIgbXVzdCBiZSBkZWZpbmVkIGluIHRoZSBsaXN0LiBBdCBtb3N0LCB5b3UgY2FuIHNwZWNpZnkgdHdvIHRpZXJzIGluIHRoZSBsaXN0LCBvbmUgZm9yIGVhY2ggYXZhaWxhYmxlIEFjY2Vzc1RpZXI6IGBgQVJDSElWRV9BQ0NFU1NgYCBhbmQgYGBERUVQX0FSQ0hJVkVfQUNDRVNTYGAuXG4gKiAgIFlvdSBvbmx5IG5lZWQgSW50ZWxsaWdlbnQgVGllcmluZyBDb25maWd1cmF0aW9uIGVuYWJsZWQgb24gYSBidWNrZXQgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBtb3ZlIG9iamVjdHMgc3RvcmVkIGluIHRoZSBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MgdG8gQXJjaGl2ZSBBY2Nlc3Mgb3IgRGVlcCBBcmNoaXZlIEFjY2VzcyB0aWVycy5cbiAqL1xuVGllcmluZ3M6IFRpZXJpbmdbXVxufVxuLyoqXG4gKiBUaGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzIGlzIGRlc2lnbmVkIHRvIG9wdGltaXplIHN0b3JhZ2UgY29zdHMgYnkgYXV0b21hdGljYWxseSBtb3ZpbmcgZGF0YSB0byB0aGUgbW9zdCBjb3N0LWVmZmVjdGl2ZSBzdG9yYWdlIGFjY2VzcyB0aWVyLCB3aXRob3V0IGFkZGl0aW9uYWwgb3BlcmF0aW9uYWwgb3ZlcmhlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGllcmluZyB7XG4vKipcbiAqIFMzIEludGVsbGlnZW50LVRpZXJpbmcgYWNjZXNzIHRpZXIuIFNlZSBbU3RvcmFnZSBjbGFzcyBmb3IgYXV0b21hdGljYWxseSBvcHRpbWl6aW5nIGZyZXF1ZW50bHkgYW5kIGluZnJlcXVlbnRseSBhY2Nlc3NlZCBvYmplY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9zdG9yYWdlLWNsYXNzLWludHJvLmh0bWwjc2MtZHluYW1pYy1kYXRhLWFjY2VzcykgZm9yIGEgbGlzdCBvZiBhY2Nlc3MgdGllcnMgaW4gdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcy5cbiAqL1xuQWNjZXNzVGllcjogKFwiQVJDSElWRV9BQ0NFU1NcIiB8IFwiREVFUF9BUkNISVZFX0FDQ0VTU1wiKVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGRheXMgb2Ygbm8gYWNjZXNzIGFmdGVyIHdoaWNoIGFuIG9iamVjdCB3aWxsIGJlIGVsaWdpYmxlIHRvIGJlIHRyYW5zaXRpb25lZCB0byB0aGUgY29ycmVzcG9uZGluZyB0aWVyLiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGF5cyBzcGVjaWZpZWQgZm9yIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCA5MCBkYXlzIGFuZCBEZWVwIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCAxODAgZGF5cy4gVGhlIG1heGltdW0gY2FuIGJlIHVwIHRvIDIgeWVhcnMgKDczMCBkYXlzKS5cbiAqL1xuRGF5czogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgUzMgSW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludmVudG9yeUNvbmZpZ3VyYXRpb24ge1xuRGVzdGluYXRpb246IERlc3RpbmF0aW9uMVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgaW52ZW50b3J5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIElmIHNldCB0byBgYFRydWVgYCwgYW4gaW52ZW50b3J5IGxpc3QgaXMgZ2VuZXJhdGVkLiBJZiBzZXQgdG8gYGBGYWxzZWBgLCBubyBpbnZlbnRvcnkgbGlzdCBpcyBnZW5lcmF0ZWQuXG4gKi9cbkVuYWJsZWQ6IGJvb2xlYW5cbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGludmVudG9yeSBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIE9iamVjdCB2ZXJzaW9ucyB0byBpbmNsdWRlIGluIHRoZSBpbnZlbnRvcnkgbGlzdC4gSWYgc2V0IHRvIGBgQWxsYGAsIHRoZSBsaXN0IGluY2x1ZGVzIGFsbCB0aGUgb2JqZWN0IHZlcnNpb25zLCB3aGljaCBhZGRzIHRoZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzIGBgVmVyc2lvbklkYGAsIGBgSXNMYXRlc3RgYCwgYW5kIGBgRGVsZXRlTWFya2VyYGAgdG8gdGhlIGxpc3QuIElmIHNldCB0byBgYEN1cnJlbnRgYCwgdGhlIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGVzZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzLlxuICovXG5JbmNsdWRlZE9iamVjdFZlcnNpb25zOiAoXCJBbGxcIiB8IFwiQ3VycmVudFwiKVxuLyoqXG4gKiBDb250YWlucyB0aGUgb3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBpbnZlbnRvcnkgcmVzdWx0cy5cbiAqL1xuT3B0aW9uYWxGaWVsZHM/OiAoXCJTaXplXCIgfCBcIkxhc3RNb2RpZmllZERhdGVcIiB8IFwiU3RvcmFnZUNsYXNzXCIgfCBcIkVUYWdcIiB8IFwiSXNNdWx0aXBhcnRVcGxvYWRlZFwiIHwgXCJSZXBsaWNhdGlvblN0YXR1c1wiIHwgXCJFbmNyeXB0aW9uU3RhdHVzXCIgfCBcIk9iamVjdExvY2tSZXRhaW5VbnRpbERhdGVcIiB8IFwiT2JqZWN0TG9ja01vZGVcIiB8IFwiT2JqZWN0TG9ja0xlZ2FsSG9sZFN0YXR1c1wiIHwgXCJJbnRlbGxpZ2VudFRpZXJpbmdBY2Nlc3NUaWVyXCIgfCBcIkJ1Y2tldEtleVN0YXR1c1wiIHwgXCJDaGVja3N1bUFsZ29yaXRobVwiIHwgXCJPYmplY3RBY2Nlc3NDb250cm9sTGlzdFwiIHwgXCJPYmplY3RPd25lclwiKVtdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGZpbHRlciBwcmVmaXguXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNjaGVkdWxlIGZvciBnZW5lcmF0aW5nIGludmVudG9yeSByZXN1bHRzLlxuICovXG5TY2hlZHVsZUZyZXF1ZW5jeTogKFwiRGFpbHlcIiB8IFwiV2Vla2x5XCIpXG59XG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHB1Ymxpc2ggdGhlIGludmVudG9yeSByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3RpbmF0aW9uMSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHRvIHdoaWNoIGRhdGEgaXMgZXhwb3J0ZWQuXG4gKi9cbkJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gUzMgYnVja2V0LiBJZiBubyBhY2NvdW50IElEIGlzIHByb3ZpZGVkLCB0aGUgb3duZXIgaXMgbm90IHZhbGlkYXRlZCBiZWZvcmUgZXhwb3J0aW5nIGRhdGEuXG4gKiAgICBBbHRob3VnaCB0aGlzIHZhbHVlIGlzIG9wdGlvbmFsLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IGl0IHRvIGhlbHAgcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyc2hpcCBjaGFuZ2VzLlxuICovXG5CdWNrZXRBY2NvdW50SWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBmaWxlIGZvcm1hdCB1c2VkIHdoZW4gZXhwb3J0aW5nIGRhdGEgdG8gQW1hem9uIFMzLlxuICogICpBbGxvd2VkIHZhbHVlcyo6IGBgQ1NWYGAgfCBgYE9SQ2BgIHwgYGBQYXJxdWV0YGBcbiAqL1xuRm9ybWF0OiAoXCJDU1ZcIiB8IFwiT1JDXCIgfCBcIlBhcnF1ZXRcIilcbi8qKlxuICogVGhlIHByZWZpeCB0byB1c2Ugd2hlbiBleHBvcnRpbmcgZGF0YS4gVGhlIHByZWZpeCBpcyBwcmVwZW5kZWQgdG8gYWxsIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIGZvciBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW09iamVjdCBMaWZlY3ljbGUgTWFuYWdlbWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvb2JqZWN0LWxpZmVjeWNsZS1tZ210Lmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBBIGxpZmVjeWNsZSBydWxlIGZvciBpbmRpdmlkdWFsIG9iamVjdHMgaW4gYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuUnVsZXM6IFJ1bGVbXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hpY2ggZGVmYXVsdCBtaW5pbXVtIG9iamVjdCBzaXplIGJlaGF2aW9yIGlzIGFwcGxpZWQgdG8gdGhlIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uLlxuICogICBUaGlzIHBhcmFtZXRlciBhcHBsaWVzIHRvIGdlbmVyYWwgcHVycG9zZSBidWNrZXRzIG9ubHkuIEl0IGlzbid0IHN1cHBvcnRlZCBmb3IgZGlyZWN0b3J5IGJ1Y2tldCBsaWZlY3ljbGUgY29uZmlndXJhdGlvbnMuXG4gKiAgICArICBgYGFsbF9zdG9yYWdlX2NsYXNzZXNfMTI4S2BgIC0gT2JqZWN0cyBzbWFsbGVyIHRoYW4gMTI4IEtCIHdpbGwgbm90IHRyYW5zaXRpb24gdG8gYW55IHN0b3JhZ2UgY2xhc3MgYnkgZGVmYXVsdC5cbiAqICAgKyAgYGB2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc2BgIC0gT2JqZWN0cyBzbWFsbGVyIHRoYW4gMTI4IEtCIHdpbGwgdHJhbnNpdGlvbiB0byBHbGFjaWVyIEZsZXhpYmxlIFJldHJpZXZhbCBvciBHbGFjaWVyIERlZXAgQXJjaGl2ZSBzdG9yYWdlIGNsYXNzZXMuIEJ5IGRlZmF1bHQsIGFsbCBvdGhlciBzdG9yYWdlIGNsYXNzZXMgd2lsbCBwcmV2ZW50IHRyYW5zaXRpb25zIHNtYWxsZXIgdGhhbiAxMjggS0IuIFxuICogICBcbiAqICBUbyBjdXN0b21pemUgdGhlIG1pbmltdW0gb2JqZWN0IHNpemUgZm9yIGFueSB0cmFuc2l0aW9uIHlvdSBjYW4gYWRkIGEgZmlsdGVyIHRoYXQgc3BlY2lmaWVzIGEgY3VzdG9tIGBgT2JqZWN0U2l6ZUdyZWF0ZXJUaGFuYGAgb3IgYGBPYmplY3RTaXplTGVzc1RoYW5gYCBpbiB0aGUgYm9keSBvZiB5b3VyIHRyYW5zaXRpb24gcnVsZS4gQ3VzdG9tIGZpbHRlcnMgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBkZWZhdWx0IHRyYW5zaXRpb24gYmVoYXZpb3IuXG4gKi9cblRyYW5zaXRpb25EZWZhdWx0TWluaW11bU9iamVjdFNpemU/OiAoXCJ2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc1wiIHwgXCJhbGxfc3RvcmFnZV9jbGFzc2VzXzEyOEtcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGxpZmVjeWNsZSBydWxlcyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHV0IEJ1Y2tldCBMaWZlY3ljbGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVGxpZmVjeWNsZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6IGBgQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkYGAsIGBgRXhwaXJhdGlvbkRhdGVgYCwgYGBFeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgLCBgYFRyYW5zaXRpb25gYCwgb3IgYGBUcmFuc2l0aW9uc2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGUge1xuQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkPzogQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIGRlbGV0ZWQgZnJvbSBBbWF6b24gUzMgYW5kIEFtYXpvbiBTMyBHbGFjaWVyLiBUaGUgZGF0ZSB2YWx1ZSBtdXN0IGJlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhlIHRpbWUgaXMgYWx3YXlzIG1pZG5pZ2h0IFVUQy4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSBkZWxldGVkIGZyb20gQW1hem9uIFMzIGFuZCBBbWF6b24gUzMgR2xhY2llci4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25JbkRheXM/OiBudW1iZXJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQW1hem9uIFMzIHdpbGwgcmVtb3ZlIGEgZGVsZXRlIG1hcmtlciB3aXRob3V0IGFueSBub25jdXJyZW50IHZlcnNpb25zLiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGRlbGV0ZSBtYXJrZXIgd2lsbCBiZSByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyBub25jdXJyZW50IHZlcnNpb25zLiBUaGlzIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2l0aCBgYEV4cGlyYXRpb25JbkRheXNgYCwgYGBFeHBpcmF0aW9uRGF0ZWBgLCBvciBgYFRhZ0ZpbHRlcnNgYC5cbiAqL1xuRXhwaXJlZE9iamVjdERlbGV0ZU1hcmtlcj86IGJvb2xlYW5cbi8qKlxuICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLiBUaGUgdmFsdWUgY2FuJ3QgYmUgbG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIChEZXByZWNhdGVkLikgRm9yIGJ1Y2tldHMgd2l0aCB2ZXJzaW9uaW5nIGVuYWJsZWQgKG9yIHN1c3BlbmRlZCksIHNwZWNpZmllcyB0aGUgdGltZSwgaW4gZGF5cywgYmV0d2VlbiB3aGVuIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9iamVjdCBpcyB1cGxvYWRlZCB0byB0aGUgYnVja2V0IGFuZCB3aGVuIG9sZCB2ZXJzaW9ucyBvZiB0aGUgb2JqZWN0IGV4cGlyZS4gV2hlbiBvYmplY3QgdmVyc2lvbnMgZXhwaXJlLCBBbWF6b24gUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGVtLiBJZiB5b3Ugc3BlY2lmeSBhIHRyYW5zaXRpb24gYW5kIGV4cGlyYXRpb24gdGltZSwgdGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS5cbiAqL1xuTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzPzogbnVtYmVyXG5Ob25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb24/OiBOb25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb25cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbj86IE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvblxuLyoqXG4gKiBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgb25lIG9yIG1vcmUgdHJhbnNpdGlvbiBydWxlcyB0aGF0IHNwZWNpZnkgd2hlbiBub24tY3VycmVudCBvYmplY3RzIHRyYW5zaXRpb24gdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgeW91IHNwZWNpZnkgYSB0cmFuc2l0aW9uIGFuZCBleHBpcmF0aW9uIHRpbWUsIHRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnM/OiBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24xW11cbi8qKlxuICogT2JqZWN0IGtleSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIG9uZSBvciBtb3JlIG9iamVjdHMgdG8gd2hpY2ggdGhpcyBydWxlIGFwcGxpZXMuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBJZiBgYEVuYWJsZWRgYCwgdGhlIHJ1bGUgaXMgY3VycmVudGx5IGJlaW5nIGFwcGxpZWQuIElmIGBgRGlzYWJsZWRgYCwgdGhlIHJ1bGUgaXMgbm90IGN1cnJlbnRseSBiZWluZyBhcHBsaWVkLlxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcbi8qKlxuICogVGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgbGlmZWN5Y2xlIHJ1bGUgYXBwbGllcy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBvYmplY3Qgc2l6ZSBpbiBieXRlcyBmb3IgdGhpcyBydWxlIHRvIGFwcGx5IHRvLiBPYmplY3RzIG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZSBiYXNlZCBydWxlcywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiB1c2luZyBzaXplLWJhc2VkIHJ1bGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtY29uZmlndXJhdGlvbi1leGFtcGxlcy5odG1sI2xjLXNpemUtcnVsZXMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5PYmplY3RTaXplR3JlYXRlclRoYW4/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG9iamVjdCBzaXplIGluIGJ5dGVzIGZvciB0aGlzIHJ1bGUgdG8gYXBwbHkgdG8uIE9iamVjdHMgbXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZWQgYmFzZWQgcnVsZXMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gdXNpbmcgc2l6ZS1iYXNlZCBydWxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tZXhhbXBsZXMuaHRtbCNsYy1zaXplLXJ1bGVzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuT2JqZWN0U2l6ZUxlc3NUaGFuPzogc3RyaW5nXG5UcmFuc2l0aW9uPzogVHJhbnNpdGlvblxuLyoqXG4gKiBPbmUgb3IgbW9yZSB0cmFuc2l0aW9uIHJ1bGVzIHRoYXQgc3BlY2lmeSB3aGVuIGFuIG9iamVjdCB0cmFuc2l0aW9ucyB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB5b3Ugc3BlY2lmeSBhbiBleHBpcmF0aW9uIGFuZCB0cmFuc2l0aW9uIHRpbWUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSB0aW1lIHVuaXQgZm9yIGJvdGggcHJvcGVydGllcyAoZWl0aGVyIGluIGRheXMgb3IgYnkgZGF0ZSkuIFRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBhbHNvIGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBUcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cblRyYW5zaXRpb25zPzogVHJhbnNpdGlvbjFbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaWZlY3ljbGUgcnVsZSB0aGF0IHN0b3BzIGluY29tcGxldGUgbXVsdGlwYXJ0IHVwbG9hZHMgdG8gYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWQge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIEFtYXpvbiBTMyBzdG9wcyBhbiBpbmNvbXBsZXRlIG11bHRpcGFydCB1cGxvYWQuXG4gKi9cbkRheXNBZnRlckluaXRpYXRpb246IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBub25jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyBleHBpcmUuIFVwb24gZXhwaXJhdGlvbiwgUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMuIFlvdSBzZXQgdGhpcyBsaWZlY3ljbGUgY29uZmlndXJhdGlvbiBhY3Rpb24gb24gYSBidWNrZXQgdGhhdCBoYXMgdmVyc2lvbmluZyBlbmFibGVkIChvciBzdXNwZW5kZWQpIHRvIHJlcXVlc3QgdGhhdCBTMyBkZWxldGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgYXQgYSBzcGVjaWZpYyBwZXJpb2QgaW4gdGhlIG9iamVjdCdzIGxpZmV0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYW4gb2JqZWN0IGlzIG5vbmN1cnJlbnQgYmVmb3JlIFMzIGNhbiBwZXJmb3JtIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub25jdXJyZW50IGRheXMgY2FsY3VsYXRpb25zLCBzZWUgW0hvdyBBbWF6b24gUzMgQ2FsY3VsYXRlcyBXaGVuIGFuIE9iamVjdCBCZWNhbWUgTm9uY3VycmVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwjbm9uLWN1cnJlbnQtZGF5cy1jYWxjdWxhdGlvbnMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Ob25jdXJyZW50RGF5czogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyBob3cgbWFueSBub25jdXJyZW50IHZlcnNpb25zIFMzIHdpbGwgcmV0YWluLiBJZiB0aGVyZSBhcmUgdGhpcyBtYW55IG1vcmUgcmVjZW50IG5vbmN1cnJlbnQgdmVyc2lvbnMsIFMzIHdpbGwgdGFrZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5vbmN1cnJlbnQgdmVyc2lvbnMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3ZXJOb25jdXJyZW50VmVyc2lvbnM/OiBudW1iZXJcbn1cbi8qKlxuICogKERlcHJlY2F0ZWQuKSBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgc3BlY2lmaWVzIHdoZW4gbm9uLWN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGEgdHJhbnNpdGlvbiBhbmQgZXhwaXJhdGlvbiB0aW1lLCB0aGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnNgYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24ge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIENvbnRhaW5lciBmb3IgdGhlIHRyYW5zaXRpb24gcnVsZSB0aGF0IGRlc2NyaWJlcyB3aGVuIG5vbmN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIHRoZSBgYFNUQU5EQVJEX0lBYGAsIGBgT05FWk9ORV9JQWBgLCBgYElOVEVMTElHRU5UX1RJRVJJTkdgYCwgYGBHTEFDSUVSX0lSYGAsIGBgR0xBQ0lFUmBgLCBvciBgYERFRVBfQVJDSElWRWBgIHN0b3JhZ2UgY2xhc3MuIElmIHlvdXIgYnVja2V0IGlzIHZlcnNpb25pbmctZW5hYmxlZCAob3IgdmVyc2lvbmluZyBpcyBzdXNwZW5kZWQpLCB5b3UgY2FuIHNldCB0aGlzIGFjdGlvbiB0byByZXF1ZXN0IHRoYXQgQW1hem9uIFMzIHRyYW5zaXRpb24gbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgdG8gdGhlIGBgU1RBTkRBUkRfSUFgYCwgYGBPTkVaT05FX0lBYGAsIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAgc3RvcmFnZSBjbGFzcyBhdCBhIHNwZWNpZmljIHBlcmlvZCBpbiB0aGUgb2JqZWN0J3MgbGlmZXRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbjEge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIChEZXByZWNhdGVkLikgU3BlY2lmaWVzIHdoZW4gYW4gb2JqZWN0IHRyYW5zaXRpb25zIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gYW5kIHRyYW5zaXRpb24gdGltZSwgeW91IG11c3QgdXNlIHRoZSBzYW1lIHRpbWUgdW5pdCBmb3IgYm90aCBwcm9wZXJ0aWVzIChlaXRoZXIgaW4gZGF5cyBvciBieSBkYXRlKS4gVGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGFsc28gYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYFRyYW5zaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIGNsYXNzIHRvIHdoaWNoIHlvdSB3YW50IHRoZSBvYmplY3QgdG8gdHJhbnNpdGlvbi5cbiAqL1xuU3RvcmFnZUNsYXNzOiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHbGFjaWVyXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIHRyYW5zaXRpb25lZCB0byB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIFRoZSBkYXRlIHZhbHVlIG11c3QgYmUgaW4gSVNPIDg2MDEgZm9ybWF0LiBUaGUgdGltZSBpcyBhbHdheXMgbWlkbmlnaHQgVVRDLlxuICovXG5UcmFuc2l0aW9uRGF0ZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIGNyZWF0aW9uIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAsIHZhbGlkIHZhbHVlcyBhcmUgYGAwYGAgb3IgcG9zaXRpdmUgaW50ZWdlcnMuIElmIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcyBpcyBgYFNUQU5EQVJEX0lBYGAgb3IgYGBPTkVaT05FX0lBYGAsIHZhbGlkIHZhbHVlcyBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgZ3JlYXRlciB0aGFuIGBgMzBgYC4gQmUgYXdhcmUgdGhhdCBzb21lIHN0b3JhZ2UgY2xhc3NlcyBoYXZlIGEgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uIGFuZCB0aGF0IHlvdSdyZSBjaGFyZ2VkIGZvciB0cmFuc2l0aW9uaW5nIG9iamVjdHMgYmVmb3JlIHRoZWlyIG1pbmltdW0gc3RvcmFnZSBkdXJhdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uc3RyYWludHMgYW5kIGNvbnNpZGVyYXRpb25zIGZvciB0cmFuc2l0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLXRyYW5zaXRpb24tZ2VuZXJhbC1jb25zaWRlcmF0aW9ucy5odG1sI2xpZmVjeWNsZS1jb25maWd1cmF0aW9uLWNvbnN0cmFpbnRzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuVHJhbnNpdGlvbkluRGF5cz86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBhbiBvYmplY3QgdHJhbnNpdGlvbnMgdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQW1hem9uIFMzIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIHJ1bGVzLCBzZWUgW1RyYW5zaXRpb25pbmcgT2JqZWN0cyBVc2luZyBBbWF6b24gUzMgTGlmZWN5Y2xlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRpb24xIHtcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gd2hpY2ggeW91IHdhbnQgdGhlIG9iamVjdCB0byB0cmFuc2l0aW9uLlxuICovXG5TdG9yYWdlQ2xhc3M6IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdsYWNpZXJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiU1RBTkRBUkRfSUFcIilcbi8qKlxuICogSW5kaWNhdGVzIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gVGhlIGRhdGUgdmFsdWUgbXVzdCBiZSBpbiBJU08gODYwMSBmb3JtYXQuIFRoZSB0aW1lIGlzIGFsd2F5cyBtaWRuaWdodCBVVEMuXG4gKi9cblRyYW5zaXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MgaXMgYGBJTlRFTExJR0VOVF9USUVSSU5HYGAsIGBgR0xBQ0lFUl9JUmBgLCBgYEdMQUNJRVJgYCwgb3IgYGBERUVQX0FSQ0hJVkVgYCwgdmFsaWQgdmFsdWVzIGFyZSBgYDBgYCBvciBwb3NpdGl2ZSBpbnRlZ2Vycy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgU1RBTkRBUkRfSUFgYCBvciBgYE9ORVpPTkVfSUFgYCwgdmFsaWQgdmFsdWVzIGFyZSBwb3NpdGl2ZSBpbnRlZ2VycyBncmVhdGVyIHRoYW4gYGAzMGBgLiBCZSBhd2FyZSB0aGF0IHNvbWUgc3RvcmFnZSBjbGFzc2VzIGhhdmUgYSBtaW5pbXVtIHN0b3JhZ2UgZHVyYXRpb24gYW5kIHRoYXQgeW91J3JlIGNoYXJnZWQgZm9yIHRyYW5zaXRpb25pbmcgb2JqZWN0cyBiZWZvcmUgdGhlaXIgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25zdHJhaW50cyBhbmQgY29uc2lkZXJhdGlvbnMgZm9yIHRyYW5zaXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwjbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tY29uc3RyYWludHMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5UcmFuc2l0aW9uSW5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIHdoZXJlIGxvZ3MgYXJlIHN0b3JlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQgd2hlcmUgQW1hem9uIFMzIHNob3VsZCBzdG9yZSBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlcy4gWW91IGNhbiBzdG9yZSBsb2cgZmlsZXMgaW4gYW55IGJ1Y2tldCB0aGF0IHlvdSBvd24uIEJ5IGRlZmF1bHQsIGxvZ3MgYXJlIHN0b3JlZCBpbiB0aGUgYnVja2V0IHdoZXJlIHRoZSBgYExvZ2dpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkgaXMgZGVmaW5lZC5cbiAqL1xuRGVzdGluYXRpb25CdWNrZXROYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgcHJlZml4IGZvciBhbGwgbG9nIG9iamVjdCBrZXlzLiBJZiB5b3Ugc3RvcmUgbG9nIGZpbGVzIGZyb20gbXVsdGlwbGUgQW1hem9uIFMzIGJ1Y2tldHMgaW4gYSBzaW5nbGUgYnVja2V0LCB5b3UgY2FuIHVzZSBhIHByZWZpeCB0byBkaXN0aW5ndWlzaCB3aGljaCBsb2cgZmlsZXMgY2FtZSBmcm9tIHdoaWNoIGJ1Y2tldC5cbiAqL1xuTG9nRmlsZVByZWZpeD86IHN0cmluZ1xuVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0PzogVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0XG59XG4vKipcbiAqIEFtYXpvbiBTMyBrZXlzIGZvciBsb2cgb2JqZWN0cyBhcmUgcGFydGl0aW9uZWQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gKiAgIGBgW0Rlc3RpbmF0aW9uUHJlZml4XVtTb3VyY2VBY2NvdW50SWRdL1tTb3VyY2VSZWdpb25dL1tTb3VyY2VCdWNrZXRdL1tZWVlZXS9bTU1dL1tERF0vW1lZWVldLVtNTV0tW0REXS1baGhdLVttbV0tW3NzXS1bVW5pcXVlU3RyaW5nXWBgIFxuICogIFBhcnRpdGlvbmVkUHJlZml4IGRlZmF1bHRzIHRvIEV2ZW50VGltZSBkZWxpdmVyeSB3aGVuIHNlcnZlciBhY2Nlc3MgbG9ncyBhcmUgZGVsaXZlcmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpdGlvbmVkUHJlZml4IHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwYXJ0aXRpb24gZGF0ZSBzb3VyY2UgZm9yIHRoZSBwYXJ0aXRpb25lZCBwcmVmaXguIGBgUGFydGl0aW9uRGF0ZVNvdXJjZWBgIGNhbiBiZSBgYEV2ZW50VGltZWBgIG9yIGBgRGVsaXZlcnlUaW1lYGAuXG4gKiAgRm9yIGBgRGVsaXZlcnlUaW1lYGAsIHRoZSB0aW1lIGluIHRoZSBsb2cgZmlsZSBuYW1lcyBjb3JyZXNwb25kcyB0byB0aGUgZGVsaXZlcnkgdGltZSBmb3IgdGhlIGxvZyBmaWxlcy4gXG4gKiAgIEZvciBgYEV2ZW50VGltZWBgLCBUaGUgbG9ncyBkZWxpdmVyZWQgYXJlIGZvciBhIHNwZWNpZmljIGRheSBvbmx5LiBUaGUgeWVhciwgbW9udGgsIGFuZCBkYXkgY29ycmVzcG9uZCB0byB0aGUgZGF5IG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cnJlZCwgYW5kIHRoZSBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzIGFyZSBzZXQgdG8gMDAgaW4gdGhlIGtleS5cbiAqL1xuUGFydGl0aW9uRGF0ZVNvdXJjZT86IChcIkV2ZW50VGltZVwiIHwgXCJEZWxpdmVyeVRpbWVcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgZXhhbXBsZXMsIHNlZSBbQVdTOjpTMzo6QnVja2V0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQuaHRtbCNhd3MtcHJvcGVydGllcy1zMy1idWNrZXQtLWV4YW1wbGVzKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUFVUIEJ1Y2tldCBtZXRyaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUTWV0cmljQ29uZmlndXJhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBhY2Nlc3MgcG9pbnQgdGhhdCB3YXMgdXNlZCB3aGlsZSBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgb24gdGhlIG9iamVjdC4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBvbmx5IGluY2x1ZGVzIG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuQWNjZXNzUG9pbnRBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbi4gVGhpcyBjYW4gYmUgYW55IHZhbHVlIHlvdSBjaG9vc2UgdGhhdCBoZWxwcyB5b3UgaWRlbnRpZnkgeW91ciBtZXRyaWNzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogVGhlIHByZWZpeCB0aGF0IGFuIG9iamVjdCBtdXN0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1ldHJpY3MgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyBhIGxpc3Qgb2YgdGFnIGZpbHRlcnMgdG8gdXNlIGFzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZpbHRlci4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBvbmx5IG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG59XG4vKipcbiAqIFRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uIG9mIGFuIFMzIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb24ge1xuUzNUYWJsZXNEZXN0aW5hdGlvbjogUzNUYWJsZXNEZXN0aW5hdGlvblxufVxuLyoqXG4gKiBUaGUgZGVzdGluYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0IG11c3QgYmUgaW4gdGhlIHNhbWUgUmVnaW9uIGFuZCBBV1MtYWNjb3VudCBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC4gVGhlIHNwZWNpZmllZCBtZXRhZGF0YSB0YWJsZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYGBhd3NfczNfbWV0YWRhdGFgYCBuYW1lc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1RhYmxlc0Rlc3RpbmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgdGFibGUgYnVja2V0IHRoYXQncyBzcGVjaWZpZWQgYXMgdGhlIGRlc3RpbmF0aW9uIGluIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0IG11c3QgYmUgaW4gdGhlIHNhbWUgUmVnaW9uIGFuZCBBV1MtYWNjb3VudCBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC5cbiAqL1xuVGFibGVCdWNrZXRBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHlvdXIgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhlIHNwZWNpZmllZCBtZXRhZGF0YSB0YWJsZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYGBhd3NfczNfbWV0YWRhdGFgYCBuYW1lc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldC5cbiAqL1xuVGFibGVOYW1lOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhYmxlIGJ1Y2tldCBuYW1lc3BhY2UgZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBpbiB5b3VyIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoaXMgdmFsdWUgaXMgYWx3YXlzIGBgYXdzX3MzX21ldGFkYXRhYGAuXG4gKi9cblRhYmxlTmFtZXNwYWNlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgc3BlY2lmaWVkIG1ldGFkYXRhIHRhYmxlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBgYGF3c19zM19tZXRhZGF0YWBgIG5hbWVzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0LlxuICovXG5UYWJsZUFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgUzMgTWV0YWRhdGEgY29uZmlndXJhdGlvbiBmb3IgYSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhQ29uZmlndXJhdGlvbiB7XG5EZXN0aW5hdGlvbj86IE1ldGFkYXRhRGVzdGluYXRpb25cbkpvdXJuYWxUYWJsZUNvbmZpZ3VyYXRpb246IEpvdXJuYWxUYWJsZUNvbmZpZ3VyYXRpb25cbkludmVudG9yeVRhYmxlQ29uZmlndXJhdGlvbj86IEludmVudG9yeVRhYmxlQ29uZmlndXJhdGlvblxufVxuLyoqXG4gKiBUaGUgZGVzdGluYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBTMyBNZXRhZGF0YSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhRGVzdGluYXRpb24ge1xuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgdGFibGUgYnVja2V0IHdoZXJlIHRoZSBtZXRhZGF0YSBjb25maWd1cmF0aW9uIGlzIHN0b3JlZC4gVGhlIGBgYXdzYGAgdmFsdWUgaW5kaWNhdGVzIGFuIEFXUyBtYW5hZ2VkIHRhYmxlIGJ1Y2tldCwgYW5kIHRoZSBgYGN1c3RvbWVyYGAgdmFsdWUgaW5kaWNhdGVzIGEgY3VzdG9tZXItbWFuYWdlZCB0YWJsZSBidWNrZXQuIFYyIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25zIGFyZSBzdG9yZWQgaW4gQVdTIG1hbmFnZWQgdGFibGUgYnVja2V0cywgYW5kIFYxIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25zIGFyZSBzdG9yZWQgaW4gY3VzdG9tZXItbWFuYWdlZCB0YWJsZSBidWNrZXRzLlxuICovXG5UYWJsZUJ1Y2tldFR5cGU6IChcImF3c1wiIHwgXCJjdXN0b21lclwiKVxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHRhYmxlIGJ1Y2tldCB3aGVyZSB0aGUgbWV0YWRhdGEgY29uZmlndXJhdGlvbiBpcyBzdG9yZWQuXG4gKi9cblRhYmxlQnVja2V0QXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lc3BhY2UgaW4gdGhlIHRhYmxlIGJ1Y2tldCB3aGVyZSB0aGUgbWV0YWRhdGEgdGFibGVzIGZvciBhIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gYXJlIHN0b3JlZC5cbiAqL1xuVGFibGVOYW1lc3BhY2U/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGpvdXJuYWwgdGFibGUgY29uZmlndXJhdGlvbiBmb3IgYSBtZXRhZGF0YSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvdXJuYWxUYWJsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgam91cm5hbCB0YWJsZS5cbiAqL1xuVGFibGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIGpvdXJuYWwgdGFibGUuXG4gKi9cblRhYmxlQXJuPzogc3RyaW5nXG5SZWNvcmRFeHBpcmF0aW9uOiBSZWNvcmRFeHBpcmF0aW9uXG5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvblxufVxuLyoqXG4gKiBUaGUgam91cm5hbCB0YWJsZSByZWNvcmQgZXhwaXJhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIGpvdXJuYWwgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkRXhwaXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIGpvdXJuYWwgdGFibGUgcmVjb3JkIGV4cGlyYXRpb24gaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAqL1xuRXhwaXJhdGlvbjogKFwiRU5BQkxFRFwiIHwgXCJESVNBQkxFRFwiKVxuLyoqXG4gKiBJZiB5b3UgZW5hYmxlIGpvdXJuYWwgdGFibGUgcmVjb3JkIGV4cGlyYXRpb24sIHlvdSBjYW4gc2V0IHRoZSBudW1iZXIgb2YgZGF5cyB0byByZXRhaW4geW91ciBqb3VybmFsIHRhYmxlIHJlY29yZHMuIEpvdXJuYWwgdGFibGUgcmVjb3JkcyBtdXN0IGJlIHJldGFpbmVkIGZvciBhIG1pbmltdW0gb2YgNyBkYXlzLiBUbyBzZXQgdGhpcyB2YWx1ZSwgc3BlY2lmeSBhbnkgd2hvbGUgbnVtYmVyIGZyb20gYGA3YGAgdG8gYGAyMTQ3NDgzNjQ3YGAuIEZvciBleGFtcGxlLCB0byByZXRhaW4geW91ciBqb3VybmFsIHRhYmxlIHJlY29yZHMgZm9yIG9uZSB5ZWFyLCBzZXQgdGhpcyB2YWx1ZSB0byBgYDM2NWBgLlxuICovXG5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBqb3VybmFsIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBlbmNyeXB0aW9uIHR5cGUgc3BlY2lmaWVkIGZvciBhIG1ldGFkYXRhIHRhYmxlLiBUbyBzcGVjaWZ5IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVNsb25nIChLTVMpIGtleXMgKFNTRS1LTVMpLCB1c2UgdGhlIGBgYXdzOmttc2BgIHZhbHVlLiBUbyBzcGVjaWZ5IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMgbWFuYWdlZCBrZXlzIChTU0UtUzMpLCB1c2UgdGhlIGBgQUVTMjU2YGAgdmFsdWUuXG4gKi9cblNzZUFsZ29yaXRobTogKFwiYXdzOmttc1wiIHwgXCJBRVMyNTZcIilcbi8qKlxuICogSWYgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNU2xvbmcgKEtNUykga2V5cyAoU1NFLUtNUykgaXMgc3BlY2lmaWVkLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIEtNUyBrZXkgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikuIFlvdSBtdXN0IHNwZWNpZnkgYSBjdXN0b21lci1tYW5hZ2VkIEtNUyBrZXkgdGhhdCdzIGxvY2F0ZWQgaW4gdGhlIHNhbWUgUmVnaW9uIGFzIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbkttc0tleUFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgaW52ZW50b3J5IHRhYmxlIGNvbmZpZ3VyYXRpb24gZm9yIGEgbWV0YWRhdGEgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZlbnRvcnlUYWJsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5UYWJsZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5UYWJsZUFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBzdGF0ZSBvZiB0aGUgaW52ZW50b3J5IHRhYmxlLCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGludmVudG9yeSB0YWJsZSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLlxuICovXG5Db25maWd1cmF0aW9uU3RhdGU6IChcIkVOQUJMRURcIiB8IFwiRElTQUJMRURcIilcbkVuY3J5cHRpb25Db25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUVuY3J5cHRpb25Db25maWd1cmF0aW9uMVxufVxuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjEge1xuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiB0eXBlIHNwZWNpZmllZCBmb3IgYSBtZXRhZGF0YSB0YWJsZS4gVG8gc3BlY2lmeSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggS01TbG9uZyAoS01TKSBrZXlzIChTU0UtS01TKSwgdXNlIHRoZSBgYGF3czprbXNgYCB2YWx1ZS4gVG8gc3BlY2lmeSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggQW1hem9uIFMzIG1hbmFnZWQga2V5cyAoU1NFLVMzKSwgdXNlIHRoZSBgYEFFUzI1NmBgIHZhbHVlLlxuICovXG5Tc2VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIpXG4vKipcbiAqIElmIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVNsb25nIChLTVMpIGtleXMgKFNTRS1LTVMpIGlzIHNwZWNpZmllZCwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBLTVMga2V5IEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pLiBZb3UgbXVzdCBzcGVjaWZ5IGEgY3VzdG9tZXItbWFuYWdlZCBLTVMga2V5IHRoYXQncyBsb2NhdGVkIGluIHRoZSBzYW1lIFJlZ2lvbiBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLlxuICovXG5LbXNLZXlBcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgaG93IEFtYXpvbiBTMyBoYW5kbGVzIGJ1Y2tldCBub3RpZmljYXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuRXZlbnRCcmlkZ2VDb25maWd1cmF0aW9uPzogRXZlbnRCcmlkZ2VDb25maWd1cmF0aW9uXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgTEFNbG9uZyBmdW5jdGlvbnMgdG8gaW52b2tlIGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCB0byBpbnZva2UgdGhlbS5cbiAqL1xuTGFtYmRhQ29uZmlndXJhdGlvbnM/OiBMYW1iZGFDb25maWd1cmF0aW9uW11cbi8qKlxuICogVGhlIEFtYXpvbiBTaW1wbGUgUXVldWUgU2VydmljZSBxdWV1ZXMgdG8gcHVibGlzaCBtZXNzYWdlcyB0byBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggdG8gcHVibGlzaCBtZXNzYWdlcy5cbiAqL1xuUXVldWVDb25maWd1cmF0aW9ucz86IFF1ZXVlQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFRoZSB0b3BpYyB0byB3aGljaCBub3RpZmljYXRpb25zIGFyZSBzZW50IGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCBub3RpZmljYXRpb25zIGFyZSBnZW5lcmF0ZWQuXG4gKi9cblRvcGljQ29uZmlndXJhdGlvbnM/OiBUb3BpY0NvbmZpZ3VyYXRpb25bXVxufVxuLyoqXG4gKiBFbmFibGVzIGRlbGl2ZXJ5IG9mIGV2ZW50cyB0byBBbWF6b24gRXZlbnRCcmlkZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCcmlkZ2VDb25maWd1cmF0aW9uIHtcbi8qKlxuICogRW5hYmxlcyBkZWxpdmVyeSBvZiBldmVudHMgdG8gQW1hem9uIEV2ZW50QnJpZGdlLlxuICovXG5FdmVudEJyaWRnZUVuYWJsZWQ6IChib29sZWFuICYgc3RyaW5nKVxufVxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIExBTWxvbmcgZnVuY3Rpb25zIHRvIGludm9rZSBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggdG8gaW52b2tlIHRoZW0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUzMgYnVja2V0IGV2ZW50IGZvciB3aGljaCB0byBpbnZva2UgdGhlIExBTWxvbmcgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1cHBvcnRlZCBFdmVudCBUeXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkV2ZW50OiBzdHJpbmdcbkZpbHRlcj86IE5vdGlmaWNhdGlvbkZpbHRlclxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIExBTWxvbmcgZnVuY3Rpb24gdGhhdCBBbWF6b24gUzMgaW52b2tlcyB3aGVuIHRoZSBzcGVjaWZpZWQgZXZlbnQgdHlwZSBvY2N1cnMuXG4gKi9cbkZ1bmN0aW9uOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGZpbHRlcmluZyBydWxlcyB0aGF0IGRldGVybWluZSB3aGljaCBvYmplY3RzIGludm9rZSB0aGUgQVdTIExhbWJkYSBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gY3JlYXRlIGEgZmlsdGVyIHNvIHRoYXQgb25seSBpbWFnZSBmaWxlcyB3aXRoIGEgYGAuanBnYGAgZXh0ZW5zaW9uIGludm9rZSB0aGUgZnVuY3Rpb24gd2hlbiB0aGV5IGFyZSBhZGRlZCB0byB0aGUgQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25GaWx0ZXIge1xuUzNLZXk6IFMzS2V5RmlsdGVyXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBvYmplY3Qga2V5IG5hbWUgcHJlZml4IGFuZCBzdWZmaXggZmlsdGVyaW5nIHJ1bGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzS2V5RmlsdGVyIHtcbi8qKlxuICogQSBsaXN0IG9mIGNvbnRhaW5lcnMgZm9yIHRoZSBrZXktdmFsdWUgcGFpciB0aGF0IGRlZmluZXMgdGhlIGNyaXRlcmlhIGZvciB0aGUgZmlsdGVyIHJ1bGUuXG4gKi9cblJ1bGVzOiBGaWx0ZXJSdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBBbWF6b24gUzMgb2JqZWN0IGtleSBuYW1lIHRvIGZpbHRlciBvbi4gQW4gb2JqZWN0IGtleSBuYW1lIGlzIHRoZSBuYW1lIGFzc2lnbmVkIHRvIGFuIG9iamVjdCBpbiB5b3VyIEFtYXpvbiBTMyBidWNrZXQuIFlvdSBzcGVjaWZ5IHdoZXRoZXIgdG8gZmlsdGVyIG9uIHRoZSBzdWZmaXggb3IgcHJlZml4IG9mIHRoZSBvYmplY3Qga2V5IG5hbWUuIEEgcHJlZml4IGlzIGEgc3BlY2lmaWMgc3RyaW5nIG9mIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBvYmplY3Qga2V5IG5hbWUsIHdoaWNoIHlvdSBjYW4gdXNlIHRvIG9yZ2FuaXplIG9iamVjdHMuIEZvciBleGFtcGxlLCB5b3UgY2FuIHN0YXJ0IHRoZSBrZXkgbmFtZXMgb2YgcmVsYXRlZCBvYmplY3RzIHdpdGggYSBwcmVmaXgsIHN1Y2ggYXMgYGAyMDIzLWBgIG9yIGBgZW5naW5lZXJpbmcvYGAuIFRoZW4sIHlvdSBjYW4gdXNlIGBgRmlsdGVyUnVsZWBgIHRvIGZpbmQgb2JqZWN0cyBpbiBhIGJ1Y2tldCB3aXRoIGtleSBuYW1lcyB0aGF0IGhhdmUgdGhlIHNhbWUgcHJlZml4LiBBIHN1ZmZpeCBpcyBzaW1pbGFyIHRvIGEgcHJlZml4LCBidXQgaXQgaXMgYXQgdGhlIGVuZCBvZiB0aGUgb2JqZWN0IGtleSBuYW1lIGluc3RlYWQgb2YgYXQgdGhlIGJlZ2lubmluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJSdWxlIHtcbi8qKlxuICogVGhlIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggb3Igc3VmZml4IGlkZW50aWZ5aW5nIG9uZSBvciBtb3JlIG9iamVjdHMgdG8gd2hpY2ggdGhlIGZpbHRlcmluZyBydWxlIGFwcGxpZXMuIFRoZSBtYXhpbXVtIGxlbmd0aCBpcyAxLDAyNCBjaGFyYWN0ZXJzLiBPdmVybGFwcGluZyBwcmVmaXhlcyBhbmQgc3VmZml4ZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyaW5nIEV2ZW50IE5vdGlmaWNhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5OYW1lOiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIHRoYXQgdGhlIGZpbHRlciBzZWFyY2hlcyBmb3IgaW4gb2JqZWN0IGtleSBuYW1lcy5cbiAqL1xuVmFsdWU6IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHB1Ymxpc2hpbmcgbWVzc2FnZXMgdG8gYW4gQW1hem9uIFNpbXBsZSBRdWV1ZSBTZXJ2aWNlIChBbWF6b24gU1FTKSBxdWV1ZSB3aGVuIEFtYXpvbiBTMyBkZXRlY3RzIHNwZWNpZmllZCBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVldWVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBTMyBidWNrZXQgZXZlbnQgYWJvdXQgd2hpY2ggeW91IHdhbnQgdG8gcHVibGlzaCBtZXNzYWdlcyB0byBBbWF6b24gU1FTLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTdXBwb3J0ZWQgRXZlbnQgVHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5FdmVudDogc3RyaW5nXG5GaWx0ZXI/OiBOb3RpZmljYXRpb25GaWx0ZXIxXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIFNRUyBxdWV1ZSB0byB3aGljaCBBbWF6b24gUzMgcHVibGlzaGVzIGEgbWVzc2FnZSB3aGVuIGl0IGRldGVjdHMgZXZlbnRzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS4gRklGTyBxdWV1ZXMgYXJlIG5vdCBhbGxvd2VkIHdoZW4gZW5hYmxpbmcgYW4gU1FTIHF1ZXVlIGFzIHRoZSBldmVudCBub3RpZmljYXRpb24gZGVzdGluYXRpb24uXG4gKi9cblF1ZXVlOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGZpbHRlcmluZyBydWxlcyB0aGF0IGRldGVybWluZSB3aGljaCBvYmplY3RzIHRyaWdnZXIgbm90aWZpY2F0aW9ucy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gY3JlYXRlIGEgZmlsdGVyIHNvIHRoYXQgQW1hem9uIFMzIHNlbmRzIG5vdGlmaWNhdGlvbnMgb25seSB3aGVuIGltYWdlIGZpbGVzIHdpdGggYSBgYC5qcGdgYCBleHRlbnNpb24gYXJlIGFkZGVkIHRvIHRoZSBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyaW5nIGV2ZW50IG5vdGlmaWNhdGlvbnMgdXNpbmcgb2JqZWN0IGtleSBuYW1lIGZpbHRlcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyLWd1aWRlL25vdGlmaWNhdGlvbi1ob3ctdG8tZmlsdGVyaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkZpbHRlcjEge1xuUzNLZXk6IFMzS2V5RmlsdGVyXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBzcGVjaWZ5aW5nIHRoZSBjb25maWd1cmF0aW9uIGZvciBwdWJsaWNhdGlvbiBvZiBtZXNzYWdlcyB0byBhbiBBbWF6b24gU2ltcGxlIE5vdGlmaWNhdGlvbiBTZXJ2aWNlIChBbWF6b24gU05TKSB0b3BpYyB3aGVuIEFtYXpvbiBTMyBkZXRlY3RzIHNwZWNpZmllZCBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9waWNDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBTMyBidWNrZXQgZXZlbnQgYWJvdXQgd2hpY2ggdG8gc2VuZCBub3RpZmljYXRpb25zLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTdXBwb3J0ZWQgRXZlbnQgVHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5FdmVudDogc3RyaW5nXG5GaWx0ZXI/OiBOb3RpZmljYXRpb25GaWx0ZXIyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgQW1hem9uIFNOUyB0b3BpYyB0byB3aGljaCBBbWF6b24gUzMgcHVibGlzaGVzIGEgbWVzc2FnZSB3aGVuIGl0IGRldGVjdHMgZXZlbnRzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAqL1xuVG9waWM6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgZmlsdGVyaW5nIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lIGZvciB3aGljaCBvYmplY3RzIHRvIHNlbmQgbm90aWZpY2F0aW9ucy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gY3JlYXRlIGEgZmlsdGVyIHNvIHRoYXQgQW1hem9uIFMzIHNlbmRzIG5vdGlmaWNhdGlvbnMgb25seSB3aGVuIGltYWdlIGZpbGVzIHdpdGggYSBgYC5qcGdgYCBleHRlbnNpb24gYXJlIGFkZGVkIHRvIHRoZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRmlsdGVyMiB7XG5TM0tleTogUzNLZXlGaWx0ZXJcbn1cbi8qKlxuICogVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgZGlyZWN0b3J5IGJ1Y2tldHMuXG4gKiAgIFBsYWNlcyBhbiBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIG9uIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBUaGUgcnVsZSBzcGVjaWZpZWQgaW4gdGhlIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBhcHBsaWVkIGJ5IGRlZmF1bHQgdG8gZXZlcnkgbmV3IG9iamVjdCBwbGFjZWQgaW4gdGhlIHNwZWNpZmllZCBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0xvY2tpbmcgT2JqZWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvb2JqZWN0LWxvY2suaHRtbCkuIFxuICogICAgKyAgVGhlIGBgRGVmYXVsdFJldGVudGlvbmBgIHNldHRpbmdzIHJlcXVpcmUgYm90aCBhIG1vZGUgYW5kIGEgcGVyaW9kLlxuICogICArICBUaGUgYGBEZWZhdWx0UmV0ZW50aW9uYGAgcGVyaW9kIGNhbiBiZSBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgIGJ1dCB5b3UgbXVzdCBzZWxlY3Qgb25lLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLlxuICogICArICBZb3UgY2FuIGVuYWJsZSBPYmplY3QgTG9jayBmb3IgbmV3IG9yIGV4aXN0aW5nIGJ1Y2tldHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbmZpZ3VyaW5nIE9iamVjdCBMb2NrXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3QtbG9jay1jb25maWd1cmUuaHRtbCkuXG4gKiAgIFxuICogICAgWW91IG11c3QgVVJMIGVuY29kZSBhbnkgc2lnbmVkIGhlYWRlciB2YWx1ZXMgdGhhdCBjb250YWluIHNwYWNlcy4gRm9yIGV4YW1wbGUsIGlmIHlvdXIgaGVhZGVyIHZhbHVlIGlzIGBgbXkgZmlsZS50eHRgYCwgY29udGFpbmluZyB0d28gc3BhY2VzIGFmdGVyIGBgbXlgYCwgeW91IG11c3QgVVJMIGVuY29kZSB0aGlzIHZhbHVlIHRvIGBgbXklMjAlMjBmaWxlLnR4dGBgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdExvY2tDb25maWd1cmF0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBidWNrZXQgaGFzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gZW5hYmxlZC4gRW5hYmxlIGBgT2JqZWN0TG9ja0VuYWJsZWRgYCB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuXG4gKi9cbk9iamVjdExvY2tFbmFibGVkPzogXCJFbmFibGVkXCJcblJ1bGU/OiBPYmplY3RMb2NrUnVsZVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIE9iamVjdCBMb2NrIHJ1bGUgZm9yIHRoZSBzcGVjaWZpZWQgb2JqZWN0LiBFbmFibGUgdGhpcyBydWxlIHdoZW4geW91IGFwcGx5IGBgT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25gYCB0byBhIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCBidWNrZXQgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGBgTW9kZWBgIGFuZCBhIHBlcmlvZCBvZiBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtPYmplY3RMb2NrUnVsZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW9iamVjdGxvY2tydWxlLmh0bWwpIGFuZCBbRGVmYXVsdFJldGVudGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LWRlZmF1bHRyZXRlbnRpb24uaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0TG9ja1J1bGUge1xuRGVmYXVsdFJldGVudGlvbj86IERlZmF1bHRSZXRlbnRpb25cbn1cbi8qKlxuICogVGhlIGRlZmF1bHQgT2JqZWN0IExvY2sgcmV0ZW50aW9uIG1vZGUgYW5kIHBlcmlvZCB0aGF0IHlvdSB3YW50IHRvIGFwcGx5IHRvIG5ldyBvYmplY3RzIHBsYWNlZCBpbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCBidWNrZXQgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGBgTW9kZWBgIGFuZCBhIHBlcmlvZCBvZiBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhbGxvd2FibGUgdmFsdWVzIGZvciBtb2RlIGFuZCBwZXJpb2QsIHNlZSBbRGVmYXVsdFJldGVudGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LWRlZmF1bHRyZXRlbnRpb24uaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFJldGVudGlvbiB7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgeWVhcnMgdGhhdCB5b3Ugd2FudCB0byBzcGVjaWZ5IGZvciB0aGUgZGVmYXVsdCByZXRlbnRpb24gcGVyaW9kLiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIHlvdSBtdXN0IHNwZWNpZnkgYGBNb2RlYGAgYW5kIHNwZWNpZnkgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC5cbiAqL1xuWWVhcnM/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIHRoYXQgeW91IHdhbnQgdG8gc3BlY2lmeSBmb3IgdGhlIGRlZmF1bHQgcmV0ZW50aW9uIHBlcmlvZC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTW9kZWBgIGFuZCBzcGVjaWZ5IGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuXG4gKi9cbkRheXM/OiBudW1iZXJcbi8qKlxuICogVGhlIGRlZmF1bHQgT2JqZWN0IExvY2sgcmV0ZW50aW9uIG1vZGUgeW91IHdhbnQgdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgcGxhY2VkIGluIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIHlvdSBtdXN0IHNwZWNpZnkgYGBNb2RlYGAgYW5kIHNwZWNpZnkgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC5cbiAqL1xuTW9kZT86IChcIkNPTVBMSUFOQ0VcIiB8IFwiR09WRVJOQU5DRVwiKVxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgT2JqZWN0IE93bmVyc2hpcCBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lcnNoaXBDb250cm9scyB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29udGFpbmVyIGVsZW1lbnQgZm9yIE9iamVjdCBPd25lcnNoaXAgcnVsZXMuXG4gKi9cblJ1bGVzOiBPd25lcnNoaXBDb250cm9sc1J1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gT2JqZWN0IE93bmVyc2hpcCBydWxlLlxuICogIFMzIE9iamVjdCBPd25lcnNoaXAgaXMgYW4gQW1hem9uIFMzIGJ1Y2tldC1sZXZlbCBzZXR0aW5nIHRoYXQgeW91IGNhbiB1c2UgdG8gZGlzYWJsZSBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgYW5kIHRha2Ugb3duZXJzaGlwIG9mIGV2ZXJ5IG9iamVjdCBpbiB5b3VyIGJ1Y2tldCwgc2ltcGxpZnlpbmcgYWNjZXNzIG1hbmFnZW1lbnQgZm9yIGRhdGEgc3RvcmVkIGluIEFtYXpvbiBTMy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29udHJvbGxpbmcgb3duZXJzaGlwIG9mIG9iamVjdHMgYW5kIGRpc2FibGluZyBBQ0xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyc2hpcENvbnRyb2xzUnVsZSB7XG4vKipcbiAqIFNwZWNpZmllcyBhbiBvYmplY3Qgb3duZXJzaGlwIHJ1bGUuXG4gKi9cbk9iamVjdE93bmVyc2hpcD86IChcIk9iamVjdFdyaXRlclwiIHwgXCJCdWNrZXRPd25lclByZWZlcnJlZFwiIHwgXCJCdWNrZXRPd25lckVuZm9yY2VkXCIpXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdGhhdCBkZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBwdWJsaWMgYWNjZXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgYmxvY2sgcHVibGljIGFjY2VzcyBjb250cm9sIGxpc3RzIChBQ0xzKSBmb3IgdGhpcyBidWNrZXQgYW5kIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyB0aGUgZm9sbG93aW5nIGJlaGF2aW9yOlxuICogICArICBQVVQgQnVja2V0IEFDTCBhbmQgUFVUIE9iamVjdCBBQ0wgY2FsbHMgZmFpbCBpZiB0aGUgc3BlY2lmaWVkIEFDTCBpcyBwdWJsaWMuXG4gKiAgICsgIFBVVCBPYmplY3QgY2FsbHMgZmFpbCBpZiB0aGUgcmVxdWVzdCBpbmNsdWRlcyBhIHB1YmxpYyBBQ0wuXG4gKiAgICsgIFBVVCBCdWNrZXQgY2FsbHMgZmFpbCBpZiB0aGUgcmVxdWVzdCBpbmNsdWRlcyBhIHB1YmxpYyBBQ0wuXG4gKiAgIFxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBleGlzdGluZyBwb2xpY2llcyBvciBBQ0xzLlxuICovXG5CbG9ja1B1YmxpY0FjbHM/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgYmxvY2sgcHVibGljIGJ1Y2tldCBwb2xpY2llcyBmb3IgdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyBBbWF6b24gUzMgdG8gcmVqZWN0IGNhbGxzIHRvIFBVVCBCdWNrZXQgcG9saWN5IGlmIHRoZSBzcGVjaWZpZWQgYnVja2V0IHBvbGljeSBhbGxvd3MgcHVibGljIGFjY2Vzcy4gXG4gKiAgRW5hYmxpbmcgdGhpcyBzZXR0aW5nIGRvZXNuJ3QgYWZmZWN0IGV4aXN0aW5nIGJ1Y2tldCBwb2xpY2llcy5cbiAqL1xuQmxvY2tQdWJsaWNQb2xpY3k/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgaWdub3JlIHB1YmxpYyBBQ0xzIGZvciB0aGlzIGJ1Y2tldCBhbmQgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC4gU2V0dGluZyB0aGlzIGVsZW1lbnQgdG8gYGBUUlVFYGAgY2F1c2VzIEFtYXpvbiBTMyB0byBpZ25vcmUgYWxsIHB1YmxpYyBBQ0xzIG9uIHRoaXMgYnVja2V0IGFuZCBvYmplY3RzIGluIHRoaXMgYnVja2V0LlxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCB0aGUgcGVyc2lzdGVuY2Ugb2YgYW55IGV4aXN0aW5nIEFDTHMgYW5kIGRvZXNuJ3QgcHJldmVudCBuZXcgcHVibGljIEFDTHMgZnJvbSBiZWluZyBzZXQuXG4gKi9cbklnbm9yZVB1YmxpY0FjbHM/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgcmVzdHJpY3QgcHVibGljIGJ1Y2tldCBwb2xpY2llcyBmb3IgdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIHJlc3RyaWN0cyBhY2Nlc3MgdG8gdGhpcyBidWNrZXQgdG8gb25seSBBV1Mtc2VydmljZSBwcmluY2lwYWxzIGFuZCBhdXRob3JpemVkIHVzZXJzIHdpdGhpbiB0aGlzIGFjY291bnQgaWYgdGhlIGJ1Y2tldCBoYXMgYSBwdWJsaWMgcG9saWN5LlxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBwcmV2aW91c2x5IHN0b3JlZCBidWNrZXQgcG9saWNpZXMsIGV4Y2VwdCB0aGF0IHB1YmxpYyBhbmQgY3Jvc3MtYWNjb3VudCBhY2Nlc3Mgd2l0aGluIGFueSBwdWJsaWMgYnVja2V0IHBvbGljeSwgaW5jbHVkaW5nIG5vbi1wdWJsaWMgZGVsZWdhdGlvbiB0byBzcGVjaWZpYyBhY2NvdW50cywgaXMgYmxvY2tlZC5cbiAqL1xuUmVzdHJpY3RQdWJsaWNCdWNrZXRzPzogYm9vbGVhblxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciByZXBsaWNhdGluZyBvYmplY3RzIGluIGFuIFMzIGJ1Y2tldC4gVG8gZW5hYmxlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBhbHNvIGVuYWJsZSB2ZXJzaW9uaW5nIGJ5IHVzaW5nIHRoZSBgYFZlcnNpb25pbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkuXG4gKiAgQW1hem9uIFMzIGNhbiBzdG9yZSByZXBsaWNhdGVkIG9iamVjdHMgaW4gYSBzaW5nbGUgZGVzdGluYXRpb24gYnVja2V0IG9yIG11bHRpcGxlIGRlc3RpbmF0aW9uIGJ1Y2tldHMuIFRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3IgYnVja2V0cyBtdXN0IGFscmVhZHkgZXhpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25Db25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBJQU1sb25nIChJQU0pIHJvbGUgdGhhdCBBbWF6b24gUzMgYXNzdW1lcyB3aGVuIHJlcGxpY2F0aW5nIG9iamVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0hvdyB0byBTZXQgVXAgUmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLWhvdy1zZXR1cC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuUm9sZTogc3RyaW5nXG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBvbmUgb3IgbW9yZSByZXBsaWNhdGlvbiBydWxlcy4gQSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgcnVsZSBhbmQgY2FuIGNvbnRhaW4gYSBtYXhpbXVtIG9mIDEsMDAwIHJ1bGVzLlxuICovXG5SdWxlczogUmVwbGljYXRpb25SdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoaWNoIEFtYXpvbiBTMyBvYmplY3RzIHRvIHJlcGxpY2F0ZSBhbmQgd2hlcmUgdG8gc3RvcmUgdGhlIHJlcGxpY2FzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uUnVsZSB7XG5EZWxldGVNYXJrZXJSZXBsaWNhdGlvbj86IERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uXG5EZXN0aW5hdGlvbjogUmVwbGljYXRpb25EZXN0aW5hdGlvblxuRmlsdGVyPzogUmVwbGljYXRpb25SdWxlRmlsdGVyXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLiBUaGUgbWF4aW11bSB2YWx1ZSBpcyAyNTUgY2hhcmFjdGVycy4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSB2YWx1ZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhIHJhbmRvbSBJRC4gV2hlbiB1c2luZyBhIFYyIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gdGhpcyBwcm9wZXJ0eSBpcyBjYXBpdGFsaXplZCBhcyBcIklEXCIuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBvYmplY3Qgb3Igb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLiBUaGUgbWF4aW11bSBwcmVmaXggbGVuZ3RoIGlzIDEsMDI0IGNoYXJhY3RlcnMuIFRvIGluY2x1ZGUgYWxsIG9iamVjdHMgaW4gYSBidWNrZXQsIHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nLiBUbyBmaWx0ZXIgdXNpbmcgYSBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBhZGQgdGhlIGBgUHJlZml4YGAgZGlyZWN0bHkgYXMgYSBjaGlsZCBlbGVtZW50IG9mIHRoZSBgYFJ1bGVgYCBlbGVtZW50LlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogVGhlIHByaW9yaXR5IGluZGljYXRlcyB3aGljaCBydWxlIGhhcyBwcmVjZWRlbmNlIHdoZW5ldmVyIHR3byBvciBtb3JlIHJlcGxpY2F0aW9uIHJ1bGVzIGNvbmZsaWN0LiBBbWF6b24gUzMgd2lsbCBhdHRlbXB0IHRvIHJlcGxpY2F0ZSBvYmplY3RzIGFjY29yZGluZyB0byBhbGwgcmVwbGljYXRpb24gcnVsZXMuIEhvd2V2ZXIsIGlmIHRoZXJlIGFyZSB0d28gb3IgbW9yZSBydWxlcyB3aXRoIHRoZSBzYW1lIGRlc3RpbmF0aW9uIGJ1Y2tldCwgdGhlbiBvYmplY3RzIHdpbGwgYmUgcmVwbGljYXRlZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGUgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eS4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgaGlnaGVyIHRoZSBwcmlvcml0eS4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Qcmlvcml0eT86IG51bWJlclxuU291cmNlU2VsZWN0aW9uQ3JpdGVyaWE/OiBTb3VyY2VTZWxlY3Rpb25Dcml0ZXJpYVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgcnVsZSBpcyBlbmFibGVkLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHJlcGxpY2F0ZXMgZGVsZXRlIG1hcmtlcnMuIElmIHlvdSBzcGVjaWZ5IGEgYGBGaWx0ZXJgYCBpbiB5b3VyIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIHlvdSBtdXN0IGFsc28gaW5jbHVkZSBhIGBgRGVsZXRlTWFya2VyUmVwbGljYXRpb25gYCBlbGVtZW50LiBJZiB5b3VyIGBgRmlsdGVyYGAgaW5jbHVkZXMgYSBgYFRhZ2BgIGVsZW1lbnQsIHRoZSBgYERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uYGBgYFN0YXR1c2BgIG11c3QgYmUgc2V0IHRvIERpc2FibGVkLCBiZWNhdXNlIEFtYXpvbiBTMyBkb2VzIG5vdCBzdXBwb3J0IHJlcGxpY2F0aW5nIGRlbGV0ZSBtYXJrZXJzIGZvciB0YWctYmFzZWQgcnVsZXMuIEZvciBhbiBleGFtcGxlIGNvbmZpZ3VyYXRpb24sIHNlZSBbQmFzaWMgUnVsZSBDb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi1hZGQtY29uZmlnLmh0bWwjcmVwbGljYXRpb24tY29uZmlnLW1pbi1ydWxlLWNvbmZpZykuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGRlbGV0ZSBtYXJrZXIgcmVwbGljYXRpb24sIHNlZSBbQmFzaWMgUnVsZSBDb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9kZWxldGUtbWFya2VyLXJlcGxpY2F0aW9uLmh0bWwpLiBcbiAqICAgSWYgeW91IGFyZSB1c2luZyBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIEFtYXpvbiBTMyBoYW5kbGVzIHJlcGxpY2F0aW9uIG9mIGRlbGV0ZSBtYXJrZXJzIGRpZmZlcmVudGx5LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtCYWNrd2FyZCBDb21wYXRpYmlsaXR5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi1hZGQtY29uZmlnLmh0bWwjcmVwbGljYXRpb24tYmFja3dhcmQtY29tcGF0LWNvbnNpZGVyYXRpb25zKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVNYXJrZXJSZXBsaWNhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRvIHJlcGxpY2F0ZSBkZWxldGUgbWFya2Vycy5cbiAqL1xuU3RhdHVzPzogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcGxpY2F0aW9uIGRlc3RpbmF0aW9uIGFuZCBpdHMgY29uZmlndXJhdGlvbnMgaW5jbHVkaW5nIGVuYWJsaW5nIHRoZSBTMyBSZXBsaWNhdGlvbiBUaW1lIENvbnRyb2wgKFMzIFJUQykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25EZXN0aW5hdGlvbiB7XG5BY2Nlc3NDb250cm9sVHJhbnNsYXRpb24/OiBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25cbi8qKlxuICogRGVzdGluYXRpb24gYnVja2V0IG93bmVyIGFjY291bnQgSUQuIEluIGEgY3Jvc3MtYWNjb3VudCBzY2VuYXJpbywgaWYgeW91IGRpcmVjdCBBbWF6b24gUzMgdG8gY2hhbmdlIHJlcGxpY2Egb3duZXJzaGlwIHRvIHRoZSBBV1MtYWNjb3VudCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldCBieSBzcGVjaWZ5aW5nIHRoZSBgYEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbmBgIHByb3BlcnR5LCB0aGlzIGlzIHRoZSBhY2NvdW50IElEIG9mIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Nyb3NzLVJlZ2lvbiBSZXBsaWNhdGlvbiBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb246IENoYW5nZSBSZXBsaWNhIE93bmVyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9jcnItY2hhbmdlLW93bmVyLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogIElmIHlvdSBzcGVjaWZ5IHRoZSBgYEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbmBgIHByb3BlcnR5LCB0aGUgYGBBY2NvdW50YGAgcHJvcGVydHkgaXMgcmVxdWlyZWQuXG4gKi9cbkFjY291bnQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBidWNrZXQgd2hlcmUgeW91IHdhbnQgQW1hem9uIFMzIHRvIHN0b3JlIHRoZSByZXN1bHRzLlxuICovXG5CdWNrZXQ6IHN0cmluZ1xuRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/OiBFbmNyeXB0aW9uQ29uZmlndXJhdGlvblxuTWV0cmljcz86IE1ldHJpY3NcblJlcGxpY2F0aW9uVGltZT86IFJlcGxpY2F0aW9uVGltZVxuLyoqXG4gKiBUaGUgc3RvcmFnZSBjbGFzcyB0byB1c2Ugd2hlbiByZXBsaWNhdGluZyBvYmplY3RzLCBzdWNoIGFzIFMzIFN0YW5kYXJkIG9yIHJlZHVjZWQgcmVkdW5kYW5jeS4gQnkgZGVmYXVsdCwgQW1hem9uIFMzIHVzZXMgdGhlIHN0b3JhZ2UgY2xhc3Mgb2YgdGhlIHNvdXJjZSBvYmplY3QgdG8gY3JlYXRlIHRoZSBvYmplY3QgcmVwbGljYS4gXG4gKiAgRm9yIHZhbGlkIHZhbHVlcywgc2VlIHRoZSBgYFN0b3JhZ2VDbGFzc2BgIGVsZW1lbnQgb2YgdGhlIFtQVVQgQnVja2V0IHJlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUcmVwbGljYXRpb24uaHRtbCkgYWN0aW9uIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICogIGBgRlNYX09QRU5aRlNgYCBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUgd2hlbiByZXBsaWNhdGluZyBvYmplY3RzLlxuICovXG5TdG9yYWdlQ2xhc3M/OiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJSRURVQ0VEX1JFRFVOREFOQ1lcIiB8IFwiU1RBTkRBUkRcIiB8IFwiU1RBTkRBUkRfSUFcIilcbn1cbi8qKlxuICogU3BlY2lmeSB0aGlzIG9ubHkgaW4gYSBjcm9zcy1hY2NvdW50IHNjZW5hcmlvICh3aGVyZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGJ1Y2tldCBvd25lcnMgYXJlIG5vdCB0aGUgc2FtZSksIGFuZCB5b3Ugd2FudCB0byBjaGFuZ2UgcmVwbGljYSBvd25lcnNoaXAgdG8gdGhlIEFXUy1hY2NvdW50IHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gYnVja2V0LiBJZiB0aGlzIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIHRoZSByZXBsaWNhcyBhcmUgb3duZWQgYnkgc2FtZSBBV1MtYWNjb3VudCB0aGF0IG93bnMgdGhlIHNvdXJjZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSByZXBsaWNhIG93bmVyc2hpcC4gRm9yIGRlZmF1bHQgYW5kIHZhbGlkIHZhbHVlcywgc2VlIFtQVVQgYnVja2V0IHJlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUcmVwbGljYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgQVBJIFJlZmVyZW5jZSouXG4gKi9cbk93bmVyOiBcIkRlc3RpbmF0aW9uXCJcbn1cbi8qKlxuICogU3BlY2lmaWVzIGVuY3J5cHRpb24tcmVsYXRlZCBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgSUQgKEtleSBBUk4gb3IgQWxpYXMgQVJOKSBvZiB0aGUgY3VzdG9tZXIgbWFuYWdlZCBBV1MgS01TIGtleSBzdG9yZWQgaW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykgZm9yIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQuIEFtYXpvbiBTMyB1c2VzIHRoaXMga2V5IHRvIGVuY3J5cHQgcmVwbGljYSBvYmplY3RzLiBBbWF6b24gUzMgb25seSBzdXBwb3J0cyBzeW1tZXRyaWMgZW5jcnlwdGlvbiBLTVMga2V5cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXN5bW1ldHJpYyBrZXlzIGluIEtNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3N5bW1ldHJpYy1hc3ltbWV0cmljLmh0bWwpIGluIHRoZSAqS2V5IE1hbmFnZW1lbnQgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5SZXBsaWNhS21zS2V5SUQ6IHN0cmluZ1xufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBzcGVjaWZ5aW5nIHJlcGxpY2F0aW9uIG1ldHJpY3MtcmVsYXRlZCBzZXR0aW5ncyBlbmFibGluZyByZXBsaWNhdGlvbiBtZXRyaWNzIGFuZCBldmVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljcyB7XG5FdmVudFRocmVzaG9sZD86IFJlcGxpY2F0aW9uVGltZVZhbHVlXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSByZXBsaWNhdGlvbiBtZXRyaWNzIGFyZSBlbmFibGVkLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyB0aGUgdGltZSB0aHJlc2hvbGQgZm9yIGVtaXR0aW5nIHRoZSBgYHMzOlJlcGxpY2F0aW9uOk9wZXJhdGlvbk1pc3NlZFRocmVzaG9sZGBgIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZVZhbHVlIHtcbi8qKlxuICogQ29udGFpbnMgYW4gaW50ZWdlciBzcGVjaWZ5aW5nIHRpbWUgaW4gbWludXRlcy4gXG4gKiAgIFZhbGlkIHZhbHVlOiAxNVxuICovXG5NaW51dGVzOiBudW1iZXJcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyBTMyBSZXBsaWNhdGlvbiBUaW1lIENvbnRyb2wgKFMzIFJUQyksIGluY2x1ZGluZyB3aGV0aGVyIFMzIFJUQyBpcyBlbmFibGVkIGFuZCB0aGUgdGltZSB3aGVuIGFsbCBvYmplY3RzIGFuZCBvcGVyYXRpb25zIG9uIG9iamVjdHMgbXVzdCBiZSByZXBsaWNhdGVkLiBNdXN0IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGEgYGBNZXRyaWNzYGAgYmxvY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25UaW1lIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHJlcGxpY2F0aW9uIHRpbWUgaXMgZW5hYmxlZC5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG5UaW1lOiBSZXBsaWNhdGlvblRpbWVWYWx1ZTFcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyB0aGUgdGltZSBieSB3aGljaCByZXBsaWNhdGlvbiBzaG91bGQgYmUgY29tcGxldGUgZm9yIGFsbCBvYmplY3RzIGFuZCBvcGVyYXRpb25zIG9uIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25UaW1lVmFsdWUxIHtcbi8qKlxuICogQ29udGFpbnMgYW4gaW50ZWdlciBzcGVjaWZ5aW5nIHRpbWUgaW4gbWludXRlcy4gXG4gKiAgIFZhbGlkIHZhbHVlOiAxNVxuICovXG5NaW51dGVzOiBudW1iZXJcbn1cbi8qKlxuICogQSBmaWx0ZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcmVwbGljYXRpb24gcnVsZSBhcHBsaWVzLiBBIGBgRmlsdGVyYGAgbXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIGBgUHJlZml4YGAsIGBgVGFnRmlsdGVyYGAsIG9yIGFuIGBgQW5kYGAgY2hpbGQgZWxlbWVudC4gVGhlIHVzZSBvZiB0aGUgZmlsdGVyIGZpZWxkIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgYSBWMiByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLiBUaGlzIGZpZWxkIGlzbid0IHN1cHBvcnRlZCBpbiBhIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiAgIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gb25seSBzdXBwb3J0cyBmaWx0ZXJpbmcgYnkga2V5IHByZWZpeC4gVG8gZmlsdGVyIHVzaW5nIGEgVjEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgYWRkIHRoZSBgYFByZWZpeGBgIGRpcmVjdGx5IGFzIGEgY2hpbGQgZWxlbWVudCBvZiB0aGUgYGBSdWxlYGAgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblJ1bGVGaWx0ZXIge1xuQW5kPzogUmVwbGljYXRpb25SdWxlQW5kT3BlcmF0b3Jcbi8qKlxuICogQW4gb2JqZWN0IGtleSBuYW1lIHByZWZpeCB0aGF0IGlkZW50aWZpZXMgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuVGFnRmlsdGVyPzogVGFnRmlsdGVyMVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igc3BlY2lmeWluZyBydWxlIGZpbHRlcnMuIFRoZSBmaWx0ZXJzIGRldGVybWluZSB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy4gVGhpcyBlbGVtZW50IGlzIHJlcXVpcmVkIG9ubHkgaWYgeW91IHNwZWNpZnkgbW9yZSB0aGFuIG9uZSBmaWx0ZXIuIEZvciBleGFtcGxlOiBcbiAqICAgKyAgSWYgeW91IHNwZWNpZnkgYm90aCBhIGBgUHJlZml4YGAgYW5kIGEgYGBUYWdGaWx0ZXJgYCwgd3JhcCB0aGVzZSBmaWx0ZXJzIGluIGFuIGBgQW5kYGAgdGFnLlxuICogICArICBJZiB5b3Ugc3BlY2lmeSBhIGZpbHRlciBiYXNlZCBvbiBtdWx0aXBsZSB0YWdzLCB3cmFwIHRoZSBgYFRhZ0ZpbHRlcmBgIGVsZW1lbnRzIGluIGFuIGBgQW5kYGAgdGFnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uUnVsZUFuZE9wZXJhdG9yIHtcbi8qKlxuICogQW4gb2JqZWN0IGtleSBuYW1lIHByZWZpeCB0aGF0IGlkZW50aWZpZXMgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBBbiBhcnJheSBvZiB0YWdzIGNvbnRhaW5pbmcga2V5IGFuZCB2YWx1ZSBwYWlycy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG59XG4vKipcbiAqIFNwZWNpZmllcyB0YWdzIHRvIHVzZSB0byBpZGVudGlmeSBhIHN1YnNldCBvZiBvYmplY3RzIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDYXRlZ29yaXppbmcgeW91ciBzdG9yYWdlIHVzaW5nIHRhZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC10YWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnRmlsdGVyMSB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHRoYXQgZGVzY3JpYmVzIGFkZGl0aW9uYWwgZmlsdGVycyBmb3IgaWRlbnRpZnlpbmcgdGhlIHNvdXJjZSBvYmplY3RzIHRoYXQgeW91IHdhbnQgdG8gcmVwbGljYXRlLiBZb3UgY2FuIGNob29zZSB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgcmVwbGljYXRpb24gb2YgdGhlc2Ugb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VTZWxlY3Rpb25Dcml0ZXJpYSB7XG5SZXBsaWNhTW9kaWZpY2F0aW9ucz86IFJlcGxpY2FNb2RpZmljYXRpb25zXG5Tc2VLbXNFbmNyeXB0ZWRPYmplY3RzPzogU3NlS21zRW5jcnlwdGVkT2JqZWN0c1xufVxuLyoqXG4gKiBBIGZpbHRlciB0aGF0IHlvdSBjYW4gc3BlY2lmeSBmb3Igc2VsZWN0aW9uIGZvciBtb2RpZmljYXRpb25zIG9uIHJlcGxpY2FzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2FNb2RpZmljYXRpb25zIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHJlcGxpY2F0ZXMgbW9kaWZpY2F0aW9ucyBvbiByZXBsaWNhcy5cbiAqICAqQWxsb3dlZCB2YWx1ZXMqOiBgYEVuYWJsZWRgYCB8IGBgRGlzYWJsZWRgYFxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGZpbHRlciBpbmZvcm1hdGlvbiBmb3IgdGhlIHNlbGVjdGlvbiBvZiBBbWF6b24gUzMgb2JqZWN0cyBlbmNyeXB0ZWQgd2l0aCBBV1MgS01TLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNzZUttc0VuY3J5cHRlZE9iamVjdHMge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgcmVwbGljYXRlcyBvYmplY3RzIGNyZWF0ZWQgd2l0aCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHVzaW5nIGFuIEFXUyBLTVMga2V5IHN0b3JlZCBpbiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZS5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIG9mIGEga2V5IHZhbHVlIG5hbWUgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBOYW1lIG9mIHRoZSBvYmplY3Qga2V5LlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBWYWx1ZSBvZiB0aGUgdGFnLlxuICovXG5WYWx1ZTogc3RyaW5nXG59XG4vKipcbiAqIEVuYWJsZXMgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYWxsIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuIFlvdSBtaWdodCBlbmFibGUgdmVyc2lvbmluZyB0byBwcmV2ZW50IG9iamVjdHMgZnJvbSBiZWluZyBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIGJ5IG1pc3Rha2Ugb3IgdG8gYXJjaGl2ZSBvYmplY3RzIHNvIHRoYXQgeW91IGNhbiByZXRyaWV2ZSBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGVtLlxuICogICBXaGVuIHlvdSBlbmFibGUgdmVyc2lvbmluZyBvbiBhIGJ1Y2tldCBmb3IgdGhlIGZpcnN0IHRpbWUsIGl0IG1pZ2h0IHRha2UgYSBzaG9ydCBhbW91bnQgb2YgdGltZSBmb3IgdGhlIGNoYW5nZSB0byBiZSBmdWxseSBwcm9wYWdhdGVkLiBXZSByZWNvbW1lbmQgdGhhdCB5b3Ugd2FpdCBmb3IgMTUgbWludXRlcyBhZnRlciBlbmFibGluZyB2ZXJzaW9uaW5nIGJlZm9yZSBpc3N1aW5nIHdyaXRlIG9wZXJhdGlvbnMgKGBgUFVUYGAgb3IgYGBERUxFVEVgYCkgb24gb2JqZWN0cyBpbiB0aGUgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25pbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIHZlcnNpb25pbmcgc3RhdGUgb2YgdGhlIGJ1Y2tldC5cbiAqL1xuU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIlN1c3BlbmRlZFwiKVxufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgYnVja2V0IGFzIGEgc3RhdGljIHdlYnNpdGUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0hvc3RpbmcgV2Vic2l0ZXMgb24gQW1hem9uIFMzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9XZWJzaXRlSG9zdGluZy5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJzaXRlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBlcnJvciBkb2N1bWVudCBmb3IgdGhlIHdlYnNpdGUuXG4gKi9cbkVycm9yRG9jdW1lbnQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGluZGV4IGRvY3VtZW50IGZvciB0aGUgd2Vic2l0ZS5cbiAqL1xuSW5kZXhEb2N1bWVudD86IHN0cmluZ1xuLyoqXG4gKiBSdWxlcyB0aGF0IGRlZmluZSB3aGVuIGEgcmVkaXJlY3QgaXMgYXBwbGllZCBhbmQgdGhlIHJlZGlyZWN0IGJlaGF2aW9yLlxuICovXG5Sb3V0aW5nUnVsZXM/OiBSb3V0aW5nUnVsZVtdXG5SZWRpcmVjdEFsbFJlcXVlc3RzVG8/OiBSZWRpcmVjdEFsbFJlcXVlc3RzVG9cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSByZWRpcmVjdCBiZWhhdmlvciBhbmQgd2hlbiBhIHJlZGlyZWN0IGlzIGFwcGxpZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJvdXRpbmcgcnVsZXMsIHNlZSBbQ29uZmlndXJpbmcgYWR2YW5jZWQgY29uZGl0aW9uYWwgcmVkaXJlY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9ob3ctdG8tcGFnZS1yZWRpcmVjdC5odG1sI2FkdmFuY2VkLWNvbmRpdGlvbmFsLXJlZGlyZWN0cykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ1J1bGUge1xuUmVkaXJlY3RSdWxlOiBSZWRpcmVjdFJ1bGVcblJvdXRpbmdSdWxlQ29uZGl0aW9uPzogUm91dGluZ1J1bGVDb25kaXRpb25cbn1cbi8qKlxuICogQ29udGFpbmVyIGZvciByZWRpcmVjdCBpbmZvcm1hdGlvbi4gWW91IGNhbiByZWRpcmVjdCByZXF1ZXN0cyB0byBhbm90aGVyIGhvc3QsIHRvIGFub3RoZXIgcGFnZSwgb3Igd2l0aCBhbm90aGVyIHByb3RvY29sLiBJbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IsIHlvdSBjYW4gc3BlY2lmeSBhIGRpZmZlcmVudCBlcnJvciBjb2RlIHRvIHJldHVybi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdFJ1bGUge1xuLyoqXG4gKiBUaGUgaG9zdCBuYW1lIHRvIHVzZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdC5cbiAqL1xuSG9zdE5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgcmVkaXJlY3QgY29kZSB0byB1c2Ugb24gdGhlIHJlc3BvbnNlLiBOb3QgcmVxdWlyZWQgaWYgb25lIG9mIHRoZSBzaWJsaW5ncyBpcyBwcmVzZW50LlxuICovXG5IdHRwUmVkaXJlY3RDb2RlPzogc3RyaW5nXG4vKipcbiAqIFByb3RvY29sIHRvIHVzZSB3aGVuIHJlZGlyZWN0aW5nIHJlcXVlc3RzLiBUaGUgZGVmYXVsdCBpcyB0aGUgcHJvdG9jb2wgdGhhdCBpcyB1c2VkIGluIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICovXG5Qcm90b2NvbD86IChcImh0dHBcIiB8IFwiaHR0cHNcIilcbi8qKlxuICogVGhlIG9iamVjdCBrZXkgcHJlZml4IHRvIHVzZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdC4gRm9yIGV4YW1wbGUsIHRvIHJlZGlyZWN0IHJlcXVlc3RzIGZvciBhbGwgcGFnZXMgd2l0aCBwcmVmaXggYGBkb2NzL2BgIChvYmplY3RzIGluIHRoZSBgYGRvY3MvYGAgZm9sZGVyKSB0byBgYGRvY3VtZW50cy9gYCwgeW91IGNhbiBzZXQgYSBjb25kaXRpb24gYmxvY2sgd2l0aCBgYEtleVByZWZpeEVxdWFsc2BgIHNldCB0byBgYGRvY3MvYGAgYW5kIGluIHRoZSBSZWRpcmVjdCBzZXQgYGBSZXBsYWNlS2V5UHJlZml4V2l0aGBgIHRvIGBgL2RvY3VtZW50c2BgLiBOb3QgcmVxdWlyZWQgaWYgb25lIG9mIHRoZSBzaWJsaW5ncyBpcyBwcmVzZW50LiBDYW4gYmUgcHJlc2VudCBvbmx5IGlmIGBgUmVwbGFjZUtleVdpdGhgYCBpcyBub3QgcHJvdmlkZWQuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblJlcGxhY2VLZXlQcmVmaXhXaXRoPzogc3RyaW5nXG4vKipcbiAqIFRoZSBzcGVjaWZpYyBvYmplY3Qga2V5IHRvIHVzZSBpbiB0aGUgcmVkaXJlY3QgcmVxdWVzdC4gRm9yIGV4YW1wbGUsIHJlZGlyZWN0IHJlcXVlc3QgdG8gYGBlcnJvci5odG1sYGAuIE5vdCByZXF1aXJlZCBpZiBvbmUgb2YgdGhlIHNpYmxpbmdzIGlzIHByZXNlbnQuIENhbiBiZSBwcmVzZW50IG9ubHkgaWYgYGBSZXBsYWNlS2V5UHJlZml4V2l0aGBgIGlzIG5vdCBwcm92aWRlZC5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUmVwbGFjZUtleVdpdGg/OiBzdHJpbmdcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGRlc2NyaWJpbmcgYSBjb25kaXRpb24gdGhhdCBtdXN0IGJlIG1ldCBmb3IgdGhlIHNwZWNpZmllZCByZWRpcmVjdCB0byBhcHBseS4gRm9yIGV4YW1wbGUsIDEuIElmIHJlcXVlc3QgaXMgZm9yIHBhZ2VzIGluIHRoZSBgYC9kb2NzYGAgZm9sZGVyLCByZWRpcmVjdCB0byB0aGUgYGAvZG9jdW1lbnRzYGAgZm9sZGVyLiAyLiBJZiByZXF1ZXN0IHJlc3VsdHMgaW4gSFRUUCBlcnJvciA0eHgsIHJlZGlyZWN0IHJlcXVlc3QgdG8gYW5vdGhlciBob3N0IHdoZXJlIHlvdSBtaWdodCBwcm9jZXNzIHRoZSBlcnJvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nUnVsZUNvbmRpdGlvbiB7XG4vKipcbiAqIFRoZSBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHdoZW4gdGhlIHJlZGlyZWN0IGlzIGFwcGxpZWQuIEZvciBleGFtcGxlLCB0byByZWRpcmVjdCByZXF1ZXN0cyBmb3IgYGBFeGFtcGxlUGFnZS5odG1sYGAsIHRoZSBrZXkgcHJlZml4IHdpbGwgYmUgYGBFeGFtcGxlUGFnZS5odG1sYGAuIFRvIHJlZGlyZWN0IHJlcXVlc3QgZm9yIGFsbCBwYWdlcyB3aXRoIHRoZSBwcmVmaXggYGBkb2NzL2BgLCB0aGUga2V5IHByZWZpeCB3aWxsIGJlIGBgZG9jcy9gYCwgd2hpY2ggaWRlbnRpZmllcyBhbGwgb2JqZWN0cyBpbiB0aGUgZG9jcy8gZm9sZGVyLlxuICogIFJlcXVpcmVkIHdoZW4gdGhlIHBhcmVudCBlbGVtZW50IGBgQ29uZGl0aW9uYGAgaXMgc3BlY2lmaWVkIGFuZCBzaWJsaW5nIGBgSHR0cEVycm9yQ29kZVJldHVybmVkRXF1YWxzYGAgaXMgbm90IHNwZWNpZmllZC4gSWYgYm90aCBjb25kaXRpb25zIGFyZSBzcGVjaWZpZWQsIGJvdGggbXVzdCBiZSB0cnVlIGZvciB0aGUgcmVkaXJlY3QgdG8gYmUgYXBwbGllZC5cbiAqL1xuS2V5UHJlZml4RXF1YWxzPzogc3RyaW5nXG4vKipcbiAqIFRoZSBIVFRQIGVycm9yIGNvZGUgd2hlbiB0aGUgcmVkaXJlY3QgaXMgYXBwbGllZC4gSW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLCBpZiB0aGUgZXJyb3IgY29kZSBlcXVhbHMgdGhpcyB2YWx1ZSwgdGhlbiB0aGUgc3BlY2lmaWVkIHJlZGlyZWN0IGlzIGFwcGxpZWQuXG4gKiAgUmVxdWlyZWQgd2hlbiBwYXJlbnQgZWxlbWVudCBgYENvbmRpdGlvbmBgIGlzIHNwZWNpZmllZCBhbmQgc2libGluZyBgYEtleVByZWZpeEVxdWFsc2BgIGlzIG5vdCBzcGVjaWZpZWQuIElmIGJvdGggYXJlIHNwZWNpZmllZCwgdGhlbiBib3RoIG11c3QgYmUgdHJ1ZSBmb3IgdGhlIHJlZGlyZWN0IHRvIGJlIGFwcGxpZWQuXG4gKi9cbkh0dHBFcnJvckNvZGVSZXR1cm5lZEVxdWFscz86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgcmVkaXJlY3QgYmVoYXZpb3IgZm9yIGV2ZXJ5IHJlcXVlc3QgdG8gdGhpcyBidWNrZXQncyB3ZWJzaXRlIGVuZHBvaW50LlxuICogICBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCB5b3UgY2FuJ3Qgc3BlY2lmeSBhbnkgb3RoZXIgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXJlY3RBbGxSZXF1ZXN0c1RvIHtcbi8qKlxuICogTmFtZSBvZiB0aGUgaG9zdCB3aGVyZSByZXF1ZXN0cyBhcmUgcmVkaXJlY3RlZC5cbiAqL1xuSG9zdE5hbWU6IHN0cmluZ1xuLyoqXG4gKiBQcm90b2NvbCB0byB1c2Ugd2hlbiByZWRpcmVjdGluZyByZXF1ZXN0cy4gVGhlIGRlZmF1bHQgaXMgdGhlIHByb3RvY29sIHRoYXQgaXMgdXNlZCBpbiB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAqL1xuUHJvdG9jb2w/OiAoXCJodHRwXCIgfCBcImh0dHBzXCIpXG59XG4iXX0=
|
|
@@ -14,6 +14,12 @@ export type ClusterInstanceStorageConfig = {
|
|
|
14
14
|
* @maxItems 1
|
|
15
15
|
*/
|
|
16
16
|
export type ClusterInstanceStorageConfigs = ClusterInstanceStorageConfig[];
|
|
17
|
+
/**
|
|
18
|
+
* A list of Kubernetes taints to apply to cluster nodes. Maximum of 50 taints.
|
|
19
|
+
*
|
|
20
|
+
* @maxItems 50
|
|
21
|
+
*/
|
|
22
|
+
export type ClusterKubernetesTaints = ClusterKubernetesTaint[];
|
|
17
23
|
/**
|
|
18
24
|
* The type of deep health check(s) to be performed on the instances in the SageMaker HyperPod cluster instance group.
|
|
19
25
|
*/
|
|
@@ -122,8 +128,10 @@ export interface VpcConfig {
|
|
|
122
128
|
* Details of an instance group in a SageMaker HyperPod cluster.
|
|
123
129
|
*/
|
|
124
130
|
export interface ClusterInstanceGroup {
|
|
131
|
+
CapacityRequirements?: ClusterCapacityRequirements;
|
|
125
132
|
InstanceGroupName: InstanceGroupName;
|
|
126
133
|
InstanceStorageConfigs?: ClusterInstanceStorageConfigs;
|
|
134
|
+
KubernetesConfig?: ClusterKubernetesConfig;
|
|
127
135
|
LifeCycleConfig: ClusterLifeCycleConfig;
|
|
128
136
|
/**
|
|
129
137
|
* The Amazon Resource Name (ARN) of the training plan to use for this cluster instance group. For more information about how to reserve GPU capacity for your SageMaker HyperPod clusters using Amazon SageMaker Training Plan, see CreateTrainingPlan.
|
|
@@ -148,6 +156,23 @@ export interface ClusterInstanceGroup {
|
|
|
148
156
|
InstanceType: InstanceType;
|
|
149
157
|
ExecutionRole: ExecutionRole;
|
|
150
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Specifies the capacity requirements configuration for an instance group
|
|
161
|
+
*/
|
|
162
|
+
export interface ClusterCapacityRequirements {
|
|
163
|
+
Spot?: ClusterSpotOptions;
|
|
164
|
+
OnDemand?: ClusterOnDemandOptions;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Options for Spot capacity
|
|
168
|
+
*/
|
|
169
|
+
export interface ClusterSpotOptions {
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Options for OnDemand capacity
|
|
173
|
+
*/
|
|
174
|
+
export interface ClusterOnDemandOptions {
|
|
175
|
+
}
|
|
151
176
|
/**
|
|
152
177
|
* Defines the configuration for attaching additional Amazon Elastic Block Store (EBS) volumes to the instances in the SageMaker HyperPod cluster instance group. The additional EBS volume is attached to each instance within the SageMaker HyperPod cluster instance group and mounted to /opt/sagemaker.
|
|
153
178
|
*/
|
|
@@ -159,6 +184,40 @@ export interface ClusterEbsVolumeConfig {
|
|
|
159
184
|
VolumeKmsKeyId?: string;
|
|
160
185
|
RootVolume?: boolean;
|
|
161
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Kubernetes configuration for cluster nodes including labels and taints.
|
|
189
|
+
*/
|
|
190
|
+
export interface ClusterKubernetesConfig {
|
|
191
|
+
Labels?: ClusterKubernetesLabels;
|
|
192
|
+
Taints?: ClusterKubernetesTaints;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* A map of Kubernetes labels to apply to cluster nodes.
|
|
196
|
+
*/
|
|
197
|
+
export interface ClusterKubernetesLabels {
|
|
198
|
+
/**
|
|
199
|
+
* This interface was referenced by `ClusterKubernetesLabels`'s JSON-Schema definition
|
|
200
|
+
* via the `patternProperty` "^.+$".
|
|
201
|
+
*/
|
|
202
|
+
[k: string]: string;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* A Kubernetes taint to apply to cluster nodes.
|
|
206
|
+
*/
|
|
207
|
+
export interface ClusterKubernetesTaint {
|
|
208
|
+
/**
|
|
209
|
+
* The value of the taint.
|
|
210
|
+
*/
|
|
211
|
+
Value?: string;
|
|
212
|
+
/**
|
|
213
|
+
* The effect of the taint.
|
|
214
|
+
*/
|
|
215
|
+
Effect: ("NoSchedule" | "PreferNoSchedule" | "NoExecute");
|
|
216
|
+
/**
|
|
217
|
+
* The key of the taint.
|
|
218
|
+
*/
|
|
219
|
+
Key: string;
|
|
220
|
+
}
|
|
162
221
|
/**
|
|
163
222
|
* The lifecycle configuration for a SageMaker HyperPod cluster.
|
|
164
223
|
*/
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNhZ2VtYWtlci1jbHVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLXNhZ2VtYWtlci1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbnN0YW5jZSBncm91cCBvZiBhIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyLlxuICovXG5leHBvcnQgdHlwZSBJbnN0YW5jZUdyb3VwTmFtZSA9IHN0cmluZ1xuLyoqXG4gKiBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBhdHRhY2hpbmcgYWRkaXRpb25hbCBzdG9yYWdlIHRvIHRoZSBpbnN0YW5jZXMgaW4gdGhlIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyIGluc3RhbmNlIGdyb3VwLlxuICovXG5leHBvcnQgdHlwZSBDbHVzdGVySW5zdGFuY2VTdG9yYWdlQ29uZmlnID0ge1xuRWJzVm9sdW1lQ29uZmlnPzogQ2x1c3RlckVic1ZvbHVtZUNvbmZpZ1xufVxuLyoqXG4gKiBUaGUgaW5zdGFuY2Ugc3RvcmFnZSBjb25maWd1cmF0aW9uIGZvciB0aGUgaW5zdGFuY2UgZ3JvdXAuXG4gKiBcbiAqIEBtYXhJdGVtcyAxXG4gKi9cbmV4cG9ydCB0eXBlIENsdXN0ZXJJbnN0YW5jZVN0b3JhZ2VDb25maWdzID0gQ2x1c3Rlckluc3RhbmNlU3RvcmFnZUNvbmZpZ1tdXG4vKipcbiAqIFRoZSB0eXBlIG9mIGRlZXAgaGVhbHRoIGNoZWNrKHMpIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGUgaW5zdGFuY2VzIGluIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBpbnN0YW5jZSBncm91cC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVlcEhlYWx0aENoZWNrVHlwZSA9IChcIkluc3RhbmNlU3RyZXNzXCIgfCBcIkluc3RhbmNlQ29ubmVjdGl2aXR5XCIpXG4vKipcbiAqIE5vZGVzIHdpbGwgdW5kZXJnbyBhZHZhbmNlZCBzdHJlc3MgdGVzdCB0byBkZXRlY3QgYW5kIHJlcGxhY2UgZmF1bHR5IGluc3RhbmNlcywgYmFzZWQgb24gdGhlIHR5cGUgb2YgZGVlcCBoZWFsdGggY2hlY2socykgcGFzc2VkIGluLlxuICovXG5leHBvcnQgdHlwZSBPblN0YXJ0RGVlcEhlYWx0aENoZWNrcyA9IERlZXBIZWFsdGhDaGVja1R5cGVbXVxuLyoqXG4gKiBBTUkgSWQgdG8gYmUgdXNlZCBmb3IgbGF1bmNoaW5nIEVDMiBpbnN0YW5jZXMgLSBIeXBlclBvZFB1YmxpY0FtaUlkIG9yIEN1c3RvbUFtaUlkXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlSWQgPSBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgYWxhcm1zIHRoYXQgU2FnZU1ha2VyIG1vbml0b3JzIHRvIGtub3cgd2hldGhlciB0byByb2xsIGJhY2sgdGhlIEFNSSB1cGRhdGUuXG4gKi9cbmV4cG9ydCB0eXBlIEF1dG9Sb2xsYmFja0NvbmZpZ3VyYXRpb24gPSBBbGFybURldGFpbHNbXVxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZSBvZiB0aGUgaW5zdGFuY2UgZ3JvdXAgb2YgYSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFuY2VUeXBlID0gc3RyaW5nXG4vKipcbiAqIFRoZSBleGVjdXRpb24gcm9sZSBmb3IgdGhlIGluc3RhbmNlIGdyb3VwIHRvIGFzc3VtZS5cbiAqL1xuZXhwb3J0IHR5cGUgRXhlY3V0aW9uUm9sZSA9IHN0cmluZ1xuLyoqXG4gKiBUaGUgaW5zdGFuY2UgZ3JvdXBzIG9mIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqIFxuICogQG1pbkl0ZW1zIDFcbiAqL1xuZXhwb3J0IHR5cGUgQ2x1c3Rlckluc3RhbmNlR3JvdXBzTGlzdCA9IENsdXN0ZXJJbnN0YW5jZUdyb3VwW11cbi8qKlxuICogVGhlIHJlc3RyaWN0ZWQgaW5zdGFuY2UgZ3JvdXBzIG9mIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqIFxuICogQG1pbkl0ZW1zIDFcbiAqL1xuZXhwb3J0IHR5cGUgQ2x1c3RlclJlc3RyaWN0ZWRJbnN0YW5jZUdyb3Vwc0xpc3QgPSBDbHVzdGVyUmVzdHJpY3RlZEluc3RhbmNlR3JvdXBbXVxuXG4vKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpTYWdlTWFrZXI6OkNsdXN0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1NBR0VNQUtFUl9DTFVTVEVSIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBIeXBlclBvZCBDbHVzdGVyLlxuICovXG5DbHVzdGVyQXJuPzogc3RyaW5nXG5WcGNDb25maWc/OiBWcGNDb25maWdcbi8qKlxuICogSWYgbm9kZSBhdXRvLXJlY292ZXJ5IGlzIHNldCB0byB0cnVlLCBmYXVsdHkgbm9kZXMgd2lsbCBiZSByZXBsYWNlZCBvciByZWJvb3RlZCB3aGVuIGEgZmFpbHVyZSBpcyBkZXRlY3RlZC4gSWYgc2V0IHRvIGZhbHNlLCBub2RlcyB3aWxsIGJlIGxhYmVsbGVkIHdoZW4gYSBmYXVsdCBpcyBkZXRlY3RlZC5cbiAqL1xuTm9kZVJlY292ZXJ5PzogKFwiQXV0b21hdGljXCIgfCBcIk5vbmVcIilcbkluc3RhbmNlR3JvdXBzPzogQ2x1c3Rlckluc3RhbmNlR3JvdXBzTGlzdFxuUmVzdHJpY3RlZEluc3RhbmNlR3JvdXBzPzogQ2x1c3RlclJlc3RyaWN0ZWRJbnN0YW5jZUdyb3Vwc0xpc3Rcbk9yY2hlc3RyYXRvcj86IE9yY2hlc3RyYXRvclxuLyoqXG4gKiBUaGUgY2x1c3RlciByb2xlIGZvciB0aGUgYXV0b3NjYWxlciB0byBhc3N1bWUuXG4gKi9cbkNsdXN0ZXJSb2xlPzogc3RyaW5nXG4vKipcbiAqIERldGVybWluZXMgdGhlIHNjYWxpbmcgc3RyYXRlZ3kgZm9yIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci4gV2hlbiBzZXQgdG8gJ0NvbnRpbnVvdXMnLCBlbmFibGVzIGNvbnRpbnVvdXMgc2NhbGluZyB3aGljaCBkeW5hbWljYWxseSBtYW5hZ2VzIG5vZGUgcHJvdmlzaW9uaW5nLiBJZiB0aGUgcGFyYW1ldGVyIGlzIG9taXR0ZWQsIHVzZXMgdGhlIHN0YW5kYXJkIHNjYWxpbmcgYXBwcm9hY2ggaW4gcHJldmlvdXMgcmVsZWFzZS5cbiAqL1xuTm9kZVByb3Zpc2lvbmluZ01vZGU/OiBcIkNvbnRpbnVvdXNcIlxuLyoqXG4gKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgSHlwZXJQb2QgY2x1c3RlciB3YXMgY3JlYXRlZC5cbiAqL1xuQ3JlYXRpb25UaW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBIeXBlclBvZCBDbHVzdGVyLlxuICovXG5DbHVzdGVyTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZmFpbHVyZSBtZXNzYWdlIG9mIHRoZSBIeXBlclBvZCBDbHVzdGVyLlxuICovXG5GYWlsdXJlTWVzc2FnZT86IHN0cmluZ1xuQXV0b1NjYWxpbmc/OiBDbHVzdGVyQXV0b1NjYWxpbmdDb25maWdcbi8qKlxuICogVGhlIHN0YXR1cyBvZiB0aGUgSHlwZXJQb2QgQ2x1c3Rlci5cbiAqL1xuQ2x1c3RlclN0YXR1cz86IChcIkNyZWF0aW5nXCIgfCBcIkRlbGV0aW5nXCIgfCBcIkZhaWxlZFwiIHwgXCJJblNlcnZpY2VcIiB8IFwiUm9sbGluZ0JhY2tcIiB8IFwiU3lzdGVtVXBkYXRpbmdcIiB8IFwiVXBkYXRpbmdcIilcbi8qKlxuICogQ3VzdG9tIHRhZ3MgZm9yIG1hbmFnaW5nIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBhcyBhbiBBV1MgcmVzb3VyY2UuIFlvdSBjYW4gYWRkIHRhZ3MgdG8geW91ciBjbHVzdGVyIGluIHRoZSBzYW1lIHdheSB5b3UgYWRkIHRoZW0gaW4gb3RoZXIgQVdTIHNlcnZpY2VzIHRoYXQgc3VwcG9ydCB0YWdnaW5nLlxuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuVGFncz86IFRhZ1tdXG5UaWVyZWRTdG9yYWdlQ29uZmlnPzogVGllcmVkU3RvcmFnZUNvbmZpZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gQW1hem9uIFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCAoVlBDKSB0aGF0IHlvdXIgU2FnZU1ha2VyIGpvYnMsIGhvc3RlZCBtb2RlbHMsIGFuZCBjb21wdXRlIHJlc291cmNlcyBoYXZlIGFjY2VzcyB0by4gWW91IGNhbiBjb250cm9sIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyIHJlc291cmNlcyBieSBjb25maWd1cmluZyBhIFZQQy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNDb25maWcge1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIHN1Ym5ldHMgaW4gdGhlIFZQQyB0byB3aGljaCB5b3Ugd2FudCB0byBjb25uZWN0IHlvdXIgdHJhaW5pbmcgam9iIG9yIG1vZGVsLlxuICogXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE2XG4gKi9cblN1Ym5ldHM6IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBWUEMgc2VjdXJpdHkgZ3JvdXAgSURzLCBpbiB0aGUgZm9ybSBzZy14eHh4eHh4eC4gU3BlY2lmeSB0aGUgc2VjdXJpdHkgZ3JvdXBzIGZvciB0aGUgVlBDIHRoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBTdWJuZXRzIGZpZWxkLlxuICogXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDVcbiAqL1xuU2VjdXJpdHlHcm91cElkczogc3RyaW5nW11cbn1cbi8qKlxuICogRGV0YWlscyBvZiBhbiBpbnN0YW5jZSBncm91cCBpbiBhIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJJbnN0YW5jZUdyb3VwIHtcbkluc3RhbmNlR3JvdXBOYW1lOiBJbnN0YW5jZUdyb3VwTmFtZVxuSW5zdGFuY2VTdG9yYWdlQ29uZmlncz86IENsdXN0ZXJJbnN0YW5jZVN0b3JhZ2VDb25maWdzXG5MaWZlQ3ljbGVDb25maWc6IENsdXN0ZXJMaWZlQ3ljbGVDb25maWdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSB0cmFpbmluZyBwbGFuIHRvIHVzZSBmb3IgdGhpcyBjbHVzdGVyIGluc3RhbmNlIGdyb3VwLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gcmVzZXJ2ZSBHUFUgY2FwYWNpdHkgZm9yIHlvdXIgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXJzIHVzaW5nIEFtYXpvbiBTYWdlTWFrZXIgVHJhaW5pbmcgUGxhbiwgc2VlIENyZWF0ZVRyYWluaW5nUGxhbi5cbiAqL1xuVHJhaW5pbmdQbGFuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgeW91IHNwZWNpZmllZCB0byBUcmVhZHNQZXJDb3JlIGluIENyZWF0ZUNsdXN0ZXIgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyBtdWx0aXRocmVhZGluZy4gRm9yIGluc3RhbmNlIHR5cGVzIHRoYXQgc3VwcG9ydCBtdWx0aXRocmVhZGluZywgeW91IGNhbiBzcGVjaWZ5IDEgZm9yIGRpc2FibGluZyBtdWx0aXRocmVhZGluZyBhbmQgMiBmb3IgZW5hYmxpbmcgbXVsdGl0aHJlYWRpbmcuXG4gKi9cblRocmVhZHNQZXJDb3JlPzogbnVtYmVyXG5PdmVycmlkZVZwY0NvbmZpZz86IFZwY0NvbmZpZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGluc3RhbmNlcyB5b3Ugc3BlY2lmaWVkIHRvIGFkZCB0byB0aGUgaW5zdGFuY2UgZ3JvdXAgb2YgYSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuSW5zdGFuY2VDb3VudDogbnVtYmVyXG5PblN0YXJ0RGVlcEhlYWx0aENoZWNrcz86IE9uU3RhcnREZWVwSGVhbHRoQ2hlY2tzXG5JbWFnZUlkPzogSW1hZ2VJZFxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGFyZSBjdXJyZW50bHkgaW4gdGhlIGluc3RhbmNlIGdyb3VwIG9mIGEgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXIuXG4gKi9cbkN1cnJlbnRDb3VudD86IG51bWJlclxuU2NoZWR1bGVkVXBkYXRlQ29uZmlnPzogU2NoZWR1bGVkVXBkYXRlQ29uZmlnXG5JbnN0YW5jZVR5cGU6IEluc3RhbmNlVHlwZVxuRXhlY3V0aW9uUm9sZTogRXhlY3V0aW9uUm9sZVxufVxuLyoqXG4gKiBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBhdHRhY2hpbmcgYWRkaXRpb25hbCBBbWF6b24gRWxhc3RpYyBCbG9jayBTdG9yZSAoRUJTKSB2b2x1bWVzIHRvIHRoZSBpbnN0YW5jZXMgaW4gdGhlIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyIGluc3RhbmNlIGdyb3VwLiBUaGUgYWRkaXRpb25hbCBFQlMgdm9sdW1lIGlzIGF0dGFjaGVkIHRvIGVhY2ggaW5zdGFuY2Ugd2l0aGluIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBpbnN0YW5jZSBncm91cCBhbmQgbW91bnRlZCB0byAvb3B0L3NhZ2VtYWtlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyRWJzVm9sdW1lQ29uZmlnIHtcbi8qKlxuICogVGhlIHNpemUgaW4gZ2lnYWJ5dGVzIChHQikgb2YgdGhlIGFkZGl0aW9uYWwgRUJTIHZvbHVtZSB0byBiZSBhdHRhY2hlZCB0byB0aGUgaW5zdGFuY2VzIGluIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBpbnN0YW5jZSBncm91cC4gVGhlIGFkZGl0aW9uYWwgRUJTIHZvbHVtZSBpcyBhdHRhY2hlZCB0byBlYWNoIGluc3RhbmNlIHdpdGhpbiB0aGUgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXIgaW5zdGFuY2UgZ3JvdXAgYW5kIG1vdW50ZWQgdG8gL29wdC9zYWdlbWFrZXIuXG4gKi9cblZvbHVtZVNpemVJbkdCPzogbnVtYmVyXG5Wb2x1bWVLbXNLZXlJZD86IHN0cmluZ1xuUm9vdFZvbHVtZT86IGJvb2xlYW5cbn1cbi8qKlxuICogVGhlIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIGZvciBhIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJMaWZlQ3ljbGVDb25maWcge1xuLyoqXG4gKiBBbiBBbWF6b24gUzMgYnVja2V0IHBhdGggd2hlcmUgeW91ciBsaWZlY3ljbGUgc2NyaXB0cyBhcmUgc3RvcmVkLlxuICovXG5Tb3VyY2VTM1VyaTogc3RyaW5nXG4vKipcbiAqIFRoZSBmaWxlIG5hbWUgb2YgdGhlIGVudHJ5cG9pbnQgc2NyaXB0IG9mIGxpZmVjeWNsZSBzY3JpcHRzIHVuZGVyIFNvdXJjZVMzVXJpLiBUaGlzIGVudHJ5cG9pbnQgc2NyaXB0IHJ1bnMgZHVyaW5nIGNsdXN0ZXIgY3JlYXRpb24uXG4gKi9cbk9uQ3JlYXRlOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG9mIHRoZSBzY2hlZHVsZSB0aGF0IFNhZ2VNYWtlciBmb2xsb3dzIHdoZW4gdXBkYXRpbmcgdGhlIEFNSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2hlZHVsZWRVcGRhdGVDb25maWcge1xuLyoqXG4gKiBBIGNyb24gZXhwcmVzc2lvbiB0aGF0IHNwZWNpZmllcyB0aGUgc2NoZWR1bGUgdGhhdCBTYWdlTWFrZXIgZm9sbG93cyB3aGVuIHVwZGF0aW5nIHRoZSBBTUkuXG4gKi9cblNjaGVkdWxlRXhwcmVzc2lvbjogc3RyaW5nXG5EZXBsb3ltZW50Q29uZmlnPzogRGVwbG95bWVudENvbmZpZ1xufVxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiB0byB1c2Ugd2hlbiB1cGRhdGluZyB0aGUgQU1JIHZlcnNpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveW1lbnRDb25maWcge1xuQXV0b1JvbGxiYWNrQ29uZmlndXJhdGlvbj86IEF1dG9Sb2xsYmFja0NvbmZpZ3VyYXRpb25cblJvbGxpbmdVcGRhdGVQb2xpY3k/OiBSb2xsaW5nVXBkYXRlUG9saWN5XG4vKipcbiAqIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIHRoYXQgU2FnZU1ha2VyIHdhaXRzIGJlZm9yZSB1cGRhdGluZyBtb3JlIGluc3RhbmNlcyBpbiB0aGUgY2x1c3Rlci5cbiAqL1xuV2FpdEludGVydmFsSW5TZWNvbmRzPzogbnVtYmVyXG59XG4vKipcbiAqIFRoZSBkZXRhaWxzIG9mIHRoZSBhbGFybSB0byBtb25pdG9yIGR1cmluZyB0aGUgQU1JIHVwZGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGFybURldGFpbHMge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgYWxhcm0uXG4gKi9cbkFsYXJtTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBwb2xpY3kgdGhhdCBTYWdlTWFrZXIgdXNlcyB3aGVuIHVwZGF0aW5nIHRoZSBBTUkgdmVyc2lvbnMgb2YgdGhlIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9sbGluZ1VwZGF0ZVBvbGljeSB7XG5NYXhpbXVtQmF0Y2hTaXplOiBDYXBhY2l0eVNpemVDb25maWdcblJvbGxiYWNrTWF4aW11bUJhdGNoU2l6ZT86IENhcGFjaXR5U2l6ZUNvbmZpZ1xufVxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgc2l6ZSBtZWFzdXJlbWVudHMgb2YgdGhlIEFNSSB1cGRhdGUuIFVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiwgeW91IGNhbiBzcGVjaWZ5IHdoZXRoZXIgU2FnZU1ha2VyIHNob3VsZCB1cGRhdGUgeW91ciBpbnN0YW5jZSBncm91cCBieSBhbiBhbW91bnQgb3IgcGVyY2VudGFnZSBvZiBpbnN0YW5jZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FwYWNpdHlTaXplQ29uZmlnIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgU2FnZU1ha2VyIHNob3VsZCBwcm9jZXNzIHRoZSB1cGRhdGUgYnkgYW1vdW50IG9yIHBlcmNlbnRhZ2Ugb2YgaW5zdGFuY2VzLlxuICovXG5UeXBlOiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBhbW91bnQgb3IgcGVyY2VudGFnZSBvZiBpbnN0YW5jZXMgU2FnZU1ha2VyIHVwZGF0ZXMgYXQgYSB0aW1lLlxuICovXG5WYWx1ZTogbnVtYmVyXG59XG4vKipcbiAqIERldGFpbHMgb2YgYSByZXN0cmljdGVkIGluc3RhbmNlIGdyb3VwIGluIGEgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlclJlc3RyaWN0ZWRJbnN0YW5jZUdyb3VwIHtcbk92ZXJyaWRlVnBjQ29uZmlnPzogVnBjQ29uZmlnXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIHlvdSBzcGVjaWZpZWQgdG8gYWRkIHRvIHRoZSByZXN0cmljdGVkIGluc3RhbmNlIGdyb3VwIG9mIGEgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXIuXG4gKi9cbkluc3RhbmNlQ291bnQ6IG51bWJlclxuT25TdGFydERlZXBIZWFsdGhDaGVja3M/OiBPblN0YXJ0RGVlcEhlYWx0aENoZWNrc1xuRW52aXJvbm1lbnRDb25maWc6IEVudmlyb25tZW50Q29uZmlnXG5JbnN0YW5jZUdyb3VwTmFtZTogSW5zdGFuY2VHcm91cE5hbWVcbkluc3RhbmNlU3RvcmFnZUNvbmZpZ3M/OiBDbHVzdGVySW5zdGFuY2VTdG9yYWdlQ29uZmlnc1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGFyZSBjdXJyZW50bHkgaW4gdGhlIHJlc3RyaWN0ZWQgaW5zdGFuY2UgZ3JvdXAgb2YgYSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuQ3VycmVudENvdW50PzogbnVtYmVyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgdHJhaW5pbmcgcGxhbiB0byB1c2UgZm9yIHRoaXMgY2x1c3RlciByZXN0cmljdGVkIGluc3RhbmNlIGdyb3VwLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gcmVzZXJ2ZSBHUFUgY2FwYWNpdHkgZm9yIHlvdXIgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXJzIHVzaW5nIEFtYXpvbiBTYWdlTWFrZXIgVHJhaW5pbmcgUGxhbiwgc2VlIENyZWF0ZVRyYWluaW5nUGxhbi5cbiAqL1xuVHJhaW5pbmdQbGFuQXJuPzogc3RyaW5nXG5JbnN0YW5jZVR5cGU6IEluc3RhbmNlVHlwZVxuLyoqXG4gKiBUaGUgbnVtYmVyIHlvdSBzcGVjaWZpZWQgdG8gVHJlYWRzUGVyQ29yZSBpbiBDcmVhdGVDbHVzdGVyIGZvciBlbmFibGluZyBvciBkaXNhYmxpbmcgbXVsdGl0aHJlYWRpbmcuIEZvciBpbnN0YW5jZSB0eXBlcyB0aGF0IHN1cHBvcnQgbXVsdGl0aHJlYWRpbmcsIHlvdSBjYW4gc3BlY2lmeSAxIGZvciBkaXNhYmxpbmcgbXVsdGl0aHJlYWRpbmcgYW5kIDIgZm9yIGVuYWJsaW5nIG11bHRpdGhyZWFkaW5nLlxuICovXG5UaHJlYWRzUGVyQ29yZT86IG51bWJlclxuRXhlY3V0aW9uUm9sZTogRXhlY3V0aW9uUm9sZVxufVxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJlc3RyaWN0ZWQgaW5zdGFuY2UgZ3JvdXBzIChSSUcpIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50Q29uZmlnIHtcbkZTeEx1c3RyZUNvbmZpZz86IEZTeEx1c3RyZUNvbmZpZ1xufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBhbiBBbWF6b24gRlN4IGZvciBMdXN0cmUgZmlsZSBzeXN0ZW0gdG8gYmUgdXNlZCB3aXRoIHRoZSBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZTeEx1c3RyZUNvbmZpZyB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIGNhcGFjaXR5IG9mIHRoZSBGU3ggZm9yIEx1c3RyZSBmaWxlIHN5c3RlbSwgc3BlY2lmaWVkIGluIGdpYmlieXRlcyAoR2lCKS5cbiAqL1xuU2l6ZUluR2lCOiBudW1iZXJcbi8qKlxuICogVGhlIHRocm91Z2hwdXQgY2FwYWNpdHkgb2YgdGhlIEZTeCBmb3IgTHVzdHJlIGZpbGUgc3lzdGVtLCBtZWFzdXJlZCBpbiBNQi9zIHBlciBUaUIgb2Ygc3RvcmFnZS5cbiAqL1xuUGVyVW5pdFN0b3JhZ2VUaHJvdWdocHV0OiBudW1iZXJcbn1cbi8qKlxuICogU3BlY2lmaWVzIHBhcmFtZXRlcihzKSBzcGVjaWZpYyB0byB0aGUgb3JjaGVzdHJhdG9yLCBlLmcuIHNwZWNpZnkgdGhlIEVLUyBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yY2hlc3RyYXRvciB7XG5Fa3M6IENsdXN0ZXJPcmNoZXN0cmF0b3JFa3NDb25maWdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHBhcmFtZXRlcihzKSByZWxhdGVkIHRvIEVLUyBhcyBvcmNoZXN0cmF0b3IsIGUuZy4gdGhlIEVLUyBjbHVzdGVyIG5vZGVzIHdpbGwgYXR0YWNoIHRvLFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJPcmNoZXN0cmF0b3JFa3NDb25maWcge1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBFS1MgY2x1c3Rlciwgc3VjaCBhcyBhcm46YXdzOmVrczp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOmNsdXN0ZXIvbXktZWtzLWNsdXN0ZXJcbiAqL1xuQ2x1c3RlckFybjogc3RyaW5nXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGNsdXN0ZXIgYXV0by1zY2FsaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlckF1dG9TY2FsaW5nQ29uZmlnIHtcbi8qKlxuICogVGhlIGF1dG8tc2NhbGluZyBtb2RlIGZvciB0aGUgY2x1c3RlclxuICovXG5Nb2RlOiAoXCJFbmFibGVcIiB8IFwiRGlzYWJsZVwiKVxuLyoqXG4gKiBUaGUgdHlwZSBvZiBhdXRvLXNjYWxlciB0byB1c2VcbiAqL1xuQXV0b1NjYWxlclR5cGU/OiBcIkthcnBlbnRlclwiXG59XG4vKipcbiAqIEEga2V5LXZhbHVlIHBhaXIgdG8gYXNzb2NpYXRlIHdpdGggYSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUgdmFsdWUgZm9yIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMCB0byAyNTYgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIGtleSBuYW1lIG9mIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAxMjggVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRpZXJlZCBzdG9yYWdlIGluIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaWVyZWRTdG9yYWdlQ29uZmlnIHtcbi8qKlxuICogVGhlIG1vZGUgb2YgdGllcmVkIHN0b3JhZ2UuXG4gKi9cbk1vZGU6IChcIkVuYWJsZVwiIHwgXCJEaXNhYmxlXCIpXG4vKipcbiAqIFRoZSBwZXJjZW50YWdlIG9mIGluc3RhbmNlIG1lbW9yeSB0byBhbGxvY2F0ZSBmb3IgdGllcmVkIHN0b3JhZ2UuXG4gKi9cbkluc3RhbmNlTWVtb3J5QWxsb2NhdGlvblBlcmNlbnRhZ2U/OiBudW1iZXJcbn1cbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXNhZ2VtYWtlci1jbHVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLXNhZ2VtYWtlci1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbnN0YW5jZSBncm91cCBvZiBhIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyLlxuICovXG5leHBvcnQgdHlwZSBJbnN0YW5jZUdyb3VwTmFtZSA9IHN0cmluZ1xuLyoqXG4gKiBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBhdHRhY2hpbmcgYWRkaXRpb25hbCBzdG9yYWdlIHRvIHRoZSBpbnN0YW5jZXMgaW4gdGhlIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyIGluc3RhbmNlIGdyb3VwLlxuICovXG5leHBvcnQgdHlwZSBDbHVzdGVySW5zdGFuY2VTdG9yYWdlQ29uZmlnID0ge1xuRWJzVm9sdW1lQ29uZmlnPzogQ2x1c3RlckVic1ZvbHVtZUNvbmZpZ1xufVxuLyoqXG4gKiBUaGUgaW5zdGFuY2Ugc3RvcmFnZSBjb25maWd1cmF0aW9uIGZvciB0aGUgaW5zdGFuY2UgZ3JvdXAuXG4gKiBcbiAqIEBtYXhJdGVtcyAxXG4gKi9cbmV4cG9ydCB0eXBlIENsdXN0ZXJJbnN0YW5jZVN0b3JhZ2VDb25maWdzID0gQ2x1c3Rlckluc3RhbmNlU3RvcmFnZUNvbmZpZ1tdXG4vKipcbiAqIEEgbGlzdCBvZiBLdWJlcm5ldGVzIHRhaW50cyB0byBhcHBseSB0byBjbHVzdGVyIG5vZGVzLiBNYXhpbXVtIG9mIDUwIHRhaW50cy5cbiAqIFxuICogQG1heEl0ZW1zIDUwXG4gKi9cbmV4cG9ydCB0eXBlIENsdXN0ZXJLdWJlcm5ldGVzVGFpbnRzID0gQ2x1c3Rlckt1YmVybmV0ZXNUYWludFtdXG4vKipcbiAqIFRoZSB0eXBlIG9mIGRlZXAgaGVhbHRoIGNoZWNrKHMpIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGUgaW5zdGFuY2VzIGluIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBpbnN0YW5jZSBncm91cC5cbiAqL1xuZXhwb3J0IHR5cGUgRGVlcEhlYWx0aENoZWNrVHlwZSA9IChcIkluc3RhbmNlU3RyZXNzXCIgfCBcIkluc3RhbmNlQ29ubmVjdGl2aXR5XCIpXG4vKipcbiAqIE5vZGVzIHdpbGwgdW5kZXJnbyBhZHZhbmNlZCBzdHJlc3MgdGVzdCB0byBkZXRlY3QgYW5kIHJlcGxhY2UgZmF1bHR5IGluc3RhbmNlcywgYmFzZWQgb24gdGhlIHR5cGUgb2YgZGVlcCBoZWFsdGggY2hlY2socykgcGFzc2VkIGluLlxuICovXG5leHBvcnQgdHlwZSBPblN0YXJ0RGVlcEhlYWx0aENoZWNrcyA9IERlZXBIZWFsdGhDaGVja1R5cGVbXVxuLyoqXG4gKiBBTUkgSWQgdG8gYmUgdXNlZCBmb3IgbGF1bmNoaW5nIEVDMiBpbnN0YW5jZXMgLSBIeXBlclBvZFB1YmxpY0FtaUlkIG9yIEN1c3RvbUFtaUlkXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlSWQgPSBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgYWxhcm1zIHRoYXQgU2FnZU1ha2VyIG1vbml0b3JzIHRvIGtub3cgd2hldGhlciB0byByb2xsIGJhY2sgdGhlIEFNSSB1cGRhdGUuXG4gKi9cbmV4cG9ydCB0eXBlIEF1dG9Sb2xsYmFja0NvbmZpZ3VyYXRpb24gPSBBbGFybURldGFpbHNbXVxuLyoqXG4gKiBUaGUgaW5zdGFuY2UgdHlwZSBvZiB0aGUgaW5zdGFuY2UgZ3JvdXAgb2YgYSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFuY2VUeXBlID0gc3RyaW5nXG4vKipcbiAqIFRoZSBleGVjdXRpb24gcm9sZSBmb3IgdGhlIGluc3RhbmNlIGdyb3VwIHRvIGFzc3VtZS5cbiAqL1xuZXhwb3J0IHR5cGUgRXhlY3V0aW9uUm9sZSA9IHN0cmluZ1xuLyoqXG4gKiBUaGUgaW5zdGFuY2UgZ3JvdXBzIG9mIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqIFxuICogQG1pbkl0ZW1zIDFcbiAqL1xuZXhwb3J0IHR5cGUgQ2x1c3Rlckluc3RhbmNlR3JvdXBzTGlzdCA9IENsdXN0ZXJJbnN0YW5jZUdyb3VwW11cbi8qKlxuICogVGhlIHJlc3RyaWN0ZWQgaW5zdGFuY2UgZ3JvdXBzIG9mIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqIFxuICogQG1pbkl0ZW1zIDFcbiAqL1xuZXhwb3J0IHR5cGUgQ2x1c3RlclJlc3RyaWN0ZWRJbnN0YW5jZUdyb3Vwc0xpc3QgPSBDbHVzdGVyUmVzdHJpY3RlZEluc3RhbmNlR3JvdXBbXVxuXG4vKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpTYWdlTWFrZXI6OkNsdXN0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1NBR0VNQUtFUl9DTFVTVEVSIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBIeXBlclBvZCBDbHVzdGVyLlxuICovXG5DbHVzdGVyQXJuPzogc3RyaW5nXG5WcGNDb25maWc/OiBWcGNDb25maWdcbi8qKlxuICogSWYgbm9kZSBhdXRvLXJlY292ZXJ5IGlzIHNldCB0byB0cnVlLCBmYXVsdHkgbm9kZXMgd2lsbCBiZSByZXBsYWNlZCBvciByZWJvb3RlZCB3aGVuIGEgZmFpbHVyZSBpcyBkZXRlY3RlZC4gSWYgc2V0IHRvIGZhbHNlLCBub2RlcyB3aWxsIGJlIGxhYmVsbGVkIHdoZW4gYSBmYXVsdCBpcyBkZXRlY3RlZC5cbiAqL1xuTm9kZVJlY292ZXJ5PzogKFwiQXV0b21hdGljXCIgfCBcIk5vbmVcIilcbkluc3RhbmNlR3JvdXBzPzogQ2x1c3Rlckluc3RhbmNlR3JvdXBzTGlzdFxuUmVzdHJpY3RlZEluc3RhbmNlR3JvdXBzPzogQ2x1c3RlclJlc3RyaWN0ZWRJbnN0YW5jZUdyb3Vwc0xpc3Rcbk9yY2hlc3RyYXRvcj86IE9yY2hlc3RyYXRvclxuLyoqXG4gKiBUaGUgY2x1c3RlciByb2xlIGZvciB0aGUgYXV0b3NjYWxlciB0byBhc3N1bWUuXG4gKi9cbkNsdXN0ZXJSb2xlPzogc3RyaW5nXG4vKipcbiAqIERldGVybWluZXMgdGhlIHNjYWxpbmcgc3RyYXRlZ3kgZm9yIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci4gV2hlbiBzZXQgdG8gJ0NvbnRpbnVvdXMnLCBlbmFibGVzIGNvbnRpbnVvdXMgc2NhbGluZyB3aGljaCBkeW5hbWljYWxseSBtYW5hZ2VzIG5vZGUgcHJvdmlzaW9uaW5nLiBJZiB0aGUgcGFyYW1ldGVyIGlzIG9taXR0ZWQsIHVzZXMgdGhlIHN0YW5kYXJkIHNjYWxpbmcgYXBwcm9hY2ggaW4gcHJldmlvdXMgcmVsZWFzZS5cbiAqL1xuTm9kZVByb3Zpc2lvbmluZ01vZGU/OiBcIkNvbnRpbnVvdXNcIlxuLyoqXG4gKiBUaGUgdGltZSBhdCB3aGljaCB0aGUgSHlwZXJQb2QgY2x1c3RlciB3YXMgY3JlYXRlZC5cbiAqL1xuQ3JlYXRpb25UaW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBIeXBlclBvZCBDbHVzdGVyLlxuICovXG5DbHVzdGVyTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZmFpbHVyZSBtZXNzYWdlIG9mIHRoZSBIeXBlclBvZCBDbHVzdGVyLlxuICovXG5GYWlsdXJlTWVzc2FnZT86IHN0cmluZ1xuQXV0b1NjYWxpbmc/OiBDbHVzdGVyQXV0b1NjYWxpbmdDb25maWdcbi8qKlxuICogVGhlIHN0YXR1cyBvZiB0aGUgSHlwZXJQb2QgQ2x1c3Rlci5cbiAqL1xuQ2x1c3RlclN0YXR1cz86IChcIkNyZWF0aW5nXCIgfCBcIkRlbGV0aW5nXCIgfCBcIkZhaWxlZFwiIHwgXCJJblNlcnZpY2VcIiB8IFwiUm9sbGluZ0JhY2tcIiB8IFwiU3lzdGVtVXBkYXRpbmdcIiB8IFwiVXBkYXRpbmdcIilcbi8qKlxuICogQ3VzdG9tIHRhZ3MgZm9yIG1hbmFnaW5nIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBhcyBhbiBBV1MgcmVzb3VyY2UuIFlvdSBjYW4gYWRkIHRhZ3MgdG8geW91ciBjbHVzdGVyIGluIHRoZSBzYW1lIHdheSB5b3UgYWRkIHRoZW0gaW4gb3RoZXIgQVdTIHNlcnZpY2VzIHRoYXQgc3VwcG9ydCB0YWdnaW5nLlxuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuVGFncz86IFRhZ1tdXG5UaWVyZWRTdG9yYWdlQ29uZmlnPzogVGllcmVkU3RvcmFnZUNvbmZpZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gQW1hem9uIFZpcnR1YWwgUHJpdmF0ZSBDbG91ZCAoVlBDKSB0aGF0IHlvdXIgU2FnZU1ha2VyIGpvYnMsIGhvc3RlZCBtb2RlbHMsIGFuZCBjb21wdXRlIHJlc291cmNlcyBoYXZlIGFjY2VzcyB0by4gWW91IGNhbiBjb250cm9sIGFjY2VzcyB0byBhbmQgZnJvbSB5b3VyIHJlc291cmNlcyBieSBjb25maWd1cmluZyBhIFZQQy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNDb25maWcge1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIHN1Ym5ldHMgaW4gdGhlIFZQQyB0byB3aGljaCB5b3Ugd2FudCB0byBjb25uZWN0IHlvdXIgdHJhaW5pbmcgam9iIG9yIG1vZGVsLlxuICogXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDE2XG4gKi9cblN1Ym5ldHM6IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBWUEMgc2VjdXJpdHkgZ3JvdXAgSURzLCBpbiB0aGUgZm9ybSBzZy14eHh4eHh4eC4gU3BlY2lmeSB0aGUgc2VjdXJpdHkgZ3JvdXBzIGZvciB0aGUgVlBDIHRoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBTdWJuZXRzIGZpZWxkLlxuICogXG4gKiBAbWluSXRlbXMgMVxuICogQG1heEl0ZW1zIDVcbiAqL1xuU2VjdXJpdHlHcm91cElkczogc3RyaW5nW11cbn1cbi8qKlxuICogRGV0YWlscyBvZiBhbiBpbnN0YW5jZSBncm91cCBpbiBhIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJJbnN0YW5jZUdyb3VwIHtcbkNhcGFjaXR5UmVxdWlyZW1lbnRzPzogQ2x1c3RlckNhcGFjaXR5UmVxdWlyZW1lbnRzXG5JbnN0YW5jZUdyb3VwTmFtZTogSW5zdGFuY2VHcm91cE5hbWVcbkluc3RhbmNlU3RvcmFnZUNvbmZpZ3M/OiBDbHVzdGVySW5zdGFuY2VTdG9yYWdlQ29uZmlnc1xuS3ViZXJuZXRlc0NvbmZpZz86IENsdXN0ZXJLdWJlcm5ldGVzQ29uZmlnXG5MaWZlQ3ljbGVDb25maWc6IENsdXN0ZXJMaWZlQ3ljbGVDb25maWdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSB0cmFpbmluZyBwbGFuIHRvIHVzZSBmb3IgdGhpcyBjbHVzdGVyIGluc3RhbmNlIGdyb3VwLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gcmVzZXJ2ZSBHUFUgY2FwYWNpdHkgZm9yIHlvdXIgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXJzIHVzaW5nIEFtYXpvbiBTYWdlTWFrZXIgVHJhaW5pbmcgUGxhbiwgc2VlIENyZWF0ZVRyYWluaW5nUGxhbi5cbiAqL1xuVHJhaW5pbmdQbGFuQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgeW91IHNwZWNpZmllZCB0byBUcmVhZHNQZXJDb3JlIGluIENyZWF0ZUNsdXN0ZXIgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyBtdWx0aXRocmVhZGluZy4gRm9yIGluc3RhbmNlIHR5cGVzIHRoYXQgc3VwcG9ydCBtdWx0aXRocmVhZGluZywgeW91IGNhbiBzcGVjaWZ5IDEgZm9yIGRpc2FibGluZyBtdWx0aXRocmVhZGluZyBhbmQgMiBmb3IgZW5hYmxpbmcgbXVsdGl0aHJlYWRpbmcuXG4gKi9cblRocmVhZHNQZXJDb3JlPzogbnVtYmVyXG5PdmVycmlkZVZwY0NvbmZpZz86IFZwY0NvbmZpZ1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGluc3RhbmNlcyB5b3Ugc3BlY2lmaWVkIHRvIGFkZCB0byB0aGUgaW5zdGFuY2UgZ3JvdXAgb2YgYSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuSW5zdGFuY2VDb3VudDogbnVtYmVyXG5PblN0YXJ0RGVlcEhlYWx0aENoZWNrcz86IE9uU3RhcnREZWVwSGVhbHRoQ2hlY2tzXG5JbWFnZUlkPzogSW1hZ2VJZFxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGluc3RhbmNlcyB0aGF0IGFyZSBjdXJyZW50bHkgaW4gdGhlIGluc3RhbmNlIGdyb3VwIG9mIGEgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXIuXG4gKi9cbkN1cnJlbnRDb3VudD86IG51bWJlclxuU2NoZWR1bGVkVXBkYXRlQ29uZmlnPzogU2NoZWR1bGVkVXBkYXRlQ29uZmlnXG5JbnN0YW5jZVR5cGU6IEluc3RhbmNlVHlwZVxuRXhlY3V0aW9uUm9sZTogRXhlY3V0aW9uUm9sZVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNhcGFjaXR5IHJlcXVpcmVtZW50cyBjb25maWd1cmF0aW9uIGZvciBhbiBpbnN0YW5jZSBncm91cFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJDYXBhY2l0eVJlcXVpcmVtZW50cyB7XG5TcG90PzogQ2x1c3RlclNwb3RPcHRpb25zXG5PbkRlbWFuZD86IENsdXN0ZXJPbkRlbWFuZE9wdGlvbnNcbn1cbi8qKlxuICogT3B0aW9ucyBmb3IgU3BvdCBjYXBhY2l0eVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJTcG90T3B0aW9ucyB7XG5cbn1cbi8qKlxuICogT3B0aW9ucyBmb3IgT25EZW1hbmQgY2FwYWNpdHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyT25EZW1hbmRPcHRpb25zIHtcblxufVxuLyoqXG4gKiBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBhdHRhY2hpbmcgYWRkaXRpb25hbCBBbWF6b24gRWxhc3RpYyBCbG9jayBTdG9yZSAoRUJTKSB2b2x1bWVzIHRvIHRoZSBpbnN0YW5jZXMgaW4gdGhlIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyIGluc3RhbmNlIGdyb3VwLiBUaGUgYWRkaXRpb25hbCBFQlMgdm9sdW1lIGlzIGF0dGFjaGVkIHRvIGVhY2ggaW5zdGFuY2Ugd2l0aGluIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBpbnN0YW5jZSBncm91cCBhbmQgbW91bnRlZCB0byAvb3B0L3NhZ2VtYWtlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyRWJzVm9sdW1lQ29uZmlnIHtcbi8qKlxuICogVGhlIHNpemUgaW4gZ2lnYWJ5dGVzIChHQikgb2YgdGhlIGFkZGl0aW9uYWwgRUJTIHZvbHVtZSB0byBiZSBhdHRhY2hlZCB0byB0aGUgaW5zdGFuY2VzIGluIHRoZSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlciBpbnN0YW5jZSBncm91cC4gVGhlIGFkZGl0aW9uYWwgRUJTIHZvbHVtZSBpcyBhdHRhY2hlZCB0byBlYWNoIGluc3RhbmNlIHdpdGhpbiB0aGUgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXIgaW5zdGFuY2UgZ3JvdXAgYW5kIG1vdW50ZWQgdG8gL29wdC9zYWdlbWFrZXIuXG4gKi9cblZvbHVtZVNpemVJbkdCPzogbnVtYmVyXG5Wb2x1bWVLbXNLZXlJZD86IHN0cmluZ1xuUm9vdFZvbHVtZT86IGJvb2xlYW5cbn1cbi8qKlxuICogS3ViZXJuZXRlcyBjb25maWd1cmF0aW9uIGZvciBjbHVzdGVyIG5vZGVzIGluY2x1ZGluZyBsYWJlbHMgYW5kIHRhaW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyS3ViZXJuZXRlc0NvbmZpZyB7XG5MYWJlbHM/OiBDbHVzdGVyS3ViZXJuZXRlc0xhYmVsc1xuVGFpbnRzPzogQ2x1c3Rlckt1YmVybmV0ZXNUYWludHNcbn1cbi8qKlxuICogQSBtYXAgb2YgS3ViZXJuZXRlcyBsYWJlbHMgdG8gYXBwbHkgdG8gY2x1c3RlciBub2Rlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyS3ViZXJuZXRlc0xhYmVscyB7XG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHdhcyByZWZlcmVuY2VkIGJ5IGBDbHVzdGVyS3ViZXJuZXRlc0xhYmVsc2AncyBKU09OLVNjaGVtYSBkZWZpbml0aW9uXG4gKiB2aWEgdGhlIGBwYXR0ZXJuUHJvcGVydHlgIFwiXi4rJFwiLlxuICovXG5bazogc3RyaW5nXTogc3RyaW5nXG59XG4vKipcbiAqIEEgS3ViZXJuZXRlcyB0YWludCB0byBhcHBseSB0byBjbHVzdGVyIG5vZGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJLdWJlcm5ldGVzVGFpbnQge1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHRhaW50LlxuICovXG5WYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZWZmZWN0IG9mIHRoZSB0YWludC5cbiAqL1xuRWZmZWN0OiAoXCJOb1NjaGVkdWxlXCIgfCBcIlByZWZlck5vU2NoZWR1bGVcIiB8IFwiTm9FeGVjdXRlXCIpXG4vKipcbiAqIFRoZSBrZXkgb2YgdGhlIHRhaW50LlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZm9yIGEgU2FnZU1ha2VyIEh5cGVyUG9kIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlckxpZmVDeWNsZUNvbmZpZyB7XG4vKipcbiAqIEFuIEFtYXpvbiBTMyBidWNrZXQgcGF0aCB3aGVyZSB5b3VyIGxpZmVjeWNsZSBzY3JpcHRzIGFyZSBzdG9yZWQuXG4gKi9cblNvdXJjZVMzVXJpOiBzdHJpbmdcbi8qKlxuICogVGhlIGZpbGUgbmFtZSBvZiB0aGUgZW50cnlwb2ludCBzY3JpcHQgb2YgbGlmZWN5Y2xlIHNjcmlwdHMgdW5kZXIgU291cmNlUzNVcmkuIFRoaXMgZW50cnlwb2ludCBzY3JpcHQgcnVucyBkdXJpbmcgY2x1c3RlciBjcmVhdGlvbi5cbiAqL1xuT25DcmVhdGU6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBvYmplY3Qgb2YgdGhlIHNjaGVkdWxlIHRoYXQgU2FnZU1ha2VyIGZvbGxvd3Mgd2hlbiB1cGRhdGluZyB0aGUgQU1JLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlZFVwZGF0ZUNvbmZpZyB7XG4vKipcbiAqIEEgY3JvbiBleHByZXNzaW9uIHRoYXQgc3BlY2lmaWVzIHRoZSBzY2hlZHVsZSB0aGF0IFNhZ2VNYWtlciBmb2xsb3dzIHdoZW4gdXBkYXRpbmcgdGhlIEFNSS5cbiAqL1xuU2NoZWR1bGVFeHByZXNzaW9uOiBzdHJpbmdcbkRlcGxveW1lbnRDb25maWc/OiBEZXBsb3ltZW50Q29uZmlnXG59XG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIHRvIHVzZSB3aGVuIHVwZGF0aW5nIHRoZSBBTUkgdmVyc2lvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95bWVudENvbmZpZyB7XG5BdXRvUm9sbGJhY2tDb25maWd1cmF0aW9uPzogQXV0b1JvbGxiYWNrQ29uZmlndXJhdGlvblxuUm9sbGluZ1VwZGF0ZVBvbGljeT86IFJvbGxpbmdVcGRhdGVQb2xpY3lcbi8qKlxuICogVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgdGhhdCBTYWdlTWFrZXIgd2FpdHMgYmVmb3JlIHVwZGF0aW5nIG1vcmUgaW5zdGFuY2VzIGluIHRoZSBjbHVzdGVyLlxuICovXG5XYWl0SW50ZXJ2YWxJblNlY29uZHM/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIGRldGFpbHMgb2YgdGhlIGFsYXJtIHRvIG1vbml0b3IgZHVyaW5nIHRoZSBBTUkgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtRGV0YWlscyB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBhbGFybS5cbiAqL1xuQWxhcm1OYW1lOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHBvbGljeSB0aGF0IFNhZ2VNYWtlciB1c2VzIHdoZW4gdXBkYXRpbmcgdGhlIEFNSSB2ZXJzaW9ucyBvZiB0aGUgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xsaW5nVXBkYXRlUG9saWN5IHtcbk1heGltdW1CYXRjaFNpemU6IENhcGFjaXR5U2l6ZUNvbmZpZ1xuUm9sbGJhY2tNYXhpbXVtQmF0Y2hTaXplPzogQ2FwYWNpdHlTaXplQ29uZmlnXG59XG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBzaXplIG1lYXN1cmVtZW50cyBvZiB0aGUgQU1JIHVwZGF0ZS4gVXNpbmcgdGhpcyBjb25maWd1cmF0aW9uLCB5b3UgY2FuIHNwZWNpZnkgd2hldGhlciBTYWdlTWFrZXIgc2hvdWxkIHVwZGF0ZSB5b3VyIGluc3RhbmNlIGdyb3VwIGJ5IGFuIGFtb3VudCBvciBwZXJjZW50YWdlIG9mIGluc3RhbmNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXBhY2l0eVNpemVDb25maWcge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBTYWdlTWFrZXIgc2hvdWxkIHByb2Nlc3MgdGhlIHVwZGF0ZSBieSBhbW91bnQgb3IgcGVyY2VudGFnZSBvZiBpbnN0YW5jZXMuXG4gKi9cblR5cGU6IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGFtb3VudCBvciBwZXJjZW50YWdlIG9mIGluc3RhbmNlcyBTYWdlTWFrZXIgdXBkYXRlcyBhdCBhIHRpbWUuXG4gKi9cblZhbHVlOiBudW1iZXJcbn1cbi8qKlxuICogRGV0YWlscyBvZiBhIHJlc3RyaWN0ZWQgaW5zdGFuY2UgZ3JvdXAgaW4gYSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyUmVzdHJpY3RlZEluc3RhbmNlR3JvdXAge1xuT3ZlcnJpZGVWcGNDb25maWc/OiBWcGNDb25maWdcbi8qKlxuICogVGhlIG51bWJlciBvZiBpbnN0YW5jZXMgeW91IHNwZWNpZmllZCB0byBhZGQgdG8gdGhlIHJlc3RyaWN0ZWQgaW5zdGFuY2UgZ3JvdXAgb2YgYSBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3Rlci5cbiAqL1xuSW5zdGFuY2VDb3VudDogbnVtYmVyXG5PblN0YXJ0RGVlcEhlYWx0aENoZWNrcz86IE9uU3RhcnREZWVwSGVhbHRoQ2hlY2tzXG5FbnZpcm9ubWVudENvbmZpZzogRW52aXJvbm1lbnRDb25maWdcbkluc3RhbmNlR3JvdXBOYW1lOiBJbnN0YW5jZUdyb3VwTmFtZVxuSW5zdGFuY2VTdG9yYWdlQ29uZmlncz86IENsdXN0ZXJJbnN0YW5jZVN0b3JhZ2VDb25maWdzXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIHRoYXQgYXJlIGN1cnJlbnRseSBpbiB0aGUgcmVzdHJpY3RlZCBpbnN0YW5jZSBncm91cCBvZiBhIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyLlxuICovXG5DdXJyZW50Q291bnQ/OiBudW1iZXJcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSB0cmFpbmluZyBwbGFuIHRvIHVzZSBmb3IgdGhpcyBjbHVzdGVyIHJlc3RyaWN0ZWQgaW5zdGFuY2UgZ3JvdXAuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byByZXNlcnZlIEdQVSBjYXBhY2l0eSBmb3IgeW91ciBTYWdlTWFrZXIgSHlwZXJQb2QgY2x1c3RlcnMgdXNpbmcgQW1hem9uIFNhZ2VNYWtlciBUcmFpbmluZyBQbGFuLCBzZWUgQ3JlYXRlVHJhaW5pbmdQbGFuLlxuICovXG5UcmFpbmluZ1BsYW5Bcm4/OiBzdHJpbmdcbkluc3RhbmNlVHlwZTogSW5zdGFuY2VUeXBlXG4vKipcbiAqIFRoZSBudW1iZXIgeW91IHNwZWNpZmllZCB0byBUcmVhZHNQZXJDb3JlIGluIENyZWF0ZUNsdXN0ZXIgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyBtdWx0aXRocmVhZGluZy4gRm9yIGluc3RhbmNlIHR5cGVzIHRoYXQgc3VwcG9ydCBtdWx0aXRocmVhZGluZywgeW91IGNhbiBzcGVjaWZ5IDEgZm9yIGRpc2FibGluZyBtdWx0aXRocmVhZGluZyBhbmQgMiBmb3IgZW5hYmxpbmcgbXVsdGl0aHJlYWRpbmcuXG4gKi9cblRocmVhZHNQZXJDb3JlPzogbnVtYmVyXG5FeGVjdXRpb25Sb2xlOiBFeGVjdXRpb25Sb2xlXG59XG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgcmVzdHJpY3RlZCBpbnN0YW5jZSBncm91cHMgKFJJRykgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnRDb25maWcge1xuRlN4THVzdHJlQ29uZmlnPzogRlN4THVzdHJlQ29uZmlnXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gc2V0dGluZ3MgZm9yIGFuIEFtYXpvbiBGU3ggZm9yIEx1c3RyZSBmaWxlIHN5c3RlbSB0byBiZSB1c2VkIHdpdGggdGhlIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRlN4THVzdHJlQ29uZmlnIHtcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2FwYWNpdHkgb2YgdGhlIEZTeCBmb3IgTHVzdHJlIGZpbGUgc3lzdGVtLCBzcGVjaWZpZWQgaW4gZ2liaWJ5dGVzIChHaUIpLlxuICovXG5TaXplSW5HaUI6IG51bWJlclxuLyoqXG4gKiBUaGUgdGhyb3VnaHB1dCBjYXBhY2l0eSBvZiB0aGUgRlN4IGZvciBMdXN0cmUgZmlsZSBzeXN0ZW0sIG1lYXN1cmVkIGluIE1CL3MgcGVyIFRpQiBvZiBzdG9yYWdlLlxuICovXG5QZXJVbml0U3RvcmFnZVRocm91Z2hwdXQ6IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgcGFyYW1ldGVyKHMpIHNwZWNpZmljIHRvIHRoZSBvcmNoZXN0cmF0b3IsIGUuZy4gc3BlY2lmeSB0aGUgRUtTIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JjaGVzdHJhdG9yIHtcbkVrczogQ2x1c3Rlck9yY2hlc3RyYXRvckVrc0NvbmZpZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgcGFyYW1ldGVyKHMpIHJlbGF0ZWQgdG8gRUtTIGFzIG9yY2hlc3RyYXRvciwgZS5nLiB0aGUgRUtTIGNsdXN0ZXIgbm9kZXMgd2lsbCBhdHRhY2ggdG8sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3Rlck9yY2hlc3RyYXRvckVrc0NvbmZpZyB7XG4vKipcbiAqIFRoZSBBUk4gb2YgdGhlIEVLUyBjbHVzdGVyLCBzdWNoIGFzIGFybjphd3M6ZWtzOnVzLXdlc3QtMjoxMjM0NTY3ODkwMTI6Y2x1c3Rlci9teS1la3MtY2x1c3RlclxuICovXG5DbHVzdGVyQXJuOiBzdHJpbmdcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgY2x1c3RlciBhdXRvLXNjYWxpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyQXV0b1NjYWxpbmdDb25maWcge1xuLyoqXG4gKiBUaGUgYXV0by1zY2FsaW5nIG1vZGUgZm9yIHRoZSBjbHVzdGVyXG4gKi9cbk1vZGU6IChcIkVuYWJsZVwiIHwgXCJEaXNhYmxlXCIpXG4vKipcbiAqIFRoZSB0eXBlIG9mIGF1dG8tc2NhbGVyIHRvIHVzZVxuICovXG5BdXRvU2NhbGVyVHlwZT86IFwiS2FycGVudGVyXCJcbn1cbi8qKlxuICogQSBrZXktdmFsdWUgcGFpciB0byBhc3NvY2lhdGUgd2l0aCBhIHJlc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIFRoZSB2YWx1ZSBmb3IgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAwIHRvIDI1NiBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUga2V5IG5hbWUgb2YgdGhlIHRhZy4gWW91IGNhbiBzcGVjaWZ5IGEgdmFsdWUgdGhhdCBpcyAxIHRvIDEyOCBVbmljb2RlIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGFuZCBjYW5ub3QgYmUgcHJlZml4ZWQgd2l0aCBhd3M6LiBZb3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiB0aGUgc2V0IG9mIFVuaWNvZGUgbGV0dGVycywgZGlnaXRzLCB3aGl0ZXNwYWNlLCBfLCAuLCAvLCA9LCArLCBhbmQgLS5cbiAqL1xuS2V5OiBzdHJpbmdcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGllcmVkIHN0b3JhZ2UgaW4gdGhlIFNhZ2VNYWtlciBIeXBlclBvZCBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpZXJlZFN0b3JhZ2VDb25maWcge1xuLyoqXG4gKiBUaGUgbW9kZSBvZiB0aWVyZWQgc3RvcmFnZS5cbiAqL1xuTW9kZTogKFwiRW5hYmxlXCIgfCBcIkRpc2FibGVcIilcbi8qKlxuICogVGhlIHBlcmNlbnRhZ2Ugb2YgaW5zdGFuY2UgbWVtb3J5IHRvIGFsbG9jYXRlIGZvciB0aWVyZWQgc3RvcmFnZS5cbiAqL1xuSW5zdGFuY2VNZW1vcnlBbGxvY2F0aW9uUGVyY2VudGFnZT86IG51bWJlclxufVxuIl19
|