terraconstructs 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +899 -409
- package/lib/asset-staging.js +1 -1
- package/lib/aws/arn.js +1 -1
- package/lib/aws/aws-asset-manager.js +1 -1
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.d.ts +16 -0
- package/lib/aws/aws-stack.js +14 -2
- package/lib/aws/aws-tags.js +2 -2
- package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/lambda.js +1 -1
- package/lib/aws/cloudwatch/actions/sns.js +1 -1
- package/lib/aws/cloudwatch/actions/ssm.js +2 -2
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.js +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +1 -1
- package/lib/aws/cloudwatch/dashboard.js +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.js +1 -1
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.js +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +1 -1
- package/lib/aws/cloudwatch/metric.js +2 -2
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.js +1 -1
- package/lib/aws/cloudwatch/query-definition.js +2 -2
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +1 -1
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.js +1 -1
- package/lib/aws/compute/access-log.js +4 -4
- package/lib/aws/compute/activity.js +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +1 -1
- package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
- package/lib/aws/compute/alb/application-listener-rule.js +1 -1
- package/lib/aws/compute/alb/application-listener.js +1 -1
- package/lib/aws/compute/alb/application-load-balancer.js +1 -1
- package/lib/aws/compute/alb/application-target-group.js +1 -1
- package/lib/aws/compute/alb/conditions.js +1 -1
- package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
- package/lib/aws/compute/alb/trust-store.js +1 -1
- package/lib/aws/compute/api-definition.js +3 -3
- package/lib/aws/compute/api-key.js +2 -2
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
- package/lib/aws/compute/authorizer.js +1 -1
- package/lib/aws/compute/authorizers/identity-source.js +1 -1
- package/lib/aws/compute/authorizers/lambda.js +2 -2
- package/lib/aws/compute/base-path-mapping.js +1 -1
- package/lib/aws/compute/base-scalable-attribute.js +1 -1
- package/lib/aws/compute/bastion-host.js +1 -1
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +2 -2
- package/lib/aws/compute/client-vpn-route.js +2 -2
- package/lib/aws/compute/code.js +8 -8
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.js +1 -1
- package/lib/aws/compute/cors.js +1 -1
- package/lib/aws/compute/deployment.js +1 -1
- package/lib/aws/compute/domain-name.js +1 -1
- package/lib/aws/compute/event-invoke-config.js +1 -1
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +1 -1
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +1 -1
- package/lib/aws/compute/fields.js +4 -4
- package/lib/aws/compute/function-alias.js +1 -1
- package/lib/aws/compute/function-base.js +2 -2
- package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs/function.js +1 -1
- package/lib/aws/compute/function-url.js +1 -1
- package/lib/aws/compute/function.js +1 -1
- package/lib/aws/compute/gateway-response.js +2 -2
- package/lib/aws/compute/handler.js +1 -1
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.js +1 -1
- package/lib/aws/compute/integration.js +1 -1
- package/lib/aws/compute/integrations/aws.js +1 -1
- package/lib/aws/compute/integrations/http.js +1 -1
- package/lib/aws/compute/integrations/lambda.js +1 -1
- package/lib/aws/compute/integrations/mock.js +1 -1
- package/lib/aws/compute/integrations/stepfunctions.js +1 -1
- package/lib/aws/compute/ip-addresses.js +2 -2
- package/lib/aws/compute/ipam.js +1 -1
- package/lib/aws/compute/key-pair.js +1 -1
- package/lib/aws/compute/lambda-api.js +1 -1
- package/lib/aws/compute/launch-template.js +2 -2
- package/lib/aws/compute/lb-shared/base-listener.js +1 -1
- package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
- package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
- package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
- package/lib/aws/compute/lb-targets/alb-target.js +3 -3
- package/lib/aws/compute/lb-targets/instance-target.js +2 -2
- package/lib/aws/compute/lb-targets/ip-target.js +1 -1
- package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
- package/lib/aws/compute/load-balancer.js +3 -3
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
- package/lib/aws/compute/machine-image/common.js +1 -1
- package/lib/aws/compute/machine-image/machine-image.js +8 -8
- package/lib/aws/compute/method.js +1 -1
- package/lib/aws/compute/model.js +3 -3
- package/lib/aws/compute/nat.js +5 -5
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.js +3 -3
- package/lib/aws/compute/nlb/network-listener-action.js +1 -1
- package/lib/aws/compute/nlb/network-listener.js +1 -1
- package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
- package/lib/aws/compute/nlb/network-target-group.js +1 -1
- package/lib/aws/compute/peer.js +1 -1
- package/lib/aws/compute/placement-group.js +1 -1
- package/lib/aws/compute/port.js +1 -1
- package/lib/aws/compute/prefix-list.js +1 -1
- package/lib/aws/compute/requestvalidator.js +1 -1
- package/lib/aws/compute/resource.js +3 -3
- package/lib/aws/compute/restapi.js +3 -3
- package/lib/aws/compute/route.js +10 -9
- package/lib/aws/compute/runtime.js +1 -1
- package/lib/aws/compute/scalable-target.js +1 -1
- package/lib/aws/compute/schedule.js +1 -1
- package/lib/aws/compute/security-group.js +39 -13
- package/lib/aws/compute/stage.js +2 -2
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.js +4 -4
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +1 -1
- package/lib/aws/compute/states/fail.js +1 -1
- package/lib/aws/compute/states/map-base.js +1 -1
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +1 -1
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/step-scaling-action.js +1 -1
- package/lib/aws/compute/step-scaling-policy.js +1 -1
- package/lib/aws/compute/stepfunctions-api.js +1 -1
- package/lib/aws/compute/subnet-v2.js +2 -2
- package/lib/aws/compute/subnet.js +1 -1
- package/lib/aws/compute/target-tracking-scaling-policy.js +1 -1
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +1 -1
- package/lib/aws/compute/usage-plan.js +1 -1
- package/lib/aws/compute/user-data.js +3 -3
- package/lib/aws/compute/volume.js +2 -2
- package/lib/aws/compute/vpc-endpoint-service.js +1 -1
- package/lib/aws/compute/vpc-endpoint.js +6 -6
- package/lib/aws/compute/vpc-flow-logs.js +4 -4
- package/lib/aws/compute/vpc-link.js +1 -1
- package/lib/aws/compute/vpc-v2-base.js +1 -1
- package/lib/aws/compute/vpc-v2.js +2 -2
- package/lib/aws/compute/vpc.d.ts +47 -4
- package/lib/aws/compute/vpc.js +304 -148
- package/lib/aws/compute/vpn.js +3 -3
- package/lib/aws/context-provider.d.ts +117 -0
- package/lib/aws/context-provider.js +141 -0
- package/lib/aws/cx-api.d.ts +171 -0
- package/lib/aws/cx-api.js +23 -3
- package/lib/aws/edge/certificate.js +1 -1
- package/lib/aws/edge/distribution.js +3 -3
- package/lib/aws/edge/dns-alias-record-targets.js +6 -6
- package/lib/aws/edge/dns-record.js +13 -13
- package/lib/aws/edge/dns-zone.js +1 -1
- package/lib/aws/edge/function.js +2 -2
- package/lib/aws/edge/key-value-store.js +4 -4
- package/lib/aws/edge/origin.js +3 -3
- package/lib/aws/edge/response-headers-policy.js +1 -1
- package/lib/aws/encryption/alias.js +1 -1
- package/lib/aws/encryption/key.js +1 -1
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +3 -3
- package/lib/aws/iam/group.js +1 -1
- package/lib/aws/iam/instance-profile.js +1 -1
- package/lib/aws/iam/managed-policy.js +1 -1
- package/lib/aws/iam/oidc-provider.js +1 -1
- package/lib/aws/iam/policy-document.js +1 -1
- package/lib/aws/iam/policy-statement.js +1 -1
- package/lib/aws/iam/policy.js +1 -1
- package/lib/aws/iam/principals.js +20 -20
- package/lib/aws/iam/role.js +1 -1
- package/lib/aws/iam/saml-provider.js +2 -2
- package/lib/aws/iam/unknown-principal.js +1 -1
- package/lib/aws/iam/user.js +1 -1
- package/lib/aws/network/simple-ipv4-vpc.js +1 -1
- package/lib/aws/network/subnet-group.js +3 -3
- package/lib/aws/network/subnet.js +4 -4
- package/lib/aws/notify/archive.js +1 -1
- package/lib/aws/notify/connection.js +3 -3
- package/lib/aws/notify/event-bus.js +3 -3
- package/lib/aws/notify/event-pattern.js +1 -1
- package/lib/aws/notify/index.d.ts +1 -0
- package/lib/aws/notify/index.js +3 -1
- package/lib/aws/notify/input.js +2 -2
- package/lib/aws/notify/kinesis-stream.js +1 -1
- package/lib/aws/notify/notification-rule.js +1 -1
- package/lib/aws/notify/policy.js +1 -1
- package/lib/aws/notify/queue-base.js +1 -1
- package/lib/aws/notify/queue-policy.js +1 -1
- package/lib/aws/notify/queue.js +1 -1
- package/lib/aws/notify/resource-policy.js +1 -1
- package/lib/aws/notify/rule.js +1 -1
- package/lib/aws/notify/schedule.js +1 -1
- package/lib/aws/notify/sns-grants.generated.d.ts +39 -0
- package/lib/aws/notify/sns-grants.generated.js +77 -0
- package/lib/aws/notify/sqs-grants.generated.js +1 -1
- package/lib/aws/notify/subscription-filter.js +1 -1
- package/lib/aws/notify/subscription.d.ts +8 -2
- package/lib/aws/notify/subscription.js +6 -7
- package/lib/aws/notify/subscriptions/email.js +1 -1
- package/lib/aws/notify/subscriptions/lambda.js +1 -1
- package/lib/aws/notify/subscriptions/sms.js +1 -1
- package/lib/aws/notify/subscriptions/sqs.js +1 -1
- package/lib/aws/notify/subscriptions/url.js +1 -1
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +1 -1
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/notify/topic-base.d.ts +6 -0
- package/lib/aws/notify/topic-base.js +16 -19
- package/lib/aws/notify/topic.d.ts +29 -6
- package/lib/aws/notify/topic.js +50 -47
- package/lib/aws/storage/assets/image-asset.js +3 -3
- package/lib/aws/storage/assets/s3.js +1 -1
- package/lib/aws/storage/auth-token.js +2 -2
- package/lib/aws/storage/billing.js +1 -1
- package/lib/aws/storage/bucket-notifications.js +1 -1
- package/lib/aws/storage/bucket-policy.js +1 -1
- package/lib/aws/storage/bucket-source.js +1 -1
- package/lib/aws/storage/bucket.js +2 -2
- package/lib/aws/storage/capacity.js +1 -1
- package/lib/aws/storage/ecr-repository.js +3 -3
- package/lib/aws/storage/encryption.js +1 -1
- package/lib/aws/storage/notification-targets/function.js +1 -1
- package/lib/aws/storage/notification-targets/queue.js +1 -1
- package/lib/aws/storage/origin-access-identity.js +1 -1
- package/lib/aws/storage/parameter.js +2 -2
- package/lib/aws/storage/stream-grants.js +1 -1
- package/lib/aws/storage/table-grants.js +1 -1
- package/lib/aws/storage/table.js +3 -3
- package/lib/bundling.js +3 -3
- package/lib/construct-base.js +2 -2
- package/lib/duration.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/expiration.js +1 -1
- package/lib/fs/ignore.js +4 -4
- package/lib/fs/index.js +1 -1
- package/lib/size.js +1 -1
- package/lib/stack-base.js +1 -1
- package/lib/terra-func.js +1 -1
- package/lib/time-zone.js +1 -1
- package/package.json +3 -1
|
@@ -129,5 +129,5 @@ class PlacementGroup extends aws_construct_1.AwsConstructBase {
|
|
|
129
129
|
}
|
|
130
130
|
exports.PlacementGroup = PlacementGroup;
|
|
131
131
|
_a = JSII_RTTI_SYMBOL_1;
|
|
132
|
-
PlacementGroup[_a] = { fqn: "terraconstructs.aws.compute.PlacementGroup", version: "0.2.
|
|
132
|
+
PlacementGroup[_a] = { fqn: "terraconstructs.aws.compute.PlacementGroup", version: "0.2.4" };
|
|
133
133
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VtZW50LWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL3BsYWNlbWVudC1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1HQUFtRztBQUVuRyxzREFBcUQ7QUFFckQsb0RBSTBCO0FBMkcxQjs7R0FFRztBQUNILElBQVkseUJBZ0JYO0FBaEJELFdBQVkseUJBQXlCO0lBQ25DOzs7OztPQUtHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOzs7OztPQUtHO0lBQ0gsMENBQWEsQ0FBQTtBQUNmLENBQUMsRUFoQlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUFnQnBDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHNCQXdCWDtBQXhCRCxXQUFZLHNCQUFzQjtJQUNoQzs7Ozs7T0FLRztJQUNILDZDQUFtQixDQUFBO0lBRW5COzs7Ozs7O09BT0c7SUFDSCxpREFBdUIsQ0FBQTtJQUV2Qjs7O09BR0c7SUFDSCwyQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBeEJXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBd0JqQztBQUVEOzs7R0FHRztBQUNILE1BQWEsY0FDWCxTQUFRLGdDQUFnQjtJQUd4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDbEMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGtCQUEwQjtRQUUxQixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFBckM7O2dCQVNrQix1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztZQUMxRCxDQUFDO1lBVEMsSUFBVyxxQkFBcUI7Z0JBQzlCLE9BQU87b0JBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtpQkFDNUMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BDLENBQUM7U0FFRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFPRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUE2QixFQUFFO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sa0JBQWtCLEdBQ3RCLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTthQUN0QixDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxFQUFFLFFBQVEsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLEtBQUssQ0FDYixtQkFBbUIsRUFBRSwrREFBK0QsQ0FDckYsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNoRCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwRCxNQUFNLElBQUksS0FBSyxDQUNiLG1CQUFtQixFQUFFLDZEQUE2RCxDQUNuRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNkJBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNsRSxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMvQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksc0JBQXNCLENBQUMsT0FBTztTQUMxRCxDQUFDLENBQUM7UUFFSCx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNDLDhIQUE4SDtRQUM5SCxxREFBcUQ7UUFDckQsc0JBQXNCO1FBQ3RCLHFDQUFxQztRQUNyQyxxQ0FBcUM7UUFDckMsTUFBTTtJQUNSLENBQUM7O0FBM0ZILHdDQTRGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lYzIvbGliL3BsYWNlbWVudC1ncm91cC50c1xuXG5pbXBvcnQgeyBwbGFjZW1lbnRHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnRHcm91cE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBwbGFjZW1lbnQgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhY2VtZW50R3JvdXBOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGVyZSB5b3VyIGluc3RhbmNlcyBhcmUgcGxhY2VkIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIFBsYWNlbWVudEdyb3VwU3RyYXRlZ3lcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9wbGFjZW1lbnQtZ3JvdXBzLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGxhY2VtZW50R3JvdXAgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkgcGxhY2VtZW50R3JvdXBPdXRwdXRzOiBQbGFjZW1lbnRHcm91cE91dHB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgcGxhY2VtZW50IGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlbWVudEdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhcnRpdGlvbnMuIFZhbGlkIG9ubHkgd2hlbiBTdHJhdGVneSBpcyBzZXQgdG8gUEFSVElUSU9OLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBwYXJ0aXRpb25zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQbGFjZXMgaW5zdGFuY2VzIG9uIGRpc3RpbmN0IGhhcmR3YXJlLiBTcHJlYWQgcGxhY2VtZW50IGdyb3VwcyBhcmUgcmVjb21tZW5kZWQgZm9yIGFwcGxpY2F0aW9uc1xuICAgKiB0aGF0IGhhdmUgYSBzbWFsbCBudW1iZXIgb2YgY3JpdGljYWwgaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIGtlcHQgc2VwYXJhdGUgZnJvbSBlYWNoIG90aGVyLlxuICAgKiBMYXVuY2hpbmcgaW5zdGFuY2VzIGluIGEgc3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cCByZWR1Y2VzIHRoZSByaXNrIG9mIHNpbXVsdGFuZW91cyBmYWlsdXJlc1xuICAgKiB0aGF0IG1pZ2h0IG9jY3VyIHdoZW4gaW5zdGFuY2VzIHNoYXJlIHRoZSBzYW1lIGVxdWlwbWVudC5cbiAgICogU3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cHMgcHJvdmlkZSBhY2Nlc3MgdG8gZGlzdGluY3QgaGFyZHdhcmUsXG4gICAqIGFuZCBhcmUgdGhlcmVmb3JlIHN1aXRhYmxlIGZvciBtaXhpbmcgaW5zdGFuY2UgdHlwZXMgb3IgbGF1bmNoaW5nIGluc3RhbmNlcyBvdmVyIHRpbWUuXG4gICAqIElmIHlvdSBzdGFydCBvciBsYXVuY2ggYW4gaW5zdGFuY2UgaW4gYSBzcHJlYWQgcGxhY2VtZW50IGdyb3VwIGFuZCB0aGVyZSBpcyBpbnN1ZmZpY2llbnRcbiAgICogdW5pcXVlIGhhcmR3YXJlIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QsIHRoZSByZXF1ZXN0IGZhaWxzLiBBbWF6b24gRUMyIG1ha2VzIG1vcmUgZGlzdGluY3QgaGFyZHdhcmVcbiAgICogYXZhaWxhYmxlIG92ZXIgdGltZSwgc28geW91IGNhbiB0cnkgeW91ciByZXF1ZXN0IGFnYWluIGxhdGVyLlxuICAgKiBQbGFjZW1lbnQgZ3JvdXBzIGNhbiBzcHJlYWQgaW5zdGFuY2VzIGFjcm9zcyByYWNrcyBvciBob3N0cy5cbiAgICogWW91IGNhbiB1c2UgaG9zdCBsZXZlbCBzcHJlYWQgcGxhY2VtZW50IGdyb3VwcyBvbmx5IHdpdGggQVdTIE91dHBvc3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNwcmVhZCBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgc3ByZWFkTGV2ZWw/OiBQbGFjZW1lbnRHcm91cFNwcmVhZExldmVsO1xuXG4gIC8qKlxuICAgKiBXaGljaCBzdHJhdGVneSB0byB1c2Ugd2hlbiBsYXVuY2hpbmcgaW5zdGFuY2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYFBsYWNlbWVudEdyb3VwU3RyYXRlZ3kuUEFSVElUSU9OYCBpZiBgcGFydGl0aW9uc2AgaXMgZGVmaW5lZCwgYENMVVNURVJgIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyYXRlZ3k/OiBQbGFjZW1lbnRHcm91cFN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIFByb3BzIGZvciBhIFBsYWNlbWVudEdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VtZW50R3JvdXBQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoaXMgcGxhY2VtZW50IGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZ2VuZXJhdGVkIGJ5IENGTlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwbGFjZW1lbnRHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFydGl0aW9ucy4gVmFsaWQgb25seSB3aGVuIFN0cmF0ZWd5IGlzIHNldCB0byBwYXJ0aXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpdGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBsYWNlcyBpbnN0YW5jZXMgb24gZGlzdGluY3QgaGFyZHdhcmUuIFNwcmVhZCBwbGFjZW1lbnQgZ3JvdXBzIGFyZSByZWNvbW1lbmRlZCBmb3IgYXBwbGljYXRpb25zXG4gICAqIHRoYXQgaGF2ZSBhIHNtYWxsIG51bWJlciBvZiBjcml0aWNhbCBpbnN0YW5jZXMgdGhhdCBzaG91bGQgYmUga2VwdCBzZXBhcmF0ZSBmcm9tIGVhY2ggb3RoZXIuXG4gICAqIExhdW5jaGluZyBpbnN0YW5jZXMgaW4gYSBzcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwIHJlZHVjZXMgdGhlIHJpc2sgb2Ygc2ltdWx0YW5lb3VzIGZhaWx1cmVzXG4gICAqIHRoYXQgbWlnaHQgb2NjdXIgd2hlbiBpbnN0YW5jZXMgc2hhcmUgdGhlIHNhbWUgZXF1aXBtZW50LlxuICAgKiBTcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwcyBwcm92aWRlIGFjY2VzcyB0byBkaXN0aW5jdCBoYXJkd2FyZSxcbiAgICogYW5kIGFyZSB0aGVyZWZvcmUgc3VpdGFibGUgZm9yIG1peGluZyBpbnN0YW5jZSB0eXBlcyBvciBsYXVuY2hpbmcgaW5zdGFuY2VzIG92ZXIgdGltZS5cbiAgICogSWYgeW91IHN0YXJ0IG9yIGxhdW5jaCBhbiBpbnN0YW5jZSBpbiBhIHNwcmVhZCBwbGFjZW1lbnQgZ3JvdXAgYW5kIHRoZXJlIGlzIGluc3VmZmljaWVudFxuICAgKiB1bmlxdWUgaGFyZHdhcmUgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdCwgdGhlIHJlcXVlc3QgZmFpbHMuIEFtYXpvbiBFQzIgbWFrZXMgbW9yZSBkaXN0aW5jdCBoYXJkd2FyZVxuICAgKiBhdmFpbGFibGUgb3ZlciB0aW1lLCBzbyB5b3UgY2FuIHRyeSB5b3VyIHJlcXVlc3QgYWdhaW4gbGF0ZXIuXG4gICAqIFBsYWNlbWVudCBncm91cHMgY2FuIHNwcmVhZCBpbnN0YW5jZXMgYWNyb3NzIHJhY2tzIG9yIGhvc3RzLlxuICAgKiBZb3UgY2FuIHVzZSBob3N0IGxldmVsIHNwcmVhZCBwbGFjZW1lbnQgZ3JvdXBzIG9ubHkgd2l0aCBBV1MgT3V0cG9zdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3ByZWFkIGxldmVsXG4gICAqL1xuICByZWFkb25seSBzcHJlYWRMZXZlbD86IFBsYWNlbWVudEdyb3VwU3ByZWFkTGV2ZWw7XG5cbiAgLyoqXG4gICAqIFdoaWNoIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGxhdW5jaGluZyBpbnN0YW5jZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBgUGxhY2VtZW50R3JvdXBTdHJhdGVneS5QQVJUSVRJT05gIGlmIGBwYXJ0aXRpb25zYCBpcyBkZWZpbmVkLCBgQ0xVU1RFUmAgb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBzdHJhdGVneT86IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgdGhpcyBwbGFjZW1lbnQgZ3JvdXAgc3ByZWFkcyBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGVudW0gUGxhY2VtZW50R3JvdXBTcHJlYWRMZXZlbCB7XG4gIC8qKlxuICAgKiBIb3N0IHNwcmVhZCBsZXZlbCBwbGFjZW1lbnQgZ3JvdXBzIGFyZSBvbmx5IGF2YWlsYWJsZSB3aXRoIEFXUyBPdXRwb3N0cy5cbiAgICogRm9yIGhvc3Qgc3ByZWFkIGxldmVsIHBsYWNlbWVudCBncm91cHMsIHRoZXJlIGFyZSBubyByZXN0cmljdGlvbnMgZm9yIHJ1bm5pbmcgaW5zdGFuY2VzIHBlciBPdXRwb3N0cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9Vc2VyR3VpZGUvcGxhY2VtZW50LWdyb3Vwcy1vdXRwb3N0Lmh0bWxcbiAgICovXG4gIEhPU1QgPSBcImhvc3RcIixcblxuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhIHNlcGFyYXRlIHJhY2suXG4gICAqIEVhY2ggaGFzIGl0cyBvd24gbmV0d29yayBhbmQgcG93ZXIgc291cmNlLlxuICAgKiBBIHJhY2sgc3ByZWFkIHBsYWNlbWVudCBncm91cCBjYW4gc3BhbiBtdWx0aXBsZSBBdmFpbGFiaWxpdHkgWm9uZXMgaW4gdGhlIHNhbWUgUmVnaW9uLlxuICAgKiBGb3IgcmFjayBzcHJlYWQgbGV2ZWwgcGxhY2VtZW50IGdyb3VwcywgeW91IGNhbiBoYXZlIGEgbWF4aW11bSBvZiBzZXZlbiBydW5uaW5nIGluc3RhbmNlcyBwZXIgQXZhaWxhYmlsaXR5IFpvbmUgcGVyIGdyb3VwLlxuICAgKi9cbiAgUkFDSyA9IFwicmFja1wiLFxufVxuXG4vKipcbiAqIFdoaWNoIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGxhdW5jaGluZyBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGVudW0gUGxhY2VtZW50R3JvdXBTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBQYWNrcyBpbnN0YW5jZXMgY2xvc2UgdG9nZXRoZXIgaW5zaWRlIGFuIEF2YWlsYWJpbGl0eSBab25lLlxuICAgKiBUaGlzIHN0cmF0ZWd5IGVuYWJsZXMgd29ya2xvYWRzIHRvIGFjaGlldmUgdGhlIGxvdy1sYXRlbmN5IG5ldHdvcmtcbiAgICogcGVyZm9ybWFuY2UgbmVjZXNzYXJ5IGZvciB0aWdodGx5LWNvdXBsZWQgbm9kZS10by1ub2RlIGNvbW11bmljYXRpb24gdGhhdFxuICAgKiBpcyB0eXBpY2FsIG9mIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nIChIUEMpIGFwcGxpY2F0aW9ucy5cbiAgICovXG4gIENMVVNURVIgPSBcImNsdXN0ZXJcIixcblxuICAvKipcbiAgICogU3ByZWFkcyB5b3VyIGluc3RhbmNlcyBhY3Jvc3MgbG9naWNhbCBwYXJ0aXRpb25zIHN1Y2ggdGhhdCBncm91cHMgb2YgaW5zdGFuY2VzXG4gICAqIGluIG9uZSBwYXJ0aXRpb24gZG8gbm90IHNoYXJlIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHdpdGggZ3JvdXBzIG9mIGluc3RhbmNlc1xuICAgKiBpbiBkaWZmZXJlbnQgcGFydGl0aW9ucy5cbiAgICpcbiAgICogVGhpcyBzdHJhdGVneSBpcyB0eXBpY2FsbHkgdXNlZCBieSBsYXJnZSBkaXN0cmlidXRlZCBhbmQgcmVwbGljYXRlZCB3b3JrbG9hZHMsXG4gICAqIHN1Y2ggYXMgSGFkb29wLCBDYXNzYW5kcmEsIGFuZCBLYWZrYS5cbiAgICovXG4gIFBBUlRJVElPTiA9IFwicGFydGl0aW9uXCIsXG5cbiAgLyoqXG4gICAqIFN0cmljdGx5IHBsYWNlcyBhIHNtYWxsIGdyb3VwIG9mIGluc3RhbmNlcyBhY3Jvc3MgZGlzdGluY3QgdW5kZXJseWluZyBoYXJkd2FyZVxuICAgKiB0byByZWR1Y2UgY29ycmVsYXRlZCBmYWlsdXJlcy5cbiAgICovXG4gIFNQUkVBRCA9IFwic3ByZWFkXCIsXG59XG5cbi8qKlxuICogRGVmaW5lcyBhIHBsYWNlbWVudCBncm91cC4gUGxhY2VtZW50IGdyb3VwcyBnaXZlIHlvdSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gKiB3aGVyZSB5b3VyIGluc3RhbmNlcyBhcmUgcHJvdmlzaW9uZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbGFjZW1lbnRHcm91cFxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJUGxhY2VtZW50R3JvdXBcbntcbiAgLyoqXG4gICAqIEltcG9ydCBhIFBsYWNlbWVudEdyb3VwIGJ5IGl0cyBhcm5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBsYWNlbWVudEdyb3VwTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGxhY2VtZW50R3JvdXBOYW1lOiBzdHJpbmcsXG4gICk6IElQbGFjZW1lbnRHcm91cCB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElQbGFjZW1lbnRHcm91cCB7XG4gICAgICBwdWJsaWMgZ2V0IHBsYWNlbWVudEdyb3VwT3V0cHV0cygpOiBQbGFjZW1lbnRHcm91cE91dHB1dHMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlbWVudEdyb3VwTmFtZTogdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlbWVudEdyb3VwT3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyByZWFkb25seSBwbGFjZW1lbnRHcm91cE5hbWUgPSBwbGFjZW1lbnRHcm91cE5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogcGxhY2VtZW50R3JvdXAuUGxhY2VtZW50R3JvdXA7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBhcnRpdGlvbnM/OiBudW1iZXI7XG4gIHB1YmxpYyByZWFkb25seSBzcHJlYWRMZXZlbD86IFBsYWNlbWVudEdyb3VwU3ByZWFkTGV2ZWw7XG4gIHB1YmxpYyByZWFkb25seSBzdHJhdGVneT86IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3k7XG4gIHB1YmxpYyBnZXQgcGxhY2VtZW50R3JvdXBPdXRwdXRzKCk6IFBsYWNlbWVudEdyb3VwT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsYWNlbWVudEdyb3VwTmFtZTogdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VtZW50R3JvdXBPdXRwdXRzO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHBsYWNlbWVudEdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQbGFjZW1lbnRHcm91cFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICBjb25zdCBwbGFjZW1lbnRHcm91cE5hbWUgPVxuICAgICAgcHJvcHMucGxhY2VtZW50R3JvdXBOYW1lIHx8XG4gICAgICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wYXJ0aXRpb25zID0gcHJvcHMucGFydGl0aW9ucztcbiAgICB0aGlzLnNwcmVhZExldmVsID0gcHJvcHMuc3ByZWFkTGV2ZWw7XG4gICAgdGhpcy5zdHJhdGVneSA9IHByb3BzPy5zdHJhdGVneTtcblxuICAgIGlmICh0aGlzLnBhcnRpdGlvbnMgJiYgcHJvcHMuc3RyYXRlZ3kpIHtcbiAgICAgIGlmIChwcm9wcy5zdHJhdGVneSAhPT0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5QQVJUSVRJT04pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBQbGFjZW1lbnRHcm91cCAnJHtpZH0nIGNhbiBvbmx5IHNwZWNpZnkgJ3BhcnRpdGlvbnMnIHdpdGggdGhlICdQQVJUSVRJT04nIHN0cmF0ZWd5YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucGFydGl0aW9ucyAmJiAhcHJvcHMuc3RyYXRlZ3kpIHtcbiAgICAgIHRoaXMuc3RyYXRlZ3kgPSBQbGFjZW1lbnRHcm91cFN0cmF0ZWd5LlBBUlRJVElPTjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zcHJlYWRMZXZlbCkge1xuICAgICAgaWYgKCFwcm9wcy5zdHJhdGVneSkge1xuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5TUFJFQUQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJhdGVneSAhPT0gUGxhY2VtZW50R3JvdXBTdHJhdGVneS5TUFJFQUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBQbGFjZW1lbnRHcm91cCAnJHtpZH0nIGNhbiBvbmx5IHNwZWNpZnkgJ3NwcmVhZExldmVsJyB3aXRoIHRoZSAnU1BSRUFEJyBzdHJhdGVneWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBwbGFjZW1lbnRHcm91cC5QbGFjZW1lbnRHcm91cCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIG5hbWU6IHBsYWNlbWVudEdyb3VwTmFtZSxcbiAgICAgIHBhcnRpdGlvbkNvdW50OiB0aGlzLnBhcnRpdGlvbnMsXG4gICAgICBzcHJlYWRMZXZlbDogdGhpcy5zcHJlYWRMZXZlbCxcbiAgICAgIHN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5ID8/IFBsYWNlbWVudEdyb3VwU3RyYXRlZ3kuQ0xVU1RFUixcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IHVzZSBlbnZpcm9ubWVudC1zZW5zaXRpdmUgdG9rZW4gZm9yIHJlc291cmNlJ3MgXCJBUk5cIiBhdHRyaWJ1dGU/XG4gICAgdGhpcy5wbGFjZW1lbnRHcm91cE5hbWUgPSB0aGlzLnJlc291cmNlLmlkO1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL2EyYzYzM2YxZTY5ODI0OTQ5NmYxMTMzODMxMmFiNDJiZDdiMWU0ZjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvcmVzb3VyY2UudHMjTDI4OFxuICAgIC8vIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5uYW1lLCB7XG4gICAgLy8gICBzZXJ2aWNlOiBcImJhdGNoXCIsXG4gICAgLy8gICByZXNvdXJjZTogXCJjb21wdXRlLWVudmlyb25tZW50XCIsXG4gICAgLy8gICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIC8vIH0pO1xuICB9XG59XG4iXX0=
|
package/lib/aws/compute/port.js
CHANGED
|
@@ -349,7 +349,7 @@ class Port {
|
|
|
349
349
|
}
|
|
350
350
|
exports.Port = Port;
|
|
351
351
|
_a = JSII_RTTI_SYMBOL_1;
|
|
352
|
-
Port[_a] = { fqn: "terraconstructs.aws.compute.Port", version: "0.2.
|
|
352
|
+
Port[_a] = { fqn: "terraconstructs.aws.compute.Port", version: "0.2.4" };
|
|
353
353
|
/** Well-known SSH port (TCP 22) */
|
|
354
354
|
Port.SSH = Port.tcp(22);
|
|
355
355
|
/** Well-known SMTP port (TCP 25) */
|
|
@@ -110,5 +110,5 @@ class PrefixList extends PrefixListBase {
|
|
|
110
110
|
}
|
|
111
111
|
exports.PrefixList = PrefixList;
|
|
112
112
|
_a = JSII_RTTI_SYMBOL_1;
|
|
113
|
-
PrefixList[_a] = { fqn: "terraconstructs.aws.compute.PrefixList", version: "0.2.
|
|
113
|
+
PrefixList[_a] = { fqn: "terraconstructs.aws.compute.PrefixList", version: "0.2.4" };
|
|
114
114
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4LWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvcHJlZml4LWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrRkFBK0Y7QUFFL0Ysc0RBQTJEO0FBQzNELGlDQUE2QjtBQUU3QixvREFJMEI7QUE0QjFCOztHQUVHO0FBQ0gsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLCtCQUFjLENBQUE7SUFDZCwrQkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxhQUFhLDZCQUFiLGFBQWEsUUFHeEI7QUEyQ0Q7O0dBRUc7QUFDSCxNQUFlLGNBQWUsU0FBUSxnQ0FBZ0I7SUFDcEQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTztZQUNMLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBT0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxjQUFjO0lBQzVDOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDNUIsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE1BQU0sTUFBTyxTQUFRLGdDQUFnQjtZQUFyQzs7Z0JBU2tCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1lBQzlDLENBQUM7WUFUQyxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTztvQkFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQ2hDLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNoQyxDQUFDO1NBRUY7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBMENELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVB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TyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7SUFDbkQsQ0FBQzs7QUFqSUgsZ0NBa0lDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVjMi9saWIvcHJlZml4LWxpc3QudHNcblxuaW1wb3J0IHsgZWMyTWFuYWdlZFByZWZpeExpc3QgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHByZWZpeCBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVByZWZpeExpc3QgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIHN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkgcHJlZml4TGlzdE91dHB1dHM6IFByZWZpeExpc3RPdXRwdXRzO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgSVAgYWRkcmVzcyB0eXBlLlxuICovXG5leHBvcnQgZW51bSBBZGRyZXNzRmFtaWx5IHtcbiAgSVBfVjQgPSBcIklQdjRcIixcbiAgSVBfVjYgPSBcIklQdjZcIixcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCBhIHByZWZpeCBsaXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgZm9yIHRoZSBwcmVmaXggbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseS1jYWxjdWxhdGVkXG4gICAqL1xuICByZWFkb25seSBtYXhFbnRyaWVzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgcHJlZml4IGxpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFByb3BzIGV4dGVuZHMgUHJlZml4TGlzdE9wdGlvbnMsIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUgcHJlZml4IGxpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFkZHJlc3NGYW1pbHkuSVBfVjRcbiAgICovXG4gIHJlYWRvbmx5IGFkZHJlc3NGYW1pbHk/OiBBZGRyZXNzRmFtaWx5O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJlZml4IGxpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBhbiBleHBsaWNpdCBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4TGlzdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGVudHJpZXMgZm9yIHRoZSBwcmVmaXggbGlzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM/OiBlYzJNYW5hZ2VkUHJlZml4TGlzdC5FYzJNYW5hZ2VkUHJlZml4TGlzdEVudHJ5W107XG59XG5cbi8qKlxuICogVGhlIGJhc2UgY2xhc3MgZm9yIGEgcHJlZml4IGxpc3RcbiAqL1xuYWJzdHJhY3QgY2xhc3MgUHJlZml4TGlzdEJhc2UgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVByZWZpeExpc3Qge1xuICBwdWJsaWMgZ2V0IHByZWZpeExpc3RPdXRwdXRzKCk6IFByZWZpeExpc3RPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcmVmaXhMaXN0T3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcHJlZml4TGlzdElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBtYW5hZ2VkIHByZWZpeCBsaXN0LlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpQcmVmaXhMaXN0XG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVmaXhMaXN0IGV4dGVuZHMgUHJlZml4TGlzdEJhc2Uge1xuICAvKipcbiAgICogTG9vayB1cCBwcmVmaXggbGlzdCBieSBpZC5cbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVByZWZpeExpc3RJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJlZml4TGlzdElkOiBzdHJpbmcsXG4gICk6IElQcmVmaXhMaXN0IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVByZWZpeExpc3Qge1xuICAgICAgcHVibGljIGdldCBwcmVmaXhMaXN0T3V0cHV0cygpOiBQcmVmaXhMaXN0T3V0cHV0cyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJlZml4TGlzdElkOiB0aGlzLnByZWZpeExpc3RJZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZml4TGlzdE91dHB1dHM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4TGlzdElkID0gcHJlZml4TGlzdElkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhMaXN0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmVmaXhMaXN0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBwcmVmaXggbGlzdFxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4TGlzdEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb3duZXIgSUQgb2YgdGhlIHByZWZpeCBsaXN0XG4gICAqXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXJJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgcHJlZml4IGxpc3RcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUgcHJlZml4IGxpc3RcbiAgICpcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhZGRyZXNzRmFtaWx5OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBlYzJNYW5hZ2VkUHJlZml4TGlzdC5FYzJNYW5hZ2VkUHJlZml4TGlzdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFByZWZpeExpc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGNvbnN0IHByZWZpeExpc3ROYW1lID1cbiAgICAgIHByb3BzPy5wcmVmaXhMaXN0TmFtZSA/P1xuICAgICAgTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICAgICAgbWF4TGVuZ3RoOiAyNTUsXG4gICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiLi1fXCIsXG4gICAgICAgICAgfSksXG4gICAgICB9KTtcblxuICAgIGlmIChwcmVmaXhMaXN0TmFtZSkge1xuICAgICAgaWYgKHByZWZpeExpc3ROYW1lLnN0YXJ0c1dpdGgoXCJjb20uYW1hem9uYXdzXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBuYW1lIGNhbm5vdCBzdGFydCB3aXRoICdjb20uYW1hem9uYXdzLidcIik7XG4gICAgICB9XG4gICAgICBpZiAocHJlZml4TGlzdE5hbWUubGVuZ3RoID4gMjU1KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxlbmd0aHMgZXhjZWVkaW5nIDI1NSBjaGFyYWN0ZXJzIGNhbm5vdCBiZSBzZXQuXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHJlZml4TGlzdE5hbWUgPSBwcmVmaXhMaXN0TmFtZTtcblxuICAgIGxldCBkZWZhdWx0TWF4RW50cmllcyA9IDE7XG4gICAgaWYgKHByb3BzPy5lbnRyaWVzICYmIHByb3BzLmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZW50cmllcyA9IHByb3BzLmVudHJpZXM7XG4gICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zIGZvciB2YWxpZGF0aW5nIElQdjYgYWRkcmVzc2VzXG4gICAgICBpZiAocHJvcHM/LmFkZHJlc3NGYW1pbHkgPT09IEFkZHJlc3NGYW1pbHkuSVBfVjYpIHtcbiAgICAgICAgY29uc3QgaXB2NlJlZ2V4ID1cbiAgICAgICAgICAvXnMqKCgoWzAtOUEtRmEtZl17MSw0fTopezd9KFswLTlBLUZhLWZdezEsNH18OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezZ9KDpbMC05QS1GYS1mXXsxLDR9fCgoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7NX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSwyfSl8OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7NH0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSwzfSl8KCg6WzAtOUEtRmEtZl17MSw0fSk/OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezN9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNH0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsMn06KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7Mn0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw1fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCwzfTooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXsxfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDZ9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDR9OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCg6KCgoOlswLTlBLUZhLWZdezEsNH0pezEsN30pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsNX06KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSkpKCUuKyk/cyooXFwvKFswLTldfFsxLTldWzAtOV18MVswLTFdWzAtOV18MTJbMC04XSkpPyQvaTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgaWYgKCFpcHY2UmVnZXgudGVzdChlbnRyeS5jaWRyKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIElQdjYgYWRkcmVzcyByYW5nZTogJHtlbnRyeS5jaWRyfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIGV4cHJlc3Npb25zIGZvciB2YWxpZGF0aW5nIElQdjQgYWRkcmVzc2VzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBpcHY0UmVnZXggPVxuICAgICAgICAgIC9eKFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfShcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pKT8kL2k7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIGlmICghaXB2NFJlZ2V4LnRlc3QoZW50cnkuY2lkcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJUHY0IGFkZHJlc3MgcmFuZ2U6ICR7ZW50cnkuY2lkcn1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGVmYXVsdE1heEVudHJpZXMgPSBwcm9wcy5lbnRyaWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGVjMk1hbmFnZWRQcmVmaXhMaXN0LkVjMk1hbmFnZWRQcmVmaXhMaXN0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzc0ZhbWlseTogcHJvcHM/LmFkZHJlc3NGYW1pbHkgfHwgQWRkcmVzc0ZhbWlseS5JUF9WNCxcbiAgICAgICAgbWF4RW50cmllczogcHJvcHM/Lm1heEVudHJpZXMgfHwgZGVmYXVsdE1heEVudHJpZXMsXG4gICAgICAgIG5hbWU6IHRoaXMucHJlZml4TGlzdE5hbWUsXG4gICAgICAgIGVudHJ5OiBwcm9wcz8uZW50cmllcyB8fCBbXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMucHJlZml4TGlzdElkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLnByZWZpeExpc3RBcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICB0aGlzLm93bmVySWQgPSB0aGlzLnJlc291cmNlLm93bmVySWQ7XG4gICAgdGhpcy52ZXJzaW9uID0gdGhpcy5yZXNvdXJjZS52ZXJzaW9uO1xuICAgIHRoaXMuYWRkcmVzc0ZhbWlseSA9IHRoaXMucmVzb3VyY2UuYWRkcmVzc0ZhbWlseTtcbiAgfVxufVxuIl19
|
|
@@ -55,5 +55,5 @@ class RequestValidator extends aws_construct_1.AwsConstructBase {
|
|
|
55
55
|
}
|
|
56
56
|
exports.RequestValidator = RequestValidator;
|
|
57
57
|
_a = JSII_RTTI_SYMBOL_1;
|
|
58
|
-
RequestValidator[_a] = { fqn: "terraconstructs.aws.compute.RequestValidator", version: "0.2.
|
|
58
|
+
RequestValidator[_a] = { fqn: "terraconstructs.aws.compute.RequestValidator", version: "0.2.4" };
|
|
59
59
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdHZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9yZXF1ZXN0dmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQWlFO0FBRWpFLHVDQUE4QztBQUM5Qyx5Q0FBeUM7QUFDekMsb0RBSTBCO0FBNEMxQixNQUFNLHdCQUNKLFNBQVEsZ0NBQWdCO0lBS3hCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGtCQUEwQixFQUMxQixLQUF5QjtRQUV6QixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM1QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBYSxnQkFDWCxTQUFRLGdDQUFnQjtJQUdqQixNQUFNLENBQUMsc0JBQXNCLENBQ2xDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixrQkFBMEI7UUFFMUIsaUVBQWlFO1FBQ2pFLHVEQUF1RDtRQUN2RCxPQUFPLElBQUksd0JBQXdCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFXRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sYUFBYSxHQUNqQixLQUFLLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLGNBQWMsR0FDbEI7WUFDRSxJQUFJLEVBQUUsYUFBYTtZQUNuQixTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtTQUMzRCxDQUFDO1FBRUosSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlDQUEwQixDQUFDLDBCQUEwQixDQUN2RSxJQUFJLEVBQ0osVUFBVSxFQUNWLGNBQWMsQ0FDZixDQUFDO1FBRUYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBRTNDLDhFQUE4RTtRQUM5RSwrREFBK0Q7UUFDL0QsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLE9BQU8sWUFBWSxpQkFBTztZQUM5QixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDaEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLHFFQUFxRTtZQUNyRSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDeEQsNERBQTREO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU87WUFDTCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQzVDLENBQUM7SUFDSixDQUFDOztBQTlESCw0Q0ErREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSVJlc3RBcGksIFJlc3RBcGkgfSBmcm9tIFwiLi9yZXN0YXBpXCI7XG4vLyBpbXBvcnQgeyBGbiB9IGZyb20gXCIuLi8uLi90ZXJyYS1mdW5jXCI7XG5pbXBvcnQge1xuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbiAgSUF3c0NvbnN0cnVjdCxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdFZhbGlkYXRvciBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogSUQgb2YgdGhlIHJlcXVlc3QgdmFsaWRhdG9yLCBzdWNoIGFzIGFiYzEyM1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0VmFsaWRhdG9ySWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0VmFsaWRhdG9yT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHJlcXVlc3QgdmFsaWRhdG9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBmcmllbmRseSBuYW1lIG9mIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0VmFsaWRhdG9yTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdmFsaWRhdGUgdGhlIHJlcXVlc3QgYm9keSBhY2NvcmRpbmcgdG9cbiAgICogdGhlIGNvbmZpZ3VyZWQgc2NoZW1hIGZvciB0aGUgdGFyZ2V0ZWQgQVBJIGFuZCBtZXRob2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2YWxpZGF0ZVJlcXVlc3RCb2R5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gdmFsaWRhdGUgcmVxdWVzdCBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsaWRhdGVSZXF1ZXN0UGFyYW1ldGVycz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdFZhbGlkYXRvclByb3BzXG4gIGV4dGVuZHMgUmVxdWVzdFZhbGlkYXRvck9wdGlvbnMsXG4gICAgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlc3QgQVBJIHRoYXQgdGhpcyBtb2RlbCBpcyBwYXJ0IG9mLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdEFwaTogSVJlc3RBcGk7XG59XG5cbmNsYXNzIEltcG9ydGVkUmVxdWVzdFZhbGlkYXRvclxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJUmVxdWVzdFZhbGlkYXRvclxue1xuICBwdWJsaWMgcmVhZG9ubHkgcmVxdWVzdFZhbGlkYXRvcklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHJlcXVlc3RWYWxpZGF0b3JJZDogc3RyaW5nLFxuICAgIHByb3BzPzogQXdzQ29uc3RydWN0UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMucmVxdWVzdFZhbGlkYXRvcklkID0gcmVxdWVzdFZhbGlkYXRvcklkO1xuICB9XG5cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICByZXF1ZXN0VmFsaWRhdG9ySWQ6IHRoaXMucmVxdWVzdFZhbGlkYXRvcklkLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcXVlc3RWYWxpZGF0b3JcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSVJlcXVlc3RWYWxpZGF0b3JcbntcbiAgcHVibGljIHN0YXRpYyBmcm9tUmVxdWVzdFZhbGlkYXRvcklkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICByZXF1ZXN0VmFsaWRhdG9ySWQ6IHN0cmluZyxcbiAgKTogSVJlcXVlc3RWYWxpZGF0b3Ige1xuICAgIC8vIE5vdGU6IEZvciBhIGZ1bGwgQ0RLVEYgaW1wb3J0LCByZXN0QXBpSWQgd291bGQgYWxzbyBiZSBuZWVkZWQuXG4gICAgLy8gVGhpcyBtaXJyb3JzIHRoZSBDREsncyBsaW1pdGVkIGltcG9ydCBmdW5jdGlvbmFsaXR5LlxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRSZXF1ZXN0VmFsaWRhdG9yKHNjb3BlLCBpZCwgcmVxdWVzdFZhbGlkYXRvcklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgcmVxdWVzdCB2YWxpZGF0b3IsIHN1Y2ggYXMgYWJjMTIzXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXF1ZXN0VmFsaWRhdG9ySWQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvci5BcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVxdWVzdFZhbGlkYXRvclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCB2YWxpZGF0b3JOYW1lID1cbiAgICAgIHByb3BzLnJlcXVlc3RWYWxpZGF0b3JOYW1lID8/IHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMpO1xuICAgIGNvbnN0IHZhbGlkYXRvclByb3BzOiBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvci5BcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvckNvbmZpZyA9XG4gICAgICB7XG4gICAgICAgIG5hbWU6IHZhbGlkYXRvck5hbWUsXG4gICAgICAgIHJlc3RBcGlJZDogcHJvcHMucmVzdEFwaS5yZXN0QXBpSWQsXG4gICAgICAgIHZhbGlkYXRlUmVxdWVzdEJvZHk6IHByb3BzLnZhbGlkYXRlUmVxdWVzdEJvZHksXG4gICAgICAgIHZhbGlkYXRlUmVxdWVzdFBhcmFtZXRlcnM6IHByb3BzLnZhbGlkYXRlUmVxdWVzdFBhcmFtZXRlcnMsXG4gICAgICB9O1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBhcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvci5BcGlHYXRld2F5UmVxdWVzdFZhbGlkYXRvcihcbiAgICAgIHRoaXMsXG4gICAgICBcIlJlc291cmNlXCIsXG4gICAgICB2YWxpZGF0b3JQcm9wcyxcbiAgICApO1xuXG4gICAgdGhpcy5yZXF1ZXN0VmFsaWRhdG9ySWQgPSB0aGlzLnJlc291cmNlLmlkO1xuXG4gICAgLy8gVGhlIENESyB2ZXJzaW9uIG9mIFJlcXVlc3RWYWxpZGF0b3IgaW50ZXJhY3RzIHdpdGggdGhlIFJlc3RBcGkncyBkZXBsb3ltZW50XG4gICAgLy8gdG8gZW5zdXJlIGNoYW5nZXMgdG8gdGhlIHZhbGlkYXRvciB0cmlnZ2VyIGEgbmV3IGRlcGxveW1lbnQuXG4gICAgY29uc3QgZGVwbG95bWVudCA9XG4gICAgICBwcm9wcy5yZXN0QXBpIGluc3RhbmNlb2YgUmVzdEFwaVxuICAgICAgICA/IHByb3BzLnJlc3RBcGkubGF0ZXN0RGVwbG95bWVudFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVwbG95bWVudCkge1xuICAgICAgZGVwbG95bWVudC5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5yZXNvdXJjZSk7XG4gICAgICAvLyBGbi5zaGExKEZuLmpzb25lbmNvZGUoKSkgY2F1c2VzIG5lc3RlZCBUb2tlbnMgYW5kIFJlc29sdmVyIGVycm9ycz9cbiAgICAgIGRlcGxveW1lbnQuYWRkVG9UcmlnZ2Vycyh7IHZhbGlkYXRvcjogdmFsaWRhdG9yUHJvcHMgfSk7XG4gICAgICAvLyBkZXBsb3ltZW50LmFkZFRvTG9naWNhbElkKHsgdmFsaWRhdG9yOiB2YWxpZGF0b3JQcm9wcyB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVlc3RWYWxpZGF0b3JJZDogdGhpcy5yZXF1ZXN0VmFsaWRhdG9ySWQsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -171,7 +171,7 @@ class ResourceBase extends aws_construct_1.AwsConstructBase {
|
|
|
171
171
|
}
|
|
172
172
|
exports.ResourceBase = ResourceBase;
|
|
173
173
|
_a = JSII_RTTI_SYMBOL_1;
|
|
174
|
-
ResourceBase[_a] = { fqn: "terraconstructs.aws.compute.ResourceBase", version: "0.2.
|
|
174
|
+
ResourceBase[_a] = { fqn: "terraconstructs.aws.compute.ResourceBase", version: "0.2.4" };
|
|
175
175
|
class Resource extends ResourceBase {
|
|
176
176
|
/**
|
|
177
177
|
* Import an existing resource
|
|
@@ -258,7 +258,7 @@ class Resource extends ResourceBase {
|
|
|
258
258
|
}
|
|
259
259
|
exports.Resource = Resource;
|
|
260
260
|
_b = JSII_RTTI_SYMBOL_1;
|
|
261
|
-
Resource[_b] = { fqn: "terraconstructs.aws.compute.Resource", version: "0.2.
|
|
261
|
+
Resource[_b] = { fqn: "terraconstructs.aws.compute.Resource", version: "0.2.4" };
|
|
262
262
|
/**
|
|
263
263
|
* Defines a {proxy+} greedy resource and an ANY method on a route.
|
|
264
264
|
* @see https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html
|
|
@@ -291,7 +291,7 @@ class ProxyResource extends Resource {
|
|
|
291
291
|
}
|
|
292
292
|
exports.ProxyResource = ProxyResource;
|
|
293
293
|
_c = JSII_RTTI_SYMBOL_1;
|
|
294
|
-
ProxyResource[_c] = { fqn: "terraconstructs.aws.compute.ProxyResource", version: "0.2.
|
|
294
|
+
ProxyResource[_c] = { fqn: "terraconstructs.aws.compute.ProxyResource", version: "0.2.4" };
|
|
295
295
|
function validateResourcePathPart(part, scope) {
|
|
296
296
|
// strip {} which indicate this is a parameter
|
|
297
297
|
let validatedPart = part;
|
|
@@ -352,7 +352,7 @@ class RestApiBase extends aws_construct_1.AwsConstructBase {
|
|
|
352
352
|
}
|
|
353
353
|
exports.RestApiBase = RestApiBase;
|
|
354
354
|
_a = JSII_RTTI_SYMBOL_1;
|
|
355
|
-
RestApiBase[_a] = { fqn: "terraconstructs.aws.compute.RestApiBase", version: "0.2.
|
|
355
|
+
RestApiBase[_a] = { fqn: "terraconstructs.aws.compute.RestApiBase", version: "0.2.4" };
|
|
356
356
|
/**
|
|
357
357
|
* Represents a REST API in Amazon API Gateway, created with an OpenAPI specification.
|
|
358
358
|
*
|
|
@@ -415,7 +415,7 @@ class SpecRestApi extends RestApiBase {
|
|
|
415
415
|
}
|
|
416
416
|
exports.SpecRestApi = SpecRestApi;
|
|
417
417
|
_b = JSII_RTTI_SYMBOL_1;
|
|
418
|
-
SpecRestApi[_b] = { fqn: "terraconstructs.aws.compute.SpecRestApi", version: "0.2.
|
|
418
|
+
SpecRestApi[_b] = { fqn: "terraconstructs.aws.compute.SpecRestApi", version: "0.2.4" };
|
|
419
419
|
/**
|
|
420
420
|
* Represents a REST API in Amazon API Gateway.
|
|
421
421
|
*
|
|
@@ -585,7 +585,7 @@ class RestApi extends RestApiBase {
|
|
|
585
585
|
}
|
|
586
586
|
exports.RestApi = RestApi;
|
|
587
587
|
_c = JSII_RTTI_SYMBOL_1;
|
|
588
|
-
RestApi[_c] = { fqn: "terraconstructs.aws.compute.RestApi", version: "0.2.
|
|
588
|
+
RestApi[_c] = { fqn: "terraconstructs.aws.compute.RestApi", version: "0.2.4" };
|
|
589
589
|
var ApiKeySourceType;
|
|
590
590
|
(function (ApiKeySourceType) {
|
|
591
591
|
ApiKeySourceType["HEADER"] = "HEADER";
|
package/lib/aws/compute/route.js
CHANGED
|
@@ -63,7 +63,7 @@ class EgressOnlyInternetGateway extends aws_construct_1.AwsConstructBase {
|
|
|
63
63
|
}
|
|
64
64
|
exports.EgressOnlyInternetGateway = EgressOnlyInternetGateway;
|
|
65
65
|
_a = JSII_RTTI_SYMBOL_1;
|
|
66
|
-
EgressOnlyInternetGateway[_a] = { fqn: "terraconstructs.aws.compute.alpha.EgressOnlyInternetGateway", version: "0.2.
|
|
66
|
+
EgressOnlyInternetGateway[_a] = { fqn: "terraconstructs.aws.compute.alpha.EgressOnlyInternetGateway", version: "0.2.4" };
|
|
67
67
|
/**
|
|
68
68
|
* Creates an internet gateway
|
|
69
69
|
* @resource AWS::EC2::InternetGateway
|
|
@@ -96,7 +96,7 @@ class InternetGateway extends aws_construct_1.AwsConstructBase {
|
|
|
96
96
|
}
|
|
97
97
|
exports.InternetGateway = InternetGateway;
|
|
98
98
|
_b = JSII_RTTI_SYMBOL_1;
|
|
99
|
-
InternetGateway[_b] = { fqn: "terraconstructs.aws.compute.alpha.InternetGateway", version: "0.2.
|
|
99
|
+
InternetGateway[_b] = { fqn: "terraconstructs.aws.compute.alpha.InternetGateway", version: "0.2.4" };
|
|
100
100
|
/**
|
|
101
101
|
* Creates a virtual private gateway
|
|
102
102
|
* @resource AWS::EC2::VPNGateway
|
|
@@ -162,7 +162,7 @@ class VPNGatewayV2 extends aws_construct_1.AwsConstructBase {
|
|
|
162
162
|
}
|
|
163
163
|
exports.VPNGatewayV2 = VPNGatewayV2;
|
|
164
164
|
_c = JSII_RTTI_SYMBOL_1;
|
|
165
|
-
VPNGatewayV2[_c] = { fqn: "terraconstructs.aws.compute.alpha.VPNGatewayV2", version: "0.2.
|
|
165
|
+
VPNGatewayV2[_c] = { fqn: "terraconstructs.aws.compute.alpha.VPNGatewayV2", version: "0.2.4" };
|
|
166
166
|
/**
|
|
167
167
|
* Creates a network address translation (NAT) gateway
|
|
168
168
|
* @resource AWS::EC2::NatGateway
|
|
@@ -231,7 +231,7 @@ class NatGateway extends aws_construct_1.AwsConstructBase {
|
|
|
231
231
|
}
|
|
232
232
|
exports.NatGateway = NatGateway;
|
|
233
233
|
_d = JSII_RTTI_SYMBOL_1;
|
|
234
|
-
NatGateway[_d] = { fqn: "terraconstructs.aws.compute.alpha.NatGateway", version: "0.2.
|
|
234
|
+
NatGateway[_d] = { fqn: "terraconstructs.aws.compute.alpha.NatGateway", version: "0.2.4" };
|
|
235
235
|
/**
|
|
236
236
|
* Creates a peering connection between two VPCs
|
|
237
237
|
* @resource AWS::EC2::VPCPeeringConnection
|
|
@@ -319,7 +319,7 @@ class VPCPeeringConnection extends aws_construct_1.AwsConstructBase {
|
|
|
319
319
|
}
|
|
320
320
|
exports.VPCPeeringConnection = VPCPeeringConnection;
|
|
321
321
|
_e = JSII_RTTI_SYMBOL_1;
|
|
322
|
-
VPCPeeringConnection[_e] = { fqn: "terraconstructs.aws.compute.alpha.VPCPeeringConnection", version: "0.2.
|
|
322
|
+
VPCPeeringConnection[_e] = { fqn: "terraconstructs.aws.compute.alpha.VPCPeeringConnection", version: "0.2.4" };
|
|
323
323
|
/**
|
|
324
324
|
* The gateway or endpoint targeted by the route.
|
|
325
325
|
*/
|
|
@@ -337,7 +337,7 @@ class RouteTargetType {
|
|
|
337
337
|
}
|
|
338
338
|
exports.RouteTargetType = RouteTargetType;
|
|
339
339
|
_f = JSII_RTTI_SYMBOL_1;
|
|
340
|
-
RouteTargetType[_f] = { fqn: "terraconstructs.aws.compute.alpha.RouteTargetType", version: "0.2.
|
|
340
|
+
RouteTargetType[_f] = { fqn: "terraconstructs.aws.compute.alpha.RouteTargetType", version: "0.2.4" };
|
|
341
341
|
/**
|
|
342
342
|
* Creates a new route with added functionality.
|
|
343
343
|
* @resource AWS::EC2::Route
|
|
@@ -401,7 +401,7 @@ class Route extends aws_construct_1.AwsConstructBase {
|
|
|
401
401
|
}
|
|
402
402
|
exports.Route = Route;
|
|
403
403
|
_g = JSII_RTTI_SYMBOL_1;
|
|
404
|
-
Route[_g] = { fqn: "terraconstructs.aws.compute.alpha.Route", version: "0.2.
|
|
404
|
+
Route[_g] = { fqn: "terraconstructs.aws.compute.alpha.Route", version: "0.2.4" };
|
|
405
405
|
/**
|
|
406
406
|
* Creates a route table for the specified VPC
|
|
407
407
|
* @resource aws_route_table
|
|
@@ -444,7 +444,7 @@ class RouteTable extends aws_construct_1.AwsConstructBase {
|
|
|
444
444
|
}
|
|
445
445
|
exports.RouteTable = RouteTable;
|
|
446
446
|
_h = JSII_RTTI_SYMBOL_1;
|
|
447
|
-
RouteTable[_h] = { fqn: "terraconstructs.aws.compute.alpha.RouteTable", version: "0.2.
|
|
447
|
+
RouteTable[_h] = { fqn: "terraconstructs.aws.compute.alpha.RouteTable", version: "0.2.4" };
|
|
448
448
|
/**
|
|
449
449
|
* inverse of
|
|
450
450
|
* https://github.com/hashicorp/terraform-provider-aws/blob/v5.87.0/internal/service/ec2/vpc_route.go#L219-L239
|
|
@@ -463,7 +463,8 @@ function routerTypeToPropName(routerType) {
|
|
|
463
463
|
[vpc_1.RouterType.TRANSIT_GATEWAY]: "transitGatewayId",
|
|
464
464
|
[vpc_1.RouterType.VPC_PEERING_CONNECTION]: "vpcPeeringConnectionId",
|
|
465
465
|
[vpc_1.RouterType.VPC_ENDPOINT]: "vpcEndpointId",
|
|
466
|
+
[vpc_1.RouterType.CORE_NETWORK]: "coreNetworkArn",
|
|
466
467
|
};
|
|
467
468
|
return lookupMap[routerType];
|
|
468
469
|
}
|
|
469
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0RkFBNEY7QUFFNUYsc0RBWTZCO0FBQzdCLGlDQUFvQztBQUVwQywrQkFBbUU7QUFDbkUsaURBSXdCO0FBRXhCLG9EQUkwQjtBQUMxQiw4Q0FBOEM7QUFDOUMsMENBQW1DO0FBQ25DLHdDQUF3QztBQUN4Qyx5Q0FBOEM7QUFDOUMsK0NBQXdEO0FBSXhEOzs7O0dBSUc7QUFDSCxJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCx3Q0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILDBDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFUVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQVM5QjtBQXNORDs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQUVoQzs7O0dBR0c7QUFDSCxNQUFhLHlCQUNYLFNBQVEsZ0NBQWdCO0lBR3hCLElBQVcsa0JBQWtCO1FBQzNCLE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFnQkQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBcUM7UUFFckMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3hDLGVBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVB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bEQsTUFBTSxTQUFTLEdBQWtEO1FBQy9ELENBQUMsZ0JBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxrQkFBa0I7UUFDaEQsQ0FBQyxnQkFBVSxDQUFDLDRCQUE0QixDQUFDLEVBQUUscUJBQXFCO1FBQ2hFLENBQUMsZ0JBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXO1FBQ2pDLCtEQUErRDtRQUMvRCw4RUFBOEU7UUFDOUUsdUNBQXVDO1FBQ3ZDLENBQUMsZ0JBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxnQkFBZ0I7UUFDNUMsQ0FBQyxnQkFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGNBQWM7UUFDeEMsQ0FBQyxnQkFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsb0JBQW9CO1FBQ3BELENBQUMsZ0JBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxrQkFBa0I7UUFDaEQsQ0FBQyxnQkFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsd0JBQXdCO1FBQzdELENBQUMsZ0JBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxlQUFlO0tBQzNDLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvQGF3cy1jZGsvYXdzLWVjMi1hbHBoYS9saWIvcm91dGUudHNcblxuaW1wb3J0IHtcbiAgZWlwIGFzIHRmRWlwLFxuICBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5IGFzIHRmRWdyZXNzT25seUludGVybmV0R2F0ZXdheSxcbiAgaW50ZXJuZXRHYXRld2F5IGFzIHRmSW50ZXJuZXRHYXRld2F5LFxuICBuYXRHYXRld2F5IGFzIHRmTmF0R2F0ZXdheSxcbiAgdnBjUGVlcmluZ0Nvbm5lY3Rpb24gYXMgdGZWcGNQZWVyaW5nQ29ubmVjdGlvbixcbiAgcm91dGUgYXMgdGZSb3V0ZSxcbiAgcm91dGVUYWJsZSBhcyB0ZlJvdXRlVGFibGUsXG4gIHZwbkdhdGV3YXlBdHRhY2htZW50IGFzIHRmVnBuR2F0ZXdheUF0dGFjaG1lbnQsXG4gIGludGVybmV0R2F0ZXdheUF0dGFjaG1lbnQgYXMgdGZJbnRlcm5ldEdhdGV3YXlBdHRhY2htZW50LFxuICB2cG5HYXRld2F5IGFzIHRmVnBuR2F0ZXdheSxcbiAgdnBuR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24gYXMgdGZWcG5HYXRld2F5Um91dGVQcm9wYWdhdGlvbixcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElEZXBlbmRhYmxlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElSb3V0ZVRhYmxlLCBSb3V0ZXJUeXBlLCBSb3V0ZVRhYmxlT3V0cHV0cyB9IGZyb20gXCIuL3ZwY1wiO1xuaW1wb3J0IHtcbiAgR2F0ZXdheVZwY0VuZHBvaW50LFxuICBJVnBjRW5kcG9pbnQsXG4gIFZwY0VuZHBvaW50T3V0cHV0cyxcbn0gZnJvbSBcIi4vdnBjLWVuZHBvaW50XCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLi9kdXJhdGlvblwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG4gIElBd3NDb25zdHJ1Y3QsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG4vLyBUT0RPOiBVc2UgVGFnTWFuYWdlciBhbmQgdGFnLWFzcGVjdCBpbnN0ZWFkXG5pbXBvcnQgeyBUYWdzIH0gZnJvbSBcIi4uL2F3cy10YWdzXCI7XG4vLyBpbXBvcnQgeyBUYWdzIH0gZnJvbSBcIi4uL3RhZy1hc3BlY3RcIjtcbmltcG9ydCB7IGFsbFJvdXRlVGFibGVJZHMgfSBmcm9tIFwiLi9lYzItdXRpbFwiO1xuaW1wb3J0IHsgTmV0d29ya1V0aWxzLCBDaWRyQmxvY2sgfSBmcm9tIFwiLi9lYzItdXRpbC12MlwiO1xuaW1wb3J0IHsgSVN1Ym5ldFYyIH0gZnJvbSBcIi4vc3VibmV0LXYyXCI7XG5pbXBvcnQgeyBJVnBjVjIsIFZQTkdhdGV3YXlWMk9wdGlvbnMgfSBmcm9tIFwiLi92cGMtdjItYmFzZVwiO1xuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBOQVQgZ2F0ZXdheSBzdXBwb3J0cyBwdWJsaWMgb3IgcHJpdmF0ZSBjb25uZWN0aXZpdHkuXG4gKiBUaGUgZGVmYXVsdCBpcyBwdWJsaWMgY29ubmVjdGl2aXR5LlxuICogU2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLW5hdGdhdGV3YXkuaHRtbCNjZm4tZWMyLW5hdGdhdGV3YXktY29ubmVjdGl2aXR5dHlwZVxuICovXG5leHBvcnQgZW51bSBOYXRDb25uZWN0aXZpdHlUeXBlIHtcbiAgLyoqXG4gICAqIFNldHMgQ29ubmVjdGl2aXR5IHR5cGUgdG8gUFVCTElDXG4gICAqL1xuICBQVUJMSUMgPSBcInB1YmxpY1wiLFxuICAvKipcbiAgICogU2V0cyBDb25uZWN0aXZpdHkgdHlwZSB0byBQUklWQVRFXG4gICAqL1xuICBQUklWQVRFID0gXCJwcml2YXRlXCIsXG59XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVRhcmdldE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIGRlZmluZSBhIHJvdXRpbmcgdGFyZ2V0LCBzdWNoIGFzIGFuXG4gKiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5IG9yIFZQQyBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm91dGVUYXJnZXQgZXh0ZW5kcyBJRGVwZW5kYWJsZSB7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0cyBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYXJnZXRPdXRwdXRzOiBSb3V0ZVRhcmdldE91dHB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhbiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByZXNvdXJjZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhbiBpbnRlcm5ldCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmV0R2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGZvciB3aGljaCB0byBjcmVhdGUgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSB2cGM6IElWcGNWMjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIGludGVybmV0IGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJlc291cmNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYSBWUE4gZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUE5HYXRld2F5VjJQcm9wc1xuICBleHRlbmRzIFZQTkdhdGV3YXlWMk9wdGlvbnMsXG4gICAgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgVlBOIGdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSB2cGM6IElWcGNWMjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBhIE5BVCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdEdhdGV3YXlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgaW4gd2hpY2ggdGhlIE5BVCBnYXRld2F5IGlzIGxvY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXQ6IElTdWJuZXRWMjtcblxuICAvKipcbiAgICogQWxsb2NhdGlvbklEIG9mIEVsYXN0aWMgSVAgYWRkcmVzcyB0aGF0J3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBOQVQgZ2F0ZXdheS4gVGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCBmb3IgYSBwdWJsaWMgTkFUXG4gICAqIGdhdGV3YXkgYW5kIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2l0aCBhIHByaXZhdGUgTkFUIGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYXR0ci5hbGxvY2F0aW9uSUQgb2YgYSBuZXcgRWxhc3RpYyBJUCBjcmVhdGVkIGJ5IGRlZmF1bHRcbiAgICogLy9UT0RPOiBBREQgTDIgZm9yIGVsYXN0aWMgaXBcbiAgICovXG4gIHJlYWRvbmx5IGFsbG9jYXRpb25JZD86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIE5BVCBnYXRld2F5IHN1cHBvcnRzIHB1YmxpYyBvciBwcml2YXRlIGNvbm5lY3Rpdml0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgTmF0Q29ubmVjdGl2aXR5VHlwZS5QdWJsaWNcbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpdml0eVR5cGU/OiBOYXRDb25uZWN0aXZpdHlUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaWJseSByZWxlYXNpbmcgdGhlXG4gICAqIElQIGFkZHJlc3NlcyBpZiBjb25uZWN0aW9ucyBhcmUgc3RpbGwgaW4gcHJvZ3Jlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IDM1MHNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IG1heERyYWluRHVyYXRpb24/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHByaXZhdGUgSVB2NCBhZGRyZXNzIHRvIGFzc2lnbiB0byB0aGUgTkFUIGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgeW91IGRvbid0IHByb3ZpZGUgYW4gYWRkcmVzcywgYSBwcml2YXRlIElQdjQgYWRkcmVzcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQuXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlSXBBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgRUlQIGFsbG9jYXRpb24gSURzLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtbmF0LWdhdGV3YXkuaHRtbCNuYXQtZ2F0ZXdheS1jcmVhdGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNlY29uZGFyeSBhbGxvY2F0aW9uIElEcyBhdHRhY2hlZCB0byBOQVRHV1xuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5QWxsb2NhdGlvbklkcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzc2VzIHlvdVxuICAgKiB3YW50IHRvIGFzc2lnbiB0byB0aGUgTkFUIGdhdGV3YXkuXG4gICAqXG4gICAqIGBTZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnRgIGFuZCBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzYCBjYW5ub3QgYmVcbiAgICogc2V0IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sI25hdC1nYXRld2F5LWNyZWF0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2Vjb25kYXJ5IGFsbG9jYXRpb24gSURzIGFzc29jaWF0ZWQgd2l0aCBOQVRHV1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc0NvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgcHJpdmF0ZSBJUHY0IGFkZHJlc3Nlcy5cbiAgICpcbiAgICogYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudGAgYW5kIGBTZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzZXNgIGNhbm5vdCBiZVxuICAgKiBzZXQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWwjbmF0LWdhdGV3YXktY3JlYXRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWNvbmRhcnkgcHJpdmF0ZSBJcEFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggTkFUR1dcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3Nlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgTkFUIGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTkFUR1cgcHJvdmlzaW9uZWQgd2l0aG91dCBhbnkgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbmF0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYSBOQVQgZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRHYXRld2F5UHJvcHMgZXh0ZW5kcyBOYXRHYXRld2F5T3B0aW9ucywgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgaW4gd2hpY2ggdGhlIE5BVCBnYXRld2F5IGlzIGxvY2F0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZWxhc3RpYyBpcCBhc3NvY2lhdGVkLCByZXF1aXJlZCBpbiBjYXNlIG9mIHB1YmxpYyBjb25uZWN0aXZpdHkgaWYgYEFsbG9jYXRpb25JZGAgaXMgbm90IGRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGNWMjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBhIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhhdCBpcyBhY2NlcHRpbmcgdGhlIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFjY2VwdG9yVnBjOiBJVnBjVjI7XG5cbiAgLy8gVE9ETzogaGFuZGxlIGNyb3NzQWNjb3VudCBURiBQcm92aWRlciBmb3IgdnBjX3BlZXJpbmdfY29ubmVjdGlvbl9hY2NlcHRlclxuICAvLyAvKipcbiAgLy8gICogVGhlIHJvbGUgYXJuIGNyZWF0ZWQgaW4gdGhlIGFjY2VwdG9yIGFjY291bnQuXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IC0gbm8gcGVlclJvbGVBcm4gbmVlZGVkIGlmIG5vdCBjcm9zcyBhY2NvdW50IGNvbm5lY3Rpb25cbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IHBlZXJSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHBlZXJpbmcgY29ubmVjdGlvbiBwcm92aXNpb25lZCB3aXRob3V0IGFueSBuYW1lXG4gICAqL1xuICByZWFkb25seSB2cGNQZWVyaW5nQ29ubmVjdGlvbk5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYSBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQQ1BlZXJpbmdDb25uZWN0aW9uUHJvcHMgZXh0ZW5kcyBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFZQQyB0aGF0IGlzIHJlcXVlc3RpbmcgdGhlIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RvclZwYzogSVZwY1YyO1xufVxuXG4vKipcbiAqIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IE5BTUVfVEFHOiBzdHJpbmcgPSBcIk5hbWVcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXlcbiAqIEByZXNvdXJjZSBhd3NfZWdyZXNzX29ubHlfaW50ZXJuZXRfZ2F0ZXdheVxuICovXG5leHBvcnQgY2xhc3MgRWdyZXNzT25seUludGVybmV0R2F0ZXdheVxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJUm91dGVUYXJnZXRcbntcbiAgcHVibGljIGdldCByb3V0ZVRhcmdldE91dHB1dHMoKTogUm91dGVUYXJnZXRPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGVyVHlwZTogdGhpcy5yb3V0ZXJUeXBlLFxuICAgICAgcm91dGVyVGFyZ2V0SWQ6IHRoaXMucm91dGVyVGFyZ2V0SWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVUYXJnZXRPdXRwdXRzO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogdGZFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAocHJvcHMuZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy5lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZSk7XG4gICAgfVxuICAgIHRoaXMucm91dGVyVHlwZSA9IFJvdXRlclR5cGUuRUdSRVNTX09OTFlfSU5URVJORVRfR0FURVdBWTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgdGZFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkoXG4gICAgICB0aGlzLFxuICAgICAgXCJFSUdXXCIsXG4gICAgICB7XG4gICAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgICB9LFxuICAgICk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gaW50ZXJuZXQgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpJbnRlcm5ldEdhdGV3YXlcbiAqL1xuZXhwb3J0IGNsYXNzIEludGVybmV0R2F0ZXdheSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICBwdWJsaWMgZ2V0IHJvdXRlVGFyZ2V0T3V0cHV0cygpOiBSb3V0ZVRhcmdldE91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICByb3V0ZXJUeXBlOiB0aGlzLnJvdXRlclR5cGUsXG4gICAgICByb3V0ZXJUYXJnZXRJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVRhcmdldE91dHB1dHM7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuZXQgZ2F0ZXdheSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IHRmSW50ZXJuZXRHYXRld2F5LkludGVybmV0R2F0ZXdheTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSW50ZXJuZXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5HQVRFV0FZO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyB0ZkludGVybmV0R2F0ZXdheS5JbnRlcm5ldEdhdGV3YXkodGhpcywgXCJJR1dcIiwge30pO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG4gICAgdGhpcy52cGNJZCA9IHByb3BzLnZwYy52cGNJZDtcblxuICAgIGlmIChwcm9wcy5pbnRlcm5ldEdhdGV3YXlOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHMuaW50ZXJuZXRHYXRld2F5TmFtZSk7XG4gICAgfVxuXG4gICAgbmV3IHRmSW50ZXJuZXRHYXRld2F5QXR0YWNobWVudC5JbnRlcm5ldEdhdGV3YXlBdHRhY2htZW50KFxuICAgICAgdGhpcyxcbiAgICAgIFwiR1dBdHRhY2htZW50XCIsXG4gICAgICB7XG4gICAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgICBpbnRlcm5ldEdhdGV3YXlJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB2aXJ0dWFsIHByaXZhdGUgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpWUE5HYXRld2F5XG4gKi9cbmV4cG9ydCBjbGFzcyBWUE5HYXRld2F5VjIgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgcHVibGljIGdldCByb3V0ZVRhcmdldE91dHB1dHMoKTogUm91dGVUYXJnZXRPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGVyVHlwZTogdGhpcy5yb3V0ZXJUeXBlLFxuICAgICAgcm91dGVyVGFyZ2V0SWQ6IHRoaXMucm91dGVyVGFyZ2V0SWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVUYXJnZXRPdXRwdXRzO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGZvciB3aGljaCB0byBjcmVhdGUgdGhlIFZQTiBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUE4gZ2F0ZXdheSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IHRmVnBuR2F0ZXdheS5WcG5HYXRld2F5O1xuXG4gIC8qKlxuICAgKiBUaGUgVlBOIEdhdGV3YXkgQXR0YWNobWVudFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfYXR0YWNobWVudDogdGZWcG5HYXRld2F5QXR0YWNobWVudC5WcG5HYXRld2F5QXR0YWNobWVudDtcblxuICAvKipcbiAgICogVGhlIFZQTiBHYXRld2F5IFJvdXRlIFByb3BhZ2F0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZVByb3BhZ2F0aW9uOiB0ZlZwbkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uLlZwbkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uW10gPVxuICAgIFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUE5HYXRld2F5VjJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGNvbnN0IHZwbkdhdGV3YXlOYW1lID1cbiAgICAgIHByb3BzLnZwbkdhdGV3YXlOYW1lIHx8XG4gICAgICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5HQVRFV0FZO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyB0ZlZwbkdhdGV3YXkuVnBuR2F0ZXdheSh0aGlzLCBcIklHV1wiLCB7XG4gICAgICBhbWF6b25TaWRlQXNuOlxuICAgICAgICBwcm9wcy5hbWF6b25TaWRlQXNuICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHByb3BzLmFtYXpvblNpZGVBc24udG9TdHJpbmcoKVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG5cbiAgICB0aGlzLnZwY0lkID0gcHJvcHMudnBjLnZwY0lkO1xuICAgIHRoaXMuX2F0dGFjaG1lbnQgPSBuZXcgdGZWcG5HYXRld2F5QXR0YWNobWVudC5WcG5HYXRld2F5QXR0YWNobWVudChcbiAgICAgIHRoaXMsXG4gICAgICBcIlZQQ1ZQTkdXXCIsXG4gICAgICB7XG4gICAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgICB2cG5HYXRld2F5SWQ6IHRoaXMucmVzb3VyY2UuaWQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAocHJvcHMudnBuR2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCB2cG5HYXRld2F5TmFtZSk7XG4gICAgfVxuXG4gICAgLy8gUHJvcGFnYXRlIHJvdXRlcyBvbiByb3V0ZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByaWdodCBzdWJuZXRzXG4gICAgY29uc3QgdnBuUm91dGVQcm9wYWdhdGlvbiA9IHByb3BzLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW107XG4gICAgY29uc3Qgc3VibmV0cyA9IHZwblJvdXRlUHJvcGFnYXRpb25cbiAgICAgIC5tYXAoKHMpID0+IHByb3BzLnZwYy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpXG4gICAgICAuZmxhdCgpO1xuICAgIGNvbnN0IHJvdXRlVGFibGVJZHMgPSBhbGxSb3V0ZVRhYmxlSWRzKHN1Ym5ldHMpO1xuXG4gICAgaWYgKHJvdXRlVGFibGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBcIkBhd3MtY2RrOmF3cy1lYzItZWxwaGE6ZW5hYmxlVnBuR2F0ZXdheVYyXCIsXG4gICAgICBBbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkV2FybmluZyhcbiAgICAgICAgYE5vIHN1Ym5ldHMgbWF0Y2hpbmcgc2VsZWN0aW9uOiAnJHtKU09OLnN0cmluZ2lmeSh2cG5Sb3V0ZVByb3BhZ2F0aW9uKX0nLiBTZWxlY3Qgb3RoZXIgc3VibmV0cyB0byBhZGQgcm91dGVzIHRvLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3VibmV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm91dGVQcm9wYWdhdGlvbiA9XG4gICAgICAgIG5ldyB0ZlZwbkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uLlZwbkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYFJvdXRlUHJvcGFnYXRpb24ke2l9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICByb3V0ZVRhYmxlSWQ6IHN1Ym5ldHNbaV0ucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQsXG4gICAgICAgICAgICB2cG5HYXRld2F5SWQ6IHRoaXMucm91dGVyVGFyZ2V0SWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgLy8gVGhlIEFXUzo6RUMyOjpWUE5HYXRld2F5Um91dGVQcm9wYWdhdGlvbiByZXNvdXJjZSBjYW5ub3QgdXNlIHRoZSBWUE4gZ2F0ZXdheVxuICAgICAgLy8gdW50aWwgaXQgaGFzIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZCB0byB0aGUgVlBDLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItdnBuLWdhdGV3YXlyb3V0ZXByb3AuaHRtbFxuICAgICAgcm91dGVQcm9wYWdhdGlvbi5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5fYXR0YWNobWVudCk7XG4gICAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uLnB1c2gocm91dGVQcm9wYWdhdGlvbik7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiAoTkFUKSBnYXRld2F5XG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6Ok5hdEdhdGV3YXlcbiAqL1xuZXhwb3J0IGNsYXNzIE5hdEdhdGV3YXkgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgcHVibGljIGdldCByb3V0ZVRhcmdldE91dHB1dHMoKTogUm91dGVUYXJnZXRPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGVyVHlwZTogdGhpcy5yb3V0ZXJUeXBlLFxuICAgICAgcm91dGVyVGFyZ2V0SWQ6IHRoaXMucm91dGVyVGFyZ2V0SWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVUYXJnZXRPdXRwdXRzO1xuICB9XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgTmF0R2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmF0R2F0ZXdheUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aXZpdHlUeXBlPzogTmF0Q29ubmVjdGl2aXR5VHlwZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2libHkgcmVsZWFzaW5nIHRoZVxuICAgKiBJUCBhZGRyZXNzZXMgaWYgY29ubmVjdGlvbnMgYXJlIHN0aWxsIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMzAgbWludXRlcydcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtYXhEcmFpbkR1cmF0aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBOQVQgZ2F0ZXdheSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IHRmTmF0R2F0ZXdheS5OYXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOYXRHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5OQVRfR0FURVdBWTtcblxuICAgIHRoaXMuY29ubmVjdGl2aXR5VHlwZSA9XG4gICAgICBwcm9wcy5jb25uZWN0aXZpdHlUeXBlIHx8IE5hdENvbm5lY3Rpdml0eVR5cGUuUFVCTElDO1xuICAgIHRoaXMubWF4RHJhaW5EdXJhdGlvbiA9IHByb3BzLm1heERyYWluRHVyYXRpb247XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aXZpdHlUeXBlID09PSBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQykge1xuICAgICAgaWYgKCFwcm9wcy52cGMgJiYgIXByb3BzLmFsbG9jYXRpb25JZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFaXRoZXIgcHJvdmlkZSB2cGMgb3IgYWxsb2NhdGlvbklkXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5uYXRHYXRld2F5TmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHByb3BzPy5uYXRHYXRld2F5TmFtZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgdXNlciBkb2VzIG5vdCBwcm92aWRlIEVJUCwgZ2VuZXJhdGUgb25lIGZvciB0aGVtXG4gICAgbGV0IGFJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLmNvbm5lY3Rpdml0eVR5cGUgPT09IE5hdENvbm5lY3Rpdml0eVR5cGUuUFVCTElDKSB7XG4gICAgICBpZiAoIXByb3BzLmFsbG9jYXRpb25JZCkge1xuICAgICAgICBjb25zdCBlaXAgPSBuZXcgdGZFaXAuRWlwKHRoaXMsIFwiRUlQXCIsIHtcbiAgICAgICAgICBkb21haW46IFwidnBjXCIsXG4gICAgICAgIH0pO1xuICAgICAgICBhSWQgPSBlaXAuYWxsb2NhdGlvbklkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYUlkID0gcHJvcHMuYWxsb2NhdGlvbklkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgdGZOYXRHYXRld2F5Lk5hdEdhdGV3YXkodGhpcywgXCJOQVRHYXRld2F5XCIsIHtcbiAgICAgIHN1Ym5ldElkOiBwcm9wcy5zdWJuZXQuc3VibmV0SWQsXG4gICAgICBhbGxvY2F0aW9uSWQ6IGFJZCxcbiAgICAgIHByaXZhdGVJcDogcHJvcHMucHJpdmF0ZUlwQWRkcmVzcyxcbiAgICAgIC8vIC4uLnByb3BzLFxuICAgICAgY29ubmVjdGl2aXR5VHlwZTogcHJvcHMuY29ubmVjdGl2aXR5VHlwZSxcbiAgICAgIHNlY29uZGFyeUFsbG9jYXRpb25JZHM6IHByb3BzLnNlY29uZGFyeUFsbG9jYXRpb25JZHMsXG4gICAgICBzZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnQ6IHByb3BzLnNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudCxcbiAgICAgIHNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NlczogcHJvcHMuc2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzLFxuICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1uYXRnYXRld2F5Lmh0bWwjY2ZuLWVjMi1uYXRnYXRld2F5LW1heGRyYWluZHVyYXRpb25zZWNvbmRzXG4gICAgICAvLyBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvbmF0X2dhdGV3YXkjdGltZW91dHNcbiAgICAgIC4uLih0aGlzLm1heERyYWluRHVyYXRpb25cbiAgICAgICAgPyB7XG4gICAgICAgICAgICB0aW1lb3V0czoge1xuICAgICAgICAgICAgICBkZWxldGU6IHRoaXMubWF4RHJhaW5EdXJhdGlvbi50b1NlY29uZHMoKS50b1N0cmluZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgIH0pO1xuICAgIHRoaXMubmF0R2F0ZXdheUlkID0gdGhpcy5yZXNvdXJjZS5pZDtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmlkO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLnN1Ym5ldC5pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwZWVyaW5nIGNvbm5lY3Rpb24gYmV0d2VlbiB0d28gVlBDc1xuICogQHJlc291cmNlIEFXUzo6RUMyOjpWUENQZWVyaW5nQ29ubmVjdGlvblxuICovXG5leHBvcnQgY2xhc3MgVlBDUGVlcmluZ0Nvbm5lY3Rpb25cbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0XG57XG4gIHB1YmxpYyBnZXQgcm91dGVUYXJnZXRPdXRwdXRzKCk6IFJvdXRlVGFyZ2V0T3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJvdXRlclR5cGU6IHRoaXMucm91dGVyVHlwZSxcbiAgICAgIHJvdXRlclRhcmdldElkOiB0aGlzLnJvdXRlclRhcmdldElkLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlVGFyZ2V0T3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIHBlZXJpbmcgY29ubmVjdGlvbiBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IHRmVnBjUGVlcmluZ0Nvbm5lY3Rpb24uVnBjUGVlcmluZ0Nvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZQQ1BlZXJpbmdDb25uZWN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5WUENfUEVFUklOR19DT05ORUNUSU9OO1xuXG4gICAgLy8gY29uc3QgaXNDcm9zc0FjY291bnQgPVxuICAgIC8vICAgcHJvcHMucmVxdWVzdG9yVnBjLm93bmVyQWNjb3VudElkICE9PSBwcm9wcy5hY2NlcHRvclZwYy5vd25lckFjY291bnRJZDtcblxuICAgIC8vIGlmICghaXNDcm9zc0FjY291bnQgJiYgcHJvcHMucGVlclJvbGVBcm4pIHtcbiAgICAvLyAgIHRocm93IG5ldyBFcnJvcihcInBlZXJSb2xlQXJuIGlzIG5vdCBuZWVkZWQgZm9yIHNhbWUgYWNjb3VudCBwZWVyaW5nXCIpO1xuICAgIC8vIH1cblxuICAgIC8vIGlmIChpc0Nyb3NzQWNjb3VudCAmJiAhcHJvcHMucGVlclJvbGVBcm4pIHtcbiAgICAvLyAgIHRocm93IG5ldyBFcnJvcihcIkNyb3NzIGFjY291bnQgVlBDIHBlZXJpbmcgcmVxdWlyZXMgcGVlclJvbGVBcm5cIik7XG4gICAgLy8gfVxuXG4gICAgY29uc3Qgb3ZlcmxhcCA9IHRoaXMudmFsaWRhdGVWcGNDaWRyT3ZlcmxhcChcbiAgICAgIHByb3BzLnJlcXVlc3RvclZwYyxcbiAgICAgIHByb3BzLmFjY2VwdG9yVnBjLFxuICAgICk7XG4gICAgaWYgKG92ZXJsYXApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDSURSIGJsb2NrIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIGVhY2ggb3RoZXIgZm9yIGVzdGFibGlzaGluZyBhIHBlZXJpbmcgY29ubmVjdGlvblwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnZwY1BlZXJpbmdDb25uZWN0aW9uTmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHByb3BzLnZwY1BlZXJpbmdDb25uZWN0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyB0ZlZwY1BlZXJpbmdDb25uZWN0aW9uLlZwY1BlZXJpbmdDb25uZWN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiVlBDUGVlcmluZ0Nvbm5lY3Rpb25cIixcbiAgICAgIHtcbiAgICAgICAgdnBjSWQ6IHByb3BzLnJlcXVlc3RvclZwYy52cGNJZCxcbiAgICAgICAgcGVlclZwY0lkOiBwcm9wcy5hY2NlcHRvclZwYy52cGNJZCxcbiAgICAgICAgcGVlck93bmVySWQ6IHByb3BzLmFjY2VwdG9yVnBjLm93bmVyQWNjb3VudElkLFxuICAgICAgICBwZWVyUmVnaW9uOiBwcm9wcy5hY2NlcHRvclZwYy5yZWdpb24sIC8vIGF1dG9BY2NlcHQgbXVzdCBiZSBmYWxzZVxuICAgICAgICAvLyBUT0RPOiBoYW5kbGUgY3Jvc3NBY2NvdW50IFRGIFByb3ZpZGVyIGZvciB2cGNfcGVlcmluZ19jb25uZWN0aW9uX2FjY2VwdGVyXG4gICAgICAgIC8vIHBlZXJSb2xlQXJuOiBpc0Nyb3NzQWNjb3VudCA/IHByb3BzLnBlZXJSb2xlQXJuIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICApO1xuICAgIC8vIFRPRE86IEFkZCBhd3NfdnBjX3BlZXJpbmdfY29ubmVjdGlvbl9hY2NlcHRlciB0byBtYW5hZ2UgQWNjZXB0ZXIgU2lkZT9cblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmlkO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgSVB2NCBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzIHdpdGhpbiB0aGUgZ2l2ZW4gVlBDLlxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdG9yVnBjIFRoZSBWUEMgb2YgdGhlIHJlcXVlc3Rvci5cbiAgICogQHBhcmFtIGFjY2VwdG9yVnBjIFRoZSBWUEMgb2YgdGhlIGFjY2VwdG9yLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBlYWNoIG90aGVyIGZvciB0d28gVlBDcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVWcGNDaWRyT3ZlcmxhcChcbiAgICByZXF1ZXN0b3JWcGM6IElWcGNWMixcbiAgICBhY2NlcHRvclZwYzogSVZwY1YyLFxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCByZXF1ZXN0b3JDaWRycyA9IFtyZXF1ZXN0b3JWcGMuaXB2NENpZHJCbG9ja107XG4gICAgY29uc3QgYWNjZXB0b3JDaWRycyA9IFthY2NlcHRvclZwYy5pcHY0Q2lkckJsb2NrXTtcblxuICAgIGlmIChyZXF1ZXN0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICByZXF1ZXN0b3JDaWRycy5wdXNoKFxuICAgICAgICAuLi5yZXF1ZXN0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrXG4gICAgICAgICAgLm1hcCgoYmxvY2spID0+IGJsb2NrLmNpZHJCbG9jaylcbiAgICAgICAgICAuZmlsdGVyKChjaWRyKTogY2lkciBpcyBzdHJpbmcgPT4gY2lkciAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFjY2VwdG9yVnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgYWNjZXB0b3JDaWRycy5wdXNoKFxuICAgICAgICAuLi5hY2NlcHRvclZwYy5zZWNvbmRhcnlDaWRyQmxvY2tcbiAgICAgICAgICAubWFwKChibG9jaykgPT4gYmxvY2suY2lkckJsb2NrKVxuICAgICAgICAgIC5maWx0ZXIoKGNpZHIpOiBjaWRyIGlzIHN0cmluZyA9PiBjaWRyICE9PSB1bmRlZmluZWQpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlcXVlc3RvckNpZHIgb2YgcmVxdWVzdG9yQ2lkcnMpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RvclJhbmdlID0gbmV3IENpZHJCbG9jayhyZXF1ZXN0b3JDaWRyKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RvcklwUmFuZ2U6IFtzdHJpbmcsIHN0cmluZ10gPSBbXG4gICAgICAgIHJlcXVlc3RvclJhbmdlLm1pbklwKCksXG4gICAgICAgIHJlcXVlc3RvclJhbmdlLm1heElwKCksXG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY2VwdG9yQ2lkciBvZiBhY2NlcHRvckNpZHJzKSB7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9yUmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGFjY2VwdG9yQ2lkcik7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9ySXBSYW5nZTogW3N0cmluZywgc3RyaW5nXSA9IFtcbiAgICAgICAgICBhY2NlcHRvclJhbmdlLm1pbklwKCksXG4gICAgICAgICAgYWNjZXB0b3JSYW5nZS5tYXhJcCgpLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0b3JSYW5nZS5yYW5nZXNPdmVybGFwKGFjY2VwdG9ySXBSYW5nZSwgcmVxdWVzdG9ySXBSYW5nZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIGVuZHBvaW50IG9yIGdhdGV3YXkgYmVpbmcgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlVGFyZ2V0UHJvcHMge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5IG9yIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFyZ2V0IGlzIG5vdCBzZXQgdG8gYSBnYXRld2F5LCBpbiB0aGlzIGNhc2UgYW4gZW5kcG9pbnQgaXMgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheT86IElSb3V0ZVRhcmdldDtcblxuICAvKipcbiAgICogVGhlIGVuZHBvaW50IHJvdXRlIHRhcmdldC4gVGhpcyBpcyB1c2VkIGZvciB0YXJnZXRzIHN1Y2ggYXNcbiAgICogVlBDIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhbiBlbmRwb2ludCwgaW4gdGhpcyBjYXNlIGEgZ2F0ZXdheSBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludD86IElWcGNFbmRwb2ludDtcbn1cblxuLyoqXG4gKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBSb3V0ZVRhcmdldFR5cGUge1xuICAvKipcbiAgICogVGhlIGdhdGV3YXkgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5IG9yIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGFyZ2V0IGlzIG5vdCBzZXQgdG8gYSBnYXRld2F5LCBpbiB0aGlzIGNhc2UgYW4gZW5kcG9pbnQgaXMgbmVlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2F0ZXdheT86IElSb3V0ZVRhcmdldDtcblxuICAvKipcbiAgICogVGhlIGVuZHBvaW50IHJvdXRlIHRhcmdldC4gVGhpcyBpcyB1c2VkIGZvciB0YXJnZXRzIHN1Y2ggYXNcbiAgICogVlBDIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhbiBlbmRwb2ludCwgaW4gdGhpcyBjYXNlIGEgZ2F0ZXdheSBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludD86IElWcGNFbmRwb2ludDtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogUm91dGVUYXJnZXRQcm9wcykge1xuICAgIGlmIChcbiAgICAgIChwcm9wcy5nYXRld2F5ICYmIHByb3BzLmVuZHBvaW50KSB8fFxuICAgICAgKCFwcm9wcy5nYXRld2F5ICYmICFwcm9wcy5lbmRwb2ludClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJFeGFjdGx5IG9uZSBvZiBgZ2F0ZXdheWAgb3IgYGVuZHBvaW50YCBtdXN0IGJlIHNwZWNpZmllZC5cIixcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2F0ZXdheSA9IHByb3BzLmdhdGV3YXk7XG4gICAgICB0aGlzLmVuZHBvaW50ID0gcHJvcHMuZW5kcG9pbnQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByb3V0ZVRhYmxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzdGluYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0T3V0cHV0cyB8IFZwY0VuZHBvaW50T3V0cHV0cztcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIGEgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlVjIgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlT3V0cHV0czogUm91dGVPdXRwdXRzO1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKiBAYXR0cmlidXRlIHJvdXRlVGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqIFRPRE86IExvb2sgZm9yIHN0cm9uZyBJUCB0eXBlIGltcGxlbWVudGF0aW9uIGhlcmUuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIHJvdXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlUHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlIHJvdXRlVGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByb3V0ZSBuYW1lXG4gICAqL1xuICByZWFkb25seSByb3V0ZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyByb3V0ZSB3aXRoIGFkZGVkIGZ1bmN0aW9uYWxpdHkuXG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlJvdXRlXG4gKi9cbmV4cG9ydCBjbGFzcyBSb3V0ZSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJUm91dGVWMiB7XG4gIHB1YmxpYyBnZXQgcm91dGVPdXRwdXRzKCk6IFJvdXRlT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJvdXRlVGFibGU6IHRoaXMucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQsXG4gICAgICBkZXN0aW5hdGlvbjogdGhpcy5kZXN0aW5hdGlvbixcbiAgICAgIHRhcmdldDogdGhpcy50YXJnZXQuZW5kcG9pbnRcbiAgICAgICAgPyB0aGlzLnRhcmdldC5lbmRwb2ludC52cGNFbmRwb2ludE91dHB1dHNcbiAgICAgICAgOiB0aGlzLnRhcmdldC5nYXRld2F5IS5yb3V0ZVRhcmdldE91dHB1dHMsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVPdXRwdXRzO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzdGluYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGUgdGFibGUgZm9yIHRoZSByb3V0ZS5cbiAgICogQGF0dHJpYnV0ZSByb3V0ZVRhYmxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB0aGUgcm91dGUgaXMgdGFyZ2V0aW5nXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0Um91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIHJvdXRlIENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZT86IHRmUm91dGUuUm91dGU7XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIGNpZHIgYmxvY2sgZm9yIGlwdjZcbiAgICovXG4gIHByaXZhdGUgZGVzdGluYXRpb25JcHY2Q2lkcj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gY2lkciBibG9jayBmb3IgaXB2NFxuICAgKi9cbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbklwdjRDaWRyPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSb3V0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudGFyZ2V0ID0gcHJvcHMudGFyZ2V0O1xuICAgIHRoaXMucm91dGVUYWJsZSA9IHByb3BzLnJvdXRlVGFibGU7XG4gICAgdGhpcy5kZXN0aW5hdGlvbiA9IHByb3BzLmRlc3RpbmF0aW9uO1xuICAgIGNvbnN0IGlzRGVzdGluYXRpb25JcHY0ID0gTmV0d29ya1V0aWxzLnZhbGlkSXAocHJvcHMuZGVzdGluYXRpb24pO1xuICAgIGlmICghaXNEZXN0aW5hdGlvbklwdjQpIHtcbiAgICAgIC8vVE9ETyBWYWxpZGF0ZSBmb3IgSVB2NiBDSURSIHJhbmdlXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uSXB2NkNpZHIgPSBwcm9wcy5kZXN0aW5hdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbklwdjRDaWRyID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy50YXJnZXQuZ2F0ZXdheT8ucm91dGVyVHlwZSA9PT1cbiAgICAgICAgUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZICYmXG4gICAgICBpc0Rlc3RpbmF0aW9uSXB2NFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkVncmVzcyBvbmx5IGludGVybmV0IGdhdGV3YXkgZG9lcyBub3Qgc3VwcG9ydCBJUHY0IHJvdXRpbmdcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMudGFyZ2V0Um91dGVyVHlwZSA9IHRoaXMudGFyZ2V0LmdhdGV3YXlcbiAgICAgID8gdGhpcy50YXJnZXQuZ2F0ZXdheS5yb3V0ZXJUeXBlXG4gICAgICA6IFJvdXRlclR5cGUuVlBDX0VORFBPSU5UO1xuICAgIC8vIEdhdGV3YXkgZ2VuZXJhdGVzIHJvdXRlIGF1dG9tYXRpY2FsbHkgdmlhIGl0cyBSb3V0ZVRhYmxlLCB0aHVzIHdlIGRvbid0IG5lZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc291cmNlIGZvciBpdFxuICAgIGlmICghKHRoaXMudGFyZ2V0LmVuZHBvaW50IGluc3RhbmNlb2YgR2F0ZXdheVZwY0VuZHBvaW50KSkge1xuICAgICAgdGhpcy5yZXNvdXJjZSA9IG5ldyB0ZlJvdXRlLlJvdXRlKHRoaXMsIFwiUm91dGVcIiwge1xuICAgICAgICByb3V0ZVRhYmxlSWQ6IHRoaXMucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQsXG4gICAgICAgIGRlc3RpbmF0aW9uQ2lkckJsb2NrOiB0aGlzLmRlc3RpbmF0aW9uSXB2NENpZHIsXG4gICAgICAgIGRlc3RpbmF0aW9uSXB2NkNpZHJCbG9jazogdGhpcy5kZXN0aW5hdGlvbklwdjZDaWRyLFxuICAgICAgICBbcm91dGVyVHlwZVRvUHJvcE5hbWUodGhpcy50YXJnZXRSb3V0ZXJUeXBlKV06IHRoaXMudGFyZ2V0LmdhdGV3YXlcbiAgICAgICAgICA/IHRoaXMudGFyZ2V0LmdhdGV3YXkucm91dGVyVGFyZ2V0SWRcbiAgICAgICAgICA6IHRoaXMudGFyZ2V0LmVuZHBvaW50XG4gICAgICAgICAgICA/IHRoaXMudGFyZ2V0LmVuZHBvaW50LnZwY0VuZHBvaW50SWRcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIC8vQ3JlYXRlIGEgcm91dGUgb25seSBhZnRlciB0YXJnZXQgZ2F0ZXdheSBvciBlbmRwb2ludCBpcyBjcmVhdGVkXG4gICAgaWYgKHRoaXMudGFyZ2V0LmdhdGV3YXkpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMudGFyZ2V0LmdhdGV3YXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YXJnZXQuZW5kcG9pbnQpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMudGFyZ2V0LmVuZHBvaW50KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIHJvdXRlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlVGFibGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcm91dGUgdGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJvdXRlIHRhYmxlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGVOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByb3V0ZSB0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBWUENcbiAqIEByZXNvdXJjZSBhd3Nfcm91dGVfdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRlVGFibGUgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSVJvdXRlVGFibGUge1xuICBwdWJsaWMgZ2V0IHJvdXRlVGFibGVPdXRwdXRzKCk6IFJvdXRlVGFibGVPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGVJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVRhYmxlT3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZVRhYmxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJvdXRlIHRhYmxlIENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogdGZSb3V0ZVRhYmxlLlJvdXRlVGFibGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHRmUm91dGVUYWJsZS5Sb3V0ZVRhYmxlKHRoaXMsIFwiUm91dGVUYWJsZVwiLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjLnZwY0lkLFxuICAgIH0pO1xuICAgIGlmIChwcm9wcy5yb3V0ZVRhYmxlTmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHByb3BzLnJvdXRlVGFibGVOYW1lKTtcbiAgICB9XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlVGFibGVJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBjdXN0b20gcm91dGUgdG8gdGhlIHJvdXRlIHRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gZGVzdGluYXRpb24gVGhlIElQdjQgb3IgSVB2NiBDSURSIGJsb2NrIHVzZWQgZm9yIHRoZSBkZXN0aW5hdGlvbiBtYXRjaC5cbiAgICogQHBhcmFtIHRhcmdldCBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqIEBwYXJhbSByb3V0ZU5hbWUgVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIHJvdXRlLlxuICAgKi9cbiAgcHVibGljIGFkZFJvdXRlKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGVzdGluYXRpb246IHN0cmluZyxcbiAgICB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZSxcbiAgICByb3V0ZU5hbWU/OiBzdHJpbmcsXG4gICkge1xuICAgIG5ldyBSb3V0ZSh0aGlzLCBpZCwge1xuICAgICAgcm91dGVUYWJsZTogdGhpcyxcbiAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvbixcbiAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgcm91dGVOYW1lOiByb3V0ZU5hbWUsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBpbnZlcnNlIG9mXG4gKiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvYmxvYi92NS44Ny4wL2ludGVybmFsL3NlcnZpY2UvZWMyL3ZwY19yb3V0ZS5nbyNMMjE5LUwyMzlcbiAqL1xuZnVuY3Rpb24gcm91dGVyVHlwZVRvUHJvcE5hbWUocm91dGVyVHlwZTogUm91dGVyVHlwZSkge1xuICBjb25zdCBsb29rdXBNYXA6IFJlY29yZDxSb3V0ZXJUeXBlLCBrZXlvZiB0ZlJvdXRlLlJvdXRlQ29uZmlnPiA9IHtcbiAgICBbUm91dGVyVHlwZS5DQVJSSUVSX0dBVEVXQVldOiBcImNhcnJpZXJHYXRld2F5SWRcIixcbiAgICBbUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZXTogXCJlZ3Jlc3NPbmx5R2F0ZXdheUlkXCIsXG4gICAgW1JvdXRlclR5cGUuR0FURVdBWV06IFwiZ2F0ZXdheUlkXCIsXG4gICAgLy8gdGVycmFmb3JtLXByb3ZpZGVyLWF3cyBpcyBtaXNzaW5nIHN3aXRjaCBjYXNlIGZvciBJbnN0YW5jZUlkXG4gICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVSb3V0ZS5odG1sXG4gICAgLy8gW1JvdXRlclR5cGUuSU5TVEFOQ0VdOiBcImluc3RhbmNlSWRcIixcbiAgICBbUm91dGVyVHlwZS5MT0NBTF9HQVRFV0FZXTogXCJsb2NhbEdhdGV3YXlJZFwiLFxuICAgIFtSb3V0ZXJUeXBlLk5BVF9HQVRFV0FZXTogXCJuYXRHYXRld2F5SWRcIixcbiAgICBbUm91dGVyVHlwZS5ORVRXT1JLX0lOVEVSRkFDRV06IFwibmV0d29ya0ludGVyZmFjZUlkXCIsXG4gICAgW1JvdXRlclR5cGUuVFJBTlNJVF9HQVRFV0FZXTogXCJ0cmFuc2l0R2F0ZXdheUlkXCIsXG4gICAgW1JvdXRlclR5cGUuVlBDX1BFRVJJTkdfQ09OTkVDVElPTl06IFwidnBjUGVlcmluZ0Nvbm5lY3Rpb25JZFwiLFxuICAgIFtSb3V0ZXJUeXBlLlZQQ19FTkRQT0lOVF06IFwidnBjRW5kcG9pbnRJZFwiLFxuICB9O1xuICByZXR1cm4gbG9va3VwTWFwW3JvdXRlclR5cGVdO1xufVxuIl19
|
|
470
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0RkFBNEY7QUFFNUYsc0RBWTZCO0FBQzdCLGlDQUFvQztBQUVwQywrQkFBbUU7QUFDbkUsaURBSXdCO0FBRXhCLG9EQUkwQjtBQUMxQiw4Q0FBOEM7QUFDOUMsMENBQW1DO0FBQ25DLHdDQUF3QztBQUN4Qyx5Q0FBOEM7QUFDOUMsK0NBQXdEO0FBSXhEOzs7O0dBSUc7QUFDSCxJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCx3Q0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILDBDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFUVyxtQkFBbUIsbUNBQW5CLG1CQUFtQixRQVM5QjtBQXNORDs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQUVoQzs7O0dBR0c7QUFDSCxNQUFhLHlCQUNYLFNBQVEsZ0NBQWdCO0lBR3hCLElBQVcsa0JBQWtCO1FBQzNCLE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pDLENBQUM7SUFnQkQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBcUM7UUFFckMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3hDLGVBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVB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bEQsTUFBTSxTQUFTLEdBQWtEO1FBQy9ELENBQUMsZ0JBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxrQkFBa0I7UUFDaEQsQ0FBQyxnQkFBVSxDQUFDLDRCQUE0QixDQUFDLEVBQUUscUJBQXFCO1FBQ2hFLENBQUMsZ0JBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXO1FBQ2pDLCtEQUErRDtRQUMvRCw4RUFBOEU7UUFDOUUsdUNBQXVDO1FBQ3ZDLENBQUMsZ0JBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxnQkFBZ0I7UUFDNUMsQ0FBQyxnQkFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGNBQWM7UUFDeEMsQ0FBQyxnQkFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsb0JBQW9CO1FBQ3BELENBQUMsZ0JBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxrQkFBa0I7UUFDaEQsQ0FBQyxnQkFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsd0JBQXdCO1FBQzdELENBQUMsZ0JBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxlQUFlO1FBQzFDLENBQUMsZ0JBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxnQkFBZ0I7S0FDNUMsQ0FBQztJQUNGLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9AYXdzLWNkay9hd3MtZWMyLWFscGhhL2xpYi9yb3V0ZS50c1xuXG5pbXBvcnQge1xuICBlaXAgYXMgdGZFaXAsXG4gIGVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkgYXMgdGZFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LFxuICBpbnRlcm5ldEdhdGV3YXkgYXMgdGZJbnRlcm5ldEdhdGV3YXksXG4gIG5hdEdhdGV3YXkgYXMgdGZOYXRHYXRld2F5LFxuICB2cGNQZWVyaW5nQ29ubmVjdGlvbiBhcyB0ZlZwY1BlZXJpbmdDb25uZWN0aW9uLFxuICByb3V0ZSBhcyB0ZlJvdXRlLFxuICByb3V0ZVRhYmxlIGFzIHRmUm91dGVUYWJsZSxcbiAgdnBuR2F0ZXdheUF0dGFjaG1lbnQgYXMgdGZWcG5HYXRld2F5QXR0YWNobWVudCxcbiAgaW50ZXJuZXRHYXRld2F5QXR0YWNobWVudCBhcyB0ZkludGVybmV0R2F0ZXdheUF0dGFjaG1lbnQsXG4gIHZwbkdhdGV3YXkgYXMgdGZWcG5HYXRld2F5LFxuICB2cG5HYXRld2F5Um91dGVQcm9wYWdhdGlvbiBhcyB0ZlZwbkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCwgSURlcGVuZGFibGUgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSVJvdXRlVGFibGUsIFJvdXRlclR5cGUsIFJvdXRlVGFibGVPdXRwdXRzIH0gZnJvbSBcIi4vdnBjXCI7XG5pbXBvcnQge1xuICBHYXRld2F5VnBjRW5kcG9pbnQsXG4gIElWcGNFbmRwb2ludCxcbiAgVnBjRW5kcG9pbnRPdXRwdXRzLFxufSBmcm9tIFwiLi92cGMtZW5kcG9pbnRcIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL2R1cmF0aW9uXCI7XG5pbXBvcnQge1xuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbiAgSUF3c0NvbnN0cnVjdCxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbi8vIFRPRE86IFVzZSBUYWdNYW5hZ2VyIGFuZCB0YWctYXNwZWN0IGluc3RlYWRcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiLi4vYXdzLXRhZ3NcIjtcbi8vIGltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiLi4vdGFnLWFzcGVjdFwiO1xuaW1wb3J0IHsgYWxsUm91dGVUYWJsZUlkcyB9IGZyb20gXCIuL2VjMi11dGlsXCI7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbHMsIENpZHJCbG9jayB9IGZyb20gXCIuL2VjMi11dGlsLXYyXCI7XG5pbXBvcnQgeyBJU3VibmV0VjIgfSBmcm9tIFwiLi9zdWJuZXQtdjJcIjtcbmltcG9ydCB7IElWcGNWMiwgVlBOR2F0ZXdheVYyT3B0aW9ucyB9IGZyb20gXCIuL3ZwYy12Mi1iYXNlXCI7XG5cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIE5BVCBnYXRld2F5IHN1cHBvcnRzIHB1YmxpYyBvciBwcml2YXRlIGNvbm5lY3Rpdml0eS5cbiAqIFRoZSBkZWZhdWx0IGlzIHB1YmxpYyBjb25uZWN0aXZpdHkuXG4gKiBTZWU6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItbmF0Z2F0ZXdheS5odG1sI2Nmbi1lYzItbmF0Z2F0ZXdheS1jb25uZWN0aXZpdHl0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIE5hdENvbm5lY3Rpdml0eVR5cGUge1xuICAvKipcbiAgICogU2V0cyBDb25uZWN0aXZpdHkgdHlwZSB0byBQVUJMSUNcbiAgICovXG4gIFBVQkxJQyA9IFwicHVibGljXCIsXG4gIC8qKlxuICAgKiBTZXRzIENvbm5lY3Rpdml0eSB0eXBlIHRvIFBSSVZBVEVcbiAgICovXG4gIFBSSVZBVEUgPSBcInByaXZhdGVcIixcbn1cblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlVGFyZ2V0T3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIGEgcm91dGluZyB0YXJnZXQsIHN1Y2ggYXMgYW5cbiAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIGVuZHBvaW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0ZVRhcmdldCBleHRlbmRzIElEZXBlbmRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZVRhcmdldE91dHB1dHM6IFJvdXRlVGFyZ2V0T3V0cHV0cztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGFuIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWdyZXNzT25seUludGVybmV0R2F0ZXdheVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGZvciB3aGljaCB0byBjcmVhdGUgdGhlIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSB2cGM6IElWcGNWMjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJlc291cmNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGFuIGludGVybmV0IGdhdGV3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuZXRHYXRld2F5UHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRob3V0IGEgcmVzb3VyY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJuZXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIFZQTiBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQTkdhdGV3YXlWMlByb3BzXG4gIGV4dGVuZHMgVlBOR2F0ZXdheVYyT3B0aW9ucyxcbiAgICBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBWUE4gZ2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIGEgTkFUIGdhdGV3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0R2F0ZXdheU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN1Ym5ldCBpbiB3aGljaCB0aGUgTkFUIGdhdGV3YXkgaXMgbG9jYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldDogSVN1Ym5ldFYyO1xuXG4gIC8qKlxuICAgKiBBbGxvY2F0aW9uSUQgb2YgRWxhc3RpYyBJUCBhZGRyZXNzIHRoYXQncyBhc3NvY2lhdGVkIHdpdGggdGhlIE5BVCBnYXRld2F5LiBUaGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIGZvciBhIHB1YmxpYyBOQVRcbiAgICogZ2F0ZXdheSBhbmQgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRoIGEgcHJpdmF0ZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdHRyLmFsbG9jYXRpb25JRCBvZiBhIG5ldyBFbGFzdGljIElQIGNyZWF0ZWQgYnkgZGVmYXVsdFxuICAgKiAvL1RPRE86IEFERCBMMiBmb3IgZWxhc3RpYyBpcFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb2NhdGlvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOYXRDb25uZWN0aXZpdHlUeXBlLlB1YmxpY1xuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGl2aXR5VHlwZT86IE5hdENvbm5lY3Rpdml0eVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpYmx5IHJlbGVhc2luZyB0aGVcbiAgICogSVAgYWRkcmVzc2VzIGlmIGNvbm5lY3Rpb25zIGFyZSBzdGlsbCBpbiBwcm9ncmVzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMzUwc2Vjb25kc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4RHJhaW5EdXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpdmF0ZSBJUHY0IGFkZHJlc3MgdG8gYXNzaWduIHRvIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB5b3UgZG9uJ3QgcHJvdmlkZSBhbiBhZGRyZXNzLCBhIHByaXZhdGUgSVB2NCBhZGRyZXNzIHdpbGwgYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVJcEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBFSVAgYWxsb2NhdGlvbiBJRHMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sI25hdC1nYXRld2F5LWNyZWF0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2Vjb25kYXJ5IGFsbG9jYXRpb24gSURzIGF0dGFjaGVkIHRvIE5BVEdXXG4gICAqXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlBbGxvY2F0aW9uSWRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzZXMgeW91XG4gICAqIHdhbnQgdG8gYXNzaWduIHRvIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudGAgYW5kIGBTZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzZXNgIGNhbm5vdCBiZVxuICAgKiBzZXQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWwjbmF0LWdhdGV3YXktY3JlYXRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWNvbmRhcnkgYWxsb2NhdGlvbiBJRHMgYXNzb2NpYXRlZCB3aXRoIE5BVEdXXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzc2VzLlxuICAgKlxuICAgKiBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc0NvdW50YCBhbmQgYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3Nlc2AgY2Fubm90IGJlXG4gICAqIHNldCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtbmF0LWdhdGV3YXkuaHRtbCNuYXQtZ2F0ZXdheS1jcmVhdGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNlY29uZGFyeSBwcml2YXRlIElwQWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCBOQVRHV1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOQVRHVyBwcm92aXNpb25lZCB3aXRob3V0IGFueSBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIE5BVCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdEdhdGV3YXlQcm9wcyBleHRlbmRzIE5hdEdhdGV3YXlPcHRpb25zLCBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBpbiB3aGljaCB0aGUgTkFUIGdhdGV3YXkgaXMgbG9jYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbGFzdGljIGlwIGFzc29jaWF0ZWQsIHJlcXVpcmVkIGluIGNhc2Ugb2YgcHVibGljIGNvbm5lY3Rpdml0eSBpZiBgQWxsb2NhdGlvbklkYCBpcyBub3QgZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogSVZwY1YyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIGEgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFZQQyB0aGF0IGlzIGFjY2VwdGluZyB0aGUgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjZXB0b3JWcGM6IElWcGNWMjtcblxuICAvLyBUT0RPOiBoYW5kbGUgY3Jvc3NBY2NvdW50IFRGIFByb3ZpZGVyIGZvciB2cGNfcGVlcmluZ19jb25uZWN0aW9uX2FjY2VwdGVyXG4gIC8vIC8qKlxuICAvLyAgKiBUaGUgcm9sZSBhcm4gY3JlYXRlZCBpbiB0aGUgYWNjZXB0b3IgYWNjb3VudC5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgLSBubyBwZWVyUm9sZUFybiBuZWVkZWQgaWYgbm90IGNyb3NzIGFjY291bnQgY29ubmVjdGlvblxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgcGVlclJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcGVlcmluZyBjb25uZWN0aW9uIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHZwY1BlZXJpbmdDb25uZWN0aW9uTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlBDUGVlcmluZ0Nvbm5lY3Rpb25Qcm9wcyBleHRlbmRzIFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRoYXQgaXMgcmVxdWVzdGluZyB0aGUgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdG9yVnBjOiBJVnBjVjI7XG59XG5cbi8qKlxuICogTmFtZSB0YWcgY29uc3RhbnRcbiAqL1xuY29uc3QgTkFNRV9UQUc6IHN0cmluZyA9IFwiTmFtZVwiO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheVxuICogQHJlc291cmNlIGF3c19lZ3Jlc3Nfb25seV9pbnRlcm5ldF9nYXRld2F5XG4gKi9cbmV4cG9ydCBjbGFzcyBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5XG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElSb3V0ZVRhcmdldFxue1xuICBwdWJsaWMgZ2V0IHJvdXRlVGFyZ2V0T3V0cHV0cygpOiBSb3V0ZVRhcmdldE91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICByb3V0ZXJUeXBlOiB0aGlzLnJvdXRlclR5cGUsXG4gICAgICByb3V0ZXJUYXJnZXRJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVRhcmdldE91dHB1dHM7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiB0ZkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkuRWdyZXNzT25seUludGVybmV0R2F0ZXdheTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmIChwcm9wcy5lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHByb3BzLmVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlOYW1lKTtcbiAgICB9XG4gICAgdGhpcy5yb3V0ZXJUeXBlID0gUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyB0ZkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkuRWdyZXNzT25seUludGVybmV0R2F0ZXdheShcbiAgICAgIHRoaXMsXG4gICAgICBcIkVJR1dcIixcbiAgICAgIHtcbiAgICAgICAgdnBjSWQ6IHByb3BzLnZwYy52cGNJZCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmlkO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnRlcm5ldCBnYXRld2F5XG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OkludGVybmV0R2F0ZXdheVxuICovXG5leHBvcnQgY2xhc3MgSW50ZXJuZXRHYXRld2F5IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElSb3V0ZVRhcmdldCB7XG4gIHB1YmxpYyBnZXQgcm91dGVUYXJnZXRPdXRwdXRzKCk6IFJvdXRlVGFyZ2V0T3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJvdXRlclR5cGU6IHRoaXMucm91dGVyVHlwZSxcbiAgICAgIHJvdXRlclRhcmdldElkOiB0aGlzLnJvdXRlclRhcmdldElkLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlVGFyZ2V0T3V0cHV0cztcbiAgfVxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5ldCBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogdGZJbnRlcm5ldEdhdGV3YXkuSW50ZXJuZXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbnRlcm5ldEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLkdBVEVXQVk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHRmSW50ZXJuZXRHYXRld2F5LkludGVybmV0R2F0ZXdheSh0aGlzLCBcIklHV1wiLCB7fSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLnZwY0lkID0gcHJvcHMudnBjLnZwY0lkO1xuXG4gICAgaWYgKHByb3BzLmludGVybmV0R2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy5pbnRlcm5ldEdhdGV3YXlOYW1lKTtcbiAgICB9XG5cbiAgICBuZXcgdGZJbnRlcm5ldEdhdGV3YXlBdHRhY2htZW50LkludGVybmV0R2F0ZXdheUF0dGFjaG1lbnQoXG4gICAgICB0aGlzLFxuICAgICAgXCJHV0F0dGFjaG1lbnRcIixcbiAgICAgIHtcbiAgICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICAgIGludGVybmV0R2F0ZXdheUlkOiB0aGlzLnJvdXRlclRhcmdldElkLFxuICAgICAgfSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHZpcnR1YWwgcHJpdmF0ZSBnYXRld2F5XG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlZQTkdhdGV3YXlcbiAqL1xuZXhwb3J0IGNsYXNzIFZQTkdhdGV3YXlWMiBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICBwdWJsaWMgZ2V0IHJvdXRlVGFyZ2V0T3V0cHV0cygpOiBSb3V0ZVRhcmdldE91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICByb3V0ZXJUeXBlOiB0aGlzLnJvdXRlclR5cGUsXG4gICAgICByb3V0ZXJUYXJnZXRJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVRhcmdldE91dHB1dHM7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgVlBOIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQTiBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogdGZWcG5HYXRld2F5LlZwbkdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIFRoZSBWUE4gR2F0ZXdheSBBdHRhY2htZW50XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdHRhY2htZW50OiB0ZlZwbkdhdGV3YXlBdHRhY2htZW50LlZwbkdhdGV3YXlBdHRhY2htZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgVlBOIEdhdGV3YXkgUm91dGUgUHJvcGFnYXRpb25cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlUHJvcGFnYXRpb246IHRmVnBuR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24uVnBuR2F0ZXdheVJvdXRlUHJvcGFnYXRpb25bXSA9XG4gICAgW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZQTkdhdGV3YXlWMlByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgY29uc3QgdnBuR2F0ZXdheU5hbWUgPVxuICAgICAgcHJvcHMudnBuR2F0ZXdheU5hbWUgfHxcbiAgICAgIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgcHJlZml4OiB0aGlzLmdyaWRVVUlELFxuICAgICAgfSk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLkdBVEVXQVk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHRmVnBuR2F0ZXdheS5WcG5HYXRld2F5KHRoaXMsIFwiSUdXXCIsIHtcbiAgICAgIGFtYXpvblNpZGVBc246XG4gICAgICAgIHByb3BzLmFtYXpvblNpZGVBc24gIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gcHJvcHMuYW1hem9uU2lkZUFzbi50b1N0cmluZygpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5pZDtcblxuICAgIHRoaXMudnBjSWQgPSBwcm9wcy52cGMudnBjSWQ7XG4gICAgdGhpcy5fYXR0YWNobWVudCA9IG5ldyB0ZlZwbkdhdGV3YXlBdHRhY2htZW50LlZwbkdhdGV3YXlBdHRhY2htZW50KFxuICAgICAgdGhpcyxcbiAgICAgIFwiVlBDVlBOR1dcIixcbiAgICAgIHtcbiAgICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yZXNvdXJjZS5pZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChwcm9wcy52cG5HYXRld2F5TmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHZwbkdhdGV3YXlOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBQcm9wYWdhdGUgcm91dGVzIG9uIHJvdXRlIHRhYmxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHJpZ2h0IHN1Ym5ldHNcbiAgICBjb25zdCB2cG5Sb3V0ZVByb3BhZ2F0aW9uID0gcHJvcHMudnBuUm91dGVQcm9wYWdhdGlvbiA/PyBbXTtcbiAgICBjb25zdCBzdWJuZXRzID0gdnBuUm91dGVQcm9wYWdhdGlvblxuICAgICAgLm1hcCgocykgPT4gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cylcbiAgICAgIC5mbGF0KCk7XG4gICAgY29uc3Qgcm91dGVUYWJsZUlkcyA9IGFsbFJvdXRlVGFibGVJZHMoc3VibmV0cyk7XG5cbiAgICBpZiAocm91dGVUYWJsZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIFwiQGF3cy1jZGs6YXdzLWVjMi1lbHBoYTplbmFibGVWcG5HYXRld2F5VjJcIixcbiAgICAgIEFubm90YXRpb25zLm9mKHNjb3BlKS5hZGRXYXJuaW5nKFxuICAgICAgICBgTm8gc3VibmV0cyBtYXRjaGluZyBzZWxlY3Rpb246ICcke0pTT04uc3RyaW5naWZ5KHZwblJvdXRlUHJvcGFnYXRpb24pfScuIFNlbGVjdCBvdGhlciBzdWJuZXRzIHRvIGFkZCByb3V0ZXMgdG8uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJuZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByb3V0ZVByb3BhZ2F0aW9uID1cbiAgICAgICAgbmV3IHRmVnBuR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24uVnBuR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgUm91dGVQcm9wYWdhdGlvbiR7aX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJvdXRlVGFibGVJZDogc3VibmV0c1tpXS5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICAgICAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAvLyBUaGUgQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uIHJlc291cmNlIGNhbm5vdCB1c2UgdGhlIFZQTiBnYXRld2F5XG4gICAgICAvLyB1bnRpbCBpdCBoYXMgc3VjY2Vzc2Z1bGx5IGF0dGFjaGVkIHRvIHRoZSBWUEMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG4tZ2F0ZXdheXJvdXRlcHJvcC5odG1sXG4gICAgICByb3V0ZVByb3BhZ2F0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLl9hdHRhY2htZW50KTtcbiAgICAgIHRoaXMuX3JvdXRlUHJvcGFnYXRpb24ucHVzaChyb3V0ZVByb3BhZ2F0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6TmF0R2F0ZXdheVxuICovXG5leHBvcnQgY2xhc3MgTmF0R2F0ZXdheSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICBwdWJsaWMgZ2V0IHJvdXRlVGFyZ2V0T3V0cHV0cygpOiBSb3V0ZVRhcmdldE91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICByb3V0ZXJUeXBlOiB0aGlzLnJvdXRlclR5cGUsXG4gICAgICByb3V0ZXJUYXJnZXRJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZVRhcmdldE91dHB1dHM7XG4gIH1cbiAgLyoqXG4gICAqIElkIG9mIHRoZSBOYXRHYXRld2F5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYXRHYXRld2F5SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBOQVQgZ2F0ZXdheSBzdXBwb3J0cyBwdWJsaWMgb3IgcHJpdmF0ZSBjb25uZWN0aXZpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHB1YmxpY1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpdml0eVR5cGU/OiBOYXRDb25uZWN0aXZpdHlUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaWJseSByZWxlYXNpbmcgdGhlXG4gICAqIElQIGFkZHJlc3NlcyBpZiBjb25uZWN0aW9ucyBhcmUgc3RpbGwgaW4gcHJvZ3Jlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0ICczMCBtaW51dGVzJ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1heERyYWluRHVyYXRpb24/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIE5BVCBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogdGZOYXRHYXRld2F5Lk5hdEdhdGV3YXk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5hdEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLk5BVF9HQVRFV0FZO1xuXG4gICAgdGhpcy5jb25uZWN0aXZpdHlUeXBlID1cbiAgICAgIHByb3BzLmNvbm5lY3Rpdml0eVR5cGUgfHwgTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUM7XG4gICAgdGhpcy5tYXhEcmFpbkR1cmF0aW9uID0gcHJvcHMubWF4RHJhaW5EdXJhdGlvbjtcblxuICAgIGlmICh0aGlzLmNvbm5lY3Rpdml0eVR5cGUgPT09IE5hdENvbm5lY3Rpdml0eVR5cGUuUFVCTElDKSB7XG4gICAgICBpZiAoIXByb3BzLnZwYyAmJiAhcHJvcHMuYWxsb2NhdGlvbklkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVpdGhlciBwcm92aWRlIHZwYyBvciBhbGxvY2F0aW9uSWRcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm5hdEdhdGV3YXlOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHM/Lm5hdEdhdGV3YXlOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBJZiB1c2VyIGRvZXMgbm90IHByb3ZpZGUgRUlQLCBnZW5lcmF0ZSBvbmUgZm9yIHRoZW1cbiAgICBsZXQgYUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuY29ubmVjdGl2aXR5VHlwZSA9PT0gTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUMpIHtcbiAgICAgIGlmICghcHJvcHMuYWxsb2NhdGlvbklkKSB7XG4gICAgICAgIGNvbnN0IGVpcCA9IG5ldyB0ZkVpcC5FaXAodGhpcywgXCJFSVBcIiwge1xuICAgICAgICAgIGRvbWFpbjogXCJ2cGNcIixcbiAgICAgICAgfSk7XG4gICAgICAgIGFJZCA9IGVpcC5hbGxvY2F0aW9uSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhSWQgPSBwcm9wcy5hbGxvY2F0aW9uSWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyB0Zk5hdEdhdGV3YXkuTmF0R2F0ZXdheSh0aGlzLCBcIk5BVEdhdGV3YXlcIiwge1xuICAgICAgc3VibmV0SWQ6IHByb3BzLnN1Ym5ldC5zdWJuZXRJZCxcbiAgICAgIGFsbG9jYXRpb25JZDogYUlkLFxuICAgICAgcHJpdmF0ZUlwOiBwcm9wcy5wcml2YXRlSXBBZGRyZXNzLFxuICAgICAgLy8gLi4ucHJvcHMsXG4gICAgICBjb25uZWN0aXZpdHlUeXBlOiBwcm9wcy5jb25uZWN0aXZpdHlUeXBlLFxuICAgICAgc2Vjb25kYXJ5QWxsb2NhdGlvbklkczogcHJvcHMuc2Vjb25kYXJ5QWxsb2NhdGlvbklkcyxcbiAgICAgIHNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudDogcHJvcHMuc2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc0NvdW50LFxuICAgICAgc2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzOiBwcm9wcy5zZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzZXMsXG4gICAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLW5hdGdhdGV3YXkuaHRtbCNjZm4tZWMyLW5hdGdhdGV3YXktbWF4ZHJhaW5kdXJhdGlvbnNlY29uZHNcbiAgICAgIC8vIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjguMC9kb2NzL3Jlc291cmNlcy9uYXRfZ2F0ZXdheSN0aW1lb3V0c1xuICAgICAgLi4uKHRoaXMubWF4RHJhaW5EdXJhdGlvblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHRpbWVvdXRzOiB7XG4gICAgICAgICAgICAgIGRlbGV0ZTogdGhpcy5tYXhEcmFpbkR1cmF0aW9uLnRvU2Vjb25kcygpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSk7XG4gICAgdGhpcy5uYXRHYXRld2F5SWQgPSB0aGlzLnJlc291cmNlLmlkO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kocHJvcHMuc3VibmV0LmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQpO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHBlZXJpbmcgY29ubmVjdGlvbiBiZXR3ZWVuIHR3byBWUENzXG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlZQQ1BlZXJpbmdDb25uZWN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBWUENQZWVyaW5nQ29ubmVjdGlvblxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJUm91dGVUYXJnZXRcbntcbiAgcHVibGljIGdldCByb3V0ZVRhcmdldE91dHB1dHMoKTogUm91dGVUYXJnZXRPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGVyVHlwZTogdGhpcy5yb3V0ZXJUeXBlLFxuICAgICAgcm91dGVyVGFyZ2V0SWQ6IHRoaXMucm91dGVyVGFyZ2V0SWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVUYXJnZXRPdXRwdXRzO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgcGVlcmluZyBjb25uZWN0aW9uIENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogdGZWcGNQZWVyaW5nQ29ubmVjdGlvbi5WcGNQZWVyaW5nQ29ubmVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVlBDUGVlcmluZ0Nvbm5lY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLlZQQ19QRUVSSU5HX0NPTk5FQ1RJT047XG5cbiAgICAvLyBjb25zdCBpc0Nyb3NzQWNjb3VudCA9XG4gICAgLy8gICBwcm9wcy5yZXF1ZXN0b3JWcGMub3duZXJBY2NvdW50SWQgIT09IHByb3BzLmFjY2VwdG9yVnBjLm93bmVyQWNjb3VudElkO1xuXG4gICAgLy8gaWYgKCFpc0Nyb3NzQWNjb3VudCAmJiBwcm9wcy5wZWVyUm9sZUFybikge1xuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKFwicGVlclJvbGVBcm4gaXMgbm90IG5lZWRlZCBmb3Igc2FtZSBhY2NvdW50IHBlZXJpbmdcIik7XG4gICAgLy8gfVxuXG4gICAgLy8gaWYgKGlzQ3Jvc3NBY2NvdW50ICYmICFwcm9wcy5wZWVyUm9sZUFybikge1xuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKFwiQ3Jvc3MgYWNjb3VudCBWUEMgcGVlcmluZyByZXF1aXJlcyBwZWVyUm9sZUFyblwiKTtcbiAgICAvLyB9XG5cbiAgICBjb25zdCBvdmVybGFwID0gdGhpcy52YWxpZGF0ZVZwY0NpZHJPdmVybGFwKFxuICAgICAgcHJvcHMucmVxdWVzdG9yVnBjLFxuICAgICAgcHJvcHMuYWNjZXB0b3JWcGMsXG4gICAgKTtcbiAgICBpZiAob3ZlcmxhcCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNJRFIgYmxvY2sgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggZWFjaCBvdGhlciBmb3IgZXN0YWJsaXNoaW5nIGEgcGVlcmluZyBjb25uZWN0aW9uXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocHJvcHMudnBjUGVlcmluZ0Nvbm5lY3Rpb25OYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHMudnBjUGVlcmluZ0Nvbm5lY3Rpb25OYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHRmVnBjUGVlcmluZ0Nvbm5lY3Rpb24uVnBjUGVlcmluZ0Nvbm5lY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJWUENQZWVyaW5nQ29ubmVjdGlvblwiLFxuICAgICAge1xuICAgICAgICB2cGNJZDogcHJvcHMucmVxdWVzdG9yVnBjLnZwY0lkLFxuICAgICAgICBwZWVyVnBjSWQ6IHByb3BzLmFjY2VwdG9yVnBjLnZwY0lkLFxuICAgICAgICBwZWVyT3duZXJJZDogcHJvcHMuYWNjZXB0b3JWcGMub3duZXJBY2NvdW50SWQsXG4gICAgICAgIHBlZXJSZWdpb246IHByb3BzLmFjY2VwdG9yVnBjLnJlZ2lvbiwgLy8gYXV0b0FjY2VwdCBtdXN0IGJlIGZhbHNlXG4gICAgICAgIC8vIFRPRE86IGhhbmRsZSBjcm9zc0FjY291bnQgVEYgUHJvdmlkZXIgZm9yIHZwY19wZWVyaW5nX2Nvbm5lY3Rpb25fYWNjZXB0ZXJcbiAgICAgICAgLy8gcGVlclJvbGVBcm46IGlzQ3Jvc3NBY2NvdW50ID8gcHJvcHMucGVlclJvbGVBcm4gOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICk7XG4gICAgLy8gVE9ETzogQWRkIGF3c192cGNfcGVlcmluZ19jb25uZWN0aW9uX2FjY2VwdGVyIHRvIG1hbmFnZSBBY2NlcHRlciBTaWRlP1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3Mgd2l0aGluIHRoZSBnaXZlbiBWUEMuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0b3JWcGMgVGhlIFZQQyBvZiB0aGUgcmVxdWVzdG9yLlxuICAgKiBAcGFyYW0gYWNjZXB0b3JWcGMgVGhlIFZQQyBvZiB0aGUgYWNjZXB0b3IuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGVhY2ggb3RoZXIgZm9yIHR3byBWUENzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZwY0NpZHJPdmVybGFwKFxuICAgIHJlcXVlc3RvclZwYzogSVZwY1YyLFxuICAgIGFjY2VwdG9yVnBjOiBJVnBjVjIsXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlcXVlc3RvckNpZHJzID0gW3JlcXVlc3RvclZwYy5pcHY0Q2lkckJsb2NrXTtcbiAgICBjb25zdCBhY2NlcHRvckNpZHJzID0gW2FjY2VwdG9yVnBjLmlwdjRDaWRyQmxvY2tdO1xuXG4gICAgaWYgKHJlcXVlc3RvclZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICAgIHJlcXVlc3RvckNpZHJzLnB1c2goXG4gICAgICAgIC4uLnJlcXVlc3RvclZwYy5zZWNvbmRhcnlDaWRyQmxvY2tcbiAgICAgICAgICAubWFwKChibG9jaykgPT4gYmxvY2suY2lkckJsb2NrKVxuICAgICAgICAgIC5maWx0ZXIoKGNpZHIpOiBjaWRyIGlzIHN0cmluZyA9PiBjaWRyICE9PSB1bmRlZmluZWQpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBhY2NlcHRvckNpZHJzLnB1c2goXG4gICAgICAgIC4uLmFjY2VwdG9yVnBjLnNlY29uZGFyeUNpZHJCbG9ja1xuICAgICAgICAgIC5tYXAoKGJsb2NrKSA9PiBibG9jay5jaWRyQmxvY2spXG4gICAgICAgICAgLmZpbHRlcigoY2lkcik6IGNpZHIgaXMgc3RyaW5nID0+IGNpZHIgIT09IHVuZGVmaW5lZCksXG4gICAgICApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVxdWVzdG9yQ2lkciBvZiByZXF1ZXN0b3JDaWRycykge1xuICAgICAgY29uc3QgcmVxdWVzdG9yUmFuZ2UgPSBuZXcgQ2lkckJsb2NrKHJlcXVlc3RvckNpZHIpO1xuICAgICAgY29uc3QgcmVxdWVzdG9ySXBSYW5nZTogW3N0cmluZywgc3RyaW5nXSA9IFtcbiAgICAgICAgcmVxdWVzdG9yUmFuZ2UubWluSXAoKSxcbiAgICAgICAgcmVxdWVzdG9yUmFuZ2UubWF4SXAoKSxcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3QgYWNjZXB0b3JDaWRyIG9mIGFjY2VwdG9yQ2lkcnMpIHtcbiAgICAgICAgY29uc3QgYWNjZXB0b3JSYW5nZSA9IG5ldyBDaWRyQmxvY2soYWNjZXB0b3JDaWRyKTtcbiAgICAgICAgY29uc3QgYWNjZXB0b3JJcFJhbmdlOiBbc3RyaW5nLCBzdHJpbmddID0gW1xuICAgICAgICAgIGFjY2VwdG9yUmFuZ2UubWluSXAoKSxcbiAgICAgICAgICBhY2NlcHRvclJhbmdlLm1heElwKCksXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHJlcXVlc3RvclJhbmdlLnJhbmdlc092ZXJsYXAoYWNjZXB0b3JJcFJhbmdlLCByZXF1ZXN0b3JJcFJhbmdlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgZW5kcG9pbnQgb3IgZ2F0ZXdheSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVUYXJnZXRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhIGdhdGV3YXksIGluIHRoaXMgY2FzZSBhbiBlbmRwb2ludCBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5PzogSVJvdXRlVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBWUEMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGFuIGVuZHBvaW50LCBpbiB0aGlzIGNhc2UgYSBnYXRld2F5IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50PzogSVZwY0VuZHBvaW50O1xufVxuXG4vKipcbiAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRlVGFyZ2V0VHlwZSB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhIGdhdGV3YXksIGluIHRoaXMgY2FzZSBhbiBlbmRwb2ludCBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5PzogSVJvdXRlVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBWUEMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGFuIGVuZHBvaW50LCBpbiB0aGlzIGNhc2UgYSBnYXRld2F5IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50PzogSVZwY0VuZHBvaW50O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBSb3V0ZVRhcmdldFByb3BzKSB7XG4gICAgaWYgKFxuICAgICAgKHByb3BzLmdhdGV3YXkgJiYgcHJvcHMuZW5kcG9pbnQpIHx8XG4gICAgICAoIXByb3BzLmdhdGV3YXkgJiYgIXByb3BzLmVuZHBvaW50KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkV4YWN0bHkgb25lIG9mIGBnYXRld2F5YCBvciBgZW5kcG9pbnRgIG11c3QgYmUgc3BlY2lmaWVkLlwiLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nYXRld2F5ID0gcHJvcHMuZ2F0ZXdheTtcbiAgICAgIHRoaXMuZW5kcG9pbnQgPSBwcm9wcy5lbmRwb2ludDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElQdjQgb3IgSVB2NiBDSURSIGJsb2NrIHVzZWQgZm9yIHRoZSBkZXN0aW5hdGlvbiBtYXRjaC5cbiAgICpcbiAgICogUm91dGluZyBkZWNpc2lvbnMgYXJlIGJhc2VkIG9uIHRoZSBtb3N0IHNwZWNpZmljIG1hdGNoLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRPdXRwdXRzIHwgVnBjRW5kcG9pbnRPdXRwdXRzO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgYSByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm91dGVWMiBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIG91dHB1dHMgb2YgdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVPdXRwdXRzOiBSb3V0ZU91dHB1dHM7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICogVE9ETzogTG9vayBmb3Igc3Ryb25nIElQIHR5cGUgaW1wbGVtZW50YXRpb24gaGVyZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldDogUm91dGVUYXJnZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcm91dGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJvdXRlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHJvdXRlIHdpdGggYWRkZWQgZnVuY3Rpb25hbGl0eS5cbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6Um91dGVcbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRlIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElSb3V0ZVYyIHtcbiAgcHVibGljIGdldCByb3V0ZU91dHB1dHMoKTogUm91dGVPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcm91dGVUYWJsZTogdGhpcy5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLmRlc3RpbmF0aW9uLFxuICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldC5lbmRwb2ludFxuICAgICAgICA/IHRoaXMudGFyZ2V0LmVuZHBvaW50LnZwY0VuZHBvaW50T3V0cHV0c1xuICAgICAgICA6IHRoaXMudGFyZ2V0LmdhdGV3YXkhLnJvdXRlVGFyZ2V0T3V0cHV0cyxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZU91dHB1dHM7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqXG4gICAqIFJvdXRpbmcgZGVjaXNpb25zIGFyZSBiYXNlZCBvbiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0OiBSb3V0ZVRhcmdldFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKiBAYXR0cmlidXRlIHJvdXRlVGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZVRhYmxlOiBJUm91dGVUYWJsZTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHRoZSByb3V0ZSBpcyB0YXJnZXRpbmdcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXRSb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGUgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlPzogdGZSb3V0ZS5Sb3V0ZTtcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gY2lkciBibG9jayBmb3IgaXB2NlxuICAgKi9cbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbklwdjZDaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBjaWRyIGJsb2NrIGZvciBpcHY0XG4gICAqL1xuICBwcml2YXRlIGRlc3RpbmF0aW9uSXB2NENpZHI/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy50YXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgdGhpcy5yb3V0ZVRhYmxlID0gcHJvcHMucm91dGVUYWJsZTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgY29uc3QgaXNEZXN0aW5hdGlvbklwdjQgPSBOZXR3b3JrVXRpbHMudmFsaWRJcChwcm9wcy5kZXN0aW5hdGlvbik7XG4gICAgaWYgKCFpc0Rlc3RpbmF0aW9uSXB2NCkge1xuICAgICAgLy9UT0RPIFZhbGlkYXRlIGZvciBJUHY2IENJRFIgcmFuZ2VcbiAgICAgIHRoaXMuZGVzdGluYXRpb25JcHY2Q2lkciA9IHByb3BzLmRlc3RpbmF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uSXB2NENpZHIgPSBwcm9wcy5kZXN0aW5hdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnRhcmdldC5nYXRld2F5Py5yb3V0ZXJUeXBlID09PVxuICAgICAgICBSb3V0ZXJUeXBlLkVHUkVTU19PTkxZX0lOVEVSTkVUX0dBVEVXQVkgJiZcbiAgICAgIGlzRGVzdGluYXRpb25JcHY0XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRWdyZXNzIG9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBkb2VzIG5vdCBzdXBwb3J0IElQdjQgcm91dGluZ1wiLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50YXJnZXRSb3V0ZXJUeXBlID0gdGhpcy50YXJnZXQuZ2F0ZXdheVxuICAgICAgPyB0aGlzLnRhcmdldC5nYXRld2F5LnJvdXRlclR5cGVcbiAgICAgIDogUm91dGVyVHlwZS5WUENfRU5EUE9JTlQ7XG4gICAgLy8gR2F0ZXdheSBnZW5lcmF0ZXMgcm91dGUgYXV0b21hdGljYWxseSB2aWEgaXRzIFJvdXRlVGFibGUsIHRodXMgd2UgZG9uJ3QgbmVlZCB0byBnZW5lcmF0ZSB0aGUgcmVzb3VyY2UgZm9yIGl0XG4gICAgaWYgKCEodGhpcy50YXJnZXQuZW5kcG9pbnQgaW5zdGFuY2VvZiBHYXRld2F5VnBjRW5kcG9pbnQpKSB7XG4gICAgICB0aGlzLnJlc291cmNlID0gbmV3IHRmUm91dGUuUm91dGUodGhpcywgXCJSb3V0ZVwiLCB7XG4gICAgICAgIHJvdXRlVGFibGVJZDogdGhpcy5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICAgICAgZGVzdGluYXRpb25DaWRyQmxvY2s6IHRoaXMuZGVzdGluYXRpb25JcHY0Q2lkcixcbiAgICAgICAgZGVzdGluYXRpb25JcHY2Q2lkckJsb2NrOiB0aGlzLmRlc3RpbmF0aW9uSXB2NkNpZHIsXG4gICAgICAgIFtyb3V0ZXJUeXBlVG9Qcm9wTmFtZSh0aGlzLnRhcmdldFJvdXRlclR5cGUpXTogdGhpcy50YXJnZXQuZ2F0ZXdheVxuICAgICAgICAgID8gdGhpcy50YXJnZXQuZ2F0ZXdheS5yb3V0ZXJUYXJnZXRJZFxuICAgICAgICAgIDogdGhpcy50YXJnZXQuZW5kcG9pbnRcbiAgICAgICAgICAgID8gdGhpcy50YXJnZXQuZW5kcG9pbnQudnBjRW5kcG9pbnRJZFxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuXG4gICAgLy9DcmVhdGUgYSByb3V0ZSBvbmx5IGFmdGVyIHRhcmdldCBnYXRld2F5IG9yIGVuZHBvaW50IGlzIGNyZWF0ZWRcbiAgICBpZiAodGhpcy50YXJnZXQuZ2F0ZXdheSkge1xuICAgICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy50YXJnZXQuZ2F0ZXdheSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhcmdldC5lbmRwb2ludCkge1xuICAgICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy50YXJnZXQuZW5kcG9pbnQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgcm91dGUgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSByb3V0ZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRob3V0IGEgcm91dGUgdGFibGUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJvdXRlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIFZQQ1xuICogQHJlc291cmNlIGF3c19yb3V0ZV90YWJsZVxuICovXG5leHBvcnQgY2xhc3MgUm91dGVUYWJsZSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJUm91dGVUYWJsZSB7XG4gIHB1YmxpYyBnZXQgcm91dGVUYWJsZU91dHB1dHMoKTogUm91dGVUYWJsZU91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICByb3V0ZVRhYmxlSWQ6IHRoaXMucm91dGVUYWJsZUlkLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlVGFibGVPdXRwdXRzO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvdXRlVGFibGVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcm91dGUgdGFibGUgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiB0ZlJvdXRlVGFibGUuUm91dGVUYWJsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm91dGVUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgdGZSb3V0ZVRhYmxlLlJvdXRlVGFibGUodGhpcywgXCJSb3V0ZVRhYmxlXCIsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgfSk7XG4gICAgaWYgKHByb3BzLnJvdXRlVGFibGVOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHMucm91dGVUYWJsZU5hbWUpO1xuICAgIH1cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcblxuICAgIHRoaXMucm91dGVUYWJsZUlkID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGN1c3RvbSByb3V0ZSB0byB0aGUgcm91dGUgdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkZXN0aW5hdGlvbiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICogQHBhcmFtIHJvdXRlTmFtZSBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgcm91dGUuXG4gICAqL1xuICBwdWJsaWMgYWRkUm91dGUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBkZXN0aW5hdGlvbjogc3RyaW5nLFxuICAgIHRhcmdldDogUm91dGVUYXJnZXRUeXBlLFxuICAgIHJvdXRlTmFtZT86IHN0cmluZyxcbiAgKSB7XG4gICAgbmV3IFJvdXRlKHRoaXMsIGlkLCB7XG4gICAgICByb3V0ZVRhYmxlOiB0aGlzLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxuICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICByb3V0ZU5hbWU6IHJvdXRlTmFtZSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIGludmVyc2Ugb2ZcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9ibG9iL3Y1Ljg3LjAvaW50ZXJuYWwvc2VydmljZS9lYzIvdnBjX3JvdXRlLmdvI0wyMTktTDIzOVxuICovXG5mdW5jdGlvbiByb3V0ZXJUeXBlVG9Qcm9wTmFtZShyb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlKSB7XG4gIGNvbnN0IGxvb2t1cE1hcDogUmVjb3JkPFJvdXRlclR5cGUsIGtleW9mIHRmUm91dGUuUm91dGVDb25maWc+ID0ge1xuICAgIFtSb3V0ZXJUeXBlLkNBUlJJRVJfR0FURVdBWV06IFwiY2FycmllckdhdGV3YXlJZFwiLFxuICAgIFtSb3V0ZXJUeXBlLkVHUkVTU19PTkxZX0lOVEVSTkVUX0dBVEVXQVldOiBcImVncmVzc09ubHlHYXRld2F5SWRcIixcbiAgICBbUm91dGVyVHlwZS5HQVRFV0FZXTogXCJnYXRld2F5SWRcIixcbiAgICAvLyB0ZXJyYWZvcm0tcHJvdmlkZXItYXdzIGlzIG1pc3Npbmcgc3dpdGNoIGNhc2UgZm9yIEluc3RhbmNlSWRcbiAgICAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NyZWF0ZVJvdXRlLmh0bWxcbiAgICAvLyBbUm91dGVyVHlwZS5JTlNUQU5DRV06IFwiaW5zdGFuY2VJZFwiLFxuICAgIFtSb3V0ZXJUeXBlLkxPQ0FMX0dBVEVXQVldOiBcImxvY2FsR2F0ZXdheUlkXCIsXG4gICAgW1JvdXRlclR5cGUuTkFUX0dBVEVXQVldOiBcIm5hdEdhdGV3YXlJZFwiLFxuICAgIFtSb3V0ZXJUeXBlLk5FVFdPUktfSU5URVJGQUNFXTogXCJuZXR3b3JrSW50ZXJmYWNlSWRcIixcbiAgICBbUm91dGVyVHlwZS5UUkFOU0lUX0dBVEVXQVldOiBcInRyYW5zaXRHYXRld2F5SWRcIixcbiAgICBbUm91dGVyVHlwZS5WUENfUEVFUklOR19DT05ORUNUSU9OXTogXCJ2cGNQZWVyaW5nQ29ubmVjdGlvbklkXCIsXG4gICAgW1JvdXRlclR5cGUuVlBDX0VORFBPSU5UXTogXCJ2cGNFbmRwb2ludElkXCIsXG4gICAgW1JvdXRlclR5cGUuQ09SRV9ORVRXT1JLXTogXCJjb3JlTmV0d29ya0FyblwiLFxuICB9O1xuICByZXR1cm4gbG9va3VwTWFwW3JvdXRlclR5cGVdO1xufVxuIl19
|
|
@@ -47,7 +47,7 @@ class Runtime {
|
|
|
47
47
|
}
|
|
48
48
|
exports.Runtime = Runtime;
|
|
49
49
|
_a = JSII_RTTI_SYMBOL_1;
|
|
50
|
-
Runtime[_a] = { fqn: "terraconstructs.aws.compute.Runtime", version: "0.2.
|
|
50
|
+
Runtime[_a] = { fqn: "terraconstructs.aws.compute.Runtime", version: "0.2.4" };
|
|
51
51
|
/** A list of all known `Runtime`'s. */
|
|
52
52
|
Runtime.ALL = new Array();
|
|
53
53
|
/**
|
|
@@ -143,7 +143,7 @@ class ScalableTarget extends aws_construct_1.AwsConstructBase {
|
|
|
143
143
|
}
|
|
144
144
|
exports.ScalableTarget = ScalableTarget;
|
|
145
145
|
_a = JSII_RTTI_SYMBOL_1;
|
|
146
|
-
ScalableTarget[_a] = { fqn: "terraconstructs.aws.compute.ScalableTarget", version: "0.2.
|
|
146
|
+
ScalableTarget[_a] = { fqn: "terraconstructs.aws.compute.ScalableTarget", version: "0.2.4" };
|
|
147
147
|
/**
|
|
148
148
|
* The service that supports Application AutoScaling
|
|
149
149
|
*/
|
|
@@ -86,7 +86,7 @@ class Schedule {
|
|
|
86
86
|
}
|
|
87
87
|
exports.Schedule = Schedule;
|
|
88
88
|
_a = JSII_RTTI_SYMBOL_1;
|
|
89
|
-
Schedule[_a] = { fqn: "terraconstructs.aws.compute.Schedule", version: "0.2.
|
|
89
|
+
Schedule[_a] = { fqn: "terraconstructs.aws.compute.Schedule", version: "0.2.4" };
|
|
90
90
|
class LiteralSchedule extends Schedule {
|
|
91
91
|
constructor(expressionString) {
|
|
92
92
|
super();
|