terraconstructs 0.2.4 → 0.2.6
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 +3099 -2917
- package/CLAUDE.md +6 -6
- package/README.md +1 -1
- package/lib/asset-staging.js +3 -3
- package/lib/aws/arn.js +5 -5
- package/lib/aws/aws-asset-manager.js +9 -9
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.d.ts +19 -4
- package/lib/aws/aws-stack.js +43 -18
- package/lib/aws/aws-tags.d.ts +1 -1
- package/lib/aws/aws-tags.js +5 -5
- 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 +2 -2
- 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.d.ts +1 -1
- package/lib/aws/cloudwatch/alarm.js +10 -10
- package/lib/aws/cloudwatch/composite-alarm.d.ts +1 -1
- package/lib/aws/cloudwatch/composite-alarm.js +7 -7
- package/lib/aws/cloudwatch/dashboard.d.ts +1 -1
- package/lib/aws/cloudwatch/dashboard.js +7 -7
- package/lib/aws/cloudwatch/data-protection-policy.d.ts +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +5 -5
- 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.d.ts +1 -1
- package/lib/aws/cloudwatch/log-group.js +7 -7
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.d.ts +1 -1
- package/lib/aws/cloudwatch/log-stream.js +3 -3
- package/lib/aws/cloudwatch/metric-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +3 -3
- package/lib/aws/cloudwatch/metric.js +6 -6
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.d.ts +1 -1
- package/lib/aws/cloudwatch/policy.js +3 -3
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +1 -1
- package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +1 -1
- package/lib/aws/cloudwatch/private/env-tokens.js +6 -6
- package/lib/aws/cloudwatch/query-definition.d.ts +1 -1
- package/lib/aws/cloudwatch/query-definition.js +4 -4
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.d.ts +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +6 -6
- 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.d.ts +1 -1
- package/lib/aws/compute/access-log.js +5 -5
- package/lib/aws/compute/activity.d.ts +1 -1
- package/lib/aws/compute/activity.js +5 -5
- package/lib/aws/compute/alb/application-listener-action.d.ts +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +5 -5
- package/lib/aws/compute/alb/application-listener-certificate.js +3 -3
- package/lib/aws/compute/alb/application-listener-rule.js +9 -9
- package/lib/aws/compute/alb/application-listener.js +5 -5
- package/lib/aws/compute/alb/application-load-balancer.js +8 -8
- package/lib/aws/compute/alb/application-target-group.js +7 -7
- package/lib/aws/compute/alb/conditions.js +3 -3
- package/lib/aws/compute/alb/trust-store-revocation.js +3 -3
- package/lib/aws/compute/alb/trust-store.js +7 -7
- package/lib/aws/compute/api-definition.js +9 -9
- package/lib/aws/compute/api-key.js +6 -6
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.d.ts +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +6 -6
- package/lib/aws/compute/authorizer.js +1 -1
- package/lib/aws/compute/authorizers/identity-source.js +1 -1
- package/lib/aws/compute/authorizers/lambda.d.ts +1 -1
- package/lib/aws/compute/authorizers/lambda.js +6 -6
- package/lib/aws/compute/base-path-mapping.js +5 -5
- package/lib/aws/compute/base-scalable-attribute.js +1 -1
- package/lib/aws/compute/bastion-host.js +4 -4
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +3 -3
- package/lib/aws/compute/client-vpn-endpoint.d.ts +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +9 -9
- package/lib/aws/compute/client-vpn-route.d.ts +1 -1
- package/lib/aws/compute/client-vpn-route.js +4 -4
- package/lib/aws/compute/code.d.ts +3 -3
- package/lib/aws/compute/code.js +15 -15
- 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 +5 -5
- package/lib/aws/compute/domain-name.js +5 -5
- package/lib/aws/compute/event-invoke-config.d.ts +1 -1
- package/lib/aws/compute/event-invoke-config.js +3 -3
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +7 -7
- 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 +5 -5
- package/lib/aws/compute/fields.d.ts +1 -1
- package/lib/aws/compute/fields.js +12 -12
- package/lib/aws/compute/function-alias.d.ts +1 -1
- package/lib/aws/compute/function-alias.js +3 -3
- package/lib/aws/compute/function-base.d.ts +1 -1
- package/lib/aws/compute/function-base.js +10 -9
- 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/bundling.js +6 -6
- package/lib/aws/compute/function-nodejs/function.js +4 -4
- package/lib/aws/compute/function-url.d.ts +1 -1
- package/lib/aws/compute/function-url.js +3 -3
- package/lib/aws/compute/function-vpc-config.generated.d.ts +5 -5
- package/lib/aws/compute/function-vpc-config.generated.js +1 -1
- package/lib/aws/compute/function.d.ts +2 -2
- package/lib/aws/compute/function.js +9 -9
- package/lib/aws/compute/gateway-response.d.ts +1 -1
- package/lib/aws/compute/gateway-response.js +4 -4
- package/lib/aws/compute/handler.js +1 -1
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.d.ts +1 -1
- package/lib/aws/compute/instance.js +9 -9
- package/lib/aws/compute/integration.js +4 -4
- package/lib/aws/compute/integrations/aws.js +3 -3
- package/lib/aws/compute/integrations/http.js +1 -1
- package/lib/aws/compute/integrations/lambda.js +5 -5
- package/lib/aws/compute/integrations/mock.js +1 -1
- package/lib/aws/compute/integrations/stepfunctions.js +4 -4
- package/lib/aws/compute/ip-addresses.d.ts +1 -1
- package/lib/aws/compute/ip-addresses.js +10 -10
- package/lib/aws/compute/ipam.d.ts +1 -1
- package/lib/aws/compute/ipam.js +5 -5
- package/lib/aws/compute/key-pair.d.ts +1 -1
- package/lib/aws/compute/key-pair.js +6 -6
- package/lib/aws/compute/lambda-api.js +1 -1
- package/lib/aws/compute/launch-template.d.ts +1 -1
- package/lib/aws/compute/launch-template.js +12 -12
- package/lib/aws/compute/lb-shared/base-listener.js +9 -9
- package/lib/aws/compute/lb-shared/base-load-balancer.d.ts +2 -2
- package/lib/aws/compute/lb-shared/base-load-balancer.js +12 -12
- package/lib/aws/compute/lb-shared/base-target-group.d.ts +1 -1
- package/lib/aws/compute/lb-shared/base-target-group.js +15 -15
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +34 -34
- package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +1 -1
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +11 -6
- package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +1 -1
- package/lib/aws/compute/lb-shared/listener-action.d.ts +1 -1
- package/lib/aws/compute/lb-shared/listener-action.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-shared/util.js +5 -5
- 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.d.ts +1 -1
- package/lib/aws/compute/load-balancer.js +8 -8
- 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 +10 -10
- package/lib/aws/compute/method.js +6 -6
- package/lib/aws/compute/model.js +5 -5
- package/lib/aws/compute/nat.js +10 -10
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.d.ts +1 -1
- package/lib/aws/compute/network-acl.js +5 -5
- package/lib/aws/compute/nlb/network-listener-action.d.ts +1 -1
- package/lib/aws/compute/nlb/network-listener-action.js +2 -2
- package/lib/aws/compute/nlb/network-listener-certificate.js +2 -2
- package/lib/aws/compute/nlb/network-listener.js +5 -5
- package/lib/aws/compute/nlb/network-load-balancer.js +6 -6
- package/lib/aws/compute/nlb/network-target-group.js +4 -4
- package/lib/aws/compute/peer.js +7 -7
- package/lib/aws/compute/placement-group.d.ts +1 -1
- package/lib/aws/compute/placement-group.js +3 -3
- package/lib/aws/compute/port.js +5 -5
- package/lib/aws/compute/prefix-list.d.ts +1 -1
- package/lib/aws/compute/prefix-list.js +5 -5
- package/lib/aws/compute/private/context-stub.js +7 -7
- package/lib/aws/compute/private/ebs-util.d.ts +1 -1
- package/lib/aws/compute/private/ebs-util.js +3 -3
- package/lib/aws/compute/private/json-path.d.ts +1 -1
- package/lib/aws/compute/private/json-path.js +8 -8
- package/lib/aws/compute/requestvalidator.js +3 -3
- package/lib/aws/compute/resource.js +5 -5
- package/lib/aws/compute/restapi.d.ts +1 -1
- package/lib/aws/compute/restapi.js +11 -11
- package/lib/aws/compute/route.d.ts +1 -1
- package/lib/aws/compute/route.js +12 -12
- package/lib/aws/compute/runtime.js +3 -3
- package/lib/aws/compute/scalable-target.d.ts +1 -1
- package/lib/aws/compute/scalable-target.js +3 -3
- package/lib/aws/compute/schedule.js +4 -4
- package/lib/aws/compute/security-group.js +12 -12
- package/lib/aws/compute/stage.d.ts +1 -1
- package/lib/aws/compute/stage.js +6 -6
- 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.d.ts +2 -2
- package/lib/aws/compute/state-machine.js +8 -8
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +5 -5
- 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 +4 -4
- package/lib/aws/compute/states/fail.js +4 -4
- package/lib/aws/compute/states/map-base.js +4 -4
- 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 +4 -4
- 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 +5 -5
- package/lib/aws/compute/step-scaling-policy.js +7 -7
- package/lib/aws/compute/stepfunctions-api.js +2 -2
- package/lib/aws/compute/subnet-v2.d.ts +1 -1
- package/lib/aws/compute/subnet-v2.js +5 -5
- package/lib/aws/compute/subnet.js +4 -4
- package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
- 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 +5 -5
- 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 +5 -5
- package/lib/aws/compute/user-data.d.ts +2 -2
- package/lib/aws/compute/user-data.js +10 -10
- package/lib/aws/compute/volume.d.ts +1 -1
- package/lib/aws/compute/volume.js +7 -7
- package/lib/aws/compute/vpc-endpoint-service.js +3 -3
- package/lib/aws/compute/vpc-endpoint.d.ts +1 -1
- package/lib/aws/compute/vpc-endpoint.js +13 -13
- package/lib/aws/compute/vpc-flow-logs.d.ts +1 -1
- package/lib/aws/compute/vpc-flow-logs.js +8 -8
- package/lib/aws/compute/vpc-link.js +5 -5
- package/lib/aws/compute/vpc-v2-base.js +6 -6
- package/lib/aws/compute/vpc-v2.d.ts +2 -2
- package/lib/aws/compute/vpc-v2.js +4 -4
- package/lib/aws/compute/vpc.d.ts +1 -1
- package/lib/aws/compute/vpc.js +24 -22
- package/lib/aws/compute/vpn.js +8 -8
- package/lib/aws/context-provider.js +4 -4
- package/lib/aws/edge/certificate.d.ts +1 -1
- package/lib/aws/edge/certificate.js +6 -6
- package/lib/aws/edge/distribution.d.ts +1 -1
- package/lib/aws/edge/distribution.js +9 -9
- package/lib/aws/edge/dns-alias-record-targets.d.ts +1 -1
- package/lib/aws/edge/dns-alias-record-targets.js +7 -7
- package/lib/aws/edge/dns-record.d.ts +1 -1
- package/lib/aws/edge/dns-record.js +19 -19
- package/lib/aws/edge/dns-zone.d.ts +2 -2
- package/lib/aws/edge/dns-zone.js +5 -5
- package/lib/aws/edge/function.d.ts +1 -1
- package/lib/aws/edge/function.js +4 -4
- package/lib/aws/edge/key-value-store.d.ts +1 -1
- package/lib/aws/edge/key-value-store.js +6 -6
- package/lib/aws/edge/origin.d.ts +1 -1
- package/lib/aws/edge/origin.js +6 -6
- package/lib/aws/edge/response-headers-policy.d.ts +1 -1
- package/lib/aws/edge/response-headers-policy.js +6 -6
- package/lib/aws/encryption/alias.d.ts +1 -1
- package/lib/aws/encryption/alias.js +8 -8
- package/lib/aws/encryption/key.d.ts +1 -1
- package/lib/aws/encryption/key.js +6 -6
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +3 -3
- package/lib/aws/iam/group.js +5 -5
- package/lib/aws/iam/instance-profile.d.ts +1 -1
- package/lib/aws/iam/instance-profile.js +3 -3
- package/lib/aws/iam/managed-policy.d.ts +1 -1
- package/lib/aws/iam/managed-policy.js +3 -3
- package/lib/aws/iam/oidc-provider.d.ts +1 -1
- package/lib/aws/iam/oidc-provider.js +3 -3
- package/lib/aws/iam/policy-document-config.generated.d.ts +9 -9
- package/lib/aws/iam/policy-document-config.generated.js +1 -1
- package/lib/aws/iam/policy-document.d.ts +1 -1
- package/lib/aws/iam/policy-document.js +5 -5
- package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
- package/lib/aws/iam/policy-statement-props.generated.js +1 -1
- package/lib/aws/iam/policy-statement.d.ts +1 -1
- package/lib/aws/iam/policy-statement.js +8 -8
- package/lib/aws/iam/policy.js +3 -3
- package/lib/aws/iam/principals.js +25 -25
- package/lib/aws/iam/private/imported-role.js +3 -3
- package/lib/aws/iam/private/postprocess-policy-document.d.ts +1 -1
- package/lib/aws/iam/private/postprocess-policy-document.js +1 -1
- package/lib/aws/iam/private/util.d.ts +1 -1
- package/lib/aws/iam/private/util.js +5 -5
- package/lib/aws/iam/role.d.ts +1 -1
- package/lib/aws/iam/role.js +6 -6
- package/lib/aws/iam/saml-provider.d.ts +1 -1
- package/lib/aws/iam/saml-provider.js +6 -6
- package/lib/aws/iam/unknown-principal.js +4 -4
- package/lib/aws/iam/user.js +3 -3
- package/lib/aws/network/network.d.ts +1 -1
- package/lib/aws/network/network.js +1 -1
- package/lib/aws/network/simple-ipv4-vpc.js +12 -12
- package/lib/aws/network/subnet-group.d.ts +1 -1
- package/lib/aws/network/subnet-group.js +5 -5
- package/lib/aws/network/subnet.d.ts +1 -1
- package/lib/aws/network/subnet.js +6 -6
- package/lib/aws/notify/archive.d.ts +1 -1
- package/lib/aws/notify/archive.js +3 -3
- package/lib/aws/notify/connection.d.ts +1 -1
- package/lib/aws/notify/connection.js +5 -5
- package/lib/aws/notify/event-bus.d.ts +1 -1
- package/lib/aws/notify/event-bus.js +10 -10
- package/lib/aws/notify/event-pattern.d.ts +1 -1
- package/lib/aws/notify/event-pattern.js +5 -5
- package/lib/aws/notify/input.d.ts +1 -1
- package/lib/aws/notify/input.js +12 -12
- package/lib/aws/notify/kinesis-stream.d.ts +1 -1
- package/lib/aws/notify/kinesis-stream.js +7 -7
- package/lib/aws/notify/notification-rule.js +8 -8
- package/lib/aws/notify/policy.js +3 -3
- package/lib/aws/notify/queue-base.js +1 -1
- package/lib/aws/notify/queue-policy.js +3 -3
- package/lib/aws/notify/queue.d.ts +1 -1
- package/lib/aws/notify/queue.js +8 -8
- package/lib/aws/notify/resource-policy.js +3 -3
- package/lib/aws/notify/rule.d.ts +1 -1
- package/lib/aws/notify/rule.js +6 -6
- package/lib/aws/notify/schedule.js +4 -4
- package/lib/aws/notify/sns-grants.generated.js +1 -1
- package/lib/aws/notify/sqs-grants.generated.js +1 -1
- package/lib/aws/notify/subscription-filter.js +1 -1
- package/lib/aws/notify/subscription.js +6 -6
- package/lib/aws/notify/subscriptions/email.js +1 -1
- package/lib/aws/notify/subscriptions/lambda.js +4 -4
- package/lib/aws/notify/subscriptions/sms.js +1 -1
- package/lib/aws/notify/subscriptions/sqs.js +4 -4
- package/lib/aws/notify/subscriptions/url.js +4 -4
- package/lib/aws/notify/target.d.ts +1 -1
- package/lib/aws/notify/target.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/targets/util.js +3 -3
- package/lib/aws/notify/topic-base.js +4 -4
- package/lib/aws/notify/topic.js +7 -7
- package/lib/aws/provider-config.generated.d.ts +42 -36
- package/lib/aws/provider-config.generated.js +1 -1
- package/lib/aws/region-lookup.js +4 -4
- package/lib/aws/storage/assets/image-asset.js +8 -8
- 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.d.ts +1 -1
- package/lib/aws/storage/bucket-notifications.js +8 -8
- package/lib/aws/storage/bucket-policy.d.ts +1 -1
- package/lib/aws/storage/bucket-policy.js +3 -3
- package/lib/aws/storage/bucket-source.d.ts +1 -1
- package/lib/aws/storage/bucket-source.js +7 -7
- package/lib/aws/storage/bucket.d.ts +1 -1
- package/lib/aws/storage/bucket.js +8 -8
- package/lib/aws/storage/capacity.js +1 -1
- package/lib/aws/storage/cors-config.generated.d.ts +5 -5
- package/lib/aws/storage/cors-config.generated.js +1 -1
- package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
- package/lib/aws/storage/cors-rule-config.generated.js +1 -1
- package/lib/aws/storage/ecr-repository.js +11 -11
- package/lib/aws/storage/encryption.d.ts +1 -1
- package/lib/aws/storage/encryption.js +5 -5
- package/lib/aws/storage/lifecycle-config.generated.d.ts +9 -9
- package/lib/aws/storage/lifecycle-config.generated.js +1 -1
- package/lib/aws/storage/notification-targets/function.js +2 -2
- package/lib/aws/storage/notification-targets/queue.js +4 -4
- package/lib/aws/storage/origin-access-identity.d.ts +2 -2
- package/lib/aws/storage/origin-access-identity.js +3 -3
- package/lib/aws/storage/parameter-util.js +5 -5
- package/lib/aws/storage/parameter.d.ts +2 -2
- package/lib/aws/storage/parameter.js +16 -16
- package/lib/aws/storage/stream-grants.js +1 -1
- package/lib/aws/storage/table-grants.js +1 -1
- package/lib/aws/storage/table.d.ts +1 -1
- package/lib/aws/storage/table.js +10 -10
- package/lib/aws/storage/website-config.generated.d.ts +8 -8
- package/lib/aws/storage/website-config.generated.js +1 -1
- package/lib/bundling.js +5 -5
- package/lib/construct-base.d.ts +1 -1
- package/lib/construct-base.js +10 -10
- package/lib/duration.js +9 -9
- 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/private/terraform-dependables-aspect.d.ts +1 -1
- package/lib/private/terraform-dependables-aspect.js +6 -6
- package/lib/private/unique-resource-name.js +3 -3
- package/lib/size.js +6 -6
- package/lib/stack-base.d.ts +2 -2
- package/lib/stack-base.js +16 -16
- package/lib/terra-func.d.ts +1 -1
- package/lib/terra-func.js +18 -18
- package/lib/time-zone.js +1 -1
- package/lib/token.js +5 -5
- package/package.json +17 -17
- package/setup.js +2 -2
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.FieldUtils = exports.Context = exports.Data = exports.JsonPath = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
// https://github.com/aws/aws-cdk/blob/v2.160.0/packages/aws-cdk-lib/aws-stepfunctions/lib/fields.ts
|
|
7
|
-
const
|
|
7
|
+
const cdktn_1 = require("cdktn");
|
|
8
8
|
const json_path_1 = require("./private/json-path");
|
|
9
9
|
/**
|
|
10
10
|
* Extract a field from the State Machine data or context
|
|
@@ -26,14 +26,14 @@ class JsonPath {
|
|
|
26
26
|
static listAt(path) {
|
|
27
27
|
// does not apply to task context
|
|
28
28
|
validateDataPath(path);
|
|
29
|
-
return
|
|
29
|
+
return cdktn_1.Token.asList(new json_path_1.JsonPathToken(path));
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Instead of using a literal number, get the value from a JSON path
|
|
33
33
|
*/
|
|
34
34
|
static numberAt(path) {
|
|
35
35
|
validateJsonPath(path);
|
|
36
|
-
return
|
|
36
|
+
return cdktn_1.Token.asNumber(new json_path_1.JsonPathToken(path));
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Reference a complete (complex) object in a JSON path location
|
|
@@ -357,11 +357,11 @@ class JsonPath {
|
|
|
357
357
|
}
|
|
358
358
|
exports.JsonPath = JsonPath;
|
|
359
359
|
_a = JSII_RTTI_SYMBOL_1;
|
|
360
|
-
JsonPath[_a] = { fqn: "terraconstructs.aws.compute.JsonPath", version: "0.2.
|
|
360
|
+
JsonPath[_a] = { fqn: "terraconstructs.aws.compute.JsonPath", version: "0.2.6" };
|
|
361
361
|
/**
|
|
362
362
|
* Special string value to discard state input, output or result.
|
|
363
363
|
*/
|
|
364
|
-
JsonPath.DISCARD =
|
|
364
|
+
JsonPath.DISCARD = cdktn_1.Token.asString(cdktn_1.Token.nullValue(), {
|
|
365
365
|
// ref https://github.com/hashicorp/terraform-cdk/blob/v0.20.9/packages/cdktf/lib/tokens/token.ts#L184
|
|
366
366
|
// https://github.com/aws/aws-cdk/blob/v2.170.0/packages/aws-cdk-lib/core/lib/token.ts#L239
|
|
367
367
|
displayHint: "DISCARD (JSON `null`)",
|
|
@@ -384,14 +384,14 @@ class Data {
|
|
|
384
384
|
*/
|
|
385
385
|
static listAt(path) {
|
|
386
386
|
validateDataPath(path);
|
|
387
|
-
return
|
|
387
|
+
return cdktn_1.Token.asList(new json_path_1.JsonPathToken(path));
|
|
388
388
|
}
|
|
389
389
|
/**
|
|
390
390
|
* Instead of using a literal number, get the value from a JSON path
|
|
391
391
|
*/
|
|
392
392
|
static numberAt(path) {
|
|
393
393
|
validateDataPath(path);
|
|
394
|
-
return
|
|
394
|
+
return cdktn_1.Token.asNumber(new json_path_1.JsonPathToken(path));
|
|
395
395
|
}
|
|
396
396
|
/**
|
|
397
397
|
* Use the entire data structure
|
|
@@ -414,7 +414,7 @@ class Data {
|
|
|
414
414
|
}
|
|
415
415
|
exports.Data = Data;
|
|
416
416
|
_b = JSII_RTTI_SYMBOL_1;
|
|
417
|
-
Data[_b] = { fqn: "terraconstructs.aws.compute.Data", version: "0.2.
|
|
417
|
+
Data[_b] = { fqn: "terraconstructs.aws.compute.Data", version: "0.2.6" };
|
|
418
418
|
/**
|
|
419
419
|
* Extract a field from the State Machine Context data
|
|
420
420
|
*
|
|
@@ -435,7 +435,7 @@ class Context {
|
|
|
435
435
|
*/
|
|
436
436
|
static numberAt(path) {
|
|
437
437
|
validateContextPath(path);
|
|
438
|
-
return
|
|
438
|
+
return cdktn_1.Token.asNumber(new json_path_1.JsonPathToken(path));
|
|
439
439
|
}
|
|
440
440
|
/**
|
|
441
441
|
* Return the Task Token field
|
|
@@ -460,7 +460,7 @@ class Context {
|
|
|
460
460
|
}
|
|
461
461
|
exports.Context = Context;
|
|
462
462
|
_c = JSII_RTTI_SYMBOL_1;
|
|
463
|
-
Context[_c] = { fqn: "terraconstructs.aws.compute.Context", version: "0.2.
|
|
463
|
+
Context[_c] = { fqn: "terraconstructs.aws.compute.Context", version: "0.2.6" };
|
|
464
464
|
/**
|
|
465
465
|
* Helper functions to work with structures containing fields
|
|
466
466
|
*/
|
|
@@ -491,7 +491,7 @@ class FieldUtils {
|
|
|
491
491
|
}
|
|
492
492
|
exports.FieldUtils = FieldUtils;
|
|
493
493
|
_d = JSII_RTTI_SYMBOL_1;
|
|
494
|
-
FieldUtils[_d] = { fqn: "terraconstructs.aws.compute.FieldUtils", version: "0.2.
|
|
494
|
+
FieldUtils[_d] = { fqn: "terraconstructs.aws.compute.FieldUtils", version: "0.2.6" };
|
|
495
495
|
function validateJsonPath(path) {
|
|
496
496
|
const intrinsicFunctionNames = [
|
|
497
497
|
// Intrinsics for arrays
|
|
@@ -543,4 +543,4 @@ function validateContextPath(path) {
|
|
|
543
543
|
throw new Error("Context JSON path values must either be exactly equal to '$$' or start with '$$.'");
|
|
544
544
|
}
|
|
545
545
|
}
|
|
546
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9HQUFvRztBQUVwRyxpQ0FBMkM7QUFDM0MsbURBTzZCO0FBRTdCOzs7OztHQUtHO0FBQ0gsTUFBYSxRQUFRO0lBVW5COztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSx5QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUMvQixpQ0FBaUM7UUFDakMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxhQUFLLENBQUMsTUFBTSxDQUFDLElBQUkseUJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUNqQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixPQUFPLGFBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSx5QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSx5QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sS0FBSyxhQUFhO1FBQzdCLE9BQU8sSUFBSSx5QkFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ks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ay9ibG9iL3YyLjE2MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zL2xpYi9maWVsZHMudHNcblxuaW1wb3J0IHsgVG9rZW4sIElSZXNvbHZhYmxlIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQge1xuICBmaW5kUmVmZXJlbmNlZFBhdGhzLFxuICBqc29uUGF0aFN0cmluZyxcbiAgSnNvblBhdGhUb2tlbixcbiAgcmVuZGVyT2JqZWN0LFxuICByZW5kZXJJbkV4cHJlc3Npb24sXG4gIGpzb25QYXRoRnJvbUFueSxcbn0gZnJvbSBcIi4vcHJpdmF0ZS9qc29uLXBhdGhcIjtcblxuLyoqXG4gKiBFeHRyYWN0IGEgZmllbGQgZnJvbSB0aGUgU3RhdGUgTWFjaGluZSBkYXRhIG9yIGNvbnRleHRcbiAqIHRoYXQgZ2V0cyBwYXNzZWQgYXJvdW5kIGJldHdlZW4gc3RhdGVzXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtcGF0aHMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgSnNvblBhdGgge1xuICAvKipcbiAgICogU3BlY2lhbCBzdHJpbmcgdmFsdWUgdG8gZGlzY2FyZCBzdGF0ZSBpbnB1dCwgb3V0cHV0IG9yIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRElTQ0FSRCA9IFRva2VuLmFzU3RyaW5nKFRva2VuLm51bGxWYWx1ZSgpLCB7XG4gICAgLy8gcmVmIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3Rva2Vucy90b2tlbi50cyNMMTg0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTcwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvdG9rZW4udHMjTDIzOVxuICAgIGRpc3BsYXlIaW50OiBcIkRJU0NBUkQgKEpTT04gYG51bGxgKVwiLFxuICB9KTtcblxuICAvKipcbiAgICogSW5zdGVhZCBvZiB1c2luZyBhIGxpdGVyYWwgc3RyaW5nLCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nQXQocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YWxpZGF0ZUpzb25QYXRoKHBhdGgpO1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihwYXRoKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIHN0cmluZyBsaXN0LCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGlzdEF0KHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAvLyBkb2VzIG5vdCBhcHBseSB0byB0YXNrIGNvbnRleHRcbiAgICB2YWxpZGF0ZURhdGFQYXRoKHBhdGgpO1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIG51bWJlciwgZ2V0IHRoZSB2YWx1ZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWJlckF0KHBhdGg6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdmFsaWRhdGVKc29uUGF0aChwYXRoKTtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBhIGNvbXBsZXRlIChjb21wbGV4KSBvYmplY3QgaW4gYSBKU09OIHBhdGggbG9jYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2JqZWN0QXQocGF0aDogc3RyaW5nKTogSVJlc29sdmFibGUge1xuICAgIHZhbGlkYXRlSnNvblBhdGgocGF0aCk7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgZW50aXJlIGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBlbnRpcmVQYXlsb2FkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGluZGljYXRlZCBzdHJpbmcgaXMgYW4gZW5jb2RlZCBKU09OIHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHN0cmluZyB0byBiZSBldmFsdWF0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNFbmNvZGVkSnNvblBhdGgodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWpzb25QYXRoU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIEV4ZWN1dGlvbiBJZCBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZXhlY3V0aW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5FeGVjdXRpb24uSWRcIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIEV4ZWN1dGlvbiBJbnB1dCBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKlxuICAgKiAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBleGVjdXRpb25JbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkLkV4ZWN1dGlvbi5JbnB1dFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgRXhlY3V0aW9uIE5hbWUgZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGV4ZWN1dGlvbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5FeGVjdXRpb24uTmFtZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgRXhlY3V0aW9uIFJvbGVBcm4gZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGV4ZWN1dGlvblJvbGVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5FeGVjdXRpb24uUm9sZUFyblwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgRXhlY3V0aW9uIFN0YXJ0VGltZSBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZXhlY3V0aW9uU3RhcnRUaW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCQuRXhlY3V0aW9uLlN0YXJ0VGltZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGUgRW50ZXJlZFRpbWUgZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHN0YXRlRW50ZXJlZFRpbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5TdGF0ZS5FbnRlcmVkVGltZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGUgTmFtZSBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgc3RhdGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCQuU3RhdGUuTmFtZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGUgUmV0cnlDb3VudCBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgc3RhdGVSZXRyeUNvdW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCQuU3RhdGUuUmV0cnlDb3VudFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGVNYWNoaW5lIElkIGZpZWxkIGZyb20gdGhlIGNvbnRleHQgb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBzdGF0ZU1hY2hpbmVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkLlN0YXRlTWFjaGluZS5JZFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGVNYWNoaW5lIE5hbWUgZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHN0YXRlTWFjaGluZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5TdGF0ZU1hY2hpbmUuTmFtZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgVGFzayBUb2tlbiBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKlxuICAgKiBFeHRlcm5hbCBhY3Rpb25zIHdpbGwgbmVlZCB0aGlzIHRva2VuIHRvIHJlcG9ydCBzdGVwIGNvbXBsZXRpb25cbiAgICogYmFjayB0byBTdGVwRnVuY3Rpb25zIHVzaW5nIHRoZSBgU2VuZFRhc2tTdWNjZXNzYCBvciBgU2VuZFRhc2tGYWlsdXJlYFxuICAgKiBjYWxscy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHRhc2tUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkLlRhc2suVG9rZW5cIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlIGVudGlyZSBjb250ZXh0IGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBlbnRpcmVDb250ZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCRcIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXkgZXhwcmVzc2lvblxuICAgKlxuICAgKiBDb21iaW5lIGFueSBudW1iZXIgb2Ygc3RyaW5nIGxpdGVyYWxzIG9yIEpzb25QYXRoIGV4cHJlc3Npb25zIGludG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIGlmIHRoZSB2YWx1ZSBvZiBhbiBhcnJheSBlbGVtZW50IGRpcmVjdGx5IGhhcyB0byBjb21lXG4gICAqIGZyb20gYSBKU09OIFBhdGggZXhwcmVzc2lvbiAoZWl0aGVyIHRoZSBTdGF0ZSBvYmplY3Qgb3IgdGhlIENvbnRleHQgb2JqZWN0KS5cbiAgICpcbiAgICogSWYgdGhlIGFycmF5IGNvbnRhaW5zIG9iamVjdCBsaXRlcmFscyB3aG9zZSB2YWx1ZXMgY29tZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqIGV4cHJlc3Npb24sIHlvdSBkbyBub3QgbmVlZCB0byB1c2UgdGhpcyBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFycmF5KC4uLnZhbHVlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuQXJyYXkoJHt2YWx1ZXMubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXlQYXJ0aXRpb24gZXhwcmVzc2lvblxuICAgKlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBwYXJ0aXRpb24gYSBsYXJnZSBhcnJheS4gWW91IGNhbiBhbHNvIHVzZSB0aGlzIGludHJpbnNpYyB0byBzbGljZSB0aGUgZGF0YSBhbmQgdGhlbiBzZW5kIHRoZSBwYXlsb2FkIGluIHNtYWxsZXIgY2h1bmtzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlQYXJ0aXRpb24oYXJyYXk6IGFueSwgY2h1bmtTaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuQXJyYXlQYXJ0aXRpb24oJHtbYXJyYXksIGNodW5rU2l6ZV0ubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXlDb250YWlucyBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIHNwZWNpZmljIHZhbHVlIGlzIHByZXNlbnQgaW4gYW4gYXJyYXkuIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGRldGVjdCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gYSBNYXAgc3RhdGUgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlDb250YWlucyhhcnJheTogYW55LCB2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkFycmF5Q29udGFpbnMoJHtbYXJyYXksIHZhbHVlXS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5BcnJheVJhbmdlIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYSBzcGVjaWZpYyByYW5nZSBvZiBlbGVtZW50cy4gVGhlIG5ldyBhcnJheSBjYW4gY29udGFpbiB1cCB0byAxMDAwIGVsZW1lbnRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlSYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgc3RlcDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkFycmF5UmFuZ2UoJHtbc3RhcnQsIGVuZCwgc3RlcF0ubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXlHZXRJdGVtIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgc3BlY2lmaWVkIGluZGV4J3MgdmFsdWUgaW4gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9hbWF6b24tc3RhdGVzLWxhbmd1YWdlLWludHJpbnNpYy1mdW5jdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcnJheUdldEl0ZW0oYXJyYXk6IGFueSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5BcnJheUdldEl0ZW0oJHtbYXJyYXksIGluZGV4XS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5BcnJheUxlbmd0aCBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGVuZ3RoIG9mIGFuIGFycmF5LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlMZW5ndGgoYXJyYXk6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5BcnJheUxlbmd0aCgke3JlbmRlckluRXhwcmVzc2lvbihhcnJheSl9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5BcnJheVVuaXF1ZSBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGVuZ3RoIG9mIGFuIGFycmF5LlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byByZW1vdmUgZHVwbGljYXRlIHZhbHVlcyBmcm9tIGFuIGFycmF5IGFuZCByZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgb25seSB1bmlxdWUgZWxlbWVudHMuIFRoaXMgZnVuY3Rpb24gdGFrZXMgYW4gYXJyYXksIHdoaWNoIGNhbiBiZSB1bnNvcnRlZCwgYXMgaXRzIHNvbGUgYXJndW1lbnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9hbWF6b24tc3RhdGVzLWxhbmd1YWdlLWludHJpbnNpYy1mdW5jdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcnJheVVuaXF1ZShhcnJheTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkFycmF5VW5pcXVlKCR7cmVuZGVySW5FeHByZXNzaW9uKGFycmF5KX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLkJhc2U2NEVuY29kZSBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGVuY29kZSBkYXRhIGJhc2VkIG9uIE1JTUUgQmFzZTY0IGVuY29kaW5nIHNjaGVtZS4gWW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBwYXNzIGRhdGEgdG8gb3RoZXIgQVdTIHNlcnZpY2VzIHdpdGhvdXQgdXNpbmcgYW4gQVdTIExhbWJkYSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NEVuY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkJhc2U2NEVuY29kZSgke3JlbmRlckluRXhwcmVzc2lvbihpbnB1dCl9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5CYXNlNjREZWNvZGUgZXhwcmVzc2lvblxuICAgKlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBkZWNvZGUgZGF0YSBiYXNlZCBvbiBNSU1FIEJhc2U2NCBkZWNvZGluZyBzY2hlbWUuIFlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gcGFzcyBkYXRhIHRvIG90aGVyIEFXUyBzZXJ2aWNlcyB3aXRob3V0IHVzaW5nIGEgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYmFzZTY0RGVjb2RlKGJhc2U2NDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkJhc2U2NERlY29kZSgke3JlbmRlckluRXhwcmVzc2lvbihiYXNlNjQpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuSGFzaCBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgaGFzaCB2YWx1ZSBvZiBhIGdpdmVuIGlucHV0LiBZb3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHBhc3MgZGF0YSB0byBvdGhlciBBV1Mgc2VydmljZXMgd2l0aG91dCB1c2luZyBhIExhbWJkYSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhhc2goZGF0YTogYW55LCBhbGdvcml0aG06IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5IYXNoKCR7W2RhdGEsIGFsZ29yaXRobV0ubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuSnNvbk1lcmdlIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gbWVyZ2UgdHdvIEpTT04gb2JqZWN0cyBpbnRvIGEgc2luZ2xlIG9iamVjdC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGpzb25NZXJnZSh2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuSnNvbk1lcmdlKCR7W3ZhbHVlMSwgdmFsdWUyXS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9LCBmYWxzZSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuTWF0aFJhbmRvbSBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IGFuZCBlbmQgbnVtYmVyLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBkaXN0cmlidXRlIGEgc3BlY2lmaWMgdGFzayBiZXR3ZWVuIHR3byBvciBtb3JlIHJlc291cmNlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hdGhSYW5kb20oc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuTWF0aFJhbmRvbSgke1tzdGFydCwgZW5kXS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5NYXRoQWRkIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBzdW0gb2YgdHdvIG51bWJlcnMuIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGluY3JlbWVudCB2YWx1ZXMgaW5zaWRlIGEgbG9vcCB3aXRob3V0IGludm9raW5nIGEgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWF0aEFkZChudW0xOiBudW1iZXIsIG51bTI6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5NYXRoQWRkKCR7W251bTEsIG51bTJdLm1hcChyZW5kZXJJbkV4cHJlc3Npb24pLmpvaW4oXCIsIFwiKX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLlN0cmluZ1NwbGl0IGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gc3BsaXQgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiB2YWx1ZXMuIFRoaXMgZnVuY3Rpb24gdGFrZXMgdHdvIGFyZ3VtZW50cy5UaGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIGRlbGltaXRpbmcgY2hhcmFjdGVyIHRoYXQgdGhlIGZ1bmN0aW9uIHdpbGwgdXNlIHRvIGRpdmlkZSB0aGUgc3RyaW5nLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nU3BsaXQoaW5wdXRTdHJpbmc6IHN0cmluZywgc3BsaXR0ZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5TdHJpbmdTcGxpdCgke1tpbnB1dFN0cmluZywgc3BsaXR0ZXJdLm1hcChyZW5kZXJJbkV4cHJlc3Npb24pLmpvaW4oXCIsIFwiKX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLlVVSUQgZXhwcmVzc2lvblxuICAgKlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYSB2ZXJzaW9uIDQgdW5pdmVyc2FsbHkgdW5pcXVlIGlkZW50aWZpZXIgKHY0IFVVSUQpIGdlbmVyYXRlZCB1c2luZyByYW5kb20gbnVtYmVycy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsbCBvdGhlciBBV1Mgc2VydmljZXMgb3IgcmVzb3VyY2VzIHRoYXQgbmVlZCBhIFVVSUQgcGFyYW1ldGVyIG9yIGluc2VydCBpdGVtcyBpbiBhIER5bmFtb0RCIHRhYmxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIlN0YXRlcy5VVUlEKClcIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuRm9ybWF0IGV4cHJlc3Npb25cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBlbWJlZCBKU09OIFBhdGggdmFyaWFibGVzIGluc2lkZSBhIGZvcm1hdCBzdHJpbmcuXG4gICAqXG4gICAqIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBzZm4uSnNvblBhdGguZm9ybWF0KCdIZWxsbywgbXkgbmFtZSBpcyB7fS4nLCBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQubmFtZScpKVxuICAgKiBgYGBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvcm1hdChmb3JtYXRTdHJpbmc6IHN0cmluZywgLi4udmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYWxsQXJncyA9IFtmb3JtYXRTdHJpbmcsIC4uLnZhbHVlc107XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5Gb3JtYXQoJHthbGxBcmdzLm1hcChyZW5kZXJJbkV4cHJlc3Npb24pLmpvaW4oXCIsIFwiKX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLlN0cmluZ1RvSnNvbiBleHByZXNzaW9uXG4gICAqXG4gICAqIER1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBTdGVwIEZ1bmN0aW9ucyBzdGF0ZSBtYWNoaW5lLCBwYXJzZSB0aGUgZ2l2ZW5cbiAgICogYXJndW1lbnQgYXMgSlNPTiBpbnRvIGl0cyBvYmplY3QgZm9ybS5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHNmbi5Kc29uUGF0aC5zdHJpbmdUb0pzb24oc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLnNvbWVKc29uQm9keScpKVxuICAgKiBgYGBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0cmluZ1RvSnNvbihqc29uU3RyaW5nOiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5TdHJpbmdUb0pzb24oJHtyZW5kZXJJbkV4cHJlc3Npb24oanNvblN0cmluZyl9KWAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuSnNvblRvU3RyaW5nIGV4cHJlc3Npb25cbiAgICpcbiAgICogRHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIFN0ZXAgRnVuY3Rpb25zIHN0YXRlIG1hY2hpbmUsIGVuY29kZSB0aGVcbiAgICogZ2l2ZW4gb2JqZWN0IGludG8gYSBKU09OIHN0cmluZy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHNmbi5Kc29uUGF0aC5qc29uVG9TdHJpbmcoc2ZuLkpzb25QYXRoLm9iamVjdEF0KCckLnNvbWVPYmplY3QnKSlcbiAgICogYGBgXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9hbWF6b24tc3RhdGVzLWxhbmd1YWdlLWludHJpbnNpYy1mdW5jdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBqc29uVG9TdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0aCA9IGpzb25QYXRoRnJvbUFueSh2YWx1ZSk7XG4gICAgaWYgKCFwYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQXJndW1lbnQgdG8gSnNvblBhdGguanNvblRvU3RyaW5nKCkgbXVzdCBiZSBhIEpzb25QYXRoIG9iamVjdFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oYFN0YXRlcy5Kc29uVG9TdHJpbmcoJHtwYXRofSlgKS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIGZpZWxkIGZyb20gdGhlIFN0YXRlIE1hY2hpbmUgZGF0YSB0aGF0IGdldHMgcGFzc2VkIGFyb3VuZCBiZXR3ZWVuIHN0YXRlc1xuICpcbiAqIEBkZXByZWNhdGVkIHJlcGxhY2VkIGJ5IGBKc29uUGF0aGBcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGEge1xuICAvKipcbiAgICogSW5zdGVhZCBvZiB1c2luZyBhIGxpdGVyYWwgc3RyaW5nLCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nQXQocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YWxpZGF0ZURhdGFQYXRoKHBhdGgpO1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihwYXRoKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIHN0cmluZyBsaXN0LCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGlzdEF0KHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICB2YWxpZGF0ZURhdGFQYXRoKHBhdGgpO1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIG51bWJlciwgZ2V0IHRoZSB2YWx1ZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWJlckF0KHBhdGg6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdmFsaWRhdGVEYXRhUGF0aChwYXRoKTtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgZW50aXJlIGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBlbnRpcmVQYXlsb2FkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGluZGljYXRlZCBzdHJpbmcgaXMgYW4gZW5jb2RlZCBKU09OIHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHN0cmluZyB0byBiZSBldmFsdWF0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNKc29uUGF0aFN0cmluZyh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhanNvblBhdGhTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIGZpZWxkIGZyb20gdGhlIFN0YXRlIE1hY2hpbmUgQ29udGV4dCBkYXRhXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2Nvbm5lY3QtdG8tcmVzb3VyY2UuaHRtbCN3YWl0LXRva2VuLWNvbnRleHRvYmplY3RcbiAqXG4gKiBAZGVwcmVjYXRlZCByZXBsYWNlZCBieSBgSnNvblBhdGhgXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZXh0IHtcbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIHN0cmluZywgZ2V0IHRoZSB2YWx1ZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0cmluZ0F0KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdmFsaWRhdGVDb250ZXh0UGF0aChwYXRoKTtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4ocGF0aCkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIHVzaW5nIGEgbGl0ZXJhbCBudW1iZXIsIGdldCB0aGUgdmFsdWUgZnJvbSBhIEpTT04gcGF0aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBudW1iZXJBdChwYXRoOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHZhbGlkYXRlQ29udGV4dFBhdGgocGF0aCk7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKG5ldyBKc29uUGF0aFRva2VuKHBhdGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIFRhc2sgVG9rZW4gZmllbGRcbiAgICpcbiAgICogRXh0ZXJuYWwgYWN0aW9ucyB3aWxsIG5lZWQgdGhpcyB0b2tlbiB0byByZXBvcnQgc3RlcCBjb21wbGV0aW9uXG4gICAqIGJhY2sgdG8gU3RlcEZ1bmN0aW9ucyB1c2luZyB0aGUgYFNlbmRUYXNrU3VjY2Vzc2Agb3IgYFNlbmRUYXNrRmFpbHVyZWBcbiAgICogY2FsbHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCB0YXNrVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5UYXNrLlRva2VuXCIpLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoZSBlbnRpcmUgY29udGV4dCBkYXRhIHN0cnVjdHVyZVxuICAgKlxuICAgKiBXaWxsIGJlIGFuIG9iamVjdCBhdCBpbnZvY2F0aW9uIHRpbWUsIGJ1dCBpcyByZXByZXNlbnRlZCBpbiB0aGUgQ0RLXG4gICAqIGFwcGxpY2F0aW9uIGFzIGEgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZW50aXJlQ29udGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkXCIpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aCBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgZmllbGRzXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWVsZFV0aWxzIHtcbiAgLyoqXG4gICAqIFJlbmRlciBhIEpTT04gc3RydWN0dXJlIGNvbnRhaW5pbmcgZmllbGRzIHRvIHRoZSByaWdodCBTdGVwRnVuY3Rpb25zIHN0cnVjdHVyZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZW5kZXJPYmplY3Qob2JqPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiByZW5kZXJPYmplY3Qob2JqKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIEpTT04gcGF0aHMgdXNlZCBpbiB0aGUgZ2l2ZW4gc3RydWN0dXJlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbmRSZWZlcmVuY2VkUGF0aHMob2JqPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaW5kUmVmZXJlbmNlZFBhdGhzKG9iaikpLnNvcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHRhc2sgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBUYXNrVG9rZW4gZmllbGQgYW55d2hlcmVcbiAgICpcbiAgICogVGhlIGZpZWxkIGlzIGNvbnNpZGVyZWQgaW5jbHVkZWQgaWYgdGhlIGZpZWxkIGl0c2VsZiBvciBvbmUgb2YgaXRzIGNvbnRhaW5pbmdcbiAgICogZmllbGRzIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgcGF5bG9hZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udGFpbnNUYXNrVG9rZW4ob2JqPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGhzID0gZmluZFJlZmVyZW5jZWRQYXRocyhvYmopO1xuICAgIHJldHVybiAoXG4gICAgICBwYXRocy5oYXMoXCIkJC5UYXNrLlRva2VuXCIpIHx8IHBhdGhzLmhhcyhcIiQkLlRhc2tcIikgfHwgcGF0aHMuaGFzKFwiJCRcIilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSnNvblBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGludHJpbnNpY0Z1bmN0aW9uTmFtZXMgPSBbXG4gICAgLy8gSW50cmluc2ljcyBmb3IgYXJyYXlzXG4gICAgXCJBcnJheVwiLFxuICAgIFwiQXJyYXlQYXJ0aXRpb25cIixcbiAgICBcIkFycmF5Q29udGFpbnNcIixcbiAgICBcIkFycmF5UmFuZ2VcIixcbiAgICBcIkFycmF5R2V0SXRlbVwiLFxuICAgIFwiQXJyYXlMZW5ndGhcIixcbiAgICBcIkFycmF5VW5pcXVlXCIsXG4gICAgLy8gSW50cmluc2ljcyBmb3IgZGF0YSBlbmNvZGluZyBhbmQgZGVjb2RpbmdcbiAgICBcIkJhc2U2NEVuY29kZVwiLFxuICAgIFwiQmFzZTY0RGVjb2RlXCIsXG4gICAgLy8gSW50cmluc2ljIGZvciBoYXNoIGNhbGN1bGF0aW9uXG4gICAgXCJIYXNoXCIsXG4gICAgLy8gSW50cmluc2ljcyBmb3IgSlNPTiBkYXRhIG1hbmlwdWxhdGlvblxuICAgIFwiSnNvbk1lcmdlXCIsXG4gICAgXCJTdHJpbmdUb0pzb25cIixcbiAgICBcIkpzb25Ub1N0cmluZ1wiLFxuICAgIC8vIEludHJpbnNpY3MgZm9yIE1hdGggb3BlcmF0aW9uc1xuICAgIFwiTWF0aFJhbmRvbVwiLFxuICAgIFwiTWF0aEFkZFwiLFxuICAgIC8vIEludHJpbnNpYyBmb3IgU3RyaW5nIG9wZXJhdGlvblxuICAgIFwiU3RyaW5nU3BsaXRcIixcbiAgICAvLyBJbnRyaW5zaWMgZm9yIHVuaXF1ZSBpZGVudGlmaWVyIGdlbmVyYXRpb25cbiAgICBcIlVVSURcIixcbiAgICAvLyBJbnRyaW5zaWMgZm9yIGdlbmVyaWMgb3BlcmF0aW9uXG4gICAgXCJGb3JtYXRcIixcbiAgXTtcbiAgY29uc3QgaW50cmluc2ljRnVuY3Rpb25GdWxsTmFtZXMgPSBpbnRyaW5zaWNGdW5jdGlvbk5hbWVzLm1hcChcbiAgICAoZm4pID0+IGBTdGF0ZXMuJHtmbn1gLFxuICApO1xuICBpZiAoXG4gICAgcGF0aCAhPT0gXCIkXCIgJiZcbiAgICAhcGF0aC5zdGFydHNXaXRoKFwiJC5cIikgJiZcbiAgICBwYXRoICE9PSBcIiQkXCIgJiZcbiAgICAhcGF0aC5zdGFydHNXaXRoKFwiJCQuXCIpICYmXG4gICAgIXBhdGguc3RhcnRzV2l0aChcIiRbXCIpICYmXG4gICAgaW50cmluc2ljRnVuY3Rpb25GdWxsTmFtZXMuZXZlcnkoKGZuKSA9PiAhcGF0aC5zdGFydHNXaXRoKGZuKSlcbiAgKSB7XG4gICAgY29uc3QgbGFzdEl0ZW0gPSBpbnRyaW5zaWNGdW5jdGlvbkZ1bGxOYW1lcy5wb3AoKTtcbiAgICBjb25zdCBpbnRyaW5zaWNGdW5jdGlvbnNTdHIgPVxuICAgICAgaW50cmluc2ljRnVuY3Rpb25GdWxsTmFtZXMuam9pbihcIiwgXCIpICsgXCIsIG9yIFwiICsgbGFzdEl0ZW07XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEpTT04gcGF0aCB2YWx1ZXMgbXVzdCBiZSBleGFjdGx5ICckJywgJyQkJywgc3RhcnQgd2l0aCAnJC4nLCBzdGFydCB3aXRoICckJC4nLCBzdGFydCB3aXRoICckWycsIG9yIHN0YXJ0IHdpdGggYW4gaW50cmluc2ljIGZ1bmN0aW9uOiAke2ludHJpbnNpY0Z1bmN0aW9uc1N0cn0uIFJlY2VpdmVkOiAke3BhdGh9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF0YVBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGlmIChwYXRoICE9PSBcIiRcIiAmJiAhcGF0aC5zdGFydHNXaXRoKFwiJFtcIikgJiYgIXBhdGguc3RhcnRzV2l0aChcIiQuXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJEYXRhIEpTT04gcGF0aCB2YWx1ZXMgbXVzdCBlaXRoZXIgYmUgZXhhY3RseSBlcXVhbCB0byAnJCcsIHN0YXJ0IHdpdGggJyRbJyBvciBzdGFydCB3aXRoICckLidcIixcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ29udGV4dFBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGlmIChwYXRoICE9PSBcIiQkXCIgJiYgIXBhdGguc3RhcnRzV2l0aChcIiQkLlwiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQ29udGV4dCBKU09OIHBhdGggdmFsdWVzIG11c3QgZWl0aGVyIGJlIGV4YWN0bHkgZXF1YWwgdG8gJyQkJyBvciBzdGFydCB3aXRoICckJC4nXCIsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
546
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9HQUFvRztBQUVwRyxpQ0FBMkM7QUFDM0MsbURBTzZCO0FBRTdCOzs7OztHQUtHO0FBQ0gsTUFBYSxRQUFRO0lBVW5COztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSx5QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUMvQixpQ0FBaUM7UUFDakMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxhQUFLLENBQUMsTUFBTSxDQUFDLElBQUkseUJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUNqQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixPQUFPLGFBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSx5QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSx5QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sS0FBSyxhQUFhO1FBQzdCLE9BQU8sSUFBSSx5QkFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ks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ay9ibG9iL3YyLjE2MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zL2xpYi9maWVsZHMudHNcblxuaW1wb3J0IHsgVG9rZW4sIElSZXNvbHZhYmxlIH0gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQge1xuICBmaW5kUmVmZXJlbmNlZFBhdGhzLFxuICBqc29uUGF0aFN0cmluZyxcbiAgSnNvblBhdGhUb2tlbixcbiAgcmVuZGVyT2JqZWN0LFxuICByZW5kZXJJbkV4cHJlc3Npb24sXG4gIGpzb25QYXRoRnJvbUFueSxcbn0gZnJvbSBcIi4vcHJpdmF0ZS9qc29uLXBhdGhcIjtcblxuLyoqXG4gKiBFeHRyYWN0IGEgZmllbGQgZnJvbSB0aGUgU3RhdGUgTWFjaGluZSBkYXRhIG9yIGNvbnRleHRcbiAqIHRoYXQgZ2V0cyBwYXNzZWQgYXJvdW5kIGJldHdlZW4gc3RhdGVzXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtcGF0aHMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgSnNvblBhdGgge1xuICAvKipcbiAgICogU3BlY2lhbCBzdHJpbmcgdmFsdWUgdG8gZGlzY2FyZCBzdGF0ZSBpbnB1dCwgb3V0cHV0IG9yIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRElTQ0FSRCA9IFRva2VuLmFzU3RyaW5nKFRva2VuLm51bGxWYWx1ZSgpLCB7XG4gICAgLy8gcmVmIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjkvcGFja2FnZXMvY2RrdGYvbGliL3Rva2Vucy90b2tlbi50cyNMMTg0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTcwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvdG9rZW4udHMjTDIzOVxuICAgIGRpc3BsYXlIaW50OiBcIkRJU0NBUkQgKEpTT04gYG51bGxgKVwiLFxuICB9KTtcblxuICAvKipcbiAgICogSW5zdGVhZCBvZiB1c2luZyBhIGxpdGVyYWwgc3RyaW5nLCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nQXQocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YWxpZGF0ZUpzb25QYXRoKHBhdGgpO1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihwYXRoKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIHN0cmluZyBsaXN0LCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGlzdEF0KHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAvLyBkb2VzIG5vdCBhcHBseSB0byB0YXNrIGNvbnRleHRcbiAgICB2YWxpZGF0ZURhdGFQYXRoKHBhdGgpO1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIG51bWJlciwgZ2V0IHRoZSB2YWx1ZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWJlckF0KHBhdGg6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdmFsaWRhdGVKc29uUGF0aChwYXRoKTtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBhIGNvbXBsZXRlIChjb21wbGV4KSBvYmplY3QgaW4gYSBKU09OIHBhdGggbG9jYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb2JqZWN0QXQocGF0aDogc3RyaW5nKTogSVJlc29sdmFibGUge1xuICAgIHZhbGlkYXRlSnNvblBhdGgocGF0aCk7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgZW50aXJlIGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBlbnRpcmVQYXlsb2FkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGluZGljYXRlZCBzdHJpbmcgaXMgYW4gZW5jb2RlZCBKU09OIHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHN0cmluZyB0byBiZSBldmFsdWF0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNFbmNvZGVkSnNvblBhdGgodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWpzb25QYXRoU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIEV4ZWN1dGlvbiBJZCBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZXhlY3V0aW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5FeGVjdXRpb24uSWRcIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIEV4ZWN1dGlvbiBJbnB1dCBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKlxuICAgKiAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBleGVjdXRpb25JbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkLkV4ZWN1dGlvbi5JbnB1dFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgRXhlY3V0aW9uIE5hbWUgZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGV4ZWN1dGlvbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5FeGVjdXRpb24uTmFtZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgRXhlY3V0aW9uIFJvbGVBcm4gZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGV4ZWN1dGlvblJvbGVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5FeGVjdXRpb24uUm9sZUFyblwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgRXhlY3V0aW9uIFN0YXJ0VGltZSBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZXhlY3V0aW9uU3RhcnRUaW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCQuRXhlY3V0aW9uLlN0YXJ0VGltZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGUgRW50ZXJlZFRpbWUgZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHN0YXRlRW50ZXJlZFRpbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5TdGF0ZS5FbnRlcmVkVGltZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGUgTmFtZSBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgc3RhdGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCQuU3RhdGUuTmFtZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGUgUmV0cnlDb3VudCBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgc3RhdGVSZXRyeUNvdW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCQuU3RhdGUuUmV0cnlDb3VudFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGVNYWNoaW5lIElkIGZpZWxkIGZyb20gdGhlIGNvbnRleHQgb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBzdGF0ZU1hY2hpbmVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkLlN0YXRlTWFjaGluZS5JZFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgU3RhdGVNYWNoaW5lIE5hbWUgZmllbGQgZnJvbSB0aGUgY29udGV4dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHN0YXRlTWFjaGluZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5TdGF0ZU1hY2hpbmUuTmFtZVwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgVGFzayBUb2tlbiBmaWVsZCBmcm9tIHRoZSBjb250ZXh0IG9iamVjdFxuICAgKlxuICAgKiBFeHRlcm5hbCBhY3Rpb25zIHdpbGwgbmVlZCB0aGlzIHRva2VuIHRvIHJlcG9ydCBzdGVwIGNvbXBsZXRpb25cbiAgICogYmFjayB0byBTdGVwRnVuY3Rpb25zIHVzaW5nIHRoZSBgU2VuZFRhc2tTdWNjZXNzYCBvciBgU2VuZFRhc2tGYWlsdXJlYFxuICAgKiBjYWxscy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHRhc2tUb2tlbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkLlRhc2suVG9rZW5cIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhlIGVudGlyZSBjb250ZXh0IGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBlbnRpcmVDb250ZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJCRcIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXkgZXhwcmVzc2lvblxuICAgKlxuICAgKiBDb21iaW5lIGFueSBudW1iZXIgb2Ygc3RyaW5nIGxpdGVyYWxzIG9yIEpzb25QYXRoIGV4cHJlc3Npb25zIGludG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIGlmIHRoZSB2YWx1ZSBvZiBhbiBhcnJheSBlbGVtZW50IGRpcmVjdGx5IGhhcyB0byBjb21lXG4gICAqIGZyb20gYSBKU09OIFBhdGggZXhwcmVzc2lvbiAoZWl0aGVyIHRoZSBTdGF0ZSBvYmplY3Qgb3IgdGhlIENvbnRleHQgb2JqZWN0KS5cbiAgICpcbiAgICogSWYgdGhlIGFycmF5IGNvbnRhaW5zIG9iamVjdCBsaXRlcmFscyB3aG9zZSB2YWx1ZXMgY29tZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqIGV4cHJlc3Npb24sIHlvdSBkbyBub3QgbmVlZCB0byB1c2UgdGhpcyBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFycmF5KC4uLnZhbHVlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuQXJyYXkoJHt2YWx1ZXMubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXlQYXJ0aXRpb24gZXhwcmVzc2lvblxuICAgKlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBwYXJ0aXRpb24gYSBsYXJnZSBhcnJheS4gWW91IGNhbiBhbHNvIHVzZSB0aGlzIGludHJpbnNpYyB0byBzbGljZSB0aGUgZGF0YSBhbmQgdGhlbiBzZW5kIHRoZSBwYXlsb2FkIGluIHNtYWxsZXIgY2h1bmtzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlQYXJ0aXRpb24oYXJyYXk6IGFueSwgY2h1bmtTaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuQXJyYXlQYXJ0aXRpb24oJHtbYXJyYXksIGNodW5rU2l6ZV0ubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXlDb250YWlucyBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIHNwZWNpZmljIHZhbHVlIGlzIHByZXNlbnQgaW4gYW4gYXJyYXkuIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGRldGVjdCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gYSBNYXAgc3RhdGUgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlDb250YWlucyhhcnJheTogYW55LCB2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkFycmF5Q29udGFpbnMoJHtbYXJyYXksIHZhbHVlXS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5BcnJheVJhbmdlIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYSBzcGVjaWZpYyByYW5nZSBvZiBlbGVtZW50cy4gVGhlIG5ldyBhcnJheSBjYW4gY29udGFpbiB1cCB0byAxMDAwIGVsZW1lbnRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlSYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgc3RlcDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkFycmF5UmFuZ2UoJHtbc3RhcnQsIGVuZCwgc3RlcF0ubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuQXJyYXlHZXRJdGVtIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGEgc3BlY2lmaWVkIGluZGV4J3MgdmFsdWUgaW4gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9hbWF6b24tc3RhdGVzLWxhbmd1YWdlLWludHJpbnNpYy1mdW5jdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcnJheUdldEl0ZW0oYXJyYXk6IGFueSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5BcnJheUdldEl0ZW0oJHtbYXJyYXksIGluZGV4XS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5BcnJheUxlbmd0aCBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGVuZ3RoIG9mIGFuIGFycmF5LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXJyYXlMZW5ndGgoYXJyYXk6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5BcnJheUxlbmd0aCgke3JlbmRlckluRXhwcmVzc2lvbihhcnJheSl9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5BcnJheVVuaXF1ZSBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGVuZ3RoIG9mIGFuIGFycmF5LlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byByZW1vdmUgZHVwbGljYXRlIHZhbHVlcyBmcm9tIGFuIGFycmF5IGFuZCByZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgb25seSB1bmlxdWUgZWxlbWVudHMuIFRoaXMgZnVuY3Rpb24gdGFrZXMgYW4gYXJyYXksIHdoaWNoIGNhbiBiZSB1bnNvcnRlZCwgYXMgaXRzIHNvbGUgYXJndW1lbnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9hbWF6b24tc3RhdGVzLWxhbmd1YWdlLWludHJpbnNpYy1mdW5jdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcnJheVVuaXF1ZShhcnJheTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkFycmF5VW5pcXVlKCR7cmVuZGVySW5FeHByZXNzaW9uKGFycmF5KX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLkJhc2U2NEVuY29kZSBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGVuY29kZSBkYXRhIGJhc2VkIG9uIE1JTUUgQmFzZTY0IGVuY29kaW5nIHNjaGVtZS4gWW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBwYXNzIGRhdGEgdG8gb3RoZXIgQVdTIHNlcnZpY2VzIHdpdGhvdXQgdXNpbmcgYW4gQVdTIExhbWJkYSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGJhc2U2NEVuY29kZShpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkJhc2U2NEVuY29kZSgke3JlbmRlckluRXhwcmVzc2lvbihpbnB1dCl9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5CYXNlNjREZWNvZGUgZXhwcmVzc2lvblxuICAgKlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBkZWNvZGUgZGF0YSBiYXNlZCBvbiBNSU1FIEJhc2U2NCBkZWNvZGluZyBzY2hlbWUuIFlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gcGFzcyBkYXRhIHRvIG90aGVyIEFXUyBzZXJ2aWNlcyB3aXRob3V0IHVzaW5nIGEgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYmFzZTY0RGVjb2RlKGJhc2U2NDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXG4gICAgICBgU3RhdGVzLkJhc2U2NERlY29kZSgke3JlbmRlckluRXhwcmVzc2lvbihiYXNlNjQpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuSGFzaCBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgaGFzaCB2YWx1ZSBvZiBhIGdpdmVuIGlucHV0LiBZb3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHBhc3MgZGF0YSB0byBvdGhlciBBV1Mgc2VydmljZXMgd2l0aG91dCB1c2luZyBhIExhbWJkYSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGhhc2goZGF0YTogYW55LCBhbGdvcml0aG06IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5IYXNoKCR7W2RhdGEsIGFsZ29yaXRobV0ubWFwKHJlbmRlckluRXhwcmVzc2lvbikuam9pbihcIiwgXCIpfSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuSnNvbk1lcmdlIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gbWVyZ2UgdHdvIEpTT04gb2JqZWN0cyBpbnRvIGEgc2luZ2xlIG9iamVjdC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGpzb25NZXJnZSh2YWx1ZTE6IGFueSwgdmFsdWUyOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuSnNvbk1lcmdlKCR7W3ZhbHVlMSwgdmFsdWUyXS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9LCBmYWxzZSlgLFxuICAgICkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuTWF0aFJhbmRvbSBleHByZXNzaW9uXG4gICAqXG4gICAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiB0aGUgc3BlY2lmaWVkIHN0YXJ0IGFuZCBlbmQgbnVtYmVyLiBGb3IgZXhhbXBsZSwgeW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBkaXN0cmlidXRlIGEgc3BlY2lmaWMgdGFzayBiZXR3ZWVuIHR3byBvciBtb3JlIHJlc291cmNlcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hdGhSYW5kb20oc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcbiAgICAgIGBTdGF0ZXMuTWF0aFJhbmRvbSgke1tzdGFydCwgZW5kXS5tYXAocmVuZGVySW5FeHByZXNzaW9uKS5qb2luKFwiLCBcIil9KWAsXG4gICAgKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYW4gaW50cmluc2ljIFN0YXRlcy5NYXRoQWRkIGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBzdW0gb2YgdHdvIG51bWJlcnMuIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGluY3JlbWVudCB2YWx1ZXMgaW5zaWRlIGEgbG9vcCB3aXRob3V0IGludm9raW5nIGEgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWF0aEFkZChudW0xOiBudW1iZXIsIG51bTI6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5NYXRoQWRkKCR7W251bTEsIG51bTJdLm1hcChyZW5kZXJJbkV4cHJlc3Npb24pLmpvaW4oXCIsIFwiKX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLlN0cmluZ1NwbGl0IGV4cHJlc3Npb25cbiAgICpcbiAgICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gc3BsaXQgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiB2YWx1ZXMuIFRoaXMgZnVuY3Rpb24gdGFrZXMgdHdvIGFyZ3VtZW50cy5UaGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzdHJpbmcgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIGRlbGltaXRpbmcgY2hhcmFjdGVyIHRoYXQgdGhlIGZ1bmN0aW9uIHdpbGwgdXNlIHRvIGRpdmlkZSB0aGUgc3RyaW5nLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nU3BsaXQoaW5wdXRTdHJpbmc6IHN0cmluZywgc3BsaXR0ZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5TdHJpbmdTcGxpdCgke1tpbnB1dFN0cmluZywgc3BsaXR0ZXJdLm1hcChyZW5kZXJJbkV4cHJlc3Npb24pLmpvaW4oXCIsIFwiKX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLlVVSUQgZXhwcmVzc2lvblxuICAgKlxuICAgKiBVc2UgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYSB2ZXJzaW9uIDQgdW5pdmVyc2FsbHkgdW5pcXVlIGlkZW50aWZpZXIgKHY0IFVVSUQpIGdlbmVyYXRlZCB1c2luZyByYW5kb20gbnVtYmVycy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2FsbCBvdGhlciBBV1Mgc2VydmljZXMgb3IgcmVzb3VyY2VzIHRoYXQgbmVlZCBhIFVVSUQgcGFyYW1ldGVyIG9yIGluc2VydCBpdGVtcyBpbiBhIER5bmFtb0RCIHRhYmxlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zdGVwLWZ1bmN0aW9ucy9sYXRlc3QvZGcvYW1hem9uLXN0YXRlcy1sYW5ndWFnZS1pbnRyaW5zaWMtZnVuY3Rpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIlN0YXRlcy5VVUlEKClcIikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuRm9ybWF0IGV4cHJlc3Npb25cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBlbWJlZCBKU09OIFBhdGggdmFyaWFibGVzIGluc2lkZSBhIGZvcm1hdCBzdHJpbmcuXG4gICAqXG4gICAqIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBzZm4uSnNvblBhdGguZm9ybWF0KCdIZWxsbywgbXkgbmFtZSBpcyB7fS4nLCBzZm4uSnNvblBhdGguc3RyaW5nQXQoJyQubmFtZScpKVxuICAgKiBgYGBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvcm1hdChmb3JtYXRTdHJpbmc6IHN0cmluZywgLi4udmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYWxsQXJncyA9IFtmb3JtYXRTdHJpbmcsIC4uLnZhbHVlc107XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5Gb3JtYXQoJHthbGxBcmdzLm1hcChyZW5kZXJJbkV4cHJlc3Npb24pLmpvaW4oXCIsIFwiKX0pYCxcbiAgICApLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSBhbiBpbnRyaW5zaWMgU3RhdGVzLlN0cmluZ1RvSnNvbiBleHByZXNzaW9uXG4gICAqXG4gICAqIER1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBTdGVwIEZ1bmN0aW9ucyBzdGF0ZSBtYWNoaW5lLCBwYXJzZSB0aGUgZ2l2ZW5cbiAgICogYXJndW1lbnQgYXMgSlNPTiBpbnRvIGl0cyBvYmplY3QgZm9ybS5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHNmbi5Kc29uUGF0aC5zdHJpbmdUb0pzb24oc2ZuLkpzb25QYXRoLnN0cmluZ0F0KCckLnNvbWVKc29uQm9keScpKVxuICAgKiBgYGBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2FtYXpvbi1zdGF0ZXMtbGFuZ3VhZ2UtaW50cmluc2ljLWZ1bmN0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0cmluZ1RvSnNvbihqc29uU3RyaW5nOiBzdHJpbmcpOiBJUmVzb2x2YWJsZSB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFxuICAgICAgYFN0YXRlcy5TdHJpbmdUb0pzb24oJHtyZW5kZXJJbkV4cHJlc3Npb24oanNvblN0cmluZyl9KWAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIGFuIGludHJpbnNpYyBTdGF0ZXMuSnNvblRvU3RyaW5nIGV4cHJlc3Npb25cbiAgICpcbiAgICogRHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIFN0ZXAgRnVuY3Rpb25zIHN0YXRlIG1hY2hpbmUsIGVuY29kZSB0aGVcbiAgICogZ2l2ZW4gb2JqZWN0IGludG8gYSBKU09OIHN0cmluZy5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHNmbi5Kc29uUGF0aC5qc29uVG9TdHJpbmcoc2ZuLkpzb25QYXRoLm9iamVjdEF0KCckLnNvbWVPYmplY3QnKSlcbiAgICogYGBgXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9hbWF6b24tc3RhdGVzLWxhbmd1YWdlLWludHJpbnNpYy1mdW5jdGlvbnMuaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBqc29uVG9TdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0aCA9IGpzb25QYXRoRnJvbUFueSh2YWx1ZSk7XG4gICAgaWYgKCFwYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQXJndW1lbnQgdG8gSnNvblBhdGguanNvblRvU3RyaW5nKCkgbXVzdCBiZSBhIEpzb25QYXRoIG9iamVjdFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oYFN0YXRlcy5Kc29uVG9TdHJpbmcoJHtwYXRofSlgKS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIGZpZWxkIGZyb20gdGhlIFN0YXRlIE1hY2hpbmUgZGF0YSB0aGF0IGdldHMgcGFzc2VkIGFyb3VuZCBiZXR3ZWVuIHN0YXRlc1xuICpcbiAqIEBkZXByZWNhdGVkIHJlcGxhY2VkIGJ5IGBKc29uUGF0aGBcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGEge1xuICAvKipcbiAgICogSW5zdGVhZCBvZiB1c2luZyBhIGxpdGVyYWwgc3RyaW5nLCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nQXQocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB2YWxpZGF0ZURhdGFQYXRoKHBhdGgpO1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihwYXRoKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIHN0cmluZyBsaXN0LCBnZXQgdGhlIHZhbHVlIGZyb20gYSBKU09OIHBhdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGlzdEF0KHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICB2YWxpZGF0ZURhdGFQYXRoKHBhdGgpO1xuICAgIHJldHVybiBUb2tlbi5hc0xpc3QobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIG51bWJlciwgZ2V0IHRoZSB2YWx1ZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG51bWJlckF0KHBhdGg6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdmFsaWRhdGVEYXRhUGF0aChwYXRoKTtcbiAgICByZXR1cm4gVG9rZW4uYXNOdW1iZXIobmV3IEpzb25QYXRoVG9rZW4ocGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgZW50aXJlIGRhdGEgc3RydWN0dXJlXG4gICAqXG4gICAqIFdpbGwgYmUgYW4gb2JqZWN0IGF0IGludm9jYXRpb24gdGltZSwgYnV0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBDREtcbiAgICogYXBwbGljYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBlbnRpcmVQYXlsb2FkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBKc29uUGF0aFRva2VuKFwiJFwiKS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGluZGljYXRlZCBzdHJpbmcgaXMgYW4gZW5jb2RlZCBKU09OIHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIHN0cmluZyB0byBiZSBldmFsdWF0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNKc29uUGF0aFN0cmluZyh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhanNvblBhdGhTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIGZpZWxkIGZyb20gdGhlIFN0YXRlIE1hY2hpbmUgQ29udGV4dCBkYXRhXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3RlcC1mdW5jdGlvbnMvbGF0ZXN0L2RnL2Nvbm5lY3QtdG8tcmVzb3VyY2UuaHRtbCN3YWl0LXRva2VuLWNvbnRleHRvYmplY3RcbiAqXG4gKiBAZGVwcmVjYXRlZCByZXBsYWNlZCBieSBgSnNvblBhdGhgXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250ZXh0IHtcbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgdXNpbmcgYSBsaXRlcmFsIHN0cmluZywgZ2V0IHRoZSB2YWx1ZSBmcm9tIGEgSlNPTiBwYXRoXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0cmluZ0F0KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdmFsaWRhdGVDb250ZXh0UGF0aChwYXRoKTtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4ocGF0aCkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIHVzaW5nIGEgbGl0ZXJhbCBudW1iZXIsIGdldCB0aGUgdmFsdWUgZnJvbSBhIEpTT04gcGF0aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBudW1iZXJBdChwYXRoOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHZhbGlkYXRlQ29udGV4dFBhdGgocGF0aCk7XG4gICAgcmV0dXJuIFRva2VuLmFzTnVtYmVyKG5ldyBKc29uUGF0aFRva2VuKHBhdGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIFRhc2sgVG9rZW4gZmllbGRcbiAgICpcbiAgICogRXh0ZXJuYWwgYWN0aW9ucyB3aWxsIG5lZWQgdGhpcyB0b2tlbiB0byByZXBvcnQgc3RlcCBjb21wbGV0aW9uXG4gICAqIGJhY2sgdG8gU3RlcEZ1bmN0aW9ucyB1c2luZyB0aGUgYFNlbmRUYXNrU3VjY2Vzc2Agb3IgYFNlbmRUYXNrRmFpbHVyZWBcbiAgICogY2FsbHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCB0YXNrVG9rZW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEpzb25QYXRoVG9rZW4oXCIkJC5UYXNrLlRva2VuXCIpLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoZSBlbnRpcmUgY29udGV4dCBkYXRhIHN0cnVjdHVyZVxuICAgKlxuICAgKiBXaWxsIGJlIGFuIG9iamVjdCBhdCBpbnZvY2F0aW9uIHRpbWUsIGJ1dCBpcyByZXByZXNlbnRlZCBpbiB0aGUgQ0RLXG4gICAqIGFwcGxpY2F0aW9uIGFzIGEgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZW50aXJlQ29udGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgSnNvblBhdGhUb2tlbihcIiQkXCIpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aCBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgZmllbGRzXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWVsZFV0aWxzIHtcbiAgLyoqXG4gICAqIFJlbmRlciBhIEpTT04gc3RydWN0dXJlIGNvbnRhaW5pbmcgZmllbGRzIHRvIHRoZSByaWdodCBTdGVwRnVuY3Rpb25zIHN0cnVjdHVyZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZW5kZXJPYmplY3Qob2JqPzoge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiByZW5kZXJPYmplY3Qob2JqKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIEpTT04gcGF0aHMgdXNlZCBpbiB0aGUgZ2l2ZW4gc3RydWN0dXJlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZpbmRSZWZlcmVuY2VkUGF0aHMob2JqPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShmaW5kUmVmZXJlbmNlZFBhdGhzKG9iaikpLnNvcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIHRhc2sgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBUYXNrVG9rZW4gZmllbGQgYW55d2hlcmVcbiAgICpcbiAgICogVGhlIGZpZWxkIGlzIGNvbnNpZGVyZWQgaW5jbHVkZWQgaWYgdGhlIGZpZWxkIGl0c2VsZiBvciBvbmUgb2YgaXRzIGNvbnRhaW5pbmdcbiAgICogZmllbGRzIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgcGF5bG9hZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udGFpbnNUYXNrVG9rZW4ob2JqPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGhzID0gZmluZFJlZmVyZW5jZWRQYXRocyhvYmopO1xuICAgIHJldHVybiAoXG4gICAgICBwYXRocy5oYXMoXCIkJC5UYXNrLlRva2VuXCIpIHx8IHBhdGhzLmhhcyhcIiQkLlRhc2tcIikgfHwgcGF0aHMuaGFzKFwiJCRcIilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSnNvblBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGludHJpbnNpY0Z1bmN0aW9uTmFtZXMgPSBbXG4gICAgLy8gSW50cmluc2ljcyBmb3IgYXJyYXlzXG4gICAgXCJBcnJheVwiLFxuICAgIFwiQXJyYXlQYXJ0aXRpb25cIixcbiAgICBcIkFycmF5Q29udGFpbnNcIixcbiAgICBcIkFycmF5UmFuZ2VcIixcbiAgICBcIkFycmF5R2V0SXRlbVwiLFxuICAgIFwiQXJyYXlMZW5ndGhcIixcbiAgICBcIkFycmF5VW5pcXVlXCIsXG4gICAgLy8gSW50cmluc2ljcyBmb3IgZGF0YSBlbmNvZGluZyBhbmQgZGVjb2RpbmdcbiAgICBcIkJhc2U2NEVuY29kZVwiLFxuICAgIFwiQmFzZTY0RGVjb2RlXCIsXG4gICAgLy8gSW50cmluc2ljIGZvciBoYXNoIGNhbGN1bGF0aW9uXG4gICAgXCJIYXNoXCIsXG4gICAgLy8gSW50cmluc2ljcyBmb3IgSlNPTiBkYXRhIG1hbmlwdWxhdGlvblxuICAgIFwiSnNvbk1lcmdlXCIsXG4gICAgXCJTdHJpbmdUb0pzb25cIixcbiAgICBcIkpzb25Ub1N0cmluZ1wiLFxuICAgIC8vIEludHJpbnNpY3MgZm9yIE1hdGggb3BlcmF0aW9uc1xuICAgIFwiTWF0aFJhbmRvbVwiLFxuICAgIFwiTWF0aEFkZFwiLFxuICAgIC8vIEludHJpbnNpYyBmb3IgU3RyaW5nIG9wZXJhdGlvblxuICAgIFwiU3RyaW5nU3BsaXRcIixcbiAgICAvLyBJbnRyaW5zaWMgZm9yIHVuaXF1ZSBpZGVudGlmaWVyIGdlbmVyYXRpb25cbiAgICBcIlVVSURcIixcbiAgICAvLyBJbnRyaW5zaWMgZm9yIGdlbmVyaWMgb3BlcmF0aW9uXG4gICAgXCJGb3JtYXRcIixcbiAgXTtcbiAgY29uc3QgaW50cmluc2ljRnVuY3Rpb25GdWxsTmFtZXMgPSBpbnRyaW5zaWNGdW5jdGlvbk5hbWVzLm1hcChcbiAgICAoZm4pID0+IGBTdGF0ZXMuJHtmbn1gLFxuICApO1xuICBpZiAoXG4gICAgcGF0aCAhPT0gXCIkXCIgJiZcbiAgICAhcGF0aC5zdGFydHNXaXRoKFwiJC5cIikgJiZcbiAgICBwYXRoICE9PSBcIiQkXCIgJiZcbiAgICAhcGF0aC5zdGFydHNXaXRoKFwiJCQuXCIpICYmXG4gICAgIXBhdGguc3RhcnRzV2l0aChcIiRbXCIpICYmXG4gICAgaW50cmluc2ljRnVuY3Rpb25GdWxsTmFtZXMuZXZlcnkoKGZuKSA9PiAhcGF0aC5zdGFydHNXaXRoKGZuKSlcbiAgKSB7XG4gICAgY29uc3QgbGFzdEl0ZW0gPSBpbnRyaW5zaWNGdW5jdGlvbkZ1bGxOYW1lcy5wb3AoKTtcbiAgICBjb25zdCBpbnRyaW5zaWNGdW5jdGlvbnNTdHIgPVxuICAgICAgaW50cmluc2ljRnVuY3Rpb25GdWxsTmFtZXMuam9pbihcIiwgXCIpICsgXCIsIG9yIFwiICsgbGFzdEl0ZW07XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEpTT04gcGF0aCB2YWx1ZXMgbXVzdCBiZSBleGFjdGx5ICckJywgJyQkJywgc3RhcnQgd2l0aCAnJC4nLCBzdGFydCB3aXRoICckJC4nLCBzdGFydCB3aXRoICckWycsIG9yIHN0YXJ0IHdpdGggYW4gaW50cmluc2ljIGZ1bmN0aW9uOiAke2ludHJpbnNpY0Z1bmN0aW9uc1N0cn0uIFJlY2VpdmVkOiAke3BhdGh9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRGF0YVBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGlmIChwYXRoICE9PSBcIiRcIiAmJiAhcGF0aC5zdGFydHNXaXRoKFwiJFtcIikgJiYgIXBhdGguc3RhcnRzV2l0aChcIiQuXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJEYXRhIEpTT04gcGF0aCB2YWx1ZXMgbXVzdCBlaXRoZXIgYmUgZXhhY3RseSBlcXVhbCB0byAnJCcsIHN0YXJ0IHdpdGggJyRbJyBvciBzdGFydCB3aXRoICckLidcIixcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ29udGV4dFBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGlmIChwYXRoICE9PSBcIiQkXCIgJiYgIXBhdGguc3RhcnRzV2l0aChcIiQkLlwiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQ29udGV4dCBKU09OIHBhdGggdmFsdWVzIG11c3QgZWl0aGVyIGJlIGV4YWN0bHkgZXF1YWwgdG8gJyQkJyBvciBzdGFydCB3aXRoICckJC4nXCIsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -3,7 +3,7 @@ var _a;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.Alias = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const provider_aws_1 = require("@
|
|
6
|
+
const provider_aws_1 = require("@cdktn/provider-aws");
|
|
7
7
|
const function_base_1 = require("./function-base");
|
|
8
8
|
/**
|
|
9
9
|
* A new alias to a particular version of a Lambda function.
|
|
@@ -184,5 +184,5 @@ class Alias extends function_base_1.QualifiedFunctionBase {
|
|
|
184
184
|
}
|
|
185
185
|
exports.Alias = Alias;
|
|
186
186
|
_a = JSII_RTTI_SYMBOL_1;
|
|
187
|
-
Alias[_a] = { fqn: "terraconstructs.aws.compute.Alias", version: "0.2.
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0U7QUFJdEUsbURBQW1FO0FBb0huRTs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLHFDQUFxQjtJQUN2QyxNQUFNLENBQUMsbUJBQW1CLENBQy9CLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixNQUFNLFFBQVMsU0FBUSxxQ0FBcUI7WUFHMUM7O2VBRUc7WUFDSCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkMsQ0FBQztZQUNELElBQVcsMEJBQTBCO2dCQUNuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxDQUFDO1lBUUQsSUFBVyxZQUFZO2dCQUNyQixPQUFPO29CQUNMLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztpQkFDbkMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDO1lBR0QsWUFBWSxDQUFZLEVBQUUsQ0FBUztnQkFDakMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFoQ0UsY0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBYTVCLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUN4QixnQkFBVyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFNBQVMs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K0NBQStDO0lBQy9DLDBDQUEwQztJQUMxQyxxREFBcUQ7SUFDckQsNkRBQTZEO0lBQzdELDhEQUE4RDtJQUM5RCxnQ0FBZ0M7SUFDaEMsU0FBUztJQUNULFFBQVE7SUFDUixJQUFJO0lBRUo7O09BRUc7SUFDSyxzQkFBc0IsQ0FDNUIsS0FBaUI7UUFFakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxNQUFNLHdCQUF3QixHQUE4QixFQUFFLENBQUM7UUFDL0QsS0FBSyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FDdkUsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNuQix3QkFBd0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUNiLDZEQUE2RCxLQUFLLEVBQUUsQ0FDckUsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ0wsd0JBQXdCO1NBQ3pCLENBQUM7SUFDSixDQUFDOztBQXJQSCxzQkErUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYW1iZGFBbGlhcywgZGF0YUF3c0xhbWJkYUFsaWFzIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUgfSBmcm9tIFwiLi9hcmNoaXRlY3R1cmVcIjtcbmltcG9ydCB7IEV2ZW50SW52b2tlQ29uZmlnT3B0aW9ucyB9IGZyb20gXCIuL2V2ZW50LWludm9rZS1jb25maWdcIjtcbmltcG9ydCB7IElGdW5jdGlvbiwgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIH0gZnJvbSBcIi4vZnVuY3Rpb24tYmFzZVwiO1xuLy8gaW1wb3J0IHsgU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZSB9IGZyb20gXCIuL3ByaXZhdGUvc2NhbGFibGUtZnVuY3Rpb24tYXR0cmlidXRlXCI7XG4vLyBpbXBvcnQge1xuLy8gICBBdXRvU2NhbGluZ09wdGlvbnMsXG4vLyAgIElTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlLFxuLy8gfSBmcm9tIFwiLi9zY2FsYWJsZS1hdHRyaWJ1dGUtYXBpXCI7XG4vLyBpbXBvcnQgeyBBcm5Gb3JtYXQgfSBmcm9tIFwiLi4vXCI7XG5cbi8qKlxuICogT3V0cHV0cyB0aGF0IGNhbiBiZSBleHBvc2VkIHRocm91Z2ggdGhlIGdyaWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc091dHB1dHMge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGlkZW50aWZ5aW5nIHlvdXIgTGFtYmRhIGZ1bmN0aW9uIGFsaWFzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIHRvIGJlIHVzZWQgZm9yIGludm9raW5nIExhbWJkYSBGdW5jdGlvbiBmcm9tIEFQSSBHYXRld2F5IC0gdG8gYmUgdXNlZCBpbiBgYXdzX2FwaV9nYXRld2F5X2ludGVncmF0aW9uYCdzIHVyaVxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFsaWFzIGV4dGVuZHMgSUZ1bmN0aW9uIHtcbiAgLyoqIHN0cm9uZ2x5IHR5cGVkIGFsaWFzT3V0cHV0cyAqL1xuICByZWFkb25seSBhbGlhc091dHB1dHM6IEFsaWFzT3V0cHV0cztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGFsaWFzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBsYW1iZGE6IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGxhbWJkYS5BbGlhc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNPcHRpb25zIGV4dGVuZHMgRXZlbnRJbnZva2VDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgYWxpYXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHZlcnNpb25zIHdpdGggaW5kaXZpZHVhbCB3ZWlnaHRzIHRoaXMgYWxpYXMgcG9pbnRzIHRvXG4gICAqXG4gICAqIEluZGl2aWR1YWwgYWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodHMgc3BlY2lmaWVkIGhlcmUgc2hvdWxkIGFkZCB1cCB0b1xuICAgKiAobGVzcyB0aGFuKSBvbmUuIEFsbCByZW1haW5pbmcgd2VpZ2h0IGlzIHJvdXRlZCB0byB0aGUgZGVmYXVsdFxuICAgKiB2ZXJzaW9uLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIGNvbmZpZyBpc1xuICAgKlxuICAgKiAgICB2ZXJzaW9uOiBcIjFcIlxuICAgKiAgICBhZGRpdGlvbmFsVmVyc2lvbnM6IFt7IHZlcnNpb246IFwiMlwiLCB3ZWlnaHQ6IDAuMDUgfV1cbiAgICpcbiAgICogVGhlbiA1JSBvZiB0cmFmZmljIHdpbGwgYmUgcm91dGVkIHRvIGZ1bmN0aW9uIHZlcnNpb24gMiwgd2hpbGVcbiAgICogdGhlIHJlbWFpbmluZyA5NSUgb2YgdHJhZmZpYyB3aWxsIGJlIHJvdXRlZCB0byBmdW5jdGlvbiB2ZXJzaW9uIDEuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgdmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxWZXJzaW9ucz86IFZlcnNpb25XZWlnaHRbXTtcblxuICAvLyBUT0RPOiByZS1hZGQgc3VwcG9ydCBmb3IgcHJvdmlzaW9uZWQgY29uY3VycmVuY3lcbiAgLy8gLyoqXG4gIC8vICAqIFNwZWNpZmllcyBhIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IGNvbmZpZ3VyYXRpb24gZm9yIGEgZnVuY3Rpb24ncyBhbGlhcy5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgTm8gcHJvdmlzaW9uZWQgY29uY3VycmVuY3lcbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IHByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgTGFtYmRhIGFsaWFzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNQcm9wcyBleHRlbmRzIEFsaWFzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXNcbiAgICpcbiAgICogTWluaW11bSBsZW5ndGggb2YgMS4gTWF4aW11bSBsZW5ndGggb2YgMTI4LlxuICAgKiBQYXR0ZXJuOiAoPyFeWzAtOV0rJCkoW2EtekEtWjAtOS1fXSspXG4gICAqXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhpcyBhbGlhcyByZWZlcnMgdG9cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHZlcnNpb24gdGhpcyBhbGlhcyByZWZlcnMgdG9cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvbGFtYmRhX2FsaWFzI2Z1bmN0aW9uX3ZlcnNpb24gTGFtYmRhQWxpYXMjZnVuY3Rpb25fdmVyc2lvbn1cbiAgICogcGF0dGVybiAoXFwkTEFURVNUfFswLTldKylcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGlhc0F0dHJpYnV0ZXMge1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBBIG5ldyBhbGlhcyB0byBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiBhIExhbWJkYSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWFzIGV4dGVuZHMgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQWxpYXNBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogQWxpYXNBdHRyaWJ1dGVzLFxuICApOiBJQWxpYXMge1xuICAgIGNsYXNzIEltcG9ydGVkIGV4dGVuZHMgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogZGF0YUF3c0xhbWJkYUFsaWFzLkRhdGFBd3NMYW1iZGFBbGlhcztcbiAgICAgIHB1YmxpYyByZWFkb25seSBhbGlhc05hbWUgPSBhdHRycy5hbGlhc05hbWU7XG4gICAgICAvKipcbiAgICAgICAqIExhbWJkYSBmdW5jdGlvbiB2ZXJzaW9uIHdoaWNoIHRoZSBhbGlhcyB1c2VzLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmZ1bmN0aW9uVmVyc2lvbjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgZnVuY3Rpb25RdWFsaWZpZWRJbnZva2VBcm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgZnVuY3Rpb25JbnZva2VBcm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyByZWFkb25seSBsYW1iZGEgPSBhdHRycy5mdW5jdGlvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbkFybiA9IGAke2F0dHJzLmZ1bmN0aW9uLmZ1bmN0aW9uQXJufToke2F0dHJzLmFsaWFzTmFtZX1gO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZSA9IGAke2F0dHJzLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZX06JHthdHRycy5hbGlhc05hbWV9YDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IGF0dHJzLmZ1bmN0aW9uLmdyYW50UHJpbmNpcGFsO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJvbGUgPSBhdHRycy5mdW5jdGlvbi5yb2xlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFyY2hpdGVjdHVyZSA9IGF0dHJzLmZ1bmN0aW9uLmFyY2hpdGVjdHVyZTtcblxuICAgICAgcHVibGljIGdldCBhbGlhc091dHB1dHMoKTogQWxpYXNPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBhdHRycy5hbGlhc05hbWUsXG4gICAgICAgICAgaW52b2tlQXJuOiB0aGlzLnJlc291cmNlLmludm9rZUFybixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpYXNPdXRwdXRzO1xuICAgICAgfVxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbkNyZWF0ZVBlcm1pc3Npb25zID0gdGhpcy5faXNTdGFja0FjY291bnQoKTtcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBxdWFsaWZpZXIgPSBhdHRycy5hbGlhc05hbWU7XG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBkYXRhQXdzTGFtYmRhQWxpYXMuRGF0YUF3c0xhbWJkYUFsaWFzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuYWxpYXNOYW1lLFxuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBhdHRycy5mdW5jdGlvbi5mdW5jdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkKHNjb3BlLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbGlhc091dHB1dHM6IEFsaWFzT3V0cHV0cztcbiAgcHVibGljIGdldCBhbGlhc091dHB1dHMoKTogQWxpYXNPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fYWxpYXNPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWxpYXNPdXRwdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBhbGlhcy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXNcbiAgICpcbiAgICogVXNlZCB0byBiZSBhYmxlIHRvIHVzZSBBbGlhcyBpbiBwbGFjZSBvZiBhIHJlZ3VsYXIgTGFtYmRhLiBMYW1iZGEgYWNjZXB0c1xuICAgKiBBUk5zIGV2ZXJ5d2hlcmUgaXQgYWNjZXB0cyBmdW5jdGlvbiBuYW1lcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbk5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhOiBJRnVuY3Rpb247XG5cbiAgcHVibGljIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIGFsaWFzXG4gICAqXG4gICAqIFVzZWQgdG8gYmUgYWJsZSB0byB1c2UgQWxpYXMgaW4gcGxhY2Ugb2YgYSByZWd1bGFyIExhbWJkYS4gTGFtYmRhIGFjY2VwdHNcbiAgICogQVJOcyBldmVyeXdoZXJlIGl0IGFjY2VwdHMgZnVuY3Rpb24gbmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25Bcm46IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGZ1bmN0aW9uUXVhbGlmaWVkSW52b2tlQXJuKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgfVxuICBwdWJsaWMgZ2V0IGZ1bmN0aW9uSW52b2tlQXJuKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuQ3JlYXRlUGVybWlzc2lvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vIC8vIFRPRE86IFJlLUFkZCBzY2FsYWJsZSBmdW5jdGlvbnNcbiAgLy8gcHJpdmF0ZSBzY2FsYWJsZUFsaWFzPzogU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZTtcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBzY2FsaW5nUm9sZTogaWFtLklSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBbGlhc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmxhbWJkYSA9IHByb3BzLmZ1bmN0aW9uO1xuICAgIC8vIFRPRE86IERvZXMgaXQgbWFrZSBzZW5zZSB0byBqdXN0IHByZWZpeCBhbGlhc05hbWUgd2l0aCBHcmlkVVVJRD9cbiAgICAvLyBzaG91bGQgdXNlIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lIGluc3RlYWQ/XG4gICAgdGhpcy5hbGlhc05hbWUgPSBgJHt0aGlzLmdyaWRVVUlEfS0ke3Byb3BzLmFsaWFzTmFtZX1gO1xuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzLnZlcnNpb247XG4gICAgdGhpcy5hcmNoaXRlY3R1cmUgPSB0aGlzLmxhbWJkYS5hcmNoaXRlY3R1cmU7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgbmFtZTogdGhpcy5hbGlhc05hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBmdW5jdGlvbk5hbWU6IHRoaXMubGFtYmRhLmZ1bmN0aW9uTmFtZSxcbiAgICAgIGZ1bmN0aW9uVmVyc2lvbjogcHJvcHMudmVyc2lvbixcbiAgICAgIHJvdXRpbmdDb25maWc6IHRoaXMuZGV0ZXJtaW5lUm91dGluZ0NvbmZpZyhwcm9wcyksXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPOiBBZGQgYXdzX2xhbWJkYV9wcm92aXNpb25lZF9jb25jdXJyZW5jeV9jb25maWdcblxuICAgIC8vIC8vIFVzZSBhIFNlcnZpY2UgTGlua2VkIFJvbGVcbiAgICAvLyAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvYXBwbGljYXRpb24vdXNlcmd1aWRlL2FwcGxpY2F0aW9uLWF1dG8tc2NhbGluZy1zZXJ2aWNlLWxpbmtlZC1yb2xlcy5odG1sXG4gICAgLy8gdGhpcy5zY2FsaW5nUm9sZSA9IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKFxuICAgIC8vICAgdGhpcyxcbiAgICAvLyAgIFwiU2NhbGluZ1JvbGVcIixcbiAgICAvLyAgIHRoaXMuc3RhY2suZm9ybWF0QXJuKHtcbiAgICAvLyAgICAgc2VydmljZTogXCJpYW1cIixcbiAgICAvLyAgICAgcmVnaW9uOiBcIlwiLFxuICAgIC8vICAgICByZXNvdXJjZTpcbiAgICAvLyAgICAgICBcInJvbGUvYXdzLXNlcnZpY2Utcm9sZS9sYW1iZGEuYXBwbGljYXRpb24tYXV0b3NjYWxpbmcuYW1hem9uYXdzLmNvbVwiLFxuICAgIC8vICAgICByZXNvdXJjZU5hbWU6XG4gICAgLy8gICAgICAgXCJBV1NTZXJ2aWNlUm9sZUZvckFwcGxpY2F0aW9uQXV0b1NjYWxpbmdfTGFtYmRhQ29uY3VycmVuY3lcIixcbiAgICAvLyAgIH0pLFxuICAgIC8vICk7XG5cbiAgICAvLyBpbmNsdWRlcyBxdWFsaWZpZXJcbiAgICB0aGlzLmZ1bmN0aW9uQXJuID0gdGhpcy5yZXNvdXJjZS5pbnZva2VBcm47XG5cbiAgICAvLyB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGFsaWFzLnJlZiwge1xuICAgIC8vICAgc2VydmljZTogXCJsYW1iZGFcIixcbiAgICAvLyAgIHJlc291cmNlOiBcImZ1bmN0aW9uXCIsXG4gICAgLy8gICByZXNvdXJjZU5hbWU6IGAke3RoaXMubGFtYmRhLmZ1bmN0aW9uTmFtZX06JHt0aGlzLmFsaWFzTmFtZX1gLFxuICAgIC8vICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAvLyB9KTtcblxuICAgIHRoaXMucXVhbGlmaWVyID0gdGhpcy5hbGlhc05hbWU7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5vbkZhaWx1cmUgfHxcbiAgICAgIHByb3BzLm9uU3VjY2VzcyB8fFxuICAgICAgcHJvcHMubWF4RXZlbnRBZ2UgfHxcbiAgICAgIHByb3BzLnJldHJ5QXR0ZW1wdHMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy5jb25maWd1cmVBc3luY0ludm9rZSh7XG4gICAgICAgIG9uRmFpbHVyZTogcHJvcHMub25GYWlsdXJlLFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgICAgbWF4RXZlbnRBZ2U6IHByb3BzLm1heEV2ZW50QWdlLFxuICAgICAgICByZXRyeUF0dGVtcHRzOiBwcm9wcy5yZXRyeUF0dGVtcHRzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQVJOIHBhcnNpbmcgc3BsaXRzIG9uIGA6YCwgc28gd2UgY2FuIG9ubHkgZ2V0IHRoZSBmdW5jdGlvbidzIG5hbWUgZnJvbSB0aGUgQVJOIGFzIHJlc291cmNlTmFtZS4uLlxuICAgIC8vIEFuZCB3ZSdyZSBwYXJzaW5nIGl0IG91dCAoaW5zdGVhZCBvZiB1c2luZyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBkaXJlY3RseSkgaW4gb3JkZXIgdG8gaGF2ZSB1c2Ugb2YgaXQgaW5jdXJcbiAgICAvLyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5IG9uIHRoZSByZXNvdXJjZS5cblxuICAgIC8vYCR7dGhpcy5zdGFjay5zcGxpdEFybih0aGlzLmZ1bmN0aW9uQXJuLCBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lIX06JHt0aGlzLmFsaWFzTmFtZX1gO1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gdGhpcy5yZXNvdXJjZS5mdW5jdGlvbk5hbWU7XG4gICAgdGhpcy5fYWxpYXNPdXRwdXRzID0ge1xuICAgICAgaW52b2tlQXJuOiB0aGlzLnJlc291cmNlLmludm9rZUFybixcbiAgICAgIG5hbWU6IHRoaXMuYWxpYXNOYW1lLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdyYW50UHJpbmNpcGFsKCkge1xuICAgIHJldHVybiB0aGlzLmxhbWJkYS5ncmFudFByaW5jaXBhbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9sZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYW1iZGEucm9sZTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBDb25maWd1cmUgcHJvdmlzaW9uZWQgY29uY3VycmVuY3kgYXV0b3NjYWxpbmcgb24gYSBmdW5jdGlvbiBhbGlhcy4gUmV0dXJucyBhIHNjYWxhYmxlIGF0dHJpYnV0ZSB0aGF0IGNhbiBjYWxsXG4gIC8vICAqIGBzY2FsZU9uVXRpbGl6YXRpb24oKWAgYW5kIGBzY2FsZU9uU2NoZWR1bGUoKWAuXG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBvcHRpb25zIEF1dG9zY2FsaW5nIG9wdGlvbnNcbiAgLy8gICovXG4gIC8vIHB1YmxpYyBhZGRBdXRvU2NhbGluZyhcbiAgLy8gICBvcHRpb25zOiBBdXRvU2NhbGluZ09wdGlvbnMsXG4gIC8vICk6IElTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlIHtcbiAgLy8gICBpZiAodGhpcy5zY2FsYWJsZUFsaWFzKSB7XG4gIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvU2NhbGluZyBhbHJlYWR5IGVuYWJsZWQgZm9yIHRoaXMgYWxpYXNcIik7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiAodGhpcy5zY2FsYWJsZUFsaWFzID0gbmV3IFNjYWxhYmxlRnVuY3Rpb25BdHRyaWJ1dGUoXG4gIC8vICAgICB0aGlzLFxuICAvLyAgICAgXCJBbGlhc1NjYWxpbmdcIixcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbWluQ2FwYWNpdHk6IG9wdGlvbnMubWluQ2FwYWNpdHkgPz8gMSxcbiAgLy8gICAgICAgbWF4Q2FwYWNpdHk6IG9wdGlvbnMubWF4Q2FwYWNpdHksXG4gIC8vICAgICAgIHJlc291cmNlSWQ6IGBmdW5jdGlvbjoke3RoaXMuZnVuY3Rpb25OYW1lfWAsXG4gIC8vICAgICAgIGRpbWVuc2lvbjogXCJsYW1iZGE6ZnVuY3Rpb246UHJvdmlzaW9uZWRDb25jdXJyZW5jeVwiLFxuICAvLyAgICAgICBzZXJ2aWNlTmFtZXNwYWNlOiBhcHBzY2FsaW5nLlNlcnZpY2VOYW1lc3BhY2UuTEFNQkRBLFxuICAvLyAgICAgICByb2xlOiB0aGlzLnNjYWxpbmdSb2xlLFxuICAvLyAgICAgfSxcbiAgLy8gICApKTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHJvdXRpbmdDb25maWcgcGFyYW1ldGVyIGZyb20gdGhlIGlucHV0IHByb3BzXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZVJvdXRpbmdDb25maWcoXG4gICAgcHJvcHM6IEFsaWFzUHJvcHMsXG4gICk6IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzUm91dGluZ0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5hZGRpdGlvbmFsVmVyc2lvbnMgfHwgcHJvcHMuYWRkaXRpb25hbFZlcnNpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxWZXJzaW9uV2VpZ2h0czogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGZvciAoY29uc3Qgdncgb2YgcHJvcHMuYWRkaXRpb25hbFZlcnNpb25zKSB7XG4gICAgICBpZiAodncud2VpZ2h0IDwgMCB8fCB2dy53ZWlnaHQgPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMSwgZ290OiAke3Z3LndlaWdodH1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdG90YWwgKz0gdncud2VpZ2h0O1xuICAgICAgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzW3Z3LnZlcnNpb25dID0gdncud2VpZ2h0O1xuICAgIH1cbiAgICBpZiAodG90YWwgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBTdW0gb2YgYWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodHMgbXVzdCBub3QgZXhjZWVkIDEsIGdvdDogJHt0b3RhbH1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzLFxuICAgIH07XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogVmFsaWRhdGUgdGhhdCB0aGUgcHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyBtYWtlcyBzZW5zZVxuICAvLyAgKlxuICAvLyAgKiBNZW1iZXIgbXVzdCBoYXZlIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxXG4gIC8vICAqL1xuICAvLyBwcml2YXRlIGRldGVybWluZVByb3Zpc2lvbmVkQ29uY3VycmVuY3koXG4gIC8vICAgcHJvcHM6IEFsaWFzUHJvcHMsXG4gIC8vICk6XG4gIC8vICAgfCBsYW1iZGFBbGlhcy5MYW1iZGFBbGlhcy5Qcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlndXJhdGlvblByb3BlcnR5XG4gIC8vICAgfCB1bmRlZmluZWQge1xuICAvLyAgIGlmICghcHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucykge1xuICAvLyAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgLy8gICB9XG5cbiAgLy8gICBpZiAocHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyA8PSAwKSB7XG4gIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gIC8vICAgICAgIFwicHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyBtdXN0IGhhdmUgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDFcIixcbiAgLy8gICAgICk7XG4gIC8vICAgfVxuXG4gIC8vICAgcmV0dXJuIHtcbiAgLy8gICAgIHByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IHByb3BzLnByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnMsXG4gIC8vICAgfTtcbiAgLy8gfVxufVxuXG4vKipcbiAqIEEgdmVyc2lvbi93ZWlnaHQgcGFpciBmb3Igcm91dGluZyB0cmFmZmljIHRvIExhbWJkYSBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uV2VpZ2h0IHtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIHRvIHJvdXRlIHRyYWZmaWMgdG9cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG11Y2ggd2VpZ2h0IHRvIGFzc2lnbiB0byB0aGlzIHZlcnNpb24gKDAuLjEpXG4gICAqL1xuICByZWFkb25seSB3ZWlnaHQ6IG51bWJlcjtcbn1cbiJdfQ==
|
|
187
|
+
Alias[_a] = { fqn: "terraconstructs.aws.compute.Alias", version: "0.2.6" };
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0U7QUFJdEUsbURBQW1FO0FBb0huRTs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLHFDQUFxQjtJQUN2QyxNQUFNLENBQUMsbUJBQW1CLENBQy9CLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixNQUFNLFFBQVMsU0FBUSxxQ0FBcUI7WUFHMUM7O2VBRUc7WUFDSCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkMsQ0FBQztZQUNELElBQVcsMEJBQTBCO2dCQUNuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxDQUFDO1lBUUQsSUFBVyxZQUFZO2dCQUNyQixPQUFPO29CQUNMLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztpQkFDbkMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDO1lBR0QsWUFBWSxDQUFZLEVBQUUsQ0FBUztnQkFDakMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFoQ0UsY0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBYTVCLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUN4QixnQkFBVyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFNBQVMs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K0NBQStDO0lBQy9DLDBDQUEwQztJQUMxQyxxREFBcUQ7SUFDckQsNkRBQTZEO0lBQzdELDhEQUE4RDtJQUM5RCxnQ0FBZ0M7SUFDaEMsU0FBUztJQUNULFFBQVE7SUFDUixJQUFJO0lBRUo7O09BRUc7SUFDSyxzQkFBc0IsQ0FDNUIsS0FBaUI7UUFFakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxNQUFNLHdCQUF3QixHQUE4QixFQUFFLENBQUM7UUFDL0QsS0FBSyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FDdkUsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNuQix3QkFBd0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUNiLDZEQUE2RCxLQUFLLEVBQUUsQ0FDckUsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ0wsd0JBQXdCO1NBQ3pCLENBQUM7SUFDSixDQUFDOztBQXJQSCxzQkErUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYW1iZGFBbGlhcywgZGF0YUF3c0xhbWJkYUFsaWFzIH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUgfSBmcm9tIFwiLi9hcmNoaXRlY3R1cmVcIjtcbmltcG9ydCB7IEV2ZW50SW52b2tlQ29uZmlnT3B0aW9ucyB9IGZyb20gXCIuL2V2ZW50LWludm9rZS1jb25maWdcIjtcbmltcG9ydCB7IElGdW5jdGlvbiwgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIH0gZnJvbSBcIi4vZnVuY3Rpb24tYmFzZVwiO1xuLy8gaW1wb3J0IHsgU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZSB9IGZyb20gXCIuL3ByaXZhdGUvc2NhbGFibGUtZnVuY3Rpb24tYXR0cmlidXRlXCI7XG4vLyBpbXBvcnQge1xuLy8gICBBdXRvU2NhbGluZ09wdGlvbnMsXG4vLyAgIElTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlLFxuLy8gfSBmcm9tIFwiLi9zY2FsYWJsZS1hdHRyaWJ1dGUtYXBpXCI7XG4vLyBpbXBvcnQgeyBBcm5Gb3JtYXQgfSBmcm9tIFwiLi4vXCI7XG5cbi8qKlxuICogT3V0cHV0cyB0aGF0IGNhbiBiZSBleHBvc2VkIHRocm91Z2ggdGhlIGdyaWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc091dHB1dHMge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGlkZW50aWZ5aW5nIHlvdXIgTGFtYmRhIGZ1bmN0aW9uIGFsaWFzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIHRvIGJlIHVzZWQgZm9yIGludm9raW5nIExhbWJkYSBGdW5jdGlvbiBmcm9tIEFQSSBHYXRld2F5IC0gdG8gYmUgdXNlZCBpbiBgYXdzX2FwaV9nYXRld2F5X2ludGVncmF0aW9uYCdzIHVyaVxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFsaWFzIGV4dGVuZHMgSUZ1bmN0aW9uIHtcbiAgLyoqIHN0cm9uZ2x5IHR5cGVkIGFsaWFzT3V0cHV0cyAqL1xuICByZWFkb25seSBhbGlhc091dHB1dHM6IEFsaWFzT3V0cHV0cztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGFsaWFzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBsYW1iZGE6IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGxhbWJkYS5BbGlhc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNPcHRpb25zIGV4dGVuZHMgRXZlbnRJbnZva2VDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgYWxpYXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHZlcnNpb25zIHdpdGggaW5kaXZpZHVhbCB3ZWlnaHRzIHRoaXMgYWxpYXMgcG9pbnRzIHRvXG4gICAqXG4gICAqIEluZGl2aWR1YWwgYWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodHMgc3BlY2lmaWVkIGhlcmUgc2hvdWxkIGFkZCB1cCB0b1xuICAgKiAobGVzcyB0aGFuKSBvbmUuIEFsbCByZW1haW5pbmcgd2VpZ2h0IGlzIHJvdXRlZCB0byB0aGUgZGVmYXVsdFxuICAgKiB2ZXJzaW9uLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIGNvbmZpZyBpc1xuICAgKlxuICAgKiAgICB2ZXJzaW9uOiBcIjFcIlxuICAgKiAgICBhZGRpdGlvbmFsVmVyc2lvbnM6IFt7IHZlcnNpb246IFwiMlwiLCB3ZWlnaHQ6IDAuMDUgfV1cbiAgICpcbiAgICogVGhlbiA1JSBvZiB0cmFmZmljIHdpbGwgYmUgcm91dGVkIHRvIGZ1bmN0aW9uIHZlcnNpb24gMiwgd2hpbGVcbiAgICogdGhlIHJlbWFpbmluZyA5NSUgb2YgdHJhZmZpYyB3aWxsIGJlIHJvdXRlZCB0byBmdW5jdGlvbiB2ZXJzaW9uIDEuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgdmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxWZXJzaW9ucz86IFZlcnNpb25XZWlnaHRbXTtcblxuICAvLyBUT0RPOiByZS1hZGQgc3VwcG9ydCBmb3IgcHJvdmlzaW9uZWQgY29uY3VycmVuY3lcbiAgLy8gLyoqXG4gIC8vICAqIFNwZWNpZmllcyBhIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IGNvbmZpZ3VyYXRpb24gZm9yIGEgZnVuY3Rpb24ncyBhbGlhcy5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgTm8gcHJvdmlzaW9uZWQgY29uY3VycmVuY3lcbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IHByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgTGFtYmRhIGFsaWFzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNQcm9wcyBleHRlbmRzIEFsaWFzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXNcbiAgICpcbiAgICogTWluaW11bSBsZW5ndGggb2YgMS4gTWF4aW11bSBsZW5ndGggb2YgMTI4LlxuICAgKiBQYXR0ZXJuOiAoPyFeWzAtOV0rJCkoW2EtekEtWjAtOS1fXSspXG4gICAqXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhpcyBhbGlhcyByZWZlcnMgdG9cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHZlcnNpb24gdGhpcyBhbGlhcyByZWZlcnMgdG9cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvbGFtYmRhX2FsaWFzI2Z1bmN0aW9uX3ZlcnNpb24gTGFtYmRhQWxpYXMjZnVuY3Rpb25fdmVyc2lvbn1cbiAgICogcGF0dGVybiAoXFwkTEFURVNUfFswLTldKylcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGlhc0F0dHJpYnV0ZXMge1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBBIG5ldyBhbGlhcyB0byBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiBhIExhbWJkYSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWFzIGV4dGVuZHMgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQWxpYXNBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogQWxpYXNBdHRyaWJ1dGVzLFxuICApOiBJQWxpYXMge1xuICAgIGNsYXNzIEltcG9ydGVkIGV4dGVuZHMgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogZGF0YUF3c0xhbWJkYUFsaWFzLkRhdGFBd3NMYW1iZGFBbGlhcztcbiAgICAgIHB1YmxpYyByZWFkb25seSBhbGlhc05hbWUgPSBhdHRycy5hbGlhc05hbWU7XG4gICAgICAvKipcbiAgICAgICAqIExhbWJkYSBmdW5jdGlvbiB2ZXJzaW9uIHdoaWNoIHRoZSBhbGlhcyB1c2VzLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmZ1bmN0aW9uVmVyc2lvbjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgZnVuY3Rpb25RdWFsaWZpZWRJbnZva2VBcm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgZnVuY3Rpb25JbnZva2VBcm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyByZWFkb25seSBsYW1iZGEgPSBhdHRycy5mdW5jdGlvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbkFybiA9IGAke2F0dHJzLmZ1bmN0aW9uLmZ1bmN0aW9uQXJufToke2F0dHJzLmFsaWFzTmFtZX1gO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZSA9IGAke2F0dHJzLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZX06JHthdHRycy5hbGlhc05hbWV9YDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IGF0dHJzLmZ1bmN0aW9uLmdyYW50UHJpbmNpcGFsO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJvbGUgPSBhdHRycy5mdW5jdGlvbi5yb2xlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFyY2hpdGVjdHVyZSA9IGF0dHJzLmZ1bmN0aW9uLmFyY2hpdGVjdHVyZTtcblxuICAgICAgcHVibGljIGdldCBhbGlhc091dHB1dHMoKTogQWxpYXNPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBhdHRycy5hbGlhc05hbWUsXG4gICAgICAgICAgaW52b2tlQXJuOiB0aGlzLnJlc291cmNlLmludm9rZUFybixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpYXNPdXRwdXRzO1xuICAgICAgfVxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbkNyZWF0ZVBlcm1pc3Npb25zID0gdGhpcy5faXNTdGFja0FjY291bnQoKTtcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBxdWFsaWZpZXIgPSBhdHRycy5hbGlhc05hbWU7XG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBkYXRhQXdzTGFtYmRhQWxpYXMuRGF0YUF3c0xhbWJkYUFsaWFzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuYWxpYXNOYW1lLFxuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBhdHRycy5mdW5jdGlvbi5mdW5jdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkKHNjb3BlLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbGlhc091dHB1dHM6IEFsaWFzT3V0cHV0cztcbiAgcHVibGljIGdldCBhbGlhc091dHB1dHMoKTogQWxpYXNPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fYWxpYXNPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWxpYXNPdXRwdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBhbGlhcy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXNcbiAgICpcbiAgICogVXNlZCB0byBiZSBhYmxlIHRvIHVzZSBBbGlhcyBpbiBwbGFjZSBvZiBhIHJlZ3VsYXIgTGFtYmRhLiBMYW1iZGEgYWNjZXB0c1xuICAgKiBBUk5zIGV2ZXJ5d2hlcmUgaXQgYWNjZXB0cyBmdW5jdGlvbiBuYW1lcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbk5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhOiBJRnVuY3Rpb247XG5cbiAgcHVibGljIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIGFsaWFzXG4gICAqXG4gICAqIFVzZWQgdG8gYmUgYWJsZSB0byB1c2UgQWxpYXMgaW4gcGxhY2Ugb2YgYSByZWd1bGFyIExhbWJkYS4gTGFtYmRhIGFjY2VwdHNcbiAgICogQVJOcyBldmVyeXdoZXJlIGl0IGFjY2VwdHMgZnVuY3Rpb24gbmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25Bcm46IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGZ1bmN0aW9uUXVhbGlmaWVkSW52b2tlQXJuKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgfVxuICBwdWJsaWMgZ2V0IGZ1bmN0aW9uSW52b2tlQXJuKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuQ3JlYXRlUGVybWlzc2lvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vIC8vIFRPRE86IFJlLUFkZCBzY2FsYWJsZSBmdW5jdGlvbnNcbiAgLy8gcHJpdmF0ZSBzY2FsYWJsZUFsaWFzPzogU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZTtcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBzY2FsaW5nUm9sZTogaWFtLklSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBbGlhc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmxhbWJkYSA9IHByb3BzLmZ1bmN0aW9uO1xuICAgIC8vIFRPRE86IERvZXMgaXQgbWFrZSBzZW5zZSB0byBqdXN0IHByZWZpeCBhbGlhc05hbWUgd2l0aCBHcmlkVVVJRD9cbiAgICAvLyBzaG91bGQgdXNlIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lIGluc3RlYWQ/XG4gICAgdGhpcy5hbGlhc05hbWUgPSBgJHt0aGlzLmdyaWRVVUlEfS0ke3Byb3BzLmFsaWFzTmFtZX1gO1xuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzLnZlcnNpb247XG4gICAgdGhpcy5hcmNoaXRlY3R1cmUgPSB0aGlzLmxhbWJkYS5hcmNoaXRlY3R1cmU7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgbmFtZTogdGhpcy5hbGlhc05hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBmdW5jdGlvbk5hbWU6IHRoaXMubGFtYmRhLmZ1bmN0aW9uTmFtZSxcbiAgICAgIGZ1bmN0aW9uVmVyc2lvbjogcHJvcHMudmVyc2lvbixcbiAgICAgIHJvdXRpbmdDb25maWc6IHRoaXMuZGV0ZXJtaW5lUm91dGluZ0NvbmZpZyhwcm9wcyksXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPOiBBZGQgYXdzX2xhbWJkYV9wcm92aXNpb25lZF9jb25jdXJyZW5jeV9jb25maWdcblxuICAgIC8vIC8vIFVzZSBhIFNlcnZpY2UgTGlua2VkIFJvbGVcbiAgICAvLyAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvYXBwbGljYXRpb24vdXNlcmd1aWRlL2FwcGxpY2F0aW9uLWF1dG8tc2NhbGluZy1zZXJ2aWNlLWxpbmtlZC1yb2xlcy5odG1sXG4gICAgLy8gdGhpcy5zY2FsaW5nUm9sZSA9IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKFxuICAgIC8vICAgdGhpcyxcbiAgICAvLyAgIFwiU2NhbGluZ1JvbGVcIixcbiAgICAvLyAgIHRoaXMuc3RhY2suZm9ybWF0QXJuKHtcbiAgICAvLyAgICAgc2VydmljZTogXCJpYW1cIixcbiAgICAvLyAgICAgcmVnaW9uOiBcIlwiLFxuICAgIC8vICAgICByZXNvdXJjZTpcbiAgICAvLyAgICAgICBcInJvbGUvYXdzLXNlcnZpY2Utcm9sZS9sYW1iZGEuYXBwbGljYXRpb24tYXV0b3NjYWxpbmcuYW1hem9uYXdzLmNvbVwiLFxuICAgIC8vICAgICByZXNvdXJjZU5hbWU6XG4gICAgLy8gICAgICAgXCJBV1NTZXJ2aWNlUm9sZUZvckFwcGxpY2F0aW9uQXV0b1NjYWxpbmdfTGFtYmRhQ29uY3VycmVuY3lcIixcbiAgICAvLyAgIH0pLFxuICAgIC8vICk7XG5cbiAgICAvLyBpbmNsdWRlcyBxdWFsaWZpZXJcbiAgICB0aGlzLmZ1bmN0aW9uQXJuID0gdGhpcy5yZXNvdXJjZS5pbnZva2VBcm47XG5cbiAgICAvLyB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGFsaWFzLnJlZiwge1xuICAgIC8vICAgc2VydmljZTogXCJsYW1iZGFcIixcbiAgICAvLyAgIHJlc291cmNlOiBcImZ1bmN0aW9uXCIsXG4gICAgLy8gICByZXNvdXJjZU5hbWU6IGAke3RoaXMubGFtYmRhLmZ1bmN0aW9uTmFtZX06JHt0aGlzLmFsaWFzTmFtZX1gLFxuICAgIC8vICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAvLyB9KTtcblxuICAgIHRoaXMucXVhbGlmaWVyID0gdGhpcy5hbGlhc05hbWU7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5vbkZhaWx1cmUgfHxcbiAgICAgIHByb3BzLm9uU3VjY2VzcyB8fFxuICAgICAgcHJvcHMubWF4RXZlbnRBZ2UgfHxcbiAgICAgIHByb3BzLnJldHJ5QXR0ZW1wdHMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy5jb25maWd1cmVBc3luY0ludm9rZSh7XG4gICAgICAgIG9uRmFpbHVyZTogcHJvcHMub25GYWlsdXJlLFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgICAgbWF4RXZlbnRBZ2U6IHByb3BzLm1heEV2ZW50QWdlLFxuICAgICAgICByZXRyeUF0dGVtcHRzOiBwcm9wcy5yZXRyeUF0dGVtcHRzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQVJOIHBhcnNpbmcgc3BsaXRzIG9uIGA6YCwgc28gd2UgY2FuIG9ubHkgZ2V0IHRoZSBmdW5jdGlvbidzIG5hbWUgZnJvbSB0aGUgQVJOIGFzIHJlc291cmNlTmFtZS4uLlxuICAgIC8vIEFuZCB3ZSdyZSBwYXJzaW5nIGl0IG91dCAoaW5zdGVhZCBvZiB1c2luZyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBkaXJlY3RseSkgaW4gb3JkZXIgdG8gaGF2ZSB1c2Ugb2YgaXQgaW5jdXJcbiAgICAvLyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5IG9uIHRoZSByZXNvdXJjZS5cblxuICAgIC8vYCR7dGhpcy5zdGFjay5zcGxpdEFybih0aGlzLmZ1bmN0aW9uQXJuLCBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lIX06JHt0aGlzLmFsaWFzTmFtZX1gO1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gdGhpcy5yZXNvdXJjZS5mdW5jdGlvbk5hbWU7XG4gICAgdGhpcy5fYWxpYXNPdXRwdXRzID0ge1xuICAgICAgaW52b2tlQXJuOiB0aGlzLnJlc291cmNlLmludm9rZUFybixcbiAgICAgIG5hbWU6IHRoaXMuYWxpYXNOYW1lLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdyYW50UHJpbmNpcGFsKCkge1xuICAgIHJldHVybiB0aGlzLmxhbWJkYS5ncmFudFByaW5jaXBhbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9sZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYW1iZGEucm9sZTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBDb25maWd1cmUgcHJvdmlzaW9uZWQgY29uY3VycmVuY3kgYXV0b3NjYWxpbmcgb24gYSBmdW5jdGlvbiBhbGlhcy4gUmV0dXJucyBhIHNjYWxhYmxlIGF0dHJpYnV0ZSB0aGF0IGNhbiBjYWxsXG4gIC8vICAqIGBzY2FsZU9uVXRpbGl6YXRpb24oKWAgYW5kIGBzY2FsZU9uU2NoZWR1bGUoKWAuXG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBvcHRpb25zIEF1dG9zY2FsaW5nIG9wdGlvbnNcbiAgLy8gICovXG4gIC8vIHB1YmxpYyBhZGRBdXRvU2NhbGluZyhcbiAgLy8gICBvcHRpb25zOiBBdXRvU2NhbGluZ09wdGlvbnMsXG4gIC8vICk6IElTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlIHtcbiAgLy8gICBpZiAodGhpcy5zY2FsYWJsZUFsaWFzKSB7XG4gIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvU2NhbGluZyBhbHJlYWR5IGVuYWJsZWQgZm9yIHRoaXMgYWxpYXNcIik7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiAodGhpcy5zY2FsYWJsZUFsaWFzID0gbmV3IFNjYWxhYmxlRnVuY3Rpb25BdHRyaWJ1dGUoXG4gIC8vICAgICB0aGlzLFxuICAvLyAgICAgXCJBbGlhc1NjYWxpbmdcIixcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbWluQ2FwYWNpdHk6IG9wdGlvbnMubWluQ2FwYWNpdHkgPz8gMSxcbiAgLy8gICAgICAgbWF4Q2FwYWNpdHk6IG9wdGlvbnMubWF4Q2FwYWNpdHksXG4gIC8vICAgICAgIHJlc291cmNlSWQ6IGBmdW5jdGlvbjoke3RoaXMuZnVuY3Rpb25OYW1lfWAsXG4gIC8vICAgICAgIGRpbWVuc2lvbjogXCJsYW1iZGE6ZnVuY3Rpb246UHJvdmlzaW9uZWRDb25jdXJyZW5jeVwiLFxuICAvLyAgICAgICBzZXJ2aWNlTmFtZXNwYWNlOiBhcHBzY2FsaW5nLlNlcnZpY2VOYW1lc3BhY2UuTEFNQkRBLFxuICAvLyAgICAgICByb2xlOiB0aGlzLnNjYWxpbmdSb2xlLFxuICAvLyAgICAgfSxcbiAgLy8gICApKTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHJvdXRpbmdDb25maWcgcGFyYW1ldGVyIGZyb20gdGhlIGlucHV0IHByb3BzXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZVJvdXRpbmdDb25maWcoXG4gICAgcHJvcHM6IEFsaWFzUHJvcHMsXG4gICk6IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzUm91dGluZ0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5hZGRpdGlvbmFsVmVyc2lvbnMgfHwgcHJvcHMuYWRkaXRpb25hbFZlcnNpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxWZXJzaW9uV2VpZ2h0czogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGZvciAoY29uc3Qgdncgb2YgcHJvcHMuYWRkaXRpb25hbFZlcnNpb25zKSB7XG4gICAgICBpZiAodncud2VpZ2h0IDwgMCB8fCB2dy53ZWlnaHQgPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMSwgZ290OiAke3Z3LndlaWdodH1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdG90YWwgKz0gdncud2VpZ2h0O1xuICAgICAgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzW3Z3LnZlcnNpb25dID0gdncud2VpZ2h0O1xuICAgIH1cbiAgICBpZiAodG90YWwgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBTdW0gb2YgYWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodHMgbXVzdCBub3QgZXhjZWVkIDEsIGdvdDogJHt0b3RhbH1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzLFxuICAgIH07XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogVmFsaWRhdGUgdGhhdCB0aGUgcHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyBtYWtlcyBzZW5zZVxuICAvLyAgKlxuICAvLyAgKiBNZW1iZXIgbXVzdCBoYXZlIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxXG4gIC8vICAqL1xuICAvLyBwcml2YXRlIGRldGVybWluZVByb3Zpc2lvbmVkQ29uY3VycmVuY3koXG4gIC8vICAgcHJvcHM6IEFsaWFzUHJvcHMsXG4gIC8vICk6XG4gIC8vICAgfCBsYW1iZGFBbGlhcy5MYW1iZGFBbGlhcy5Qcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlndXJhdGlvblByb3BlcnR5XG4gIC8vICAgfCB1bmRlZmluZWQge1xuICAvLyAgIGlmICghcHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucykge1xuICAvLyAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgLy8gICB9XG5cbiAgLy8gICBpZiAocHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyA8PSAwKSB7XG4gIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gIC8vICAgICAgIFwicHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyBtdXN0IGhhdmUgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDFcIixcbiAgLy8gICAgICk7XG4gIC8vICAgfVxuXG4gIC8vICAgcmV0dXJuIHtcbiAgLy8gICAgIHByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IHByb3BzLnByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnMsXG4gIC8vICAgfTtcbiAgLy8gfVxufVxuXG4vKipcbiAqIEEgdmVyc2lvbi93ZWlnaHQgcGFpciBmb3Igcm91dGluZyB0cmFmZmljIHRvIExhbWJkYSBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uV2VpZ2h0IHtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIHRvIHJvdXRlIHRyYWZmaWMgdG9cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG11Y2ggd2VpZ2h0IHRvIGFzc2lnbiB0byB0aGlzIHZlcnNpb24gKDAuLjEpXG4gICAqL1xuICByZWFkb25seSB3ZWlnaHQ6IG51bWJlcjtcbn1cbiJdfQ==
|