@horietakehiro/aws-cdk-utul 0.10.2 → 0.11.3
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/stack-manager.d.ts +41 -0
- package/lib/stack-manager.js +132 -0
- package/lib/types/cfn-resource-types/aws-amazonmq-configuration.d.ts +35 -5
- package/lib/types/cfn-resource-types/aws-amazonmq-configuration.js +1 -1
- package/lib/types/cfn-resource-types/aws-apigateway-vpclink.d.ts +0 -9
- package/lib/types/cfn-resource-types/aws-apigateway-vpclink.js +1 -1
- package/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-apigatewayv2-domainname.js +1 -1
- package/lib/types/cfn-resource-types/aws-appconfig-deploymentstrategy.d.ts +56 -8
- package/lib/types/cfn-resource-types/aws-appconfig-deploymentstrategy.js +1 -1
- package/lib/types/cfn-resource-types/aws-appsync-datasource.d.ts +151 -31
- package/lib/types/cfn-resource-types/aws-appsync-datasource.js +1 -1
- package/lib/types/cfn-resource-types/aws-appsync-graphqlapi.d.ts +225 -36
- package/lib/types/cfn-resource-types/aws-appsync-graphqlapi.js +1 -1
- package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.d.ts +6 -1
- package/lib/types/cfn-resource-types/aws-autoscaling-autoscalinggroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-b2bi-capability.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-b2bi-capability.js +1 -1
- package/lib/types/cfn-resource-types/aws-b2bi-partnership.d.ts +37 -1
- package/lib/types/cfn-resource-types/aws-b2bi-partnership.js +1 -1
- package/lib/types/cfn-resource-types/aws-b2bi-transformer.d.ts +41 -4
- package/lib/types/cfn-resource-types/aws-b2bi-transformer.js +1 -1
- package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.d.ts +28 -0
- package/lib/types/cfn-resource-types/aws-backup-logicallyairgappedbackupvault.js +3 -0
- package/lib/types/cfn-resource-types/aws-bedrock-agent.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-agent.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-flow.d.ts +17 -6
- package/lib/types/cfn-resource-types/aws-bedrock-flow.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-flowversion.d.ts +17 -6
- package/lib/types/cfn-resource-types/aws-bedrock-flowversion.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-prompt.d.ts +3 -7
- package/lib/types/cfn-resource-types/aws-bedrock-prompt.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrock-promptversion.d.ts +4 -8
- package/lib/types/cfn-resource-types/aws-bedrock-promptversion.js +1 -1
- package/lib/types/cfn-resource-types/aws-cloudformation-customresource.d.ts +2 -1
- package/lib/types/cfn-resource-types/aws-cloudformation-customresource.js +1 -1
- package/lib/types/cfn-resource-types/aws-codepipeline-pipeline.d.ts +23 -2
- package/lib/types/cfn-resource-types/aws-codepipeline-pipeline.js +1 -1
- package/lib/types/cfn-resource-types/aws-cognito-userpool.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-cognito-userpool.js +1 -1
- package/lib/types/cfn-resource-types/aws-cognito-userpoolidentityprovider.d.ts +15 -8
- package/lib/types/cfn-resource-types/aws-cognito-userpoolidentityprovider.js +1 -1
- package/lib/types/cfn-resource-types/aws-connect-contactflow.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-connect-contactflow.js +1 -1
- package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.d.ts +18 -18
- package/lib/types/cfn-resource-types/aws-connect-hoursofoperation.js +1 -1
- package/lib/types/cfn-resource-types/aws-datasync-task.d.ts +96 -96
- package/lib/types/cfn-resource-types/aws-datasync-task.js +1 -1
- package/lib/types/cfn-resource-types/aws-dms-datamigration.d.ts +90 -0
- package/lib/types/cfn-resource-types/aws-dms-datamigration.js +3 -0
- package/lib/types/cfn-resource-types/aws-dms-replicationinstance.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-dms-replicationinstance.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-capacityreservation.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-ec2-capacityreservation.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-eip.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-ec2-eip.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-natgateway.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-natgateway.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-transitgateway.d.ts +6 -5
- package/lib/types/cfn-resource-types/aws-ec2-transitgateway.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayattachment.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayattachment.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayvpcattachment.d.ts +14 -10
- package/lib/types/cfn-resource-types/aws-ec2-transitgatewayvpcattachment.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpc.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpc.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.d.ts +2 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpoint.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpointconnectionnotification.d.ts +8 -8
- package/lib/types/cfn-resource-types/aws-ec2-vpcendpointconnectionnotification.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.d.ts +213 -3
- package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-capacityprovider.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-service.d.ts +10 -1
- package/lib/types/cfn-resource-types/aws-ecs-service.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-taskset.d.ts +57 -51
- package/lib/types/cfn-resource-types/aws-ecs-taskset.js +1 -1
- package/lib/types/cfn-resource-types/aws-eks-cluster.d.ts +11 -1
- package/lib/types/cfn-resource-types/aws-eks-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticache-globalreplicationgroup.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-elasticache-globalreplicationgroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.d.ts +79 -63
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listener.js +1 -1
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.d.ts +65 -63
- package/lib/types/cfn-resource-types/aws-elasticloadbalancingv2-listenerrule.js +1 -1
- package/lib/types/cfn-resource-types/aws-emr-cluster.d.ts +35 -14
- package/lib/types/cfn-resource-types/aws-emr-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-emr-instancefleetconfig.d.ts +21 -0
- package/lib/types/cfn-resource-types/aws-emr-instancefleetconfig.js +1 -1
- package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.d.ts +81 -81
- package/lib/types/cfn-resource-types/aws-fis-experimenttemplate.js +1 -1
- package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.d.ts +19 -0
- package/lib/types/cfn-resource-types/aws-gamelift-containergroupdefinition.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-crawler.d.ts +179 -1
- package/lib/types/cfn-resource-types/aws-glue-crawler.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-job.d.ts +96 -6
- package/lib/types/cfn-resource-types/aws-glue-job.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-schema.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-glue-schema.js +1 -1
- package/lib/types/cfn-resource-types/aws-glue-usageprofile.d.ts +64 -0
- package/lib/types/cfn-resource-types/aws-glue-usageprofile.js +3 -0
- package/lib/types/cfn-resource-types/aws-iam-policy.d.ts +4 -1
- package/lib/types/cfn-resource-types/aws-iam-policy.js +1 -1
- package/lib/types/cfn-resource-types/aws-iam-role.d.ts +3 -2
- package/lib/types/cfn-resource-types/aws-iam-role.js +1 -1
- package/lib/types/cfn-resource-types/aws-imagebuilder-component.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-imagebuilder-component.js +1 -1
- package/lib/types/cfn-resource-types/aws-imagebuilder-infrastructureconfiguration.d.ts +22 -0
- package/lib/types/cfn-resource-types/aws-imagebuilder-infrastructureconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.d.ts +6 -0
- package/lib/types/cfn-resource-types/aws-iot-domainconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-iotevents-alarmmodel.d.ts +195 -79
- package/lib/types/cfn-resource-types/aws-iotevents-alarmmodel.js +1 -1
- package/lib/types/cfn-resource-types/aws-iotevents-detectormodel.d.ts +177 -85
- package/lib/types/cfn-resource-types/aws-iotevents-detectormodel.js +1 -1
- package/lib/types/cfn-resource-types/aws-iotevents-input.d.ts +9 -11
- package/lib/types/cfn-resource-types/aws-iotevents-input.js +1 -1
- package/lib/types/cfn-resource-types/aws-ivs-encoderconfiguration.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-ivs-encoderconfiguration.js +1 -1
- package/lib/types/cfn-resource-types/aws-kinesis-resourcepolicy.d.ts +17 -0
- package/lib/types/cfn-resource-types/aws-kinesis-resourcepolicy.js +3 -0
- package/lib/types/cfn-resource-types/aws-lakeformation-principalpermissions.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-lakeformation-principalpermissions.js +1 -1
- package/lib/types/cfn-resource-types/aws-lakeformation-tag.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-lakeformation-tag.js +1 -1
- package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.d.ts +115 -108
- package/lib/types/cfn-resource-types/aws-lambda-eventsourcemapping.js +1 -1
- package/lib/types/cfn-resource-types/aws-medialive-channel.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-medialive-channel.js +1 -1
- package/lib/types/cfn-resource-types/aws-memorydb-cluster.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-memorydb-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.d.ts +3 -0
- package/lib/types/cfn-resource-types/aws-networkfirewall-firewallpolicy.js +1 -1
- package/lib/types/cfn-resource-types/aws-organizations-policy.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-organizations-policy.js +1 -1
- package/lib/types/cfn-resource-types/aws-qbusiness-webexperience.d.ts +6 -0
- package/lib/types/cfn-resource-types/aws-qbusiness-webexperience.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-analysis.d.ts +13 -0
- package/lib/types/cfn-resource-types/aws-quicksight-analysis.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-dashboard.d.ts +13 -0
- package/lib/types/cfn-resource-types/aws-quicksight-dashboard.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-dataset.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-quicksight-dataset.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-datasource.d.ts +247 -242
- package/lib/types/cfn-resource-types/aws-quicksight-datasource.js +1 -1
- package/lib/types/cfn-resource-types/aws-quicksight-folder.d.ts +79 -0
- package/lib/types/cfn-resource-types/aws-quicksight-folder.js +3 -0
- package/lib/types/cfn-resource-types/aws-quicksight-template.d.ts +8 -0
- package/lib/types/cfn-resource-types/aws-quicksight-template.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.d.ts +366 -366
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.d.ts +1 -4
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-globalcluster.d.ts +19 -0
- package/lib/types/cfn-resource-types/aws-rds-globalcluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-redshift-integration.d.ts +61 -0
- package/lib/types/cfn-resource-types/aws-redshift-integration.js +3 -0
- package/lib/types/cfn-resource-types/aws-refactorspaces-environment.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-refactorspaces-environment.js +1 -1
- package/lib/types/cfn-resource-types/aws-route53profiles-profileassociation.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-route53profiles-profileassociation.js +1 -1
- package/lib/types/cfn-resource-types/aws-route53resolver-resolverrule.d.ts +4 -4
- package/lib/types/cfn-resource-types/aws-route53resolver-resolverrule.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3-bucket.d.ts +599 -591
- package/lib/types/cfn-resource-types/aws-s3-bucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3express-directorybucket.d.ts +34 -3
- package/lib/types/cfn-resource-types/aws-s3express-directorybucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-domain.d.ts +8 -0
- package/lib/types/cfn-resource-types/aws-sagemaker-domain.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-endpoint.d.ts +137 -20
- package/lib/types/cfn-resource-types/aws-sagemaker-endpoint.js +1 -1
- package/lib/types/cfn-resource-types/aws-secretsmanager-secret.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-secretsmanager-secret.js +1 -1
- package/lib/types/cfn-resource-types/aws-securityhub-automationrule.d.ts +4 -4
- package/lib/types/cfn-resource-types/aws-securityhub-automationrule.js +1 -1
- package/lib/types/cfn-resource-types/aws-securityhub-findingaggregator.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-securityhub-findingaggregator.js +1 -1
- package/lib/types/cfn-resource-types/aws-ses-mailmanagerruleset.d.ts +4 -1
- package/lib/types/cfn-resource-types/aws-ses-mailmanagerruleset.js +1 -1
- package/lib/types/cfn-resource-types/aws-sns-topic.d.ts +2 -6
- package/lib/types/cfn-resource-types/aws-sns-topic.js +1 -1
- package/lib/types/cfn-resource-types/aws-sqs-queue.d.ts +12 -12
- package/lib/types/cfn-resource-types/aws-sqs-queue.js +1 -1
- package/lib/types/cfn-resource-types/aws-sqs-queuepolicy.d.ts +1 -3
- package/lib/types/cfn-resource-types/aws-sqs-queuepolicy.js +1 -1
- package/lib/types/cfn-resource-types/aws-ssmquicksetup-configurationmanager.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ssmquicksetup-configurationmanager.js +1 -1
- package/lib/types/cfn-resource-types/aws-transfer-server.d.ts +70 -36
- package/lib/types/cfn-resource-types/aws-transfer-server.js +1 -1
- package/lib/types/cfn-resource-types/aws-wisdom-aiprompt.d.ts +34 -0
- package/lib/types/cfn-resource-types/aws-wisdom-aiprompt.js +3 -0
- package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-wisdom-knowledgebase.js +1 -1
- package/lib/types/cfn-resource-types/aws-workspacesweb-identityprovider.d.ts +9 -0
- package/lib/types/cfn-resource-types/aws-workspacesweb-identityprovider.js +1 -1
- package/lib/types/cfn-resource-types.d.ts +14 -0
- package/lib/types/cfn-resource-types.js +40 -26
- package/package.json +11 -7
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWlvdGV2ZW50cy1hbGFybW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWlvdGV2ZW50cy1hbGFybW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNwZWNpZmllcyBvbmUgb3IgbW9yZSBzdXBwb3J0ZWQgYWN0aW9ucyB0byByZWNlaXZlIG5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgYWxhcm0gc3RhdGUgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IHR5cGUgQWxhcm1BY3Rpb25zID0gQWxhcm1BY3Rpb25bXVxuXG4vKipcbiAqIFRoZSBBV1M6OklvVEV2ZW50czo6QWxhcm1Nb2RlbCByZXNvdXJjZSBjcmVhdGVzIGEgYWxhcm0gbW9kZWwuIEFXUyBJb1QgRXZlbnRzIGFsYXJtcyBoZWxwIHlvdSBtb25pdG9yIHlvdXIgZGF0YSBmb3IgY2hhbmdlcy4gVGhlIGRhdGEgY2FuIGJlIG1ldHJpY3MgdGhhdCB5b3UgbWVhc3VyZSBmb3IgeW91ciBlcXVpcG1lbnQgYW5kIHByb2Nlc3Nlcy4gWW91IGNhbiBjcmVhdGUgYWxhcm1zIHRoYXQgc2VuZCBub3RpZmljYXRpb25zIHdoZW4gYSB0aHJlc2hvbGQgaXMgYnJlYWNoZWQuIEFsYXJtcyBoZWxwIHlvdSBkZXRlY3QgaXNzdWVzLCBzdHJlYW1saW5lIG1haW50ZW5hbmNlLCBhbmQgb3B0aW1pemUgcGVyZm9ybWFuY2Ugb2YgeW91ciBlcXVpcG1lbnQgYW5kIHByb2Nlc3Nlcy5cbiAqIFxuICogQWxhcm1zIGFyZSBpbnN0YW5jZXMgb2YgYWxhcm0gbW9kZWxzLiBUaGUgYWxhcm0gbW9kZWwgc3BlY2lmaWVzIHdoYXQgdG8gZGV0ZWN0LCB3aGVuIHRvIHNlbmQgbm90aWZpY2F0aW9ucywgd2hvIGdldHMgbm90aWZpZWQsIGFuZCBtb3JlLiBZb3UgY2FuIGFsc28gc3BlY2lmeSBvbmUgb3IgbW9yZSBzdXBwb3J0ZWQgYWN0aW9ucyB0aGF0IG9jY3VyIHdoZW4gdGhlIGFsYXJtIHN0YXRlIGNoYW5nZXMuIEFXUyBJb1QgRXZlbnRzIHJvdXRlcyBpbnB1dCBhdHRyaWJ1dGVzIGRlcml2ZWQgZnJvbSB5b3VyIGRhdGEgdG8gdGhlIGFwcHJvcHJpYXRlIGFsYXJtcy4gSWYgdGhlIGRhdGEgdGhhdCB5b3UncmUgbW9uaXRvcmluZyBpcyBvdXRzaWRlIHRoZSBzcGVjaWZpZWQgcmFuZ2UsIHRoZSBhbGFybSBpcyBpbnZva2VkLiBZb3UgY2FuIGFsc28gYWNrbm93bGVkZ2UgdGhlIGFsYXJtcyBvciBzZXQgdGhlbSB0byB0aGUgc25vb3plIG1vZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19JT1RFVkVOVFNfQUxBUk1NT0RFTCB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBhbGFybSBtb2RlbC5cbiAqL1xuQWxhcm1Nb2RlbE5hbWU/OiBzdHJpbmdcbi8qKlxuICogQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgYWxhcm0gbW9kZWwuXG4gKi9cbkFsYXJtTW9kZWxEZXNjcmlwdGlvbj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSByb2xlIHRoYXQgZ3JhbnRzIHBlcm1pc3Npb24gdG8gQVdTIElvVCBFdmVudHMgdG8gcGVyZm9ybSBpdHMgb3BlcmF0aW9ucy5cbiAqL1xuUm9sZUFybjogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSB1c2VkIHRvIGlkZW50aWZ5IGEgYWxhcm0gaW5zdGFuY2UuIFdoZW4gYSBkZXZpY2Ugb3Igc3lzdGVtIHNlbmRzIGlucHV0LCBhIG5ldyBhbGFybSBpbnN0YW5jZSB3aXRoIGEgdW5pcXVlIGtleSB2YWx1ZSBpcyBjcmVhdGVkLiBBV1MgSW9UIEV2ZW50cyBjYW4gY29udGludWUgdG8gcm91dGUgaW5wdXQgdG8gaXRzIGNvcnJlc3BvbmRpbmcgYWxhcm0gaW5zdGFuY2UgYmFzZWQgb24gdGhpcyBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi5cbiAqIFxuICogVGhpcyBwYXJhbWV0ZXIgdXNlcyBhIEpTT04tcGF0aCBleHByZXNzaW9uIHRvIHNlbGVjdCB0aGUgYXR0cmlidXRlLXZhbHVlIHBhaXIgaW4gdGhlIG1lc3NhZ2UgcGF5bG9hZCB0aGF0IGlzIHVzZWQgZm9yIGlkZW50aWZpY2F0aW9uLiBUbyByb3V0ZSB0aGUgbWVzc2FnZSB0byB0aGUgY29ycmVjdCBhbGFybSBpbnN0YW5jZSwgdGhlIGRldmljZSBtdXN0IHNlbmQgYSBtZXNzYWdlIHBheWxvYWQgdGhhdCBjb250YWlucyB0aGUgc2FtZSBhdHRyaWJ1dGUtdmFsdWUuXG4gKi9cbktleT86IHN0cmluZ1xuLyoqXG4gKiBBIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIHRoYXQgcmVmbGVjdHMgdGhlIHNldmVyaXR5IGxldmVsIG9mIHRoZSBhbGFybS5cbiAqIFxuICogXG4gKi9cblNldmVyaXR5PzogbnVtYmVyXG5BbGFybVJ1bGU6IEFsYXJtUnVsZVxuQWxhcm1FdmVudEFjdGlvbnM/OiBBbGFybUV2ZW50QWN0aW9uc1xuQWxhcm1DYXBhYmlsaXRpZXM/OiBBbGFybUNhcGFiaWxpdGllc1xuLyoqXG4gKiBBbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMgdG8gYXBwbHkgdG8gdGhpcyByZXNvdXJjZS5cbiAqIFxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGFnXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1yZXNvdXJjZS10YWdzLmh0bWwpLlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogRGVmaW5lcyB3aGVuIHlvdXIgYWxhcm0gaXMgaW52b2tlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGFybVJ1bGUge1xuU2ltcGxlUnVsZT86IFNpbXBsZVJ1bGVcbn1cbi8qKlxuICogQSBydWxlIHRoYXQgY29tcGFyZXMgYW4gaW5wdXQgcHJvcGVydHkgdmFsdWUgdG8gYSB0aHJlc2hvbGQgdmFsdWUgd2l0aCBhIGNvbXBhcmlzb24gb3BlcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlUnVsZSB7XG4vKipcbiAqIFRoZSB2YWx1ZSBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yLiBZb3UgY2FuIHNwZWNpZnkgYW4gQVdTIElvVCBFdmVudHMgaW5wdXQgYXR0cmlidXRlIGFzIGFuIGlucHV0IHByb3BlcnR5LlxuICovXG5JbnB1dFByb3BlcnR5OiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbXBhcmlzb24gb3BlcmF0b3IuXG4gKi9cbkNvbXBhcmlzb25PcGVyYXRvcjogKFwiR1JFQVRFUlwiIHwgXCJHUkVBVEVSX09SX0VRVUFMXCIgfCBcIkxFU1NcIiB8IFwiTEVTU19PUl9FUVVBTFwiIHwgXCJFUVVBTFwiIHwgXCJOT1RfRVFVQUxcIilcbi8qKlxuICogVGhlIHZhbHVlIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yLiBZb3UgY2FuIGVudGVyIGEgbnVtYmVyIG9yIHNwZWNpZnkgYW4gQVdTIElvVCBFdmVudHMgaW5wdXQgYXR0cmlidXRlLlxuICovXG5UaHJlc2hvbGQ6IHN0cmluZ1xufVxuLyoqXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBvbmUgb3IgbW9yZSBhbGFybSBhY3Rpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtRXZlbnRBY3Rpb25zIHtcbkFsYXJtQWN0aW9ucz86IEFsYXJtQWN0aW9uc1xufVxuLyoqXG4gKiBUaGUgYWN0aW9ucyB0byBiZSBwZXJmb3JtZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1BY3Rpb24ge1xuRHluYW1vREI/OiBEeW5hbW9EQlxuRHluYW1vREJ2Mj86IER5bmFtb0RCdjJcbkZpcmVob3NlPzogRmlyZWhvc2VcbklvdEV2ZW50cz86IElvdEV2ZW50c1xuSW90U2l0ZVdpc2U/OiBJb3RTaXRlV2lzZVxuSW90VG9waWNQdWJsaXNoPzogSW90VG9waWNQdWJsaXNoXG5MYW1iZGE/OiBMYW1iZGFcblNucz86IFNuc1xuU3FzPzogU3FzXG59XG4vKipcbiAqIFdyaXRlcyB0byB0aGUgRHluYW1vREIgdGFibGUgdGhhdCB5b3UgY3JlYXRlZC4gVGhlIGRlZmF1bHQgYWN0aW9uIHBheWxvYWQgY29udGFpbnMgYWxsIGF0dHJpYnV0ZS12YWx1ZSBwYWlycyB0aGF0IGhhdmUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhbGFybSBtb2RlbCBpbnN0YW5jZSBhbmQgdGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBhY3Rpb24uIFlvdSBjYW4gYWxzbyBjdXN0b21pemUgdGhlIFtwYXlsb2FkXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW90ZXZlbnRzL2xhdGVzdC9hcGlyZWZlcmVuY2UvQVBJX1BheWxvYWQuaHRtbCkuIE9uZSBjb2x1bW4gb2YgdGhlIER5bmFtb0RCIHRhYmxlIHJlY2VpdmVzIGFsbCBhdHRyaWJ1dGUtdmFsdWUgcGFpcnMgaW4gdGhlIHBheWxvYWQgdGhhdCB5b3Ugc3BlY2lmeS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQWN0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdGV2ZW50cy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvaW90ZXZlbnRzLWV2ZW50LWFjdGlvbnMuaHRtbCkgaW4gKkFXUyBJb1QgRXZlbnRzIERldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1vREIge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaGFzaCBrZXkgKGFsc28gY2FsbGVkIHRoZSBwYXJ0aXRpb24ga2V5KS5cbiAqL1xuSGFzaEtleUZpZWxkOiBzdHJpbmdcbi8qKlxuICogVGhlIGRhdGEgdHlwZSBmb3IgdGhlIGhhc2gga2V5IChhbHNvIGNhbGxlZCB0aGUgcGFydGl0aW9uIGtleSkuIFlvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAqIFxuICogKiBgU1RSSU5HYCAtIFRoZSBoYXNoIGtleSBpcyBhIHN0cmluZy5cbiAqIFxuICogKiBgTlVNQkVSYCAtIFRoZSBoYXNoIGtleSBpcyBhIG51bWJlci5cbiAqIFxuICogSWYgeW91IGRvbid0IHNwZWNpZnkgYGhhc2hLZXlUeXBlYCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYFNUUklOR2AuXG4gKi9cbkhhc2hLZXlUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgaGFzaCBrZXkgKGFsc28gY2FsbGVkIHRoZSBwYXJ0aXRpb24ga2V5KS5cbiAqL1xuSGFzaEtleVZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHR5cGUgb2Ygb3BlcmF0aW9uIHRvIHBlcmZvcm0uIFlvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAqIFxuICogKiBgSU5TRVJUYCAtIEluc2VydCBkYXRhIGFzIGEgbmV3IGl0ZW0gaW50byB0aGUgRHluYW1vREIgdGFibGUuIFRoaXMgaXRlbSB1c2VzIHRoZSBzcGVjaWZpZWQgaGFzaCBrZXkgYXMgYSBwYXJ0aXRpb24ga2V5LiBJZiB5b3Ugc3BlY2lmaWVkIGEgcmFuZ2Uga2V5LCB0aGUgaXRlbSB1c2VzIHRoZSByYW5nZSBrZXkgYXMgYSBzb3J0IGtleS5cbiAqIFxuICogKiBgVVBEQVRFYCAtIFVwZGF0ZSBhbiBleGlzdGluZyBpdGVtIG9mIHRoZSBEeW5hbW9EQiB0YWJsZSB3aXRoIG5ldyBkYXRhLiBUaGlzIGl0ZW0ncyBwYXJ0aXRpb24ga2V5IG11c3QgbWF0Y2ggdGhlIHNwZWNpZmllZCBoYXNoIGtleS4gSWYgeW91IHNwZWNpZmllZCBhIHJhbmdlIGtleSwgdGhlIHJhbmdlIGtleSBtdXN0IG1hdGNoIHRoZSBpdGVtJ3Mgc29ydCBrZXkuXG4gKiBcbiAqICogYERFTEVURWAgLSBEZWxldGUgYW4gZXhpc3RpbmcgaXRlbSBvZiB0aGUgRHluYW1vREIgdGFibGUuIFRoaXMgaXRlbSdzIHBhcnRpdGlvbiBrZXkgbXVzdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGhhc2gga2V5LiBJZiB5b3Ugc3BlY2lmaWVkIGEgcmFuZ2Uga2V5LCB0aGUgcmFuZ2Uga2V5IG11c3QgbWF0Y2ggdGhlIGl0ZW0ncyBzb3J0IGtleS5cbiAqIFxuICogSWYgeW91IGRvbid0IHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIEFXUyBJb1QgRXZlbnRzIHRyaWdnZXJzIHRoZSBgSU5TRVJUYCBvcGVyYXRpb24uXG4gKi9cbk9wZXJhdGlvbj86IHN0cmluZ1xuUGF5bG9hZD86IFBheWxvYWRcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIER5bmFtb0RCIGNvbHVtbiB0aGF0IHJlY2VpdmVzIHRoZSBhY3Rpb24gcGF5bG9hZC5cbiAqIFxuICogSWYgeW91IGRvbid0IHNwZWNpZnkgdGhpcyBwYXJhbWV0ZXIsIHRoZSBuYW1lIG9mIHRoZSBEeW5hbW9EQiBjb2x1bW4gaXMgYHBheWxvYWRgLlxuICovXG5QYXlsb2FkRmllbGQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHJhbmdlIGtleSAoYWxzbyBjYWxsZWQgdGhlIHNvcnQga2V5KS5cbiAqL1xuUmFuZ2VLZXlGaWVsZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgZGF0YSB0eXBlIGZvciB0aGUgcmFuZ2Uga2V5IChhbHNvIGNhbGxlZCB0aGUgc29ydCBrZXkpLCBZb3UgY2FuIHNwZWNpZnkgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4gKiBcbiAqICogYFNUUklOR2AgLSBUaGUgcmFuZ2Uga2V5IGlzIGEgc3RyaW5nLlxuICogXG4gKiAqIGBOVU1CRVJgIC0gVGhlIHJhbmdlIGtleSBpcyBudW1iZXIuXG4gKiBcbiAqIElmIHlvdSBkb24ndCBzcGVjaWZ5IGByYW5nZUtleUZpZWxkYCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYFNUUklOR2AuXG4gKi9cblJhbmdlS2V5VHlwZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHJhbmdlIGtleSAoYWxzbyBjYWxsZWQgdGhlIHNvcnQga2V5KS5cbiAqL1xuUmFuZ2VLZXlWYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgRHluYW1vREIgdGFibGUuXG4gKi9cblRhYmxlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBjb25maWd1cmUgdGhlIHBheWxvYWQuXG4gKiBcbiAqIEJ5IGRlZmF1bHQsIEFXUyBJb1QgRXZlbnRzIGdlbmVyYXRlcyBhIHN0YW5kYXJkIHBheWxvYWQgaW4gSlNPTiBmb3IgYW55IGFjdGlvbi4gVGhpcyBhY3Rpb24gcGF5bG9hZCBjb250YWlucyBhbGwgYXR0cmlidXRlLXZhbHVlIHBhaXJzIHRoYXQgaGF2ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFsYXJtIG1vZGVsIGluc3RhbmNlIGFuZCB0aGUgZXZlbnQgdHJpZ2dlcmVkIHRoZSBhY3Rpb24uIFRvIGNvbmZpZ3VyZSB0aGUgYWN0aW9uIHBheWxvYWQsIHlvdSBjYW4gdXNlIGBjb250ZW50RXhwcmVzc2lvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZCB7XG4vKipcbiAqIFRoZSBjb250ZW50IG9mIHRoZSBwYXlsb2FkLiBZb3UgY2FuIHVzZSBhIHN0cmluZyBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMgcXVvdGVkIHN0cmluZ3MgKGAnPHN0cmluZz4nYCksIHZhcmlhYmxlcyAoYCR2YXJpYWJsZS48dmFyaWFibGUtbmFtZT5gKSwgaW5wdXQgdmFsdWVzIChgJGlucHV0LjxpbnB1dC1uYW1lPi48cGF0aC10by1kYXR1bT5gKSwgc3RyaW5nIGNvbmNhdGVuYXRpb25zLCBhbmQgcXVvdGVkIHN0cmluZ3MgdGhhdCBjb250YWluIGAke31gIGFzIHRoZSBjb250ZW50LiBUaGUgcmVjb21tZW5kZWQgbWF4aW11bSBzaXplIG9mIGEgY29udGVudCBleHByZXNzaW9uIGlzIDEgS0IuXG4gKi9cbkNvbnRlbnRFeHByZXNzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBwYXlsb2FkIHR5cGUgY2FuIGJlIGVpdGhlciBgU1RSSU5HYCBvciBgSlNPTmAuXG4gKi9cblR5cGU6IHN0cmluZ1xufVxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byB3cml0ZSB0byB0aGUgQW1hem9uIER5bmFtb0RCIHRhYmxlIHRoYXQgeW91IGNyZWF0ZWQuIFRoZSBkZWZhdWx0IGFjdGlvbiBwYXlsb2FkIGNvbnRhaW5zIGFsbCBhdHRyaWJ1dGUtdmFsdWUgcGFpcnMgdGhhdCBoYXZlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxhcm0gbW9kZWwgaW5zdGFuY2UgYW5kIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uLiBZb3UgY2FuIGFsc28gY3VzdG9taXplIHRoZSBbcGF5bG9hZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdGV2ZW50cy9sYXRlc3QvYXBpcmVmZXJlbmNlL0FQSV9QYXlsb2FkLmh0bWwpLiBBIHNlcGFyYXRlIGNvbHVtbiBvZiB0aGUgRHluYW1vREIgdGFibGUgcmVjZWl2ZXMgb25lIGF0dHJpYnV0ZS12YWx1ZSBwYWlyIGluIHRoZSBwYXlsb2FkIHRoYXQgeW91IHNwZWNpZnkuXG4gKiBcbiAqIFlvdSBjYW4gdXNlIGV4cHJlc3Npb25zIGZvciBwYXJhbWV0ZXJzIHRoYXQgYXJlIHN0cmluZ3MuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0V4cHJlc3Npb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW90ZXZlbnRzL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9pb3RldmVudHMtZXhwcmVzc2lvbnMuaHRtbCkgaW4gdGhlICpBV1MgSW9UIEV2ZW50cyBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtb0RCdjIge1xuUGF5bG9hZD86IFBheWxvYWRcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIER5bmFtb0RCIHRhYmxlLlxuICovXG5UYWJsZU5hbWU6IHN0cmluZ1xufVxuLyoqXG4gKiBTZW5kcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxhcm0gbW9kZWwgaW5zdGFuY2UgYW5kIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uIHRvIGFuIEFtYXpvbiBLaW5lc2lzIERhdGEgRmlyZWhvc2UgZGVsaXZlcnkgc3RyZWFtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVob3NlIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIEtpbmVzaXMgRGF0YSBGaXJlaG9zZSBkZWxpdmVyeSBzdHJlYW0gd2hlcmUgdGhlIGRhdGEgaXMgd3JpdHRlbi5cbiAqL1xuRGVsaXZlcnlTdHJlYW1OYW1lOiBzdHJpbmdcblBheWxvYWQ/OiBQYXlsb2FkXG4vKipcbiAqIEEgY2hhcmFjdGVyIHNlcGFyYXRvciB0aGF0IGlzIHVzZWQgdG8gc2VwYXJhdGUgcmVjb3JkcyB3cml0dGVuIHRvIHRoZSBLaW5lc2lzIERhdGEgRmlyZWhvc2UgZGVsaXZlcnkgc3RyZWFtLiBWYWxpZCB2YWx1ZXMgYXJlOiAnXFxuJyAobmV3bGluZSksICdcXHQnICh0YWIpLCAnXFxyXFxuJyAoV2luZG93cyBuZXdsaW5lKSwgJywnIChjb21tYSkuXG4gKi9cblNlcGFyYXRvcj86IHN0cmluZ1xufVxuLyoqXG4gKiBTZW5kcyBhbiBBV1MgSW9UIEV2ZW50cyBpbnB1dCwgcGFzc2luZyBpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxhcm0gbW9kZWwgaW5zdGFuY2UgYW5kIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElvdEV2ZW50cyB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBBV1MgSW9UIEV2ZW50cyBpbnB1dCB3aGVyZSB0aGUgZGF0YSBpcyBzZW50LlxuICovXG5JbnB1dE5hbWU6IHN0cmluZ1xuUGF5bG9hZD86IFBheWxvYWRcbn1cbi8qKlxuICogU2VuZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFsYXJtIG1vZGVsIGluc3RhbmNlIGFuZCB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvbiB0byBhIHNwZWNpZmllZCBhc3NldCBwcm9wZXJ0eSBpbiBBV1MgSW9UIFNpdGVXaXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElvdFNpdGVXaXNlIHtcbi8qKlxuICogVGhlIElEIG9mIHRoZSBhc3NldCB0aGF0IGhhcyB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LiBZb3UgY2FuIHNwZWNpZnkgYW4gZXhwcmVzc2lvbi5cbiAqL1xuQXNzZXRJZD86IHN0cmluZ1xuLyoqXG4gKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGVudHJ5LiBZb3UgY2FuIHVzZSB0aGUgZW50cnkgSUQgdG8gdHJhY2sgd2hpY2ggZGF0YSBlbnRyeSBjYXVzZXMgYW4gZXJyb3IgaW4gY2FzZSBvZiBmYWlsdXJlLiBUaGUgZGVmYXVsdCBpcyBhIG5ldyB1bmlxdWUgaWRlbnRpZmllci4gWW91IGNhbiBhbHNvIHNwZWNpZnkgYW4gZXhwcmVzc2lvbi5cbiAqL1xuRW50cnlJZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWxpYXMgb2YgdGhlIGFzc2V0IHByb3BlcnR5LiBZb3UgY2FuIGFsc28gc3BlY2lmeSBhbiBleHByZXNzaW9uLlxuICovXG5Qcm9wZXJ0eUFsaWFzPzogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgYXNzZXQgcHJvcGVydHkuIFlvdSBjYW4gc3BlY2lmeSBhbiBleHByZXNzaW9uLlxuICovXG5Qcm9wZXJ0eUlkPzogc3RyaW5nXG5Qcm9wZXJ0eVZhbHVlPzogQXNzZXRQcm9wZXJ0eVZhbHVlXG59XG4vKipcbiAqIEEgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgdmFsdWUgaW5mb3JtYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0Fzc2V0UHJvcGVydHlWYWx1ZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdC1zaXRld2lzZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9Bc3NldFByb3BlcnR5VmFsdWUuaHRtbCkgaW4gdGhlICpBV1MgSW9UIFNpdGVXaXNlIEFQSSBSZWZlcmVuY2UqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcGVydHlWYWx1ZSB7XG4vKipcbiAqIFRoZSBxdWFsaXR5IG9mIHRoZSBhc3NldCBwcm9wZXJ0eSB2YWx1ZS4gVGhlIHZhbHVlIG11c3QgYmUgYEdPT0RgLCBgQkFEYCwgb3IgYFVOQ0VSVEFJTmAuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGFuIGV4cHJlc3Npb24uXG4gKi9cblF1YWxpdHk/OiBzdHJpbmdcblRpbWVzdGFtcD86IEFzc2V0UHJvcGVydHlUaW1lc3RhbXBcblZhbHVlOiBBc3NldFByb3BlcnR5VmFyaWFudFxufVxuLyoqXG4gKiBBIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRpbWVzdGFtcCBpbmZvcm1hdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVGltZUluTmFub3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pb3Qtc2l0ZXdpc2UvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVGltZUluTmFub3MuaHRtbCkgaW4gdGhlICpBV1MgSW9UIFNpdGVXaXNlIEFQSSBSZWZlcmVuY2UqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcGVydHlUaW1lc3RhbXAge1xuLyoqXG4gKiBUaGUgdGltZXN0YW1wLCBpbiBzZWNvbmRzLCBpbiB0aGUgVW5peCBlcG9jaCBmb3JtYXQuIFRoZSB2YWxpZCByYW5nZSBpcyBiZXR3ZWVuIGAxLTMxNTU2ODg5ODY0NDAzMTk5YC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgYW4gZXhwcmVzc2lvbi5cbiAqL1xuT2Zmc2V0SW5OYW5vcz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFub3NlY29uZCBvZmZzZXQgY29udmVydGVkIGZyb20gYHRpbWVJblNlY29uZHNgLiBUaGUgdmFsaWQgcmFuZ2UgaXMgYmV0d2VlbiBgMC05OTk5OTk5OTlgLiBZb3UgY2FuIGFsc28gc3BlY2lmeSBhbiBleHByZXNzaW9uLlxuICovXG5UaW1lSW5TZWNvbmRzOiBzdHJpbmdcbn1cbi8qKlxuICogQSBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyBhbiBhc3NldCBwcm9wZXJ0eSB2YWx1ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVmFyaWFudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdC1zaXRld2lzZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9WYXJpYW50Lmh0bWwpIGluIHRoZSAqQVdTIElvVCBTaXRlV2lzZSBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldFByb3BlcnR5VmFyaWFudCB7XG4vKipcbiAqIFRoZSBhc3NldCBwcm9wZXJ0eSB2YWx1ZSBpcyBhIEJvb2xlYW4gdmFsdWUgdGhhdCBtdXN0IGJlIGBUUlVFYCBvciBgRkFMU0VgLiBZb3UgY2FuIGFsc28gc3BlY2lmeSBhbiBleHByZXNzaW9uLiBJZiB5b3UgdXNlIGFuIGV4cHJlc3Npb24sIHRoZSBldmFsdWF0ZWQgcmVzdWx0IHNob3VsZCBiZSBhIEJvb2xlYW4gdmFsdWUuXG4gKi9cbkJvb2xlYW5WYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYXNzZXQgcHJvcGVydHkgdmFsdWUgaXMgYSBkb3VibGUuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGFuIGV4cHJlc3Npb24uIElmIHlvdSB1c2UgYW4gZXhwcmVzc2lvbiwgdGhlIGV2YWx1YXRlZCByZXN1bHQgc2hvdWxkIGJlIGEgZG91YmxlLlxuICovXG5Eb3VibGVWYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYXNzZXQgcHJvcGVydHkgdmFsdWUgaXMgYW4gaW50ZWdlci4gWW91IGNhbiBhbHNvIHNwZWNpZnkgYW4gZXhwcmVzc2lvbi4gSWYgeW91IHVzZSBhbiBleHByZXNzaW9uLCB0aGUgZXZhbHVhdGVkIHJlc3VsdCBzaG91bGQgYmUgYW4gaW50ZWdlci5cbiAqL1xuSW50ZWdlclZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhc3NldCBwcm9wZXJ0eSB2YWx1ZSBpcyBhIHN0cmluZy4gWW91IGNhbiBhbHNvIHNwZWNpZnkgYW4gZXhwcmVzc2lvbi4gSWYgeW91IHVzZSBhbiBleHByZXNzaW9uLCB0aGUgZXZhbHVhdGVkIHJlc3VsdCBzaG91bGQgYmUgYSBzdHJpbmcuXG4gKi9cblN0cmluZ1ZhbHVlPzogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIHB1Ymxpc2ggdGhlIE1RVFQgbWVzc2FnZSB0aHJvdWdoIHRoZSBBV1MgSW9UIG1lc3NhZ2UgYnJva2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElvdFRvcGljUHVibGlzaCB7XG4vKipcbiAqIFRoZSBNUVRUIHRvcGljIG9mIHRoZSBtZXNzYWdlLiBZb3UgY2FuIHVzZSBhIHN0cmluZyBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMgdmFyaWFibGVzIChgJHZhcmlhYmxlLjx2YXJpYWJsZS1uYW1lPmApIGFuZCBpbnB1dCB2YWx1ZXMgKGAkaW5wdXQuPGlucHV0LW5hbWU+LjxwYXRoLXRvLWRhdHVtPmApIGFzIHRoZSB0b3BpYyBzdHJpbmcuXG4gKi9cbk1xdHRUb3BpYzogc3RyaW5nXG5QYXlsb2FkPzogUGF5bG9hZFxufVxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGEge1xuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBpcyBleGVjdXRlZC5cbiAqL1xuRnVuY3Rpb25Bcm46IHN0cmluZ1xuUGF5bG9hZD86IFBheWxvYWRcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gcHVibGlzaCB0aGUgQW1hem9uIFNOUyBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNucyB7XG5QYXlsb2FkPzogUGF5bG9hZFxuLyoqXG4gKiBUaGUgQVJOIG9mIHRoZSBBbWF6b24gU05TIHRhcmdldCB3aGVyZSB0aGUgbWVzc2FnZSBpcyBzZW50LlxuICovXG5UYXJnZXRBcm46IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBTcXMge1xuUGF5bG9hZD86IFBheWxvYWRcbi8qKlxuICogVGhlIFVSTCBvZiB0aGUgU1FTIHF1ZXVlIHdoZXJlIHRoZSBkYXRhIGlzIHdyaXR0ZW4uXG4gKi9cblF1ZXVlVXJsOiBzdHJpbmdcbi8qKlxuICogU2V0IHRoaXMgdG8gYFRSVUVgIGlmIHlvdSB3YW50IHRoZSBkYXRhIHRvIGJlIGJhc2UtNjQgZW5jb2RlZCBiZWZvcmUgaXQgaXMgd3JpdHRlbiB0byB0aGUgcXVldWUuIE90aGVyd2lzZSwgc2V0IHRoaXMgdG8gYEZBTFNFYC5cbiAqL1xuVXNlQmFzZTY0PzogYm9vbGVhblxufVxuLyoqXG4gKiBDb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBvZiBhbGFybSBzdGF0ZSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1DYXBhYmlsaXRpZXMge1xuSW5pdGlhbGl6YXRpb25Db25maWd1cmF0aW9uPzogSW5pdGlhbGl6YXRpb25Db25maWd1cmF0aW9uXG5BY2tub3dsZWRnZUZsb3c/OiBBY2tub3dsZWRnZUZsb3dcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFsYXJtIHN0YXRlLiBUaGUgY29uZmlndXJhdGlvbiBhcHBsaWVzIHRvIGFsbCBhbGFybXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYmFzZWQgb24gdGhpcyBhbGFybSBtb2RlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXphdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgdmFsdWUgbXVzdCBiZSBUUlVFIG9yIEZBTFNFLiBJZiBGQUxTRSwgYWxsIGFsYXJtIGluc3RhbmNlcyBjcmVhdGVkIGJhc2VkIG9uIHRoZSBhbGFybSBtb2RlbCBhcmUgYWN0aXZhdGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBUUlVFLlxuICovXG5EaXNhYmxlZE9uSW5pdGlhbGl6YXRpb246IChib29sZWFuICYgc3RyaW5nKVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0byBnZXQgbm90aWZpZWQgZm9yIGFsYXJtIHN0YXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNrbm93bGVkZ2VGbG93IHtcbi8qKlxuICogVGhlIHZhbHVlIG11c3QgYmUgVFJVRSBvciBGQUxTRS4gSWYgVFJVRSwgeW91IHJlY2VpdmUgYSBub3RpZmljYXRpb24gd2hlbiB0aGUgYWxhcm0gc3RhdGUgY2hhbmdlcy4gWW91IG11c3QgY2hvb3NlIHRvIGFja25vd2xlZGdlIHRoZSBub3RpZmljYXRpb24gYmVmb3JlIHRoZSBhbGFybSBzdGF0ZSBjYW4gcmV0dXJuIHRvIE5PUk1BTC4gSWYgRkFMU0UsIHlvdSB3b24ndCByZWNlaXZlIG5vdGlmaWNhdGlvbnMuIFRoZSBhbGFybSBhdXRvbWF0aWNhbGx5IGNoYW5nZXMgdG8gdGhlIE5PUk1BTCBzdGF0ZSB3aGVuIHRoZSBpbnB1dCBwcm9wZXJ0eSB2YWx1ZSByZXR1cm5zIHRvIHRoZSBzcGVjaWZpZWQgcmFuZ2UuXG4gKi9cbkVuYWJsZWQ/OiAoYm9vbGVhbiAmIHN0cmluZylcbn1cbi8qKlxuICogVGFncyB0byBiZSBhcHBsaWVkIHRvIElucHV0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIEtleSBvZiB0aGUgVGFnLlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBWYWx1ZSBvZiB0aGUgVGFnLlxuICovXG5WYWx1ZTogc3RyaW5nXG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWlvdGV2ZW50cy1hbGFybW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWlvdGV2ZW50cy1hbGFybW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNwZWNpZmllcyBvbmUgb3IgbW9yZSBzdXBwb3J0ZWQgYWN0aW9ucyB0byByZWNlaXZlIG5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgYWxhcm0gc3RhdGUgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IHR5cGUgQWxhcm1BY3Rpb25zID0gQWxhcm1BY3Rpb25bXVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYWxhcm0gbW9kZWwgdG8gbW9uaXRvciBhbiBJVEUgaW5wdXQgYXR0cmlidXRlLiBZb3UgY2FuIHVzZSB0aGUgYWxhcm0gdG8gZ2V0IG5vdGlmaWVkIHdoZW4gdGhlIHZhbHVlIGlzIG91dHNpZGUgYSBzcGVjaWZpZWQgcmFuZ2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NyZWF0ZSBhbiBhbGFybSBtb2RlbF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdGV2ZW50cy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvY3JlYXRlLWFsYXJtcy5odG1sKSBpbiB0aGUgKkRldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19JT1RFVkVOVFNfQUxBUk1NT0RFTCB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBhbGFybSBtb2RlbC5cbiAqL1xuQWxhcm1Nb2RlbE5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBhbGFybSBtb2RlbC5cbiAqL1xuQWxhcm1Nb2RlbERlc2NyaXB0aW9uPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBUk4gb2YgdGhlIElBTSByb2xlIHRoYXQgYWxsb3dzIHRoZSBhbGFybSB0byBwZXJmb3JtIGFjdGlvbnMgYW5kIGFjY2VzcyBBV1MgcmVzb3VyY2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUmVzb3VyY2UgTmFtZXMgKEFSTnMpXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2VuZXJhbC9sYXRlc3QvZ3IvYXdzLWFybnMtYW5kLW5hbWVzcGFjZXMuaHRtbCkgaW4gdGhlICpHZW5lcmFsIFJlZmVyZW5jZSouXG4gKi9cblJvbGVBcm46IHN0cmluZ1xuLyoqXG4gKiBBbiBpbnB1dCBhdHRyaWJ1dGUgdXNlZCBhcyBhIGtleSB0byBjcmVhdGUgYW4gYWxhcm0uIElURSByb3V0ZXMgW2lucHV0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdGV2ZW50cy9sYXRlc3QvYXBpcmVmZXJlbmNlL0FQSV9JbnB1dC5odG1sKSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkgdG8gdGhlIGFsYXJtLlxuICovXG5LZXk/OiBzdHJpbmdcbi8qKlxuICogQSBub24tbmVnYXRpdmUgaW50ZWdlciB0aGF0IHJlZmxlY3RzIHRoZSBzZXZlcml0eSBsZXZlbCBvZiB0aGUgYWxhcm0uXG4gKi9cblNldmVyaXR5PzogbnVtYmVyXG5BbGFybVJ1bGU6IEFsYXJtUnVsZVxuQWxhcm1FdmVudEFjdGlvbnM/OiBBbGFybUV2ZW50QWN0aW9uc1xuQWxhcm1DYXBhYmlsaXRpZXM/OiBBbGFybUNhcGFiaWxpdGllc1xuLyoqXG4gKiBBIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIHRoYXQgY29udGFpbiBtZXRhZGF0YSBmb3IgdGhlIGFsYXJtIG1vZGVsLiBUaGUgdGFncyBoZWxwIHlvdSBtYW5hZ2UgdGhlIGFsYXJtIG1vZGVsLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtUYWdnaW5nIHlvdXIgcmVzb3VyY2VzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW90ZXZlbnRzL2xhdGVzdC9kZXZlbG9wZXJndWlkZS90YWdnaW5nLWlvdGV2ZW50cy5odG1sKSBpbiB0aGUgKkRldmVsb3BlciBHdWlkZSouXG4gKiAgWW91IGNhbiBjcmVhdGUgdXAgdG8gNTAgdGFncyBmb3Igb25lIGFsYXJtIG1vZGVsLlxuICovXG5UYWdzPzogVGFnW11cbn1cbi8qKlxuICogRGVmaW5lcyB3aGVuIHlvdXIgYWxhcm0gaXMgaW52b2tlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGFybVJ1bGUge1xuU2ltcGxlUnVsZT86IFNpbXBsZVJ1bGVcbn1cbi8qKlxuICogQSBydWxlIHRoYXQgY29tcGFyZXMgYW4gaW5wdXQgcHJvcGVydHkgdmFsdWUgdG8gYSB0aHJlc2hvbGQgdmFsdWUgd2l0aCBhIGNvbXBhcmlzb24gb3BlcmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlUnVsZSB7XG4vKipcbiAqIFRoZSB2YWx1ZSBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yLiBZb3UgY2FuIHNwZWNpZnkgYW4gSVRFIGlucHV0IGF0dHJpYnV0ZSBhcyBhbiBpbnB1dCBwcm9wZXJ0eS5cbiAqL1xuSW5wdXRQcm9wZXJ0eTogc3RyaW5nXG4vKipcbiAqIFRoZSBjb21wYXJpc29uIG9wZXJhdG9yLlxuICovXG5Db21wYXJpc29uT3BlcmF0b3I6IChcIkdSRUFURVJcIiB8IFwiR1JFQVRFUl9PUl9FUVVBTFwiIHwgXCJMRVNTXCIgfCBcIkxFU1NfT1JfRVFVQUxcIiB8IFwiRVFVQUxcIiB8IFwiTk9UX0VRVUFMXCIpXG4vKipcbiAqIFRoZSB2YWx1ZSBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvci4gWW91IGNhbiBlbnRlciBhIG51bWJlciBvciBzcGVjaWZ5IGFuIElURSBpbnB1dCBhdHRyaWJ1dGUuXG4gKi9cblRocmVzaG9sZDogc3RyaW5nXG59XG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBvciBtb3JlIGFsYXJtIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1FdmVudEFjdGlvbnMge1xuQWxhcm1BY3Rpb25zPzogQWxhcm1BY3Rpb25zXG59XG4vKipcbiAqIFNwZWNpZmllcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBhY3Rpb25zIHRvIHJlY2VpdmUgbm90aWZpY2F0aW9ucyB3aGVuIHRoZSBhbGFybSBzdGF0ZSBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsYXJtQWN0aW9uIHtcbkR5bmFtb0RCPzogRHluYW1vREJcbkR5bmFtb0RCdjI/OiBEeW5hbW9EQnYyXG5GaXJlaG9zZT86IEZpcmVob3NlXG5Jb3RFdmVudHM/OiBJb3RFdmVudHNcbklvdFNpdGVXaXNlPzogSW90U2l0ZVdpc2VcbklvdFRvcGljUHVibGlzaD86IElvdFRvcGljUHVibGlzaFxuTGFtYmRhPzogTGFtYmRhXG5TbnM/OiBTbnNcblNxcz86IFNxc1xufVxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byB3cml0ZSB0byB0aGUgQW1hem9uIER5bmFtb0RCIHRhYmxlIHRoYXQgeW91IGNyZWF0ZWQuIFRoZSBzdGFuZGFyZCBhY3Rpb24gcGF5bG9hZCBjb250YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXRlY3RvciBtb2RlbCBpbnN0YW5jZSBhbmQgdGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBhY3Rpb24uIFlvdSBjYW4gY3VzdG9taXplIHRoZSBbcGF5bG9hZF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdGV2ZW50cy9sYXRlc3QvYXBpcmVmZXJlbmNlL0FQSV9QYXlsb2FkLmh0bWwpLiBPbmUgY29sdW1uIG9mIHRoZSBEeW5hbW9EQiB0YWJsZSByZWNlaXZlcyBhbGwgYXR0cmlidXRlLXZhbHVlIHBhaXJzIGluIHRoZSBwYXlsb2FkIHRoYXQgeW91IHNwZWNpZnkuXG4gKiAgWW91IG11c3QgdXNlIGV4cHJlc3Npb25zIGZvciBhbGwgcGFyYW1ldGVycyBpbiBgYER5bmFtb0RCQWN0aW9uYGAuIFRoZSBleHByZXNzaW9ucyBhY2NlcHQgbGl0ZXJhbHMsIG9wZXJhdG9ycywgZnVuY3Rpb25zLCByZWZlcmVuY2VzLCBhbmQgc3Vic3RpdHV0aW9uIHRlbXBsYXRlcy5cbiAqICAgKipFeGFtcGxlcyoqXG4gKiAgKyAgRm9yIGxpdGVyYWwgdmFsdWVzLCB0aGUgZXhwcmVzc2lvbnMgbXVzdCBjb250YWluIHNpbmdsZSBxdW90ZXMuIEZvciBleGFtcGxlLCB0aGUgdmFsdWUgZm9yIHRoZSBgYGhhc2hLZXlUeXBlYGAgcGFyYW1ldGVyIGNhbiBiZSBgYCdTVFJJTkcnYGAuXG4gKiAgICsgIEZvciByZWZlcmVuY2VzLCB5b3UgbXVzdCBzcGVjaWZ5IGVpdGhlciB2YXJpYWJsZXMgb3IgaW5wdXQgdmFsdWVzLiBGb3IgZXhhbXBsZSwgdGhlIHZhbHVlIGZvciB0aGUgYGBoYXNoS2V5RmllbGRgYCBwYXJhbWV0ZXIgY2FuIGJlIGBgJGlucHV0LkdyZWVuaG91c2VJbnB1dC5uYW1lYGAuXG4gKiAgICsgIEZvciBhIHN1YnN0aXR1dGlvbiB0ZW1wbGF0ZSwgeW91IG11c3QgdXNlIGBgJHt9YGAsIGFuZCB0aGUgdGVtcGxhdGUgbXVzdCBiZSBpbiBzaW5nbGUgcXVvdGVzLiBBIHN1YnN0aXR1dGlvbiB0ZW1wbGF0ZSBjYW4gYWxzbyBjb250YWluIGEgY29tYmluYXRpb24gb2YgbGl0ZXJhbHMsIG9wZXJhdG9ycywgZnVuY3Rpb25zLCByZWZlcmVuY2VzLCBhbmQgc3Vic3RpdHV0aW9uIHRlbXBsYXRlcy5cbiAqICBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHRoZSB2YWx1ZSBmb3IgdGhlIGBgaGFzaEtleVZhbHVlYGAgcGFyYW1ldGVyIHVzZXMgYSBzdWJzdGl0dXRpb24gdGVtcGxhdGUuIFxuICogICBgYCckeyRpbnB1dC5HcmVlbmhvdXNlSW5wdXQudGVtcGVyYXR1cmUgKiA2IC8gNSArIDMyfSBpbiBGYWhyZW5oZWl0J2BgIFxuICogICArICBGb3IgYSBzdHJpbmcgY29uY2F0ZW5hdGlvbiwgeW91IG11c3QgdXNlIGBgK2BgLiBBIHN0cmluZyBjb25jYXRlbmF0aW9uIGNhbiBhbHNvIGNvbnRhaW4gYSBjb21iaW5hdGlvbiBvZiBsaXRlcmFscywgb3BlcmF0b3JzLCBmdW5jdGlvbnMsIHJlZmVyZW5jZXMsIGFuZCBzdWJzdGl0dXRpb24gdGVtcGxhdGVzLlxuICogIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIHZhbHVlIGZvciB0aGUgYGB0YWJsZU5hbWVgYCBwYXJhbWV0ZXIgdXNlcyBhIHN0cmluZyBjb25jYXRlbmF0aW9uLiBcbiAqICAgYGAnR3JlZW5ob3VzZVRlbXBlcmF0dXJlVGFibGUgJyArICRpbnB1dC5HcmVlbmhvdXNlSW5wdXQuZGF0ZWBgIFxuICogICBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFeHByZXNzaW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdGV2ZW50cy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvaW90ZXZlbnRzLWV4cHJlc3Npb25zLmh0bWwpIGluIHRoZSAqRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBJZiB0aGUgZGVmaW5lZCBwYXlsb2FkIHR5cGUgaXMgYSBzdHJpbmcsIGBgRHluYW1vREJBY3Rpb25gYCB3cml0ZXMgbm9uLUpTT04gZGF0YSB0byB0aGUgRHluYW1vREIgdGFibGUgYXMgYmluYXJ5IGRhdGEuIFRoZSBEeW5hbW9EQiBjb25zb2xlIGRpc3BsYXlzIHRoZSBkYXRhIGFzIEJhc2U2NC1lbmNvZGVkIHRleHQuIFRoZSB2YWx1ZSBmb3IgdGhlIGBgcGF5bG9hZEZpZWxkYGAgcGFyYW1ldGVyIGlzIGBgPHBheWxvYWQtZmllbGQ+X3Jhd2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtb0RCIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGhhc2gga2V5IChhbHNvIGNhbGxlZCB0aGUgcGFydGl0aW9uIGtleSkuIFRoZSBgYGhhc2hLZXlGaWVsZGBgIHZhbHVlIG11c3QgbWF0Y2ggdGhlIHBhcnRpdGlvbiBrZXkgb2YgdGhlIHRhcmdldCBEeW5hbW9EQiB0YWJsZS5cbiAqL1xuSGFzaEtleUZpZWxkOiBzdHJpbmdcbi8qKlxuICogVGhlIGRhdGEgdHlwZSBmb3IgdGhlIGhhc2gga2V5IChhbHNvIGNhbGxlZCB0aGUgcGFydGl0aW9uIGtleSkuIFlvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAqICAgKyAgIGBgJ1NUUklORydgYCAtIFRoZSBoYXNoIGtleSBpcyBhIHN0cmluZy5cbiAqICAgKyAgIGBgJ05VTUJFUidgYCAtIFRoZSBoYXNoIGtleSBpcyBhIG51bWJlci5cbiAqICAgXG4gKiAgSWYgeW91IGRvbid0IHNwZWNpZnkgYGBoYXNoS2V5VHlwZWBgLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBgYCdTVFJJTkcnYGAuXG4gKi9cbkhhc2hLZXlUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgaGFzaCBrZXkgKGFsc28gY2FsbGVkIHRoZSBwYXJ0aXRpb24ga2V5KS5cbiAqL1xuSGFzaEtleVZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHR5cGUgb2Ygb3BlcmF0aW9uIHRvIHBlcmZvcm0uIFlvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHZhbHVlczogXG4gKiAgICsgICBgYCdJTlNFUlQnYGAgLSBJbnNlcnQgZGF0YSBhcyBhIG5ldyBpdGVtIGludG8gdGhlIER5bmFtb0RCIHRhYmxlLiBUaGlzIGl0ZW0gdXNlcyB0aGUgc3BlY2lmaWVkIGhhc2gga2V5IGFzIGEgcGFydGl0aW9uIGtleS4gSWYgeW91IHNwZWNpZmllZCBhIHJhbmdlIGtleSwgdGhlIGl0ZW0gdXNlcyB0aGUgcmFuZ2Uga2V5IGFzIGEgc29ydCBrZXkuXG4gKiAgICsgICBgYCdVUERBVEUnYGAgLSBVcGRhdGUgYW4gZXhpc3RpbmcgaXRlbSBvZiB0aGUgRHluYW1vREIgdGFibGUgd2l0aCBuZXcgZGF0YS4gVGhpcyBpdGVtJ3MgcGFydGl0aW9uIGtleSBtdXN0IG1hdGNoIHRoZSBzcGVjaWZpZWQgaGFzaCBrZXkuIElmIHlvdSBzcGVjaWZpZWQgYSByYW5nZSBrZXksIHRoZSByYW5nZSBrZXkgbXVzdCBtYXRjaCB0aGUgaXRlbSdzIHNvcnQga2V5LlxuICogICArICAgYGAnREVMRVRFJ2BgIC0gRGVsZXRlIGFuIGV4aXN0aW5nIGl0ZW0gb2YgdGhlIER5bmFtb0RCIHRhYmxlLiBUaGlzIGl0ZW0ncyBwYXJ0aXRpb24ga2V5IG11c3QgbWF0Y2ggdGhlIHNwZWNpZmllZCBoYXNoIGtleS4gSWYgeW91IHNwZWNpZmllZCBhIHJhbmdlIGtleSwgdGhlIHJhbmdlIGtleSBtdXN0IG1hdGNoIHRoZSBpdGVtJ3Mgc29ydCBrZXkuXG4gKiAgIFxuICogIElmIHlvdSBkb24ndCBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyLCBJVEUgdHJpZ2dlcnMgdGhlIGBgJ0lOU0VSVCdgYCBvcGVyYXRpb24uXG4gKi9cbk9wZXJhdGlvbj86IHN0cmluZ1xuUGF5bG9hZD86IFBheWxvYWRcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIER5bmFtb0RCIGNvbHVtbiB0aGF0IHJlY2VpdmVzIHRoZSBhY3Rpb24gcGF5bG9hZC5cbiAqICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGlzIHBhcmFtZXRlciwgdGhlIG5hbWUgb2YgdGhlIER5bmFtb0RCIGNvbHVtbiBpcyBgYHBheWxvYWRgYC5cbiAqL1xuUGF5bG9hZEZpZWxkPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSByYW5nZSBrZXkgKGFsc28gY2FsbGVkIHRoZSBzb3J0IGtleSkuIFRoZSBgYHJhbmdlS2V5RmllbGRgYCB2YWx1ZSBtdXN0IG1hdGNoIHRoZSBzb3J0IGtleSBvZiB0aGUgdGFyZ2V0IER5bmFtb0RCIHRhYmxlLlxuICovXG5SYW5nZUtleUZpZWxkPzogc3RyaW5nXG4vKipcbiAqIFRoZSBkYXRhIHR5cGUgZm9yIHRoZSByYW5nZSBrZXkgKGFsc28gY2FsbGVkIHRoZSBzb3J0IGtleSksIFlvdSBjYW4gc3BlY2lmeSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAqICAgKyAgIGBgJ1NUUklORydgYCAtIFRoZSByYW5nZSBrZXkgaXMgYSBzdHJpbmcuXG4gKiAgICsgICBgYCdOVU1CRVInYGAgLSBUaGUgcmFuZ2Uga2V5IGlzIG51bWJlci5cbiAqICAgXG4gKiAgSWYgeW91IGRvbid0IHNwZWNpZnkgYGByYW5nZUtleUZpZWxkYGAsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgJ1NUUklORydgYC5cbiAqL1xuUmFuZ2VLZXlUeXBlPzogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgcmFuZ2Uga2V5IChhbHNvIGNhbGxlZCB0aGUgc29ydCBrZXkpLlxuICovXG5SYW5nZUtleVZhbHVlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBEeW5hbW9EQiB0YWJsZS4gVGhlIGBgdGFibGVOYW1lYGAgdmFsdWUgbXVzdCBtYXRjaCB0aGUgdGFibGUgbmFtZSBvZiB0aGUgdGFyZ2V0IER5bmFtb0RCIHRhYmxlLlxuICovXG5UYWJsZU5hbWU6IHN0cmluZ1xufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gY29uZmlndXJlIHRoZSBwYXlsb2FkLlxuICogIEJ5IGRlZmF1bHQsIElURSBnZW5lcmF0ZXMgYSBzdGFuZGFyZCBwYXlsb2FkIGluIEpTT04gZm9yIGFueSBhY3Rpb24uIFRoaXMgYWN0aW9uIHBheWxvYWQgY29udGFpbnMgYWxsIGF0dHJpYnV0ZS12YWx1ZSBwYWlycyB0aGF0IGhhdmUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXRlY3RvciBtb2RlbCBpbnN0YW5jZSBhbmQgdGhlIGV2ZW50IHRyaWdnZXJlZCB0aGUgYWN0aW9uLiBUbyBjb25maWd1cmUgdGhlIGFjdGlvbiBwYXlsb2FkLCB5b3UgY2FuIHVzZSBgYGNvbnRlbnRFeHByZXNzaW9uYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZCB7XG4vKipcbiAqIFRoZSBjb250ZW50IG9mIHRoZSBwYXlsb2FkLiBZb3UgY2FuIHVzZSBhIHN0cmluZyBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMgcXVvdGVkIHN0cmluZ3MgKGBgJzxzdHJpbmc+J2BgKSwgdmFyaWFibGVzIChgYCR2YXJpYWJsZS48dmFyaWFibGUtbmFtZT5gYCksIGlucHV0IHZhbHVlcyAoYGAkaW5wdXQuPGlucHV0LW5hbWU+LjxwYXRoLXRvLWRhdHVtPmBgKSwgc3RyaW5nIGNvbmNhdGVuYXRpb25zLCBhbmQgcXVvdGVkIHN0cmluZ3MgdGhhdCBjb250YWluIGBgJHt9YGAgYXMgdGhlIGNvbnRlbnQuIFRoZSByZWNvbW1lbmRlZCBtYXhpbXVtIHNpemUgb2YgYSBjb250ZW50IGV4cHJlc3Npb24gaXMgMSBLQi5cbiAqL1xuQ29udGVudEV4cHJlc3Npb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHBheWxvYWQgdHlwZSBjYW4gYmUgZWl0aGVyIGBgU1RSSU5HYGAgb3IgYGBKU09OYGAuXG4gKi9cblR5cGU6IHN0cmluZ1xufVxuLyoqXG4gKiBEZWZpbmVzIGFuIGFjdGlvbiB0byB3cml0ZSB0byB0aGUgQW1hem9uIER5bmFtb0RCIHRhYmxlIHRoYXQgeW91IGNyZWF0ZWQuIFRoZSBkZWZhdWx0IGFjdGlvbiBwYXlsb2FkIGNvbnRhaW5zIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGVjdG9yIG1vZGVsIGluc3RhbmNlIGFuZCB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvbi4gWW91IGNhbiBjdXN0b21pemUgdGhlIFtwYXlsb2FkXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW90ZXZlbnRzL2xhdGVzdC9hcGlyZWZlcmVuY2UvQVBJX1BheWxvYWQuaHRtbCkuIEEgc2VwYXJhdGUgY29sdW1uIG9mIHRoZSBEeW5hbW9EQiB0YWJsZSByZWNlaXZlcyBvbmUgYXR0cmlidXRlLXZhbHVlIHBhaXIgaW4gdGhlIHBheWxvYWQgdGhhdCB5b3Ugc3BlY2lmeS5cbiAqICBZb3UgbXVzdCB1c2UgZXhwcmVzc2lvbnMgZm9yIGFsbCBwYXJhbWV0ZXJzIGluIGBgRHluYW1vREJ2MkFjdGlvbmBgLiBUaGUgZXhwcmVzc2lvbnMgYWNjZXB0IGxpdGVyYWxzLCBvcGVyYXRvcnMsIGZ1bmN0aW9ucywgcmVmZXJlbmNlcywgYW5kIHN1YnN0aXR1dGlvbiB0ZW1wbGF0ZXMuXG4gKiAgICoqRXhhbXBsZXMqKlxuICogICsgIEZvciBsaXRlcmFsIHZhbHVlcywgdGhlIGV4cHJlc3Npb25zIG11c3QgY29udGFpbiBzaW5nbGUgcXVvdGVzLiBGb3IgZXhhbXBsZSwgdGhlIHZhbHVlIGZvciB0aGUgYGB0YWJsZU5hbWVgYCBwYXJhbWV0ZXIgY2FuIGJlIGBgJ0dyZWVuaG91c2VUZW1wZXJhdHVyZVRhYmxlJ2BgLlxuICogICArICBGb3IgcmVmZXJlbmNlcywgeW91IG11c3Qgc3BlY2lmeSBlaXRoZXIgdmFyaWFibGVzIG9yIGlucHV0IHZhbHVlcy4gRm9yIGV4YW1wbGUsIHRoZSB2YWx1ZSBmb3IgdGhlIGBgdGFibGVOYW1lYGAgcGFyYW1ldGVyIGNhbiBiZSBgYCR2YXJpYWJsZS5kZGJ0YWJsZU5hbWVgYC5cbiAqICAgKyAgRm9yIGEgc3Vic3RpdHV0aW9uIHRlbXBsYXRlLCB5b3UgbXVzdCB1c2UgYGAke31gYCwgYW5kIHRoZSB0ZW1wbGF0ZSBtdXN0IGJlIGluIHNpbmdsZSBxdW90ZXMuIEEgc3Vic3RpdHV0aW9uIHRlbXBsYXRlIGNhbiBhbHNvIGNvbnRhaW4gYSBjb21iaW5hdGlvbiBvZiBsaXRlcmFscywgb3BlcmF0b3JzLCBmdW5jdGlvbnMsIHJlZmVyZW5jZXMsIGFuZCBzdWJzdGl0dXRpb24gdGVtcGxhdGVzLlxuICogIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIHZhbHVlIGZvciB0aGUgYGBjb250ZW50RXhwcmVzc2lvbmBgIHBhcmFtZXRlciBpbiBgYFBheWxvYWRgYCB1c2VzIGEgc3Vic3RpdHV0aW9uIHRlbXBsYXRlLiBcbiAqICAgYGAne1xcXCJzZW5zb3JJRFxcXCI6IFxcXCIkeyRpbnB1dC5HcmVlbmhvdXNlSW5wdXQuc2Vuc29yX2lkfVxcXCIsIFxcXCJ0ZW1wZXJhdHVyZVxcXCI6IFxcXCIkeyRpbnB1dC5HcmVlbmhvdXNlSW5wdXQudGVtcGVyYXR1cmUgKiA5IC8gNSArIDMyfVxcXCJ9J2BgIFxuICogICArICBGb3IgYSBzdHJpbmcgY29uY2F0ZW5hdGlvbiwgeW91IG11c3QgdXNlIGBgK2BgLiBBIHN0cmluZyBjb25jYXRlbmF0aW9uIGNhbiBhbHNvIGNvbnRhaW4gYSBjb21iaW5hdGlvbiBvZiBsaXRlcmFscywgb3BlcmF0b3JzLCBmdW5jdGlvbnMsIHJlZmVyZW5jZXMsIGFuZCBzdWJzdGl0dXRpb24gdGVtcGxhdGVzLlxuICogIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIHZhbHVlIGZvciB0aGUgYGB0YWJsZU5hbWVgYCBwYXJhbWV0ZXIgdXNlcyBhIHN0cmluZyBjb25jYXRlbmF0aW9uLiBcbiAqICAgYGAnR3JlZW5ob3VzZVRlbXBlcmF0dXJlVGFibGUgJyArICRpbnB1dC5HcmVlbmhvdXNlSW5wdXQuZGF0ZWBgIFxuICogICBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFeHByZXNzaW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2lvdGV2ZW50cy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvaW90ZXZlbnRzLWV4cHJlc3Npb25zLmh0bWwpIGluIHRoZSAqRGV2ZWxvcGVyIEd1aWRlKi5cbiAqICBUaGUgdmFsdWUgZm9yIHRoZSBgYHR5cGVgYCBwYXJhbWV0ZXIgaW4gYGBQYXlsb2FkYGAgbXVzdCBiZSBgYEpTT05gYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEeW5hbW9EQnYyIHtcblBheWxvYWQ/OiBQYXlsb2FkMVxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgRHluYW1vREIgdGFibGUuXG4gKi9cblRhYmxlTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBjb25maWd1cmUgdGhlIHBheWxvYWQuXG4gKiAgQnkgZGVmYXVsdCwgSVRFIGdlbmVyYXRlcyBhIHN0YW5kYXJkIHBheWxvYWQgaW4gSlNPTiBmb3IgYW55IGFjdGlvbi4gVGhpcyBhY3Rpb24gcGF5bG9hZCBjb250YWlucyBhbGwgYXR0cmlidXRlLXZhbHVlIHBhaXJzIHRoYXQgaGF2ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGVjdG9yIG1vZGVsIGluc3RhbmNlIGFuZCB0aGUgZXZlbnQgdHJpZ2dlcmVkIHRoZSBhY3Rpb24uIFRvIGNvbmZpZ3VyZSB0aGUgYWN0aW9uIHBheWxvYWQsIHlvdSBjYW4gdXNlIGBgY29udGVudEV4cHJlc3Npb25gYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkMSB7XG4vKipcbiAqIFRoZSBjb250ZW50IG9mIHRoZSBwYXlsb2FkLiBZb3UgY2FuIHVzZSBhIHN0cmluZyBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMgcXVvdGVkIHN0cmluZ3MgKGBgJzxzdHJpbmc+J2BgKSwgdmFyaWFibGVzIChgYCR2YXJpYWJsZS48dmFyaWFibGUtbmFtZT5gYCksIGlucHV0IHZhbHVlcyAoYGAkaW5wdXQuPGlucHV0LW5hbWU+LjxwYXRoLXRvLWRhdHVtPmBgKSwgc3RyaW5nIGNvbmNhdGVuYXRpb25zLCBhbmQgcXVvdGVkIHN0cmluZ3MgdGhhdCBjb250YWluIGBgJHt9YGAgYXMgdGhlIGNvbnRlbnQuIFRoZSByZWNvbW1lbmRlZCBtYXhpbXVtIHNpemUgb2YgYSBjb250ZW50IGV4cHJlc3Npb24gaXMgMSBLQi5cbiAqL1xuQ29udGVudEV4cHJlc3Npb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHBheWxvYWQgdHlwZSBjYW4gYmUgZWl0aGVyIGBgU1RSSU5HYGAgb3IgYGBKU09OYGAuXG4gKi9cblR5cGU6IHN0cmluZ1xufVxuLyoqXG4gKiBTZW5kcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV0ZWN0b3IgbW9kZWwgaW5zdGFuY2UgYW5kIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uIHRvIGFuIEFtYXpvbiBLaW5lc2lzIERhdGEgRmlyZWhvc2UgZGVsaXZlcnkgc3RyZWFtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVob3NlIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIEtpbmVzaXMgRGF0YSBGaXJlaG9zZSBkZWxpdmVyeSBzdHJlYW0gd2hlcmUgdGhlIGRhdGEgaXMgd3JpdHRlbi5cbiAqL1xuRGVsaXZlcnlTdHJlYW1OYW1lOiBzdHJpbmdcblBheWxvYWQ/OiBQYXlsb2FkMlxuLyoqXG4gKiBBIGNoYXJhY3RlciBzZXBhcmF0b3IgdGhhdCBpcyB1c2VkIHRvIHNlcGFyYXRlIHJlY29yZHMgd3JpdHRlbiB0byB0aGUgS2luZXNpcyBEYXRhIEZpcmVob3NlIGRlbGl2ZXJ5IHN0cmVhbS4gVmFsaWQgdmFsdWVzIGFyZTogJ1xcbicgKG5ld2xpbmUpLCAnXFx0JyAodGFiKSwgJ1xcclxcbicgKFdpbmRvd3MgbmV3bGluZSksICcsJyAoY29tbWEpLlxuICovXG5TZXBhcmF0b3I/OiBzdHJpbmdcbn1cbi8qKlxuICogWW91IGNhbiBjb25maWd1cmUgdGhlIGFjdGlvbiBwYXlsb2FkIHdoZW4geW91IHNlbmQgYSBtZXNzYWdlIHRvIGFuIEFtYXpvbiBEYXRhIEZpcmVob3NlIGRlbGl2ZXJ5IHN0cmVhbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkMiB7XG4vKipcbiAqIFRoZSBjb250ZW50IG9mIHRoZSBwYXlsb2FkLiBZb3UgY2FuIHVzZSBhIHN0cmluZyBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMgcXVvdGVkIHN0cmluZ3MgKGBgJzxzdHJpbmc+J2BgKSwgdmFyaWFibGVzIChgYCR2YXJpYWJsZS48dmFyaWFibGUtbmFtZT5gYCksIGlucHV0IHZhbHVlcyAoYGAkaW5wdXQuPGlucHV0LW5hbWU+LjxwYXRoLXRvLWRhdHVtPmBgKSwgc3RyaW5nIGNvbmNhdGVuYXRpb25zLCBhbmQgcXVvdGVkIHN0cmluZ3MgdGhhdCBjb250YWluIGBgJHt9YGAgYXMgdGhlIGNvbnRlbnQuIFRoZSByZWNvbW1lbmRlZCBtYXhpbXVtIHNpemUgb2YgYSBjb250ZW50IGV4cHJlc3Npb24gaXMgMSBLQi5cbiAqL1xuQ29udGVudEV4cHJlc3Npb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHBheWxvYWQgdHlwZSBjYW4gYmUgZWl0aGVyIGBgU1RSSU5HYGAgb3IgYGBKU09OYGAuXG4gKi9cblR5cGU6IHN0cmluZ1xufVxuLyoqXG4gKiBTZW5kcyBhbiBJVEUgaW5wdXQsIHBhc3NpbmcgaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGVjdG9yIG1vZGVsIGluc3RhbmNlIGFuZCB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJb3RFdmVudHMge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgSVRFIGlucHV0IHdoZXJlIHRoZSBkYXRhIGlzIHNlbnQuXG4gKi9cbklucHV0TmFtZTogc3RyaW5nXG5QYXlsb2FkPzogUGF5bG9hZDNcbn1cbi8qKlxuICogWW91IGNhbiBjb25maWd1cmUgdGhlIGFjdGlvbiBwYXlsb2FkIHdoZW4geW91IHNlbmQgYSBtZXNzYWdlIHRvIGFuIElURSBpbnB1dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkMyB7XG4vKipcbiAqIFRoZSBjb250ZW50IG9mIHRoZSBwYXlsb2FkLiBZb3UgY2FuIHVzZSBhIHN0cmluZyBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMgcXVvdGVkIHN0cmluZ3MgKGBgJzxzdHJpbmc+J2BgKSwgdmFyaWFibGVzIChgYCR2YXJpYWJsZS48dmFyaWFibGUtbmFtZT5gYCksIGlucHV0IHZhbHVlcyAoYGAkaW5wdXQuPGlucHV0LW5hbWU+LjxwYXRoLXRvLWRhdHVtPmBgKSwgc3RyaW5nIGNvbmNhdGVuYXRpb25zLCBhbmQgcXVvdGVkIHN0cmluZ3MgdGhhdCBjb250YWluIGBgJHt9YGAgYXMgdGhlIGNvbnRlbnQuIFRoZSByZWNvbW1lbmRlZCBtYXhpbXVtIHNpemUgb2YgYSBjb250ZW50IGV4cHJlc3Npb24gaXMgMSBLQi5cbiAqL1xuQ29udGVudEV4cHJlc3Npb246IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIHBheWxvYWQgdHlwZSBjYW4gYmUgZWl0aGVyIGBgU1RSSU5HYGAgb3IgYGBKU09OYGAuXG4gKi9cblR5cGU6IHN0cmluZ1xufVxuLyoqXG4gKiBTZW5kcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV0ZWN0b3IgbW9kZWwgaW5zdGFuY2UgYW5kIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWN0aW9uIHRvIGEgc3BlY2lmaWVkIGFzc2V0IHByb3BlcnR5IGluIElUU1cuXG4gKiAgWW91IG11c3QgdXNlIGV4cHJlc3Npb25zIGZvciBhbGwgcGFyYW1ldGVycyBpbiBgYElvdFNpdGVXaXNlQWN0aW9uYGAuIFRoZSBleHByZXNzaW9ucyBhY2NlcHQgbGl0ZXJhbHMsIG9wZXJhdG9ycywgZnVuY3Rpb25zLCByZWZlcmVuY2VzLCBhbmQgc3Vic3RpdHV0aW9ucyB0ZW1wbGF0ZXMuXG4gKiAgICoqRXhhbXBsZXMqKlxuICogICsgIEZvciBsaXRlcmFsIHZhbHVlcywgdGhlIGV4cHJlc3Npb25zIG11c3QgY29udGFpbiBzaW5nbGUgcXVvdGVzLiBGb3IgZXhhbXBsZSwgdGhlIHZhbHVlIGZvciB0aGUgYGBwcm9wZXJ0eUFsaWFzYGAgcGFyYW1ldGVyIGNhbiBiZSBgYCcvY29tcGFueS93aW5kZmFybS8zL3R1cmJpbmUvNy90ZW1wZXJhdHVyZSdgYC5cbiAqICAgKyAgRm9yIHJlZmVyZW5jZXMsIHlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIHZhcmlhYmxlcyBvciBpbnB1dCB2YWx1ZXMuIEZvciBleGFtcGxlLCB0aGUgdmFsdWUgZm9yIHRoZSBgYGFzc2V0SWRgYCBwYXJhbWV0ZXIgY2FuIGJlIGBgJGlucHV0LlR1cmJpbmVJbnB1dC5hc3NldElkMWBgLlxuICogICArICBGb3IgYSBzdWJzdGl0dXRpb24gdGVtcGxhdGUsIHlvdSBtdXN0IHVzZSBgYCR7fWBgLCBhbmQgdGhlIHRlbXBsYXRlIG11c3QgYmUgaW4gc2luZ2xlIHF1b3Rlcy4gQSBzdWJzdGl0dXRpb24gdGVtcGxhdGUgY2FuIGFsc28gY29udGFpbiBhIGNvbWJpbmF0aW9uIG9mIGxpdGVyYWxzLCBvcGVyYXRvcnMsIGZ1bmN0aW9ucywgcmVmZXJlbmNlcywgYW5kIHN1YnN0aXR1dGlvbiB0ZW1wbGF0ZXMuXG4gKiAgSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCB0aGUgdmFsdWUgZm9yIHRoZSBgYHByb3BlcnR5QWxpYXNgYCBwYXJhbWV0ZXIgdXNlcyBhIHN1YnN0aXR1dGlvbiB0ZW1wbGF0ZS4gXG4gKiAgIGBgJ2NvbXBhbnkvd2luZGZhcm0vJHskaW5wdXQuVGVtcGVyYXR1cmVJbnB1dC5zZW5zb3JEYXRhLndpbmRmYXJtSUR9L3R1cmJpbmUvICR7JGlucHV0LlRlbXBlcmF0dXJlSW5wdXQuc2Vuc29yRGF0YS50dXJiaW5lSUR9L3RlbXBlcmF0dXJlJ2BgIFxuICogICBcbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGVpdGhlciBgYHByb3BlcnR5QWxpYXNgYCBvciBib3RoIGBgYXNzZXRJZGBgIGFuZCBgYHByb3BlcnR5SWRgYCB0byBpZGVudGlmeSB0aGUgdGFyZ2V0IGFzc2V0IHByb3BlcnR5IGluIElUU1cuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRXhwcmVzc2lvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pb3RldmVudHMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2lvdGV2ZW50cy1leHByZXNzaW9ucy5odG1sKSBpbiB0aGUgKkRldmVsb3BlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW90U2l0ZVdpc2Uge1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGFzc2V0IHRoYXQgaGFzIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuXG4gKi9cbkFzc2V0SWQ/OiBzdHJpbmdcbi8qKlxuICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBlbnRyeS4gWW91IGNhbiB1c2UgdGhlIGVudHJ5IElEIHRvIHRyYWNrIHdoaWNoIGRhdGEgZW50cnkgY2F1c2VzIGFuIGVycm9yIGluIGNhc2Ugb2YgZmFpbHVyZS4gVGhlIGRlZmF1bHQgaXMgYSBuZXcgdW5pcXVlIGlkZW50aWZpZXIuXG4gKi9cbkVudHJ5SWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFsaWFzIG9mIHRoZSBhc3NldCBwcm9wZXJ0eS5cbiAqL1xuUHJvcGVydHlBbGlhcz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgb2YgdGhlIGFzc2V0IHByb3BlcnR5LlxuICovXG5Qcm9wZXJ0eUlkPzogc3RyaW5nXG5Qcm9wZXJ0eVZhbHVlPzogQXNzZXRQcm9wZXJ0eVZhbHVlXG59XG4vKipcbiAqIFRoZSB2YWx1ZSB0byBzZW5kIHRvIHRoZSBhc3NldCBwcm9wZXJ0eS4gVGhpcyB2YWx1ZSBjb250YWlucyB0aW1lc3RhbXAsIHF1YWxpdHksIGFuZCB2YWx1ZSAoVFFWKSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldFByb3BlcnR5VmFsdWUge1xuLyoqXG4gKiBUaGUgcXVhbGl0eSBvZiB0aGUgYXNzZXQgcHJvcGVydHkgdmFsdWUuIFRoZSB2YWx1ZSBtdXN0IGJlIGBgJ0dPT0QnYGAsIGBgJ0JBRCdgYCwgb3IgYGAnVU5DRVJUQUlOJ2BgLlxuICovXG5RdWFsaXR5Pzogc3RyaW5nXG5UaW1lc3RhbXA/OiBBc3NldFByb3BlcnR5VGltZXN0YW1wXG5WYWx1ZTogQXNzZXRQcm9wZXJ0eVZhcmlhbnRcbn1cbi8qKlxuICogVGhlIHRpbWVzdGFtcCBhc3NvY2lhdGVkIHdpdGggdGhlIGFzc2V0IHByb3BlcnR5IHZhbHVlLiBUaGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBldmVudCB0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcGVydHlUaW1lc3RhbXAge1xuLyoqXG4gKiBUaGUgbmFub3NlY29uZCBvZmZzZXQgY29udmVydGVkIGZyb20gYGB0aW1lSW5TZWNvbmRzYGAuIFRoZSB2YWxpZCByYW5nZSBpcyBiZXR3ZWVuIDAtOTk5OTk5OTk5LlxuICovXG5PZmZzZXRJbk5hbm9zPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0aW1lc3RhbXAsIGluIHNlY29uZHMsIGluIHRoZSBVbml4IGVwb2NoIGZvcm1hdC4gVGhlIHZhbGlkIHJhbmdlIGlzIGJldHdlZW4gMS0zMTU1Njg4OTg2NDQwMzE5OS5cbiAqL1xuVGltZUluU2Vjb25kczogc3RyaW5nXG59XG4vKipcbiAqIFRoZSB2YWx1ZSB0byBzZW5kIHRvIGFuIGFzc2V0IHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcGVydHlWYXJpYW50IHtcbi8qKlxuICogVGhlIGFzc2V0IHByb3BlcnR5IHZhbHVlIGlzIGEgQm9vbGVhbiB2YWx1ZSB0aGF0IG11c3QgYmUgYGAnVFJVRSdgYCBvciBgYCdGQUxTRSdgYC4gWW91IG11c3QgdXNlIGFuIGV4cHJlc3Npb24sIGFuZCB0aGUgZXZhbHVhdGVkIHJlc3VsdCBzaG91bGQgYmUgYSBCb29sZWFuIHZhbHVlLlxuICovXG5Cb29sZWFuVmFsdWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFzc2V0IHByb3BlcnR5IHZhbHVlIGlzIGEgZG91YmxlLiBZb3UgbXVzdCB1c2UgYW4gZXhwcmVzc2lvbiwgYW5kIHRoZSBldmFsdWF0ZWQgcmVzdWx0IHNob3VsZCBiZSBhIGRvdWJsZS5cbiAqL1xuRG91YmxlVmFsdWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIGFzc2V0IHByb3BlcnR5IHZhbHVlIGlzIGFuIGludGVnZXIuIFlvdSBtdXN0IHVzZSBhbiBleHByZXNzaW9uLCBhbmQgdGhlIGV2YWx1YXRlZCByZXN1bHQgc2hvdWxkIGJlIGFuIGludGVnZXIuXG4gKi9cbkludGVnZXJWYWx1ZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgYXNzZXQgcHJvcGVydHkgdmFsdWUgaXMgYSBzdHJpbmcuIFlvdSBtdXN0IHVzZSBhbiBleHByZXNzaW9uLCBhbmQgdGhlIGV2YWx1YXRlZCByZXN1bHQgc2hvdWxkIGJlIGEgc3RyaW5nLlxuICovXG5TdHJpbmdWYWx1ZT86IHN0cmluZ1xufVxuLyoqXG4gKiBJbmZvcm1hdGlvbiByZXF1aXJlZCB0byBwdWJsaXNoIHRoZSBNUVRUIG1lc3NhZ2UgdGhyb3VnaCB0aGUgSW9UIG1lc3NhZ2UgYnJva2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElvdFRvcGljUHVibGlzaCB7XG4vKipcbiAqIFRoZSBNUVRUIHRvcGljIG9mIHRoZSBtZXNzYWdlLiBZb3UgY2FuIHVzZSBhIHN0cmluZyBleHByZXNzaW9uIHRoYXQgaW5jbHVkZXMgdmFyaWFibGVzIChgYCR2YXJpYWJsZS48dmFyaWFibGUtbmFtZT5gYCkgYW5kIGlucHV0IHZhbHVlcyAoYGAkaW5wdXQuPGlucHV0LW5hbWU+LjxwYXRoLXRvLWRhdHVtPmBgKSBhcyB0aGUgdG9waWMgc3RyaW5nLlxuICovXG5NcXR0VG9waWM6IHN0cmluZ1xuUGF5bG9hZD86IFBheWxvYWQ0XG59XG4vKipcbiAqIFlvdSBjYW4gY29uZmlndXJlIHRoZSBhY3Rpb24gcGF5bG9hZCB3aGVuIHlvdSBwdWJsaXNoIGEgbWVzc2FnZSB0byBhbiBJb1RDb3JlIHRvcGljLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBheWxvYWQ0IHtcbi8qKlxuICogVGhlIGNvbnRlbnQgb2YgdGhlIHBheWxvYWQuIFlvdSBjYW4gdXNlIGEgc3RyaW5nIGV4cHJlc3Npb24gdGhhdCBpbmNsdWRlcyBxdW90ZWQgc3RyaW5ncyAoYGAnPHN0cmluZz4nYGApLCB2YXJpYWJsZXMgKGBgJHZhcmlhYmxlLjx2YXJpYWJsZS1uYW1lPmBgKSwgaW5wdXQgdmFsdWVzIChgYCRpbnB1dC48aW5wdXQtbmFtZT4uPHBhdGgtdG8tZGF0dW0+YGApLCBzdHJpbmcgY29uY2F0ZW5hdGlvbnMsIGFuZCBxdW90ZWQgc3RyaW5ncyB0aGF0IGNvbnRhaW4gYGAke31gYCBhcyB0aGUgY29udGVudC4gVGhlIHJlY29tbWVuZGVkIG1heGltdW0gc2l6ZSBvZiBhIGNvbnRlbnQgZXhwcmVzc2lvbiBpcyAxIEtCLlxuICovXG5Db250ZW50RXhwcmVzc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgcGF5bG9hZCB0eXBlIGNhbiBiZSBlaXRoZXIgYGBTVFJJTkdgYCBvciBgYEpTT05gYC5cbiAqL1xuVHlwZTogc3RyaW5nXG59XG4vKipcbiAqIENhbGxzIGEgTGFtYmRhIGZ1bmN0aW9uLCBwYXNzaW5nIGluIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXRlY3RvciBtb2RlbCBpbnN0YW5jZSBhbmQgdGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBhY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhIHtcbi8qKlxuICogVGhlIEFSTiBvZiB0aGUgTGFtYmRhIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0ZWQuXG4gKi9cbkZ1bmN0aW9uQXJuOiBzdHJpbmdcblBheWxvYWQ/OiBQYXlsb2FkNVxufVxuLyoqXG4gKiBZb3UgY2FuIGNvbmZpZ3VyZSB0aGUgYWN0aW9uIHBheWxvYWQgd2hlbiB5b3Ugc2VuZCBhIG1lc3NhZ2UgdG8gYSBMYW1iZGEgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZDUge1xuLyoqXG4gKiBUaGUgY29udGVudCBvZiB0aGUgcGF5bG9hZC4gWW91IGNhbiB1c2UgYSBzdHJpbmcgZXhwcmVzc2lvbiB0aGF0IGluY2x1ZGVzIHF1b3RlZCBzdHJpbmdzIChgYCc8c3RyaW5nPidgYCksIHZhcmlhYmxlcyAoYGAkdmFyaWFibGUuPHZhcmlhYmxlLW5hbWU+YGApLCBpbnB1dCB2YWx1ZXMgKGBgJGlucHV0LjxpbnB1dC1uYW1lPi48cGF0aC10by1kYXR1bT5gYCksIHN0cmluZyBjb25jYXRlbmF0aW9ucywgYW5kIHF1b3RlZCBzdHJpbmdzIHRoYXQgY29udGFpbiBgYCR7fWBgIGFzIHRoZSBjb250ZW50LiBUaGUgcmVjb21tZW5kZWQgbWF4aW11bSBzaXplIG9mIGEgY29udGVudCBleHByZXNzaW9uIGlzIDEgS0IuXG4gKi9cbkNvbnRlbnRFeHByZXNzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBwYXlsb2FkIHR5cGUgY2FuIGJlIGVpdGhlciBgYFNUUklOR2BgIG9yIGBgSlNPTmBgLlxuICovXG5UeXBlOiBzdHJpbmdcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gcHVibGlzaCB0aGUgQW1hem9uIFNOUyBtZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNucyB7XG5QYXlsb2FkPzogUGF5bG9hZDZcbi8qKlxuICogVGhlIEFSTiBvZiB0aGUgQW1hem9uIFNOUyB0YXJnZXQgd2hlcmUgdGhlIG1lc3NhZ2UgaXMgc2VudC5cbiAqL1xuVGFyZ2V0QXJuOiBzdHJpbmdcbn1cbi8qKlxuICogWW91IGNhbiBjb25maWd1cmUgdGhlIGFjdGlvbiBwYXlsb2FkIHdoZW4geW91IHNlbmQgYSBtZXNzYWdlIGFzIGFuIEFtYXpvbiBTTlMgcHVzaCBub3RpZmljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZDYge1xuLyoqXG4gKiBUaGUgY29udGVudCBvZiB0aGUgcGF5bG9hZC4gWW91IGNhbiB1c2UgYSBzdHJpbmcgZXhwcmVzc2lvbiB0aGF0IGluY2x1ZGVzIHF1b3RlZCBzdHJpbmdzIChgYCc8c3RyaW5nPidgYCksIHZhcmlhYmxlcyAoYGAkdmFyaWFibGUuPHZhcmlhYmxlLW5hbWU+YGApLCBpbnB1dCB2YWx1ZXMgKGBgJGlucHV0LjxpbnB1dC1uYW1lPi48cGF0aC10by1kYXR1bT5gYCksIHN0cmluZyBjb25jYXRlbmF0aW9ucywgYW5kIHF1b3RlZCBzdHJpbmdzIHRoYXQgY29udGFpbiBgYCR7fWBgIGFzIHRoZSBjb250ZW50LiBUaGUgcmVjb21tZW5kZWQgbWF4aW11bSBzaXplIG9mIGEgY29udGVudCBleHByZXNzaW9uIGlzIDEgS0IuXG4gKi9cbkNvbnRlbnRFeHByZXNzaW9uOiBzdHJpbmdcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBwYXlsb2FkIHR5cGUgY2FuIGJlIGVpdGhlciBgYFNUUklOR2BgIG9yIGBgSlNPTmBgLlxuICovXG5UeXBlOiBzdHJpbmdcbn1cbi8qKlxuICogU2VuZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGVjdG9yIG1vZGVsIGluc3RhbmNlIGFuZCB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvbiB0byBhbiBBbWF6b24gU1FTIHF1ZXVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNxcyB7XG5QYXlsb2FkPzogUGF5bG9hZDdcbi8qKlxuICogVGhlIFVSTCBvZiB0aGUgU1FTIHF1ZXVlIHdoZXJlIHRoZSBkYXRhIGlzIHdyaXR0ZW4uXG4gKi9cblF1ZXVlVXJsOiBzdHJpbmdcbi8qKlxuICogU2V0IHRoaXMgdG8gVFJVRSBpZiB5b3Ugd2FudCB0aGUgZGF0YSB0byBiZSBiYXNlLTY0IGVuY29kZWQgYmVmb3JlIGl0IGlzIHdyaXR0ZW4gdG8gdGhlIHF1ZXVlLiBPdGhlcndpc2UsIHNldCB0aGlzIHRvIEZBTFNFLlxuICovXG5Vc2VCYXNlNjQ/OiBib29sZWFuXG59XG4vKipcbiAqIFlvdSBjYW4gY29uZmlndXJlIHRoZSBhY3Rpb24gcGF5bG9hZCB3aGVuIHlvdSBzZW5kIGEgbWVzc2FnZSB0byBhbiBBbWF6b24gU1FTIHF1ZXVlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBheWxvYWQ3IHtcbi8qKlxuICogVGhlIGNvbnRlbnQgb2YgdGhlIHBheWxvYWQuIFlvdSBjYW4gdXNlIGEgc3RyaW5nIGV4cHJlc3Npb24gdGhhdCBpbmNsdWRlcyBxdW90ZWQgc3RyaW5ncyAoYGAnPHN0cmluZz4nYGApLCB2YXJpYWJsZXMgKGBgJHZhcmlhYmxlLjx2YXJpYWJsZS1uYW1lPmBgKSwgaW5wdXQgdmFsdWVzIChgYCRpbnB1dC48aW5wdXQtbmFtZT4uPHBhdGgtdG8tZGF0dW0+YGApLCBzdHJpbmcgY29uY2F0ZW5hdGlvbnMsIGFuZCBxdW90ZWQgc3RyaW5ncyB0aGF0IGNvbnRhaW4gYGAke31gYCBhcyB0aGUgY29udGVudC4gVGhlIHJlY29tbWVuZGVkIG1heGltdW0gc2l6ZSBvZiBhIGNvbnRlbnQgZXhwcmVzc2lvbiBpcyAxIEtCLlxuICovXG5Db250ZW50RXhwcmVzc2lvbjogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgcGF5bG9hZCB0eXBlIGNhbiBiZSBlaXRoZXIgYGBTVFJJTkdgYCBvciBgYEpTT05gYC5cbiAqL1xuVHlwZTogc3RyaW5nXG59XG4vKipcbiAqIENvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIG9mIGFsYXJtIHN0YXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1DYXBhYmlsaXRpZXMge1xuSW5pdGlhbGl6YXRpb25Db25maWd1cmF0aW9uPzogSW5pdGlhbGl6YXRpb25Db25maWd1cmF0aW9uXG5BY2tub3dsZWRnZUZsb3c/OiBBY2tub3dsZWRnZUZsb3dcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFsYXJtIHN0YXRlLiBUaGUgY29uZmlndXJhdGlvbiBhcHBsaWVzIHRvIGFsbCBhbGFybXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYmFzZWQgb24gdGhpcyBhbGFybSBtb2RlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXphdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgdmFsdWUgbXVzdCBiZSBgYFRSVUVgYCBvciBgYEZBTFNFYGAuIElmIGBgRkFMU0VgYCwgYWxsIGFsYXJtIGluc3RhbmNlcyBjcmVhdGVkIGJhc2VkIG9uIHRoZSBhbGFybSBtb2RlbCBhcmUgYWN0aXZhdGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYFRSVUVgYC5cbiAqL1xuRGlzYWJsZWRPbkluaXRpYWxpemF0aW9uOiAoYm9vbGVhbiAmIHN0cmluZylcbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gZ2V0IG5vdGlmaWVkIGZvciBhbGFybSBzdGF0ZSBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFja25vd2xlZGdlRmxvdyB7XG4vKipcbiAqIFRoZSB2YWx1ZSBtdXN0IGJlIGBgVFJVRWBgIG9yIGBgRkFMU0VgYC4gSWYgYGBUUlVFYGAsIHlvdSByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGFsYXJtIHN0YXRlIGNoYW5nZXMuIFlvdSBtdXN0IGNob29zZSB0byBhY2tub3dsZWRnZSB0aGUgbm90aWZpY2F0aW9uIGJlZm9yZSB0aGUgYWxhcm0gc3RhdGUgY2FuIHJldHVybiB0byBgYE5PUk1BTGBgLiBJZiBgYEZBTFNFYGAsIHlvdSB3b24ndCByZWNlaXZlIG5vdGlmaWNhdGlvbnMuIFRoZSBhbGFybSBhdXRvbWF0aWNhbGx5IGNoYW5nZXMgdG8gdGhlIGBgTk9STUFMYGAgc3RhdGUgd2hlbiB0aGUgaW5wdXQgcHJvcGVydHkgdmFsdWUgcmV0dXJucyB0byB0aGUgc3BlY2lmaWVkIHJhbmdlLlxuICovXG5FbmFibGVkPzogKGJvb2xlYW4gJiBzdHJpbmcpXG59XG4vKipcbiAqIE1ldGFkYXRhIHRoYXQgY2FuIGJlIHVzZWQgdG8gbWFuYWdlIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUgdGFnJ3Mga2V5LlxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFnJ3MgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbiJdfQ==
|