Socket
Socket
Sign inDemoInstall

@aws-cdk/aws-events

Package Overview
Dependencies
4
Maintainers
5
Versions
288
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.25.3 to 0.26.0

190

lib/events.generated.d.ts
import cdk = require('@aws-cdk/cdk');
/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html
* Properties for defining a `AWS::Events::EventBusPolicy`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html
*/
export interface CfnEventBusPolicyProps {
/**
* ``AWS::Events::EventBusPolicy.Action``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-action
* `AWS::Events::EventBusPolicy.Action`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-action
*/
action: string;
/**
* ``AWS::Events::EventBusPolicy.Principal``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-principal
* `AWS::Events::EventBusPolicy.Principal`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-principal
*/
principal: string;
/**
* ``AWS::Events::EventBusPolicy.StatementId``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-statementid
* `AWS::Events::EventBusPolicy.StatementId`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-statementid
*/
statementId: string;
/**
* ``AWS::Events::EventBusPolicy.Condition``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-condition
* `AWS::Events::EventBusPolicy.Condition`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-condition
*/

@@ -28,5 +29,8 @@ condition?: CfnEventBusPolicy.ConditionProperty | cdk.Token;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html
* A CloudFormation `AWS::Events::EventBusPolicy`
*
* @cloudformationResource AWS::Events::EventBusPolicy
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html
*/
export declare class CfnEventBusPolicy extends cdk.Resource {
export declare class CfnEventBusPolicy extends cdk.CfnResource {
/**

@@ -38,7 +42,7 @@ * The CloudFormation resource type name for this resource class.

/**
* Creates a new ``AWS::Events::EventBusPolicy``.
* Create a new `AWS::Events::EventBusPolicy`.
*
* @param scope scope in which this resource is defined
* @param id scoped id of the resource
* @param props resource properties
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/

@@ -53,18 +57,18 @@ constructor(scope: cdk.Construct, id: string, props: CfnEventBusPolicyProps);

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html
*/
interface ConditionProperty {
/**
* ``CfnEventBusPolicy.ConditionProperty.Key``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html#cfn-events-eventbuspolicy-condition-key
* `CfnEventBusPolicy.ConditionProperty.Key`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html#cfn-events-eventbuspolicy-condition-key
*/
key?: string;
/**
* ``CfnEventBusPolicy.ConditionProperty.Type``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html#cfn-events-eventbuspolicy-condition-type
* `CfnEventBusPolicy.ConditionProperty.Type`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html#cfn-events-eventbuspolicy-condition-type
*/
type?: string;
/**
* ``CfnEventBusPolicy.ConditionProperty.Value``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html#cfn-events-eventbuspolicy-condition-value
* `CfnEventBusPolicy.ConditionProperty.Value`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-eventbuspolicy-condition.html#cfn-events-eventbuspolicy-condition-value
*/

@@ -75,38 +79,39 @@ value?: string;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
* Properties for defining a `AWS::Events::Rule`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
*/
export interface CfnRuleProps {
/**
* ``AWS::Events::Rule.Description``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-description
* `AWS::Events::Rule.Description`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-description
*/
description?: string;
/**
* ``AWS::Events::Rule.EventPattern``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventpattern
* `AWS::Events::Rule.EventPattern`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventpattern
*/
eventPattern?: object | cdk.Token;
/**
* ``AWS::Events::Rule.Name``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-name
* `AWS::Events::Rule.Name`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-name
*/
name?: string;
/**
* ``AWS::Events::Rule.RoleArn``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-rolearn
* `AWS::Events::Rule.RoleArn`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-rolearn
*/
roleArn?: string;
/**
* ``AWS::Events::Rule.ScheduleExpression``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression
* `AWS::Events::Rule.ScheduleExpression`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression
*/
scheduleExpression?: string;
/**
* ``AWS::Events::Rule.State``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state
* `AWS::Events::Rule.State`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state
*/
state?: string;
/**
* ``AWS::Events::Rule.Targets``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-targets
* `AWS::Events::Rule.Targets`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-targets
*/

@@ -116,5 +121,8 @@ targets?: Array<CfnRule.TargetProperty | cdk.Token> | cdk.Token;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
* A CloudFormation `AWS::Events::Rule`
*
* @cloudformationResource AWS::Events::Rule
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html
*/
export declare class CfnRule extends cdk.Resource {
export declare class CfnRule extends cdk.CfnResource {
/**

@@ -125,3 +133,3 @@ * The CloudFormation resource type name for this resource class.

/**
* @cloudformation_attribute Arn
* @cloudformationAttribute Arn
*/

@@ -131,7 +139,7 @@ readonly ruleArn: string;

/**
* Creates a new ``AWS::Events::Rule``.
* Create a new `AWS::Events::Rule`.
*
* @param scope scope in which this resource is defined
* @param id scoped id of the resource
* @param props resource properties
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/

@@ -146,13 +154,13 @@ constructor(scope: cdk.Construct, id: string, props?: CfnRuleProps);

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html
*/
interface EcsParametersProperty {
/**
* ``CfnRule.EcsParametersProperty.TaskCount``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskcount
* `CfnRule.EcsParametersProperty.TaskCount`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskcount
*/
taskCount?: number | cdk.Token;
/**
* ``CfnRule.EcsParametersProperty.TaskDefinitionArn``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskdefinitionarn
* `CfnRule.EcsParametersProperty.TaskDefinitionArn`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-ecsparameters.html#cfn-events-rule-ecsparameters-taskdefinitionarn
*/

@@ -164,15 +172,15 @@ taskDefinitionArn: string;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html
*/
interface InputTransformerProperty {
/**
* ``CfnRule.InputTransformerProperty.InputPathsMap``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputpathsmap
* `CfnRule.InputTransformerProperty.InputPathsMap`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputpathsmap
*/
inputPathsMap?: {
[key: string]: (string | cdk.Token);
[key: string]: (string);
} | cdk.Token;
/**
* ``CfnRule.InputTransformerProperty.InputTemplate``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputtemplate
* `CfnRule.InputTransformerProperty.InputTemplate`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-inputtransformer.html#cfn-events-rule-inputtransformer-inputtemplate
*/

@@ -184,8 +192,8 @@ inputTemplate: string;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html
*/
interface KinesisParametersProperty {
/**
* ``CfnRule.KinesisParametersProperty.PartitionKeyPath``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html#cfn-events-rule-kinesisparameters-partitionkeypath
* `CfnRule.KinesisParametersProperty.PartitionKeyPath`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-kinesisparameters.html#cfn-events-rule-kinesisparameters-partitionkeypath
*/

@@ -197,8 +205,8 @@ partitionKeyPath: string;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html
*/
interface RunCommandParametersProperty {
/**
* ``CfnRule.RunCommandParametersProperty.RunCommandTargets``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html#cfn-events-rule-runcommandparameters-runcommandtargets
* `CfnRule.RunCommandParametersProperty.RunCommandTargets`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandparameters.html#cfn-events-rule-runcommandparameters-runcommandtargets
*/

@@ -210,15 +218,15 @@ runCommandTargets: Array<CfnRule.RunCommandTargetProperty | cdk.Token> | cdk.Token;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html
*/
interface RunCommandTargetProperty {
/**
* ``CfnRule.RunCommandTargetProperty.Key``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-key
* `CfnRule.RunCommandTargetProperty.Key`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-key
*/
key: string;
/**
* ``CfnRule.RunCommandTargetProperty.Values``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-values
* `CfnRule.RunCommandTargetProperty.Values`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-runcommandtarget.html#cfn-events-rule-runcommandtarget-values
*/
values: Array<string | cdk.Token> | cdk.Token;
values: string[];
}

@@ -228,8 +236,8 @@ }

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sqsparameters.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sqsparameters.html
*/
interface SqsParametersProperty {
/**
* ``CfnRule.SqsParametersProperty.MessageGroupId``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sqsparameters.html#cfn-events-rule-sqsparameters-messagegroupid
* `CfnRule.SqsParametersProperty.MessageGroupId`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-sqsparameters.html#cfn-events-rule-sqsparameters-messagegroupid
*/

@@ -241,53 +249,53 @@ messageGroupId: string;

/**
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html
*/
interface TargetProperty {
/**
* ``CfnRule.TargetProperty.Arn``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-arn
* `CfnRule.TargetProperty.Arn`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-arn
*/
arn: string;
/**
* ``CfnRule.TargetProperty.EcsParameters``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-ecsparameters
* `CfnRule.TargetProperty.EcsParameters`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-ecsparameters
*/
ecsParameters?: CfnRule.EcsParametersProperty | cdk.Token;
/**
* ``CfnRule.TargetProperty.Id``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-id
* `CfnRule.TargetProperty.Id`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-id
*/
id: string;
/**
* ``CfnRule.TargetProperty.Input``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-input
* `CfnRule.TargetProperty.Input`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-input
*/
input?: string;
/**
* ``CfnRule.TargetProperty.InputPath``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputpath
* `CfnRule.TargetProperty.InputPath`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputpath
*/
inputPath?: string;
/**
* ``CfnRule.TargetProperty.InputTransformer``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputtransformer
* `CfnRule.TargetProperty.InputTransformer`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-inputtransformer
*/
inputTransformer?: CfnRule.InputTransformerProperty | cdk.Token;
/**
* ``CfnRule.TargetProperty.KinesisParameters``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-kinesisparameters
* `CfnRule.TargetProperty.KinesisParameters`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-kinesisparameters
*/
kinesisParameters?: CfnRule.KinesisParametersProperty | cdk.Token;
/**
* ``CfnRule.TargetProperty.RoleArn``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-rolearn
* `CfnRule.TargetProperty.RoleArn`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-rolearn
*/
roleArn?: string;
/**
* ``CfnRule.TargetProperty.RunCommandParameters``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-runcommandparameters
* `CfnRule.TargetProperty.RunCommandParameters`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-runcommandparameters
*/
runCommandParameters?: CfnRule.RunCommandParametersProperty | cdk.Token;
/**
* ``CfnRule.TargetProperty.SqsParameters``
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-sqsparameters
* `CfnRule.TargetProperty.SqsParameters`
* @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html#cfn-events-rule-target-sqsparameters
*/

@@ -294,0 +302,0 @@ sqsParameters?: CfnRule.SqsParametersProperty | cdk.Token;

@@ -40,3 +40,3 @@ "use strict";

return {
eventRuleArn: new cdk_1.Output(this, 'RuleArn', { value: this.ruleArn }).makeImportValue().toString()
eventRuleArn: new cdk_1.CfnOutput(this, 'RuleArn', { value: this.ruleArn }).makeImportValue().toString()
};

@@ -169,2 +169,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBd0Q7QUFFeEQseURBQTZDO0FBSTdDLGlDQUEyQztBQXdEM0M7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxlQUFTO0lBY3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBd0IsRUFBRztRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTEYsWUFBTyxHQUFHLElBQUksS0FBSyxFQUEwQixDQUFDO1FBQzlDLGlCQUFZLEdBQWlCLEVBQUcsQ0FBQztRQU1oRCxNQUFNLFFBQVEsR0FBRyxJQUFJLDBCQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3QyxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDcEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQ25GLGtCQUFrQixFQUFFLElBQUksV0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN2RSxZQUFZLEVBQUUsSUFBSSxXQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEQsT0FBTyxFQUFFLElBQUksV0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFFaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENB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SSxHQUFHLEtBQUssWUFBWSxFQUFFO2dCQUN4QixHQUFHLEdBQUcsYUFBYSxDQUFDO2FBQ3JCO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNsQjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBaExELDhCQWdMQztBQUVELE1BQU0saUJBQWtCLFNBQVEsZUFBUztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFtQixLQUEyQjtRQUNwRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRHdDLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBR3BGLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QsIE91dHB1dCwgVG9rZW4gfSBmcm9tICdAYXdzLWNkay9jZGsnO1xuaW1wb3J0IHsgRXZlbnRQYXR0ZXJuIH0gZnJvbSAnLi9ldmVudC1wYXR0ZXJuJztcbmltcG9ydCB7IENmblJ1bGUgfSBmcm9tICcuL2V2ZW50cy5nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgVGFyZ2V0SW5wdXRUZW1wbGF0ZSB9IGZyb20gJy4vaW5wdXQtb3B0aW9ucyc7XG5pbXBvcnQgeyBFdmVudFJ1bGVJbXBvcnRQcm9wcywgSUV2ZW50UnVsZSB9IGZyb20gJy4vcnVsZS1yZWYnO1xuaW1wb3J0IHsgSUV2ZW50UnVsZVRhcmdldCB9IGZyb20gJy4vdGFyZ2V0JztcbmltcG9ydCB7IG1lcmdlRXZlbnRQYXR0ZXJuIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFJ1bGVQcm9wcyB7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBydWxlJ3MgcHVycG9zZS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIG5hbWUgZm9yIHRoZSBydWxlLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIG5hbWUsIEFXUyBDbG91ZEZvcm1hdGlvblxuICAgKiBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIHJ1bGUgbmFtZS4gRm9yXG4gICAqIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBOYW1lIFR5cGUuXG4gICAqL1xuICBydWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJ1bGUgaXMgZW5hYmxlZC5cbiAgICogQGRlZmF1bHQgUnVsZSBpcyBlbmFibGVkXG4gICAqL1xuICBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9yIHJhdGUgKGZyZXF1ZW5jeSkgdGhhdCBkZXRlcm1pbmVzIHdoZW4gQ2xvdWRXYXRjaCBFdmVudHNcbiAgICogcnVucyB0aGUgcnVsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBTY2hlZHVsZSBFeHByZXNzaW9uIFN5bnRheCBmb3JcbiAgICogUnVsZXMgaW4gdGhlIEFtYXpvbiBDbG91ZFdhdGNoIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvZXZlbnRzL1NjaGVkdWxlZEV2ZW50cy5odG1sXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgdGhlIGBldmVudFBhdHRlcm5gIHByb3BlcnR5LCBvciBib3RoLlxuICAgKi9cbiAgc2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmliZXMgd2hpY2ggZXZlbnRzIENsb3VkV2F0Y2ggRXZlbnRzIHJvdXRlcyB0byB0aGUgc3BlY2lmaWVkIHRhcmdldC5cbiAgICogVGhlc2Ugcm91dGVkIGV2ZW50cyBhcmUgbWF0Y2hlZCBldmVudHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRXZlbnRzXG4gICAqIGFuZCBFdmVudCBQYXR0ZXJucyBpbiB0aGUgQW1hem9uIENsb3VkV2F0Y2ggVXNlciBHdWlkZS5cbiAgICpcbiAgICogQHNlZVxuICAgKiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9DbG91ZFdhdGNoRXZlbnRzYW5kRXZlbnRQYXR0ZXJucy5odG1sXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSAoZWl0aGVyIHZpYSBwcm9wcyBvciB2aWFcbiAgICogYGFkZEV2ZW50UGF0dGVybmApLCB0aGUgYHNjaGVkdWxlRXhwcmVzc2lvbmAgcHJvcGVydHksIG9yIGJvdGguIFRoZVxuICAgKiBtZXRob2QgYGFkZEV2ZW50UGF0dGVybmAgY2FuIGJlIHVzZWQgdG8gYWRkIGZpbHRlciB2YWx1ZXMgdG8gdGhlIGV2ZW50XG4gICAqIHBhdHRlcm4uXG4gICAqL1xuICBldmVudFBhdHRlcm4/OiBFdmVudFBhdHRlcm47XG5cbiAgLyoqXG4gICAqIFRhcmdldHMgdG8gaW52b2tlIHdoZW4gdGhpcyBydWxlIG1hdGNoZXMgYW4gZXZlbnQuXG4gICAqXG4gICAqIElucHV0IHdpbGwgYmUgdGhlIGZ1bGwgbWF0Y2hlZCBldmVudC4gSWYgeW91IHdpc2ggdG8gc3BlY2lmeSBjdXN0b21cbiAgICogdGFyZ2V0IGlucHV0LCB1c2UgYGFkZFRhcmdldCh0YXJnZXRbLCBpbnB1dE9wdGlvbnNdKWAuXG4gICAqL1xuICB0YXJnZXRzPzogSUV2ZW50UnVsZVRhcmdldFtdO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBDbG91ZFdhdGNoIEV2ZW50IFJ1bGUgaW4gdGhpcyBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50UnVsZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElFdmVudFJ1bGUge1xuICAvKipcbiAgICogSW1wb3J0cyBhIHJ1bGUgYnkgQVJOIGludG8gdGhpcyBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudFJ1bGVJbXBvcnRQcm9wcyk6IElFdmVudFJ1bGUge1xuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRFdmVudFJ1bGUoc2NvcGUsIGlkLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcnVsZUFybjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0cyA9IG5ldyBBcnJheTxDZm5SdWxlLlRhcmdldFByb3BlcnR5PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50UGF0dGVybjogRXZlbnRQYXR0ZXJuID0geyB9O1xuICBwcml2YXRlIHNjaGVkdWxlRXhwcmVzc2lvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXZlbnRSdWxlUHJvcHMgPSB7IH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuUnVsZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiBwcm9wcy5ydWxlTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwcm9wcy5lbmFibGVkID09IG51bGwgPyAnRU5BQkxFRCcgOiAocHJvcHMuZW5hYmxlZCA/ICdFTkFCTEVEJyA6ICdESVNBQkxFRCcpLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBuZXcgVG9rZW4oKCkgPT4gdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24pLnRvU3RyaW5nKCksXG4gICAgICBldmVudFBhdHRlcm46IG5ldyBUb2tlbigoKSA9PiB0aGlzLnJlbmRlckV2ZW50UGF0dGVybigpKSxcbiAgICAgIHRhcmdldHM6IG5ldyBUb2tlbigoKSA9PiB0aGlzLnJlbmRlclRhcmdldHMoKSlcbiAgICB9KTtcblxuICAgIHRoaXMucnVsZUFybiA9IHJlc291cmNlLnJ1bGVBcm47XG5cbiAgICB0aGlzLmFkZEV2ZW50UGF0dGVybihwcm9wcy5ldmVudFBhdHRlcm4pO1xuICAgIHRoaXMuc2NoZWR1bGVFeHByZXNzaW9uID0gcHJvcHMuc2NoZWR1bGVFeHByZXNzaW9uO1xuXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgcHJvcHMudGFyZ2V0cyB8fCBbXSkge1xuICAgICAgdGhpcy5hZGRUYXJnZXQodGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0cyB0aGlzIHJ1bGUgcmVzb3VyY2UgZnJvbSB0aGlzIHN0YWNrIGFuZCByZXR1cm5zIGFuIGltcG9ydCB0b2tlbi5cbiAgICovXG4gIHB1YmxpYyBleHBvcnQoKTogRXZlbnRSdWxlSW1wb3J0UHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICBldmVudFJ1bGVBcm46IG5ldyBPdXRwdXQodGhpcywgJ1J1bGVBcm4nLCB7IHZhbHVlOiB0aGlzLnJ1bGVBcm4gfSkubWFrZUltcG9ydFZhbHVlKCkudG9TdHJpbmcoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHRhcmdldCB0byB0aGUgcnVsZS4gVGhlIGFic3RyYWN0IGNsYXNzIFJ1bGVUYXJnZXQgY2FuIGJlIGV4dGVuZGVkIHRvIGRlZmluZSBuZXdcbiAgICogdGFyZ2V0cy5cbiAgICpcbiAgICogTm8tb3AgaWYgdGFyZ2V0IGlzIHVuZGVmaW5lZC5cbiAgICovXG4gIHB1YmxpYyBhZGRUYXJnZXQodGFyZ2V0PzogSUV2ZW50UnVsZVRhcmdldCwgaW5wdXRPcHRpb25zPzogVGFyZ2V0SW5wdXRUZW1wbGF0ZSkge1xuICAgIGlmICghdGFyZ2V0KSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgY29uc3QgdGFyZ2V0UHJvcHMgPSB0YXJnZXQuYXNFdmVudFJ1bGVUYXJnZXQodGhpcy5ydWxlQXJuLCB0aGlzLm5vZGUudW5pcXVlSWQpO1xuXG4gICAgLy8gY2hlY2sgaWYgYSB0YXJnZXQgd2l0aCB0aGlzIElEIGFscmVhZHkgZXhpc3RzXG4gICAgaWYgKHRoaXMudGFyZ2V0cy5maW5kKHQgPT4gdC5pZCA9PT0gdGFyZ2V0UHJvcHMuaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0R1cGxpY2F0ZSBldmVudCBydWxlIHRhcmdldCB3aXRoIElEOiAnICsgdGFyZ2V0UHJvcHMuaWQpO1xuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcbiAgICAgIC4uLnRhcmdldFByb3BzLFxuICAgICAgaW5wdXRUcmFuc2Zvcm1lcjogcmVuZGVyVHJhbnNmb3JtZXIoKSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHJlbmRlclRyYW5zZm9ybWVyKCk6IENmblJ1bGUuSW5wdXRUcmFuc2Zvcm1lclByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICghaW5wdXRPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlICYmIGlucHV0T3B0aW9ucy50ZXh0VGVtcGxhdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdcImpzb25UZW1wbGF0ZVwiIGFuZCBcInRleHRUZW1wbGF0ZVwiIGFyZSBtdXR1YWxseSBleGNsdXNpdmUnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlICYmICFpbnB1dE9wdGlvbnMudGV4dFRlbXBsYXRlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignT25lIG9mIFwianNvblRlbXBsYXRlXCIgb3IgXCJ0ZXh0VGVtcGxhdGVcIiBhcmUgcmVxdWlyZWQnKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGlucHV0VGVtcGxhdGU6IGFueTtcblxuICAgICAgaWYgKGlucHV0T3B0aW9ucy5qc29uVGVtcGxhdGUpIHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZSA9IHR5cGVvZiBpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlXG4gICAgICAgICAgICA6IHNlbGYubm9kZS5zdHJpbmdpZnlKc29uKGlucHV0T3B0aW9ucy5qc29uVGVtcGxhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZSA9IHR5cGVvZihpbnB1dE9wdGlvbnMudGV4dFRlbXBsYXRlKSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgIC8vIE5ld2xpbmUgc2VwYXJhdGVkIGxpc3Qgb2YgSlNPTi1lbmNvZGVkIHN0cmluZ3NcbiAgICAgICAgICAgID8gaW5wdXRPcHRpb25zLnRleHRUZW1wbGF0ZS5zcGxpdCgnXFxuJykubWFwKHggPT4gc2VsZi5ub2RlLnN0cmluZ2lmeUpzb24oeCkpLmpvaW4oJ1xcbicpXG4gICAgICAgICAgICAvLyBTb21lIG9iamVjdCwgc3RyaW5naWZ5IGl0LCB0aGVuIHN0cmluZ2lmeSB0aGUgc3RyaW5nIGZvciBwcm9wZXIgZXNjYXBpbmdcbiAgICAgICAgICAgIDogc2VsZi5ub2RlLnN0cmluZ2lmeUpzb24oc2VsZi5ub2RlLnN0cmluZ2lmeUpzb24oaW5wdXRPcHRpb25zLnRleHRUZW1wbGF0ZSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnB1dFBhdGhzTWFwOiBpbnB1dE9wdGlvbnMucGF0aHNNYXAsXG4gICAgICAgIGlucHV0VGVtcGxhdGVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXZlbnQgcGF0dGVybiBmaWx0ZXIgdG8gdGhpcyBydWxlLiBJZiBhIHBhdHRlcm4gd2FzIGFscmVhZHkgc3BlY2lmaWVkLFxuICAgKiB0aGVzZSB2YWx1ZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSBleGlzdGluZyBwYXR0ZXJuLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIHJ1bGUgYWxyZWFkeSBjb250YWlucyB0aGUgcGF0dGVybjpcbiAgICpcbiAgICogICAge1xuICAgKiAgICAgIFwicmVzb3VyY2VzXCI6IFsgXCJyMVwiIF0sXG4gICAqICAgICAgXCJkZXRhaWxcIjoge1xuICAgKiAgICAgICAgXCJoZWxsb1wiOiBbIDEgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKiBBbmQgYGFkZEV2ZW50UGF0dGVybmAgaXMgY2FsbGVkIHdpdGggdGhlIHBhdHRlcm46XG4gICAqXG4gICAqICAgIHtcbiAgICogICAgICBcInJlc291cmNlc1wiOiBbIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiZm9vXCI6IFsgXCJiYXJcIiBdXG4gICAqICAgICAgfVxuICAgKiAgICB9XG4gICAqXG4gICAqIFRoZSByZXN1bHRpbmcgZXZlbnQgcGF0dGVybiB3aWxsIGJlOlxuICAgKlxuICAgKiAgICB7XG4gICAqICAgICAgXCJyZXNvdXJjZXNcIjogWyBcInIxXCIsIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiaGVsbG9cIjogWyAxIF0sXG4gICAqICAgICAgICBcImZvb1wiOiBbIFwiYmFyXCIgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKi9cbiAgcHVibGljIGFkZEV2ZW50UGF0dGVybihldmVudFBhdHRlcm4/OiBFdmVudFBhdHRlcm4pIHtcbiAgICBpZiAoIWV2ZW50UGF0dGVybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBtZXJnZUV2ZW50UGF0dGVybih0aGlzLmV2ZW50UGF0dGVybiwgZXZlbnRQYXR0ZXJuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZSgpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ldmVudFBhdHRlcm4pLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24pIHtcbiAgICAgIHJldHVybiBbIGBFaXRoZXIgJ2V2ZW50UGF0dGVybicgb3IgJ3NjaGVkdWxlRXhwcmVzc2lvbicgbXVzdCBiZSBkZWZpbmVkYCBdO1xuICAgIH1cblxuICAgIHJldHVybiBbIF07XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRhcmdldHMoKSB7XG4gICAgaWYgKHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFyZ2V0cztcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRXZlbnRQYXR0ZXJuKCkge1xuICAgIGNvbnN0IGV2ZW50UGF0dGVybiA9IHRoaXMuZXZlbnRQYXR0ZXJuO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGV2ZW50UGF0dGVybikubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHJlbmFtZSAnZGV0YWlsVHlwZScgdG8gJ2RldGFpbC10eXBlJ1xuICAgIGNvbnN0IG91dDogYW55ID0ge307XG4gICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGV2ZW50UGF0dGVybikpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50UGF0dGVybiBhcyBhbnkpW2tleV07XG4gICAgICBpZiAoa2V5ID09PSAnZGV0YWlsVHlwZScpIHtcbiAgICAgICAga2V5ID0gJ2RldGFpbC10eXBlJztcbiAgICAgIH1cbiAgICAgIG91dFtrZXldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5jbGFzcyBJbXBvcnRlZEV2ZW50UnVsZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElFdmVudFJ1bGUge1xuICBwdWJsaWMgcmVhZG9ubHkgcnVsZUFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEV2ZW50UnVsZUltcG9ydFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucnVsZUFybiA9IHByb3BzLmV2ZW50UnVsZUFybjtcbiAgfVxuXG4gIHB1YmxpYyBleHBvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQ0FBMkQ7QUFFM0QseURBQTZDO0FBSTdDLGlDQUEyQztBQXdEM0M7O0dBRUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxlQUFTO0lBY3RDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBd0IsRUFBRztRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBTEYsWUFBTyxHQUFHLElBQUksS0FBSyxFQUEwQixDQUFDO1FBQzlDLGlCQUFZLEdBQWlCLEVBQUcsQ0FBQztRQU1oRCxNQUFNLFFBQVEsR0FBRyxJQUFJLDBCQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3QyxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDcEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQ25GLGtCQUFrQixFQUFFLElBQUksV0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN2RSxZQUFZLEVBQUUsSUFBSSxXQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEQsT0FBTyxFQUFFLElBQUksV0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFFaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENB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SSxHQUFHLEtBQUssWUFBWSxFQUFFO2dCQUN4QixHQUFHLEdBQUcsYUFBYSxDQUFDO2FBQ3JCO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztTQUNsQjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBaExELDhCQWdMQztBQUVELE1BQU0saUJBQWtCLFNBQVEsZUFBUztJQUd2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFtQixLQUEyQjtRQUNwRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRHdDLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBR3BGLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIENvbnN0cnVjdCwgVG9rZW4gfSBmcm9tICdAYXdzLWNkay9jZGsnO1xuaW1wb3J0IHsgRXZlbnRQYXR0ZXJuIH0gZnJvbSAnLi9ldmVudC1wYXR0ZXJuJztcbmltcG9ydCB7IENmblJ1bGUgfSBmcm9tICcuL2V2ZW50cy5nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgVGFyZ2V0SW5wdXRUZW1wbGF0ZSB9IGZyb20gJy4vaW5wdXQtb3B0aW9ucyc7XG5pbXBvcnQgeyBFdmVudFJ1bGVJbXBvcnRQcm9wcywgSUV2ZW50UnVsZSB9IGZyb20gJy4vcnVsZS1yZWYnO1xuaW1wb3J0IHsgSUV2ZW50UnVsZVRhcmdldCB9IGZyb20gJy4vdGFyZ2V0JztcbmltcG9ydCB7IG1lcmdlRXZlbnRQYXR0ZXJuIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudFJ1bGVQcm9wcyB7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBydWxlJ3MgcHVycG9zZS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIG5hbWUgZm9yIHRoZSBydWxlLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIG5hbWUsIEFXUyBDbG91ZEZvcm1hdGlvblxuICAgKiBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIHJ1bGUgbmFtZS4gRm9yXG4gICAqIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBOYW1lIFR5cGUuXG4gICAqL1xuICBydWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJ1bGUgaXMgZW5hYmxlZC5cbiAgICogQGRlZmF1bHQgUnVsZSBpcyBlbmFibGVkXG4gICAqL1xuICBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIG9yIHJhdGUgKGZyZXF1ZW5jeSkgdGhhdCBkZXRlcm1pbmVzIHdoZW4gQ2xvdWRXYXRjaCBFdmVudHNcbiAgICogcnVucyB0aGUgcnVsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBTY2hlZHVsZSBFeHByZXNzaW9uIFN5bnRheCBmb3JcbiAgICogUnVsZXMgaW4gdGhlIEFtYXpvbiBDbG91ZFdhdGNoIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvZXZlbnRzL1NjaGVkdWxlZEV2ZW50cy5odG1sXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgdGhlIGBldmVudFBhdHRlcm5gIHByb3BlcnR5LCBvciBib3RoLlxuICAgKi9cbiAgc2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmliZXMgd2hpY2ggZXZlbnRzIENsb3VkV2F0Y2ggRXZlbnRzIHJvdXRlcyB0byB0aGUgc3BlY2lmaWVkIHRhcmdldC5cbiAgICogVGhlc2Ugcm91dGVkIGV2ZW50cyBhcmUgbWF0Y2hlZCBldmVudHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRXZlbnRzXG4gICAqIGFuZCBFdmVudCBQYXR0ZXJucyBpbiB0aGUgQW1hem9uIENsb3VkV2F0Y2ggVXNlciBHdWlkZS5cbiAgICpcbiAgICogQHNlZVxuICAgKiBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9DbG91ZFdhdGNoRXZlbnRzYW5kRXZlbnRQYXR0ZXJucy5odG1sXG4gICAqXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSAoZWl0aGVyIHZpYSBwcm9wcyBvciB2aWFcbiAgICogYGFkZEV2ZW50UGF0dGVybmApLCB0aGUgYHNjaGVkdWxlRXhwcmVzc2lvbmAgcHJvcGVydHksIG9yIGJvdGguIFRoZVxuICAgKiBtZXRob2QgYGFkZEV2ZW50UGF0dGVybmAgY2FuIGJlIHVzZWQgdG8gYWRkIGZpbHRlciB2YWx1ZXMgdG8gdGhlIGV2ZW50XG4gICAqIHBhdHRlcm4uXG4gICAqL1xuICBldmVudFBhdHRlcm4/OiBFdmVudFBhdHRlcm47XG5cbiAgLyoqXG4gICAqIFRhcmdldHMgdG8gaW52b2tlIHdoZW4gdGhpcyBydWxlIG1hdGNoZXMgYW4gZXZlbnQuXG4gICAqXG4gICAqIElucHV0IHdpbGwgYmUgdGhlIGZ1bGwgbWF0Y2hlZCBldmVudC4gSWYgeW91IHdpc2ggdG8gc3BlY2lmeSBjdXN0b21cbiAgICogdGFyZ2V0IGlucHV0LCB1c2UgYGFkZFRhcmdldCh0YXJnZXRbLCBpbnB1dE9wdGlvbnNdKWAuXG4gICAqL1xuICB0YXJnZXRzPzogSUV2ZW50UnVsZVRhcmdldFtdO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBDbG91ZFdhdGNoIEV2ZW50IFJ1bGUgaW4gdGhpcyBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50UnVsZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElFdmVudFJ1bGUge1xuICAvKipcbiAgICogSW1wb3J0cyBhIHJ1bGUgYnkgQVJOIGludG8gdGhpcyBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW1wb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudFJ1bGVJbXBvcnRQcm9wcyk6IElFdmVudFJ1bGUge1xuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRFdmVudFJ1bGUoc2NvcGUsIGlkLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcnVsZUFybjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0cyA9IG5ldyBBcnJheTxDZm5SdWxlLlRhcmdldFByb3BlcnR5PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50UGF0dGVybjogRXZlbnRQYXR0ZXJuID0geyB9O1xuICBwcml2YXRlIHNjaGVkdWxlRXhwcmVzc2lvbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXZlbnRSdWxlUHJvcHMgPSB7IH0pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuUnVsZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiBwcm9wcy5ydWxlTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwcm9wcy5lbmFibGVkID09IG51bGwgPyAnRU5BQkxFRCcgOiAocHJvcHMuZW5hYmxlZCA/ICdFTkFCTEVEJyA6ICdESVNBQkxFRCcpLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiBuZXcgVG9rZW4oKCkgPT4gdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24pLnRvU3RyaW5nKCksXG4gICAgICBldmVudFBhdHRlcm46IG5ldyBUb2tlbigoKSA9PiB0aGlzLnJlbmRlckV2ZW50UGF0dGVybigpKSxcbiAgICAgIHRhcmdldHM6IG5ldyBUb2tlbigoKSA9PiB0aGlzLnJlbmRlclRhcmdldHMoKSlcbiAgICB9KTtcblxuICAgIHRoaXMucnVsZUFybiA9IHJlc291cmNlLnJ1bGVBcm47XG5cbiAgICB0aGlzLmFkZEV2ZW50UGF0dGVybihwcm9wcy5ldmVudFBhdHRlcm4pO1xuICAgIHRoaXMuc2NoZWR1bGVFeHByZXNzaW9uID0gcHJvcHMuc2NoZWR1bGVFeHByZXNzaW9uO1xuXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgcHJvcHMudGFyZ2V0cyB8fCBbXSkge1xuICAgICAgdGhpcy5hZGRUYXJnZXQodGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0cyB0aGlzIHJ1bGUgcmVzb3VyY2UgZnJvbSB0aGlzIHN0YWNrIGFuZCByZXR1cm5zIGFuIGltcG9ydCB0b2tlbi5cbiAgICovXG4gIHB1YmxpYyBleHBvcnQoKTogRXZlbnRSdWxlSW1wb3J0UHJvcHMge1xuICAgIHJldHVybiB7XG4gICAgICBldmVudFJ1bGVBcm46IG5ldyBDZm5PdXRwdXQodGhpcywgJ1J1bGVBcm4nLCB7IHZhbHVlOiB0aGlzLnJ1bGVBcm4gfSkubWFrZUltcG9ydFZhbHVlKCkudG9TdHJpbmcoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHRhcmdldCB0byB0aGUgcnVsZS4gVGhlIGFic3RyYWN0IGNsYXNzIFJ1bGVUYXJnZXQgY2FuIGJlIGV4dGVuZGVkIHRvIGRlZmluZSBuZXdcbiAgICogdGFyZ2V0cy5cbiAgICpcbiAgICogTm8tb3AgaWYgdGFyZ2V0IGlzIHVuZGVmaW5lZC5cbiAgICovXG4gIHB1YmxpYyBhZGRUYXJnZXQodGFyZ2V0PzogSUV2ZW50UnVsZVRhcmdldCwgaW5wdXRPcHRpb25zPzogVGFyZ2V0SW5wdXRUZW1wbGF0ZSkge1xuICAgIGlmICghdGFyZ2V0KSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgY29uc3QgdGFyZ2V0UHJvcHMgPSB0YXJnZXQuYXNFdmVudFJ1bGVUYXJnZXQodGhpcy5ydWxlQXJuLCB0aGlzLm5vZGUudW5pcXVlSWQpO1xuXG4gICAgLy8gY2hlY2sgaWYgYSB0YXJnZXQgd2l0aCB0aGlzIElEIGFscmVhZHkgZXhpc3RzXG4gICAgaWYgKHRoaXMudGFyZ2V0cy5maW5kKHQgPT4gdC5pZCA9PT0gdGFyZ2V0UHJvcHMuaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0R1cGxpY2F0ZSBldmVudCBydWxlIHRhcmdldCB3aXRoIElEOiAnICsgdGFyZ2V0UHJvcHMuaWQpO1xuICAgIH1cblxuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcbiAgICAgIC4uLnRhcmdldFByb3BzLFxuICAgICAgaW5wdXRUcmFuc2Zvcm1lcjogcmVuZGVyVHJhbnNmb3JtZXIoKSxcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHJlbmRlclRyYW5zZm9ybWVyKCk6IENmblJ1bGUuSW5wdXRUcmFuc2Zvcm1lclByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICAgIGlmICghaW5wdXRPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlICYmIGlucHV0T3B0aW9ucy50ZXh0VGVtcGxhdGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdcImpzb25UZW1wbGF0ZVwiIGFuZCBcInRleHRUZW1wbGF0ZVwiIGFyZSBtdXR1YWxseSBleGNsdXNpdmUnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlICYmICFpbnB1dE9wdGlvbnMudGV4dFRlbXBsYXRlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignT25lIG9mIFwianNvblRlbXBsYXRlXCIgb3IgXCJ0ZXh0VGVtcGxhdGVcIiBhcmUgcmVxdWlyZWQnKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGlucHV0VGVtcGxhdGU6IGFueTtcblxuICAgICAgaWYgKGlucHV0T3B0aW9ucy5qc29uVGVtcGxhdGUpIHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZSA9IHR5cGVvZiBpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBpbnB1dE9wdGlvbnMuanNvblRlbXBsYXRlXG4gICAgICAgICAgICA6IHNlbGYubm9kZS5zdHJpbmdpZnlKc29uKGlucHV0T3B0aW9ucy5qc29uVGVtcGxhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZSA9IHR5cGVvZihpbnB1dE9wdGlvbnMudGV4dFRlbXBsYXRlKSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgIC8vIE5ld2xpbmUgc2VwYXJhdGVkIGxpc3Qgb2YgSlNPTi1lbmNvZGVkIHN0cmluZ3NcbiAgICAgICAgICAgID8gaW5wdXRPcHRpb25zLnRleHRUZW1wbGF0ZS5zcGxpdCgnXFxuJykubWFwKHggPT4gc2VsZi5ub2RlLnN0cmluZ2lmeUpzb24oeCkpLmpvaW4oJ1xcbicpXG4gICAgICAgICAgICAvLyBTb21lIG9iamVjdCwgc3RyaW5naWZ5IGl0LCB0aGVuIHN0cmluZ2lmeSB0aGUgc3RyaW5nIGZvciBwcm9wZXIgZXNjYXBpbmdcbiAgICAgICAgICAgIDogc2VsZi5ub2RlLnN0cmluZ2lmeUpzb24oc2VsZi5ub2RlLnN0cmluZ2lmeUpzb24oaW5wdXRPcHRpb25zLnRleHRUZW1wbGF0ZSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnB1dFBhdGhzTWFwOiBpbnB1dE9wdGlvbnMucGF0aHNNYXAsXG4gICAgICAgIGlucHV0VGVtcGxhdGVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXZlbnQgcGF0dGVybiBmaWx0ZXIgdG8gdGhpcyBydWxlLiBJZiBhIHBhdHRlcm4gd2FzIGFscmVhZHkgc3BlY2lmaWVkLFxuICAgKiB0aGVzZSB2YWx1ZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSBleGlzdGluZyBwYXR0ZXJuLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIHJ1bGUgYWxyZWFkeSBjb250YWlucyB0aGUgcGF0dGVybjpcbiAgICpcbiAgICogICAge1xuICAgKiAgICAgIFwicmVzb3VyY2VzXCI6IFsgXCJyMVwiIF0sXG4gICAqICAgICAgXCJkZXRhaWxcIjoge1xuICAgKiAgICAgICAgXCJoZWxsb1wiOiBbIDEgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKiBBbmQgYGFkZEV2ZW50UGF0dGVybmAgaXMgY2FsbGVkIHdpdGggdGhlIHBhdHRlcm46XG4gICAqXG4gICAqICAgIHtcbiAgICogICAgICBcInJlc291cmNlc1wiOiBbIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiZm9vXCI6IFsgXCJiYXJcIiBdXG4gICAqICAgICAgfVxuICAgKiAgICB9XG4gICAqXG4gICAqIFRoZSByZXN1bHRpbmcgZXZlbnQgcGF0dGVybiB3aWxsIGJlOlxuICAgKlxuICAgKiAgICB7XG4gICAqICAgICAgXCJyZXNvdXJjZXNcIjogWyBcInIxXCIsIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiaGVsbG9cIjogWyAxIF0sXG4gICAqICAgICAgICBcImZvb1wiOiBbIFwiYmFyXCIgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKi9cbiAgcHVibGljIGFkZEV2ZW50UGF0dGVybihldmVudFBhdHRlcm4/OiBFdmVudFBhdHRlcm4pIHtcbiAgICBpZiAoIWV2ZW50UGF0dGVybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBtZXJnZUV2ZW50UGF0dGVybih0aGlzLmV2ZW50UGF0dGVybiwgZXZlbnRQYXR0ZXJuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZSgpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ldmVudFBhdHRlcm4pLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24pIHtcbiAgICAgIHJldHVybiBbIGBFaXRoZXIgJ2V2ZW50UGF0dGVybicgb3IgJ3NjaGVkdWxlRXhwcmVzc2lvbicgbXVzdCBiZSBkZWZpbmVkYCBdO1xuICAgIH1cblxuICAgIHJldHVybiBbIF07XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRhcmdldHMoKSB7XG4gICAgaWYgKHRoaXMudGFyZ2V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGFyZ2V0cztcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRXZlbnRQYXR0ZXJuKCkge1xuICAgIGNvbnN0IGV2ZW50UGF0dGVybiA9IHRoaXMuZXZlbnRQYXR0ZXJuO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGV2ZW50UGF0dGVybikubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHJlbmFtZSAnZGV0YWlsVHlwZScgdG8gJ2RldGFpbC10eXBlJ1xuICAgIGNvbnN0IG91dDogYW55ID0ge307XG4gICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGV2ZW50UGF0dGVybikpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50UGF0dGVybiBhcyBhbnkpW2tleV07XG4gICAgICBpZiAoa2V5ID09PSAnZGV0YWlsVHlwZScpIHtcbiAgICAgICAga2V5ID0gJ2RldGFpbC10eXBlJztcbiAgICAgIH1cbiAgICAgIG91dFtrZXldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG5jbGFzcyBJbXBvcnRlZEV2ZW50UnVsZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElFdmVudFJ1bGUge1xuICBwdWJsaWMgcmVhZG9ubHkgcnVsZUFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEV2ZW50UnVsZUltcG9ydFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucnVsZUFybiA9IHByb3BzLmV2ZW50UnVsZUFybjtcbiAgfVxuXG4gIHB1YmxpYyBleHBvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM7XG4gIH1cbn1cbiJdfQ==
{
"name": "@aws-cdk/aws-events",
"version": "0.25.3",
"version": "0.26.0",
"description": "AWS CloudWatch Events Construct Library",

@@ -58,14 +58,14 @@ "main": "lib/index.js",

"devDependencies": {
"@aws-cdk/assert": "^0.25.3",
"cdk-build-tools": "^0.25.3",
"cfn2ts": "^0.25.3",
"pkglint": "^0.25.3"
"@aws-cdk/assert": "^0.26.0",
"cdk-build-tools": "^0.26.0",
"cfn2ts": "^0.26.0",
"pkglint": "^0.26.0"
},
"dependencies": {
"@aws-cdk/aws-iam": "^0.25.3",
"@aws-cdk/cdk": "^0.25.3"
"@aws-cdk/aws-iam": "^0.26.0",
"@aws-cdk/cdk": "^0.26.0"
},
"homepage": "https://github.com/awslabs/aws-cdk",
"peerDependencies": {
"@aws-cdk/cdk": "^0.25.3"
"@aws-cdk/cdk": "^0.26.0"
},

@@ -72,0 +72,0 @@ "engines": {

@@ -314,3 +314,3 @@ "use strict";

// THEN
test.deepEqual(stack.node.resolve(exportedRule), { eventRuleArn: { 'Fn::ImportValue': 'MyRuleRuleArnDB13ADB1' } });
test.deepEqual(stack.node.resolve(exportedRule), { eventRuleArn: { 'Fn::ImportValue': 'Stack:MyRuleRuleArnDB13ADB1' } });
test.deepEqual(importedRule.ruleArn, 'arn:of:rule');

@@ -439,2 +439,2 @@ test.done();

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC5ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBeUU7QUFDekUsb0NBQXFDO0FBQ3JDLHNDQUFxQztBQUdyQyxzQ0FBd0M7QUE0ZXhDLE1BQU0sVUFBVTtJQUNQLGlCQUFpQjtRQUN0QixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUU7U0FDbkYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTllRCxpQkFBUztJQUNQLGNBQWMsQ0FBQyxJQUFVO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLElBQUksZ0JBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQzdCLGtCQUFrQixFQUFFLGtCQUFrQjtTQUN2QyxDQUFDLENBQUM7UUFFSCxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3BCLFdBQVcsRUFBRTtnQkFDWCxnQkFBZ0IsRUFBRTtvQkFDbEIsTUFBTSxFQUFFLG1CQUFtQjtvQkFDM0IsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQixFQUFFLGtCQUFrQjt3QkFDeEMsT0FBTyxFQUFFLFNBQVM7cUJBQ25CO2lCQUNBO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQseUJBQXlCLENBQUMsSUFBVTtRQUNsQyxRQUFRO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUIsT0FBTztRQUNQLElBQUksZ0JBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQy9CLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLGtCQUFrQixFQUFFLGtCQUFrQjtTQUNyQyxDQUFDLENB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LENBQUMsQ0FBQztZQUVKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FDRjtJQUVELHNCQUFzQixDQUFDLElBQVU7UUFDL0IsUUFBUTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLE9BQU87UUFDUCxJQUFJLGdCQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUMzQixrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQyxtQkFBbUIsRUFBRTtZQUNqRCxPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxzREFBc0QsQ0FBQyxJQUFVO1FBQy9ELFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLGdCQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN4QyxrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFakMsT0FBTztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLEVBQUUscUNBQXFDLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlLCBoYXZlUmVzb3VyY2VMaWtlIH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnQGF3cy1jZGsvY2RrJztcbmltcG9ydCB7IFRlc3QgfSBmcm9tICdub2RldW5pdCc7XG5pbXBvcnQgeyBJRXZlbnRSdWxlVGFyZ2V0IH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IEV2ZW50UnVsZSB9IGZyb20gJy4uL2xpYi9ydWxlJztcblxuLy8gdHNsaW50OmRpc2FibGU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xuXG5leHBvcnQgPSB7XG4gICdkZWZhdWx0IHJ1bGUnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIG5ldyBFdmVudFJ1bGUoc3RhY2ssICdNeVJ1bGUnLCB7XG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246ICdyYXRlKDEwIG1pbnV0ZXMpJ1xuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJNeVJ1bGVBNDRBQjgzMVwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJTY2hlZHVsZUV4cHJlc3Npb25cIjogXCJyYXRlKDEwIG1pbnV0ZXMpXCIsXG4gICAgICAgICAgXCJTdGF0ZVwiOiBcIkVOQUJMRURcIlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAncnVsZSB3aXRoIHBoeXNpY2FsIG5hbWUnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBFdmVudFJ1bGUoc3RhY2ssICdNeVJ1bGUnLCB7XG4gICAgcnVsZU5hbWU6ICdQaHlzaWNhbE5hbWUnLFxuICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogJ3JhdGUoMTAgbWludXRlcyknXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6RXZlbnRzOjpSdWxlJywge1xuICAgIE5hbWU6ICdQaHlzaWNhbE5hbWUnXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2V2ZW50UGF0dGVybiBpcyByZW5kZXJlZCBwcm9wZXJseScodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgbmV3IEV2ZW50UnVsZShzdGFjaywgJ015UnVsZScsIHtcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBhY2NvdW50OiBbICdhY2NvdW50MScsICdhY2NvdW50MicgXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgZm9vOiBbIDEsIDIgXSxcbiAgICAgICAgfSxcbiAgICAgICAgZGV0YWlsVHlwZTogWyAnZGV0YWlsVHlwZTEnIF0sXG4gICAgICAgIGlkOiBbICdpZDEnLCAnaWQyJyBdLFxuICAgICAgICByZWdpb246IFsgJ3JlZ2lvbjEnLCAncmVnaW9uMicsICdyZWdpb24zJyBdLFxuICAgICAgICByZXNvdXJjZXM6IFsgJ3IxJyBdLFxuICAgICAgICBzb3VyY2U6IFsgJ3NyYzEnLCAnc3JjMicgXSxcbiAgICAgICAgdGltZTogWyAndDEnIF0sXG4gICAgICAgIHZlcnNpb246IFsgJzAnIF1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGV4cGVjdChzdGFjaykudG9NYXRjaCh7XG4gICAgICBcIlJlc291cmNlc1wiOiB7XG4gICAgICAgIFwiTXlSdWxlQTQ0QUI4MzFcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OkV2ZW50czo6UnVsZVwiLFxuICAgICAgICBcIlByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiRXZlbnRQYXR0ZXJuXCI6IHtcbiAgICAgICAgICAgIGFjY291bnQ6IFsgJ2FjY291bnQxJywgJ2FjY291bnQyJyBdLFxuICAgICAgICAgICAgZGV0YWlsOiB7IGZvbzogWyAxLCAyIF0gfSxcbiAgICAgICAgICAgICdkZXRhaWwtdHlwZSc6IFsgJ2RldGFpbFR5cGUxJyBdLFxuICAgICAgICAgICAgaWQ6IFsgJ2lkMScsICdpZDInIF0sXG4gICAgICAgICAgICByZWdpb246IFsgJ3JlZ2lvbjEnLCAncmVnaW9uMicsICdyZWdpb24zJyBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbICdyMScgXSxcbiAgICAgICAgICAgIHNvdXJjZTogWyAnc3JjMScsICdzcmMyJyBdLFxuICAgICAgICAgICAgdGltZTogWyAndDEnIF0sXG4gICAgICAgICAgICB2ZXJzaW9uOiBbICcwJyBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIlN0YXRlXCI6IFwiRU5BQkxFRFwiXG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2ZhaWxzIHN5bnRoZXNpcyBpZiBuZWl0aGVyIGV2ZW50UGF0dGVybiBub3Igc2NoZXVkbGVFeHByZXNzaW9uIGFyZSBzcGVjaWZpZWQnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayhhcHAsICdNeVN0YWNrJyk7XG4gICAgbmV3IEV2ZW50UnVsZShzdGFjaywgJ1J1bGUnKTtcbiAgICB0ZXN0LnRocm93cygoKSA9PiBhcHAuc3ludGhlc2l6ZVN0YWNrKHN0YWNrLm5hbWUpLCAvRWl0aGVyICdldmVudFBhdHRlcm4nIG9yICdzY2hlZHVsZUV4cHJlc3Npb24nIG11c3QgYmUgZGVmaW5lZC8pO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdhZGRFdmVudFBhdHRlcm4gY2FuIGJlIHVzZWQgdG8gYWRkIGZpbHRlcnMnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnTXlSdWxlJyk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgYWNjb3VudDogWyAnMTIzNDUnIF0sXG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgZm9vOiBbICdoZWxsbycgXVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbICdhd3Muc291cmNlJyBdLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIGZvbzogWyAnYmFyJyBdLFxuICAgICAgICBnb286IHtcbiAgICAgICAgICBoZWxsbzogWyAnd29ybGQnIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJNeVJ1bGVBNDRBQjgzMVwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJFdmVudFBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiYWNjb3VudFwiOiBbXG4gICAgICAgICAgICBcIjEyMzQ1XCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICAgICAgICAgIFwiZm9vXCI6IFtcbiAgICAgICAgICAgIFwiaGVsbG9cIixcbiAgICAgICAgICAgIFwiYmFyXCJcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBcImdvb1wiOiB7XG4gICAgICAgICAgICBcImhlbGxvXCI6IFtcbiAgICAgICAgICAgICAgXCJ3b3JsZFwiXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNvdXJjZVwiOiBbXG4gICAgICAgICAgICBcImF3cy5zb3VyY2VcIlxuICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiU3RhdGVcIjogXCJFTkFCTEVEXCJcbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3RhcmdldHMgY2FuIGJlIGFkZGVkIHZpYSBwcm9wcyBvciBhZGRUYXJnZXQgd2l0aCBpbnB1dCB0cmFuc2Zvcm1lcicodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHQxOiBJRXZlbnRSdWxlVGFyZ2V0ID0ge1xuICAgICAgYXNFdmVudFJ1bGVUYXJnZXQ6ICgpID0+ICh7XG4gICAgICAgIGlkOiAnVDEnLFxuICAgICAgICBhcm46ICdBUk4xJyxcbiAgICAgICAga2luZXNpc1BhcmFtZXRlcnM6IHsgcGFydGl0aW9uS2V5UGF0aDogJ3BhcnRpdGlvbktleVBhdGgnIH1cbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHQyOiBJRXZlbnRSdWxlVGFyZ2V0ID0ge1xuICAgICAgYXNFdmVudFJ1bGVUYXJnZXQ6ICgpID0+ICh7XG4gICAgICAgIGlkOiAnVDInLFxuICAgICAgICBhcm46ICdBUk4yJyxcbiAgICAgICAgcm9sZUFybjogJ0lBTS1ST0xFLUFSTidcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnRXZlbnRSdWxlJywge1xuICAgICAgdGFyZ2V0czogWyB0MSBdLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiAncmF0ZSg1IG1pbnV0ZXMpJ1xuICAgIH0pO1xuXG4gICAgcnVsZS5hZGRUYXJnZXQodDIsIHtcbiAgICAgIHRleHRUZW1wbGF0ZTogJ1RoaXMgaXMgPGJsYT4nLFxuICAgICAgcGF0aHNNYXA6IHtcbiAgICAgICAgYmxhOiAnJC5kZXRhaWwuYmxhJ1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJFdmVudFJ1bGU1QTQ5MUQyQ1wiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJTY2hlZHVsZUV4cHJlc3Npb25cIjogXCJyYXRlKDUgbWludXRlcylcIixcbiAgICAgICAgICBcIlN0YXRlXCI6IFwiRU5BQkxFRFwiLFxuICAgICAgICAgIFwiVGFyZ2V0c1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJBcm5cIjogXCJBUk4xXCIsXG4gICAgICAgICAgICBcIklkXCI6IFwiVDFcIixcbiAgICAgICAgICAgIFwiS2luZXNpc1BhcmFtZXRlcnNcIjoge1xuICAgICAgICAgICAgXCJQYXJ0aXRpb25LZXlQYXRoXCI6IFwicGFydGl0aW9uS2V5UGF0aFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFyblwiOiBcIkFSTjJcIixcbiAgICAgICAgICAgIFwiSWRcIjogXCJUMlwiLFxuICAgICAgICAgICAgXCJJbnB1dFRyYW5zZm9ybWVyXCI6IHtcbiAgICAgICAgICAgIFwiSW5wdXRQYXRoc01hcFwiOiB7XG4gICAgICAgICAgICAgIFwiYmxhXCI6IFwiJC5kZXRhaWwuYmxhXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIklucHV0VGVtcGxhdGVcIjogXCJcXFwiVGhpcyBpcyA8YmxhPlxcXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiUm9sZUFyblwiOiBcIklBTS1ST0xFLUFSTlwiXG4gICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2lucHV0IHRlbXBsYXRlIGNhbiBjb250YWluIHRva2VucycodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHQxOiBJRXZlbnRSdWxlVGFyZ2V0ID0ge1xuICAgICAgYXNFdmVudFJ1bGVUYXJnZXQ6ICgpID0+ICh7XG4gICAgICAgIGlkOiAnVDEnLCBhcm46ICdBUk4xJywga2luZXNpc1BhcmFtZXRlcnM6IHsgcGFydGl0aW9uS2V5UGF0aDogJ3BhcnRpdGlvbktleVBhdGgnIH1cbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHQyOiBJRXZlbnRSdWxlVGFyZ2V0ID0geyBhc0V2ZW50UnVsZVRhcmdldDogKCkgPT4gKHsgaWQ6ICdUMicsIGFybjogJ0FSTjInLCByb2xlQXJuOiAnSUFNLVJPTEUtQVJOJyB9KSB9O1xuICAgIGNvbnN0IHQzOiBJRXZlbnRSdWxlVGFyZ2V0ID0geyBhc0V2ZW50UnVsZVRhcmdldDogKCkgPT4gKHsgaWQ6ICdUMycsIGFybjogJ0FSTjMnIH0pIH07XG4gICAgY29uc3QgdDQ6IElFdmVudFJ1bGVUYXJnZXQgPSB7IGFzRXZlbnRSdWxlVGFyZ2V0OiAoKSA9PiAoeyBpZDogJ1Q0JywgYXJuOiAnQVJONCcgfSkgfTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnRXZlbnRSdWxlJywgeyBzY2hlZHVsZUV4cHJlc3Npb246ICdyYXRlKDEgbWludXRlKScgfSk7XG5cbiAgICAvLyBhIHBsYWluIHN0cmluZyBzaG91bGQganVzdCBiZSBzdHJpbmdpZmllZCAoaS5lLiBkb3VibGUgcXVvdGVzIGFkZGVkIGFuZCBlc2NhcGVkKVxuICAgIHJ1bGUuYWRkVGFyZ2V0KHQyLCB7XG4gICAgICB0ZXh0VGVtcGxhdGU6ICdIZWxsbywgXCJ3b3JsZFwiJ1xuICAgIH0pO1xuXG4gICAgLy8gdG9rZW5zIGFyZSB1c2VkIGhlcmUgKEZuQ29uY2F0KSwgYnV0IHRoaXMgaXMgYSB0ZXh0IHRlbXBsYXRlIHNvIHdlXG4gICAgLy8gZXhwZWN0IGl0IHRvIGJlIHdyYXBwZWQgaW4gZG91YmxlIHF1b3RlcyBhdXRvbWF0aWNhbGx5IGZvciB1cy5cbiAgICBydWxlLmFkZFRhcmdldCh0MSwge1xuICAgICAgdGV4dFRlbXBsYXRlOiBjZGsuRm4uam9pbignJywgWyAnYScsICdiJyBdKS50b1N0cmluZygpXG4gICAgfSk7XG5cbiAgICAvLyBqc29uVGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IEpTT04gZG9jdW1lbnRzIHdpdGggcmVwbGFjZW1lbnRzXG4gICAgcnVsZS5hZGRUYXJnZXQodDMsIHtcbiAgICAgIGpzb25UZW1wbGF0ZTogJ3sgXCJmb29cIjogPGJhcj4gfScsXG4gICAgICBwYXRoc01hcDoge1xuICAgICAgICBiYXI6ICckLmRldGFpbC5iYXInXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB0b2tlbnMgY2FuIGFsc28gdXNlZCBmb3IgSlNPTiB0ZW1wbGF0ZXMsIGJ1dCB0aGF0IG1lYW5zIGVzY2FwaW5nIGlzXG4gICAgLy8gdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB1c2VyLlxuICAgIHJ1bGUuYWRkVGFyZ2V0KHQ0LCB7XG4gICAgICBqc29uVGVtcGxhdGU6IGNkay5Gbi5qb2luKCcgJywgWydcIicsICdoZWxsbycsICdcXFwid29ybGRcXFwiJywgJ1wiJ10pLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJFdmVudFJ1bGU1QTQ5MUQyQ1wiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJTdGF0ZVwiOiBcIkVOQUJMRURcIixcbiAgICAgICAgICBcIlNjaGVkdWxlRXhwcmVzc2lvblwiOiBcInJhdGUoMSBtaW51dGUpXCIsXG4gICAgICAgICAgXCJUYXJnZXRzXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQXJuXCI6IFwiQVJOMlwiLFxuICAgICAgICAgICAgXCJJZFwiOiBcIlQyXCIsXG4gICAgICAgICAgICBcIklucHV0VHJhbnNmb3JtZXJcIjoge1xuICAgICAgICAgICAgICBcIklucHV0VGVtcGxhdGVcIjogXCJcXFwiSGVsbG8sIFxcXFxcXFwid29ybGRcXFxcXFxcIlxcXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiUm9sZUFyblwiOiBcIklBTS1ST0xFLUFSTlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgXCJBcm5cIjogXCJBUk4xXCIsXG4gICAgICAgICAgICBcIklkXCI6IFwiVDFcIixcbiAgICAgICAgICAgIFwiSW5wdXRUcmFuc2Zvcm1lclwiOiB7XG4gICAgICAgICAgICAgIFwiSW5wdXRUZW1wbGF0ZVwiOiBcIlxcXCJhYlxcXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiS2luZXNpc1BhcmFtZXRlcnNcIjoge1xuICAgICAgICAgICAgICBcIlBhcnRpdGlvbktleVBhdGhcIjogXCJwYXJ0aXRpb25LZXlQYXRoXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFyblwiOiBcIkFSTjNcIixcbiAgICAgICAgICAgIFwiSWRcIjogXCJUM1wiLFxuICAgICAgICAgICAgXCJJbnB1dFRyYW5zZm9ybWVyXCI6IHtcbiAgICAgICAgICAgICAgXCJJbnB1dFBhdGhzTWFwXCI6IHtcbiAgICAgICAgICAgICAgXCJiYXJcIjogXCIkLmRldGFpbC5iYXJcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBcIklucHV0VGVtcGxhdGVcIjogXCJ7IFxcXCJmb29cXFwiOiA8YmFyPiB9XCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFyblwiOiBcIkFSTjRcIixcbiAgICAgICAgICAgIFwiSWRcIjogXCJUNFwiLFxuICAgICAgICAgICAgXCJJbnB1dFRyYW5zZm9ybWVyXCI6IHtcbiAgICAgICAgICAgICAgXCJJbnB1dFRlbXBsYXRlXCI6IFwiXFxcIiBoZWxsbyBcXFwid29ybGRcXFwiIFxcXCJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnYXNFdmVudFJ1bGVUYXJnZXQgY2FuIHVzZSB0aGUgcnVsZUFybiBhbmQgYSB1bmlxdWVJZCBvZiB0aGUgcnVsZScodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgbGV0IHJlY2VpdmVkUnVsZUFybiA9ICdGQUlMJztcbiAgICBsZXQgcmVjZWl2ZWRSdWxlSWQgPSAnRkFJTCc7XG5cbiAgICBjb25zdCB0MTogSUV2ZW50UnVsZVRhcmdldCA9IHtcbiAgICAgIGFzRXZlbnRSdWxlVGFyZ2V0OiAocnVsZUFybjogc3RyaW5nLCBydWxlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICByZWNlaXZlZFJ1bGVBcm4gPSBydWxlQXJuO1xuICAgICAgICByZWNlaXZlZFJ1bGVJZCA9IHJ1bGVJZDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiAnVDEnLFxuICAgICAgICAgIGFybjogJ0FSTjEnLFxuICAgICAgICAgIGtpbmVzaXNQYXJhbWV0ZXJzOiB7IHBhcnRpdGlvbktleVBhdGg6ICdwYXJ0aXRpb25LZXlQYXRoJyB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnRXZlbnRSdWxlJyk7XG4gICAgcnVsZS5hZGRUYXJnZXQodDEpO1xuXG4gICAgdGVzdC5kZWVwRXF1YWwoc3RhY2subm9kZS5yZXNvbHZlKHJlY2VpdmVkUnVsZUFybiksIHN0YWNrLm5vZGUucmVzb2x2ZShydWxlLnJ1bGVBcm4pKTtcbiAgICB0ZXN0LmRlZXBFcXVhbChyZWNlaXZlZFJ1bGVJZCwgcnVsZS5ub2RlLnVuaXF1ZUlkKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnaW1wb3J0L2V4cG9ydCBydWxlJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgIGNvbnN0IG15UnVsZSA9IG5ldyBFdmVudFJ1bGUoc3RhY2ssICdNeVJ1bGUnKTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBleHBvcnRlZFJ1bGUgPSBteVJ1bGUuZXhwb3J0KCk7XG5cbiAgICBjb25zdCBpbXBvcnRlZFJ1bGUgPSBFdmVudFJ1bGUuaW1wb3J0KHN0YWNrLCAnSW1wb3J0ZWRSdWxlJywge1xuICAgICAgZXZlbnRSdWxlQXJuOiAnYXJuOm9mOnJ1bGUnXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgdGVzdC5kZWVwRXF1YWwoc3RhY2subm9kZS5yZXNvbHZlKGV4cG9ydGVkUnVsZSksIHsgZXZlbnRSdWxlQXJuOiB7ICdGbjo6SW1wb3J0VmFsdWUnOiAnTXlSdWxlUnVsZUFybkRCMTNBREIxJyB9IH0pO1xuICAgIHRlc3QuZGVlcEVxdWFsKGltcG9ydGVkUnVsZS5ydWxlQXJuLCAnYXJuOm9mOnJ1bGUnKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdqc29uIHRlbXBsYXRlJzoge1xuICAgICdjYW4ganVzdCBiZSBhIEpTT04gb2JqZWN0Jyh0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnUnVsZScsIHtcbiAgICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiAncmF0ZSgxIG1pbnV0ZSknXG4gICAgICB9KTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSwge1xuICAgICAgICBqc29uVGVtcGxhdGU6IHsgU29tZU9iamVjdDogJ3dpdGhBVmFsdWUnIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkV2ZW50czo6UnVsZScsIHtcbiAgICAgICAgVGFyZ2V0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIElucHV0VHJhbnNmb3JtZXI6IHtcbiAgICAgICAgICAgICAgSW5wdXRUZW1wbGF0ZTogXCJ7XFxcIlNvbWVPYmplY3RcXFwiOlxcXCJ3aXRoQVZhbHVlXFxcIn1cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pKTtcbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG4gIH0sXG5cbiAgJ3RleHQgdGVtcGxhdGVzJzoge1xuICAgICdzdHJpbmdzIHdpdGggbmV3bGluZXMgYXJlIHNlcmlhbGl6ZWQgdG8gYSBuZXdsaW5lLWRlbGltaXRlZCBsaXN0IG9mIEpTT04gc3RyaW5ncycodGVzdDogVGVzdCkge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICBjb25zdCBydWxlID0gbmV3IEV2ZW50UnVsZShzdGFjaywgJ1J1bGUnLCB7XG4gICAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogJ3JhdGUoMSBtaW51dGUpJ1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyBTb21lVGFyZ2V0KCksIHtcbiAgICAgICAgdGV4dFRlbXBsYXRlOiAnSSBoYXZlXFxubXVsdGlwbGUgbGluZXMnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICAgIFRhcmdldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnB1dFRyYW5zZm9ybWVyOiB7XG4gICAgICAgICAgICAgIElucHV0VGVtcGxhdGU6IFwiXFxcIkkgaGF2ZVxcXCJcXG5cXFwibXVsdGlwbGUgbGluZXNcXFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnZXNjYXBlZCBuZXdsaW5lcyBhcmUgbm90IGludGVycHJldGVkIGFzIG5ld2xpbmVzJyh0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnUnVsZScsIHtcbiAgICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiAncmF0ZSgxIG1pbnV0ZSknXG4gICAgICB9KTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSwge1xuICAgICAgICB0ZXh0VGVtcGxhdGU6ICd0aGlzIGlzIG5vdFxcXFxuYSByZWFsIG5ld2xpbmUnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICAgIFRhcmdldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnB1dFRyYW5zZm9ybWVyOiB7XG4gICAgICAgICAgICAgIElucHV0VGVtcGxhdGU6IFwiXFxcInRoaXMgaXMgbm90XFxcXFxcXFxuYSByZWFsIG5ld2xpbmVcXFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnY2FuIHVzZSBUb2tlbnMgaW4gdGV4dCB0ZW1wbGF0ZXMnKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBFdmVudFJ1bGUoc3RhY2ssICdSdWxlJywge1xuICAgICAgICBzY2hlZHVsZUV4cHJlc3Npb246ICdyYXRlKDEgbWludXRlKSdcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB3b3JsZCA9IG5ldyBjZGsuVG9rZW4oKCkgPT4gJ3dvcmxkJyk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyBTb21lVGFyZ2V0KCksIHtcbiAgICAgICAgdGV4dFRlbXBsYXRlOiBgaGVsbG8gJHt3b3JsZH1gLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICAgIFRhcmdldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnB1dFRyYW5zZm9ybWVyOiB7XG4gICAgICAgICAgICAgIElucHV0VGVtcGxhdGU6IFwiXFxcImhlbGxvIHdvcmxkXFxcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9XG4gIH0sXG5cbiAgJ3J1bGUgY2FuIGJlIGRpc2FibGVkJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnUnVsZScsIHtcbiAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogJ2Zvb20nLFxuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICBcIlN0YXRlXCI6IFwiRElTQUJMRURcIlxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdmYWlscyBpZiBtdWx0aXBsZSB0YXJnZXRzIHdpdGggdGhlIHNhbWUgaWQgYXJlIGFkZGVkJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCBydWxlID0gbmV3IEV2ZW50UnVsZShzdGFjaywgJ1J1bGUnLCB7XG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246ICdmb29tJyxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgfSk7XG4gICAgcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSk7XG5cbiAgICAvLyBUSEVOXG4gICAgdGVzdC50aHJvd3MoKCkgPT4gcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSksIC9EdXBsaWNhdGUgZXZlbnQgcnVsZSB0YXJnZXQgd2l0aCBJRC8pO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9XG59O1xuXG5jbGFzcyBTb21lVGFyZ2V0IGltcGxlbWVudHMgSUV2ZW50UnVsZVRhcmdldCB7XG4gIHB1YmxpYyBhc0V2ZW50UnVsZVRhcmdldCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICdUMScsIGFybjogJ0FSTjEnLCBraW5lc2lzUGFyYW1ldGVyczogeyBwYXJ0aXRpb25LZXlQYXRoOiAncGFydGl0aW9uS2V5UGF0aCcgfVxuICAgIH07XG4gIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVzdC5ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBeUU7QUFDekUsb0NBQXFDO0FBQ3JDLHNDQUFxQztBQUdyQyxzQ0FBd0M7QUE0ZXhDLE1BQU0sVUFBVTtJQUNQLGlCQUFpQjtRQUN0QixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUU7U0FDbkYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTllRCxpQkFBUztJQUNQLGNBQWMsQ0FBQyxJQUFVO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLElBQUksZ0JBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQzdCLGtCQUFrQixFQUFFLGtCQUFrQjtTQUN2QyxDQUFDLENBQUM7UUFFSCxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3BCLFdBQVcsRUFBRTtnQkFDWCxnQkFBZ0IsRUFBRTtvQkFDbEIsTUFBTSxFQUFFLG1CQUFtQjtvQkFDM0IsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQixFQUFFLGtCQUFrQjt3QkFDeEMsT0FBTyxFQUFFLFNBQVM7cUJBQ25CO2lCQUNBO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQseUJBQXlCLENBQUMsSUFBVTtRQUNsQyxRQUFRO1FBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUIsT0FBTztRQUNQLElBQUksZ0JBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQy9CLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLGtCQUFrQixFQUFFLGtCQUFrQjtTQUNyQyxDQUFDLENB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LENBQUMsQ0FBQztZQUVKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FDRjtJQUVELHNCQUFzQixDQUFDLElBQVU7UUFDL0IsUUFBUTtRQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLE9BQU87UUFDUCxJQUFJLGdCQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUMzQixrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsT0FBTztRQUNQLGVBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMscUJBQVksQ0FBQyxtQkFBbUIsRUFBRTtZQUNqRCxPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxzREFBc0QsQ0FBQyxJQUFVO1FBQy9ELFFBQVE7UUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLGdCQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUN4QyxrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFakMsT0FBTztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLEVBQUUscUNBQXFDLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgaGF2ZVJlc291cmNlLCBoYXZlUmVzb3VyY2VMaWtlIH0gZnJvbSAnQGF3cy1jZGsvYXNzZXJ0JztcbmltcG9ydCBjZGsgPSByZXF1aXJlKCdAYXdzLWNkay9jZGsnKTtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSAnQGF3cy1jZGsvY2RrJztcbmltcG9ydCB7IFRlc3QgfSBmcm9tICdub2RldW5pdCc7XG5pbXBvcnQgeyBJRXZlbnRSdWxlVGFyZ2V0IH0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IEV2ZW50UnVsZSB9IGZyb20gJy4uL2xpYi9ydWxlJztcblxuLy8gdHNsaW50OmRpc2FibGU6b2JqZWN0LWxpdGVyYWwta2V5LXF1b3Rlc1xuXG5leHBvcnQgPSB7XG4gICdkZWZhdWx0IHJ1bGUnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIG5ldyBFdmVudFJ1bGUoc3RhY2ssICdNeVJ1bGUnLCB7XG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246ICdyYXRlKDEwIG1pbnV0ZXMpJ1xuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJNeVJ1bGVBNDRBQjgzMVwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJTY2hlZHVsZUV4cHJlc3Npb25cIjogXCJyYXRlKDEwIG1pbnV0ZXMpXCIsXG4gICAgICAgICAgXCJTdGF0ZVwiOiBcIkVOQUJMRURcIlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAncnVsZSB3aXRoIHBoeXNpY2FsIG5hbWUnKHRlc3Q6IFRlc3QpIHtcbiAgICAvLyBHSVZFTlxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgLy8gV0hFTlxuICAgIG5ldyBFdmVudFJ1bGUoc3RhY2ssICdNeVJ1bGUnLCB7XG4gICAgcnVsZU5hbWU6ICdQaHlzaWNhbE5hbWUnLFxuICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogJ3JhdGUoMTAgbWludXRlcyknXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2UoJ0FXUzo6RXZlbnRzOjpSdWxlJywge1xuICAgIE5hbWU6ICdQaHlzaWNhbE5hbWUnXG4gICAgfSkpO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2V2ZW50UGF0dGVybiBpcyByZW5kZXJlZCBwcm9wZXJseScodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgbmV3IEV2ZW50UnVsZShzdGFjaywgJ015UnVsZScsIHtcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBhY2NvdW50OiBbICdhY2NvdW50MScsICdhY2NvdW50MicgXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgZm9vOiBbIDEsIDIgXSxcbiAgICAgICAgfSxcbiAgICAgICAgZGV0YWlsVHlwZTogWyAnZGV0YWlsVHlwZTEnIF0sXG4gICAgICAgIGlkOiBbICdpZDEnLCAnaWQyJyBdLFxuICAgICAgICByZWdpb246IFsgJ3JlZ2lvbjEnLCAncmVnaW9uMicsICdyZWdpb24zJyBdLFxuICAgICAgICByZXNvdXJjZXM6IFsgJ3IxJyBdLFxuICAgICAgICBzb3VyY2U6IFsgJ3NyYzEnLCAnc3JjMicgXSxcbiAgICAgICAgdGltZTogWyAndDEnIF0sXG4gICAgICAgIHZlcnNpb246IFsgJzAnIF1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGV4cGVjdChzdGFjaykudG9NYXRjaCh7XG4gICAgICBcIlJlc291cmNlc1wiOiB7XG4gICAgICAgIFwiTXlSdWxlQTQ0QUI4MzFcIjoge1xuICAgICAgICBcIlR5cGVcIjogXCJBV1M6OkV2ZW50czo6UnVsZVwiLFxuICAgICAgICBcIlByb3BlcnRpZXNcIjoge1xuICAgICAgICAgIFwiRXZlbnRQYXR0ZXJuXCI6IHtcbiAgICAgICAgICAgIGFjY291bnQ6IFsgJ2FjY291bnQxJywgJ2FjY291bnQyJyBdLFxuICAgICAgICAgICAgZGV0YWlsOiB7IGZvbzogWyAxLCAyIF0gfSxcbiAgICAgICAgICAgICdkZXRhaWwtdHlwZSc6IFsgJ2RldGFpbFR5cGUxJyBdLFxuICAgICAgICAgICAgaWQ6IFsgJ2lkMScsICdpZDInIF0sXG4gICAgICAgICAgICByZWdpb246IFsgJ3JlZ2lvbjEnLCAncmVnaW9uMicsICdyZWdpb24zJyBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbICdyMScgXSxcbiAgICAgICAgICAgIHNvdXJjZTogWyAnc3JjMScsICdzcmMyJyBdLFxuICAgICAgICAgICAgdGltZTogWyAndDEnIF0sXG4gICAgICAgICAgICB2ZXJzaW9uOiBbICcwJyBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIlN0YXRlXCI6IFwiRU5BQkxFRFwiXG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2ZhaWxzIHN5bnRoZXNpcyBpZiBuZWl0aGVyIGV2ZW50UGF0dGVybiBub3Igc2NoZXVkbGVFeHByZXNzaW9uIGFyZSBzcGVjaWZpZWQnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayhhcHAsICdNeVN0YWNrJyk7XG4gICAgbmV3IEV2ZW50UnVsZShzdGFjaywgJ1J1bGUnKTtcbiAgICB0ZXN0LnRocm93cygoKSA9PiBhcHAuc3ludGhlc2l6ZVN0YWNrKHN0YWNrLm5hbWUpLCAvRWl0aGVyICdldmVudFBhdHRlcm4nIG9yICdzY2hlZHVsZUV4cHJlc3Npb24nIG11c3QgYmUgZGVmaW5lZC8pO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdhZGRFdmVudFBhdHRlcm4gY2FuIGJlIHVzZWQgdG8gYWRkIGZpbHRlcnMnKHRlc3Q6IFRlc3QpIHtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnTXlSdWxlJyk7XG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgYWNjb3VudDogWyAnMTIzNDUnIF0sXG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgZm9vOiBbICdoZWxsbycgXVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcnVsZS5hZGRFdmVudFBhdHRlcm4oe1xuICAgICAgc291cmNlOiBbICdhd3Muc291cmNlJyBdLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIGZvbzogWyAnYmFyJyBdLFxuICAgICAgICBnb286IHtcbiAgICAgICAgICBoZWxsbzogWyAnd29ybGQnIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJNeVJ1bGVBNDRBQjgzMVwiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJFdmVudFBhdHRlcm5cIjoge1xuICAgICAgICAgIFwiYWNjb3VudFwiOiBbXG4gICAgICAgICAgICBcIjEyMzQ1XCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICAgICAgICAgIFwiZm9vXCI6IFtcbiAgICAgICAgICAgIFwiaGVsbG9cIixcbiAgICAgICAgICAgIFwiYmFyXCJcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBcImdvb1wiOiB7XG4gICAgICAgICAgICBcImhlbGxvXCI6IFtcbiAgICAgICAgICAgICAgXCJ3b3JsZFwiXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNvdXJjZVwiOiBbXG4gICAgICAgICAgICBcImF3cy5zb3VyY2VcIlxuICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiU3RhdGVcIjogXCJFTkFCTEVEXCJcbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ3RhcmdldHMgY2FuIGJlIGFkZGVkIHZpYSBwcm9wcyBvciBhZGRUYXJnZXQgd2l0aCBpbnB1dCB0cmFuc2Zvcm1lcicodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHQxOiBJRXZlbnRSdWxlVGFyZ2V0ID0ge1xuICAgICAgYXNFdmVudFJ1bGVUYXJnZXQ6ICgpID0+ICh7XG4gICAgICAgIGlkOiAnVDEnLFxuICAgICAgICBhcm46ICdBUk4xJyxcbiAgICAgICAga2luZXNpc1BhcmFtZXRlcnM6IHsgcGFydGl0aW9uS2V5UGF0aDogJ3BhcnRpdGlvbktleVBhdGgnIH1cbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHQyOiBJRXZlbnRSdWxlVGFyZ2V0ID0ge1xuICAgICAgYXNFdmVudFJ1bGVUYXJnZXQ6ICgpID0+ICh7XG4gICAgICAgIGlkOiAnVDInLFxuICAgICAgICBhcm46ICdBUk4yJyxcbiAgICAgICAgcm9sZUFybjogJ0lBTS1ST0xFLUFSTidcbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnRXZlbnRSdWxlJywge1xuICAgICAgdGFyZ2V0czogWyB0MSBdLFxuICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiAncmF0ZSg1IG1pbnV0ZXMpJ1xuICAgIH0pO1xuXG4gICAgcnVsZS5hZGRUYXJnZXQodDIsIHtcbiAgICAgIHRleHRUZW1wbGF0ZTogJ1RoaXMgaXMgPGJsYT4nLFxuICAgICAgcGF0aHNNYXA6IHtcbiAgICAgICAgYmxhOiAnJC5kZXRhaWwuYmxhJ1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJFdmVudFJ1bGU1QTQ5MUQyQ1wiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJTY2hlZHVsZUV4cHJlc3Npb25cIjogXCJyYXRlKDUgbWludXRlcylcIixcbiAgICAgICAgICBcIlN0YXRlXCI6IFwiRU5BQkxFRFwiLFxuICAgICAgICAgIFwiVGFyZ2V0c1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJBcm5cIjogXCJBUk4xXCIsXG4gICAgICAgICAgICBcIklkXCI6IFwiVDFcIixcbiAgICAgICAgICAgIFwiS2luZXNpc1BhcmFtZXRlcnNcIjoge1xuICAgICAgICAgICAgXCJQYXJ0aXRpb25LZXlQYXRoXCI6IFwicGFydGl0aW9uS2V5UGF0aFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFyblwiOiBcIkFSTjJcIixcbiAgICAgICAgICAgIFwiSWRcIjogXCJUMlwiLFxuICAgICAgICAgICAgXCJJbnB1dFRyYW5zZm9ybWVyXCI6IHtcbiAgICAgICAgICAgIFwiSW5wdXRQYXRoc01hcFwiOiB7XG4gICAgICAgICAgICAgIFwiYmxhXCI6IFwiJC5kZXRhaWwuYmxhXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIklucHV0VGVtcGxhdGVcIjogXCJcXFwiVGhpcyBpcyA8YmxhPlxcXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiUm9sZUFyblwiOiBcIklBTS1ST0xFLUFSTlwiXG4gICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGVzdC5kb25lKCk7XG4gIH0sXG5cbiAgJ2lucHV0IHRlbXBsYXRlIGNhbiBjb250YWluIHRva2VucycodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuICAgIGNvbnN0IHQxOiBJRXZlbnRSdWxlVGFyZ2V0ID0ge1xuICAgICAgYXNFdmVudFJ1bGVUYXJnZXQ6ICgpID0+ICh7XG4gICAgICAgIGlkOiAnVDEnLCBhcm46ICdBUk4xJywga2luZXNpc1BhcmFtZXRlcnM6IHsgcGFydGl0aW9uS2V5UGF0aDogJ3BhcnRpdGlvbktleVBhdGgnIH1cbiAgICAgIH0pXG4gICAgfTtcblxuICAgIGNvbnN0IHQyOiBJRXZlbnRSdWxlVGFyZ2V0ID0geyBhc0V2ZW50UnVsZVRhcmdldDogKCkgPT4gKHsgaWQ6ICdUMicsIGFybjogJ0FSTjInLCByb2xlQXJuOiAnSUFNLVJPTEUtQVJOJyB9KSB9O1xuICAgIGNvbnN0IHQzOiBJRXZlbnRSdWxlVGFyZ2V0ID0geyBhc0V2ZW50UnVsZVRhcmdldDogKCkgPT4gKHsgaWQ6ICdUMycsIGFybjogJ0FSTjMnIH0pIH07XG4gICAgY29uc3QgdDQ6IElFdmVudFJ1bGVUYXJnZXQgPSB7IGFzRXZlbnRSdWxlVGFyZ2V0OiAoKSA9PiAoeyBpZDogJ1Q0JywgYXJuOiAnQVJONCcgfSkgfTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnRXZlbnRSdWxlJywgeyBzY2hlZHVsZUV4cHJlc3Npb246ICdyYXRlKDEgbWludXRlKScgfSk7XG5cbiAgICAvLyBhIHBsYWluIHN0cmluZyBzaG91bGQganVzdCBiZSBzdHJpbmdpZmllZCAoaS5lLiBkb3VibGUgcXVvdGVzIGFkZGVkIGFuZCBlc2NhcGVkKVxuICAgIHJ1bGUuYWRkVGFyZ2V0KHQyLCB7XG4gICAgICB0ZXh0VGVtcGxhdGU6ICdIZWxsbywgXCJ3b3JsZFwiJ1xuICAgIH0pO1xuXG4gICAgLy8gdG9rZW5zIGFyZSB1c2VkIGhlcmUgKEZuQ29uY2F0KSwgYnV0IHRoaXMgaXMgYSB0ZXh0IHRlbXBsYXRlIHNvIHdlXG4gICAgLy8gZXhwZWN0IGl0IHRvIGJlIHdyYXBwZWQgaW4gZG91YmxlIHF1b3RlcyBhdXRvbWF0aWNhbGx5IGZvciB1cy5cbiAgICBydWxlLmFkZFRhcmdldCh0MSwge1xuICAgICAgdGV4dFRlbXBsYXRlOiBjZGsuRm4uam9pbignJywgWyAnYScsICdiJyBdKS50b1N0cmluZygpXG4gICAgfSk7XG5cbiAgICAvLyBqc29uVGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IEpTT04gZG9jdW1lbnRzIHdpdGggcmVwbGFjZW1lbnRzXG4gICAgcnVsZS5hZGRUYXJnZXQodDMsIHtcbiAgICAgIGpzb25UZW1wbGF0ZTogJ3sgXCJmb29cIjogPGJhcj4gfScsXG4gICAgICBwYXRoc01hcDoge1xuICAgICAgICBiYXI6ICckLmRldGFpbC5iYXInXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB0b2tlbnMgY2FuIGFsc28gdXNlZCBmb3IgSlNPTiB0ZW1wbGF0ZXMsIGJ1dCB0aGF0IG1lYW5zIGVzY2FwaW5nIGlzXG4gICAgLy8gdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB1c2VyLlxuICAgIHJ1bGUuYWRkVGFyZ2V0KHQ0LCB7XG4gICAgICBqc29uVGVtcGxhdGU6IGNkay5Gbi5qb2luKCcgJywgWydcIicsICdoZWxsbycsICdcXFwid29ybGRcXFwiJywgJ1wiJ10pLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHN0YWNrKS50b01hdGNoKHtcbiAgICAgIFwiUmVzb3VyY2VzXCI6IHtcbiAgICAgICAgXCJFdmVudFJ1bGU1QTQ5MUQyQ1wiOiB7XG4gICAgICAgIFwiVHlwZVwiOiBcIkFXUzo6RXZlbnRzOjpSdWxlXCIsXG4gICAgICAgIFwiUHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJTdGF0ZVwiOiBcIkVOQUJMRURcIixcbiAgICAgICAgICBcIlNjaGVkdWxlRXhwcmVzc2lvblwiOiBcInJhdGUoMSBtaW51dGUpXCIsXG4gICAgICAgICAgXCJUYXJnZXRzXCI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQXJuXCI6IFwiQVJOMlwiLFxuICAgICAgICAgICAgXCJJZFwiOiBcIlQyXCIsXG4gICAgICAgICAgICBcIklucHV0VHJhbnNmb3JtZXJcIjoge1xuICAgICAgICAgICAgICBcIklucHV0VGVtcGxhdGVcIjogXCJcXFwiSGVsbG8sIFxcXFxcXFwid29ybGRcXFxcXFxcIlxcXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiUm9sZUFyblwiOiBcIklBTS1ST0xFLUFSTlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgXCJBcm5cIjogXCJBUk4xXCIsXG4gICAgICAgICAgICBcIklkXCI6IFwiVDFcIixcbiAgICAgICAgICAgIFwiSW5wdXRUcmFuc2Zvcm1lclwiOiB7XG4gICAgICAgICAgICAgIFwiSW5wdXRUZW1wbGF0ZVwiOiBcIlxcXCJhYlxcXCJcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiS2luZXNpc1BhcmFtZXRlcnNcIjoge1xuICAgICAgICAgICAgICBcIlBhcnRpdGlvbktleVBhdGhcIjogXCJwYXJ0aXRpb25LZXlQYXRoXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFyblwiOiBcIkFSTjNcIixcbiAgICAgICAgICAgIFwiSWRcIjogXCJUM1wiLFxuICAgICAgICAgICAgXCJJbnB1dFRyYW5zZm9ybWVyXCI6IHtcbiAgICAgICAgICAgICAgXCJJbnB1dFBhdGhzTWFwXCI6IHtcbiAgICAgICAgICAgICAgXCJiYXJcIjogXCIkLmRldGFpbC5iYXJcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBcIklucHV0VGVtcGxhdGVcIjogXCJ7IFxcXCJmb29cXFwiOiA8YmFyPiB9XCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICBcIkFyblwiOiBcIkFSTjRcIixcbiAgICAgICAgICAgIFwiSWRcIjogXCJUNFwiLFxuICAgICAgICAgICAgXCJJbnB1dFRyYW5zZm9ybWVyXCI6IHtcbiAgICAgICAgICAgICAgXCJJbnB1dFRlbXBsYXRlXCI6IFwiXFxcIiBoZWxsbyBcXFwid29ybGRcXFwiIFxcXCJcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnYXNFdmVudFJ1bGVUYXJnZXQgY2FuIHVzZSB0aGUgcnVsZUFybiBhbmQgYSB1bmlxdWVJZCBvZiB0aGUgcnVsZScodGVzdDogVGVzdCkge1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjaygpO1xuXG4gICAgbGV0IHJlY2VpdmVkUnVsZUFybiA9ICdGQUlMJztcbiAgICBsZXQgcmVjZWl2ZWRSdWxlSWQgPSAnRkFJTCc7XG5cbiAgICBjb25zdCB0MTogSUV2ZW50UnVsZVRhcmdldCA9IHtcbiAgICAgIGFzRXZlbnRSdWxlVGFyZ2V0OiAocnVsZUFybjogc3RyaW5nLCBydWxlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICByZWNlaXZlZFJ1bGVBcm4gPSBydWxlQXJuO1xuICAgICAgICByZWNlaXZlZFJ1bGVJZCA9IHJ1bGVJZDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiAnVDEnLFxuICAgICAgICAgIGFybjogJ0FSTjEnLFxuICAgICAgICAgIGtpbmVzaXNQYXJhbWV0ZXJzOiB7IHBhcnRpdGlvbktleVBhdGg6ICdwYXJ0aXRpb25LZXlQYXRoJyB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnRXZlbnRSdWxlJyk7XG4gICAgcnVsZS5hZGRUYXJnZXQodDEpO1xuXG4gICAgdGVzdC5kZWVwRXF1YWwoc3RhY2subm9kZS5yZXNvbHZlKHJlY2VpdmVkUnVsZUFybiksIHN0YWNrLm5vZGUucmVzb2x2ZShydWxlLnJ1bGVBcm4pKTtcbiAgICB0ZXN0LmRlZXBFcXVhbChyZWNlaXZlZFJ1bGVJZCwgcnVsZS5ub2RlLnVuaXF1ZUlkKTtcbiAgICB0ZXN0LmRvbmUoKTtcbiAgfSxcblxuICAnaW1wb3J0L2V4cG9ydCBydWxlJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgIGNvbnN0IG15UnVsZSA9IG5ldyBFdmVudFJ1bGUoc3RhY2ssICdNeVJ1bGUnKTtcblxuICAgIC8vIFdIRU5cbiAgICBjb25zdCBleHBvcnRlZFJ1bGUgPSBteVJ1bGUuZXhwb3J0KCk7XG5cbiAgICBjb25zdCBpbXBvcnRlZFJ1bGUgPSBFdmVudFJ1bGUuaW1wb3J0KHN0YWNrLCAnSW1wb3J0ZWRSdWxlJywge1xuICAgICAgZXZlbnRSdWxlQXJuOiAnYXJuOm9mOnJ1bGUnXG4gICAgfSk7XG5cbiAgICAvLyBUSEVOXG4gICAgdGVzdC5kZWVwRXF1YWwoc3RhY2subm9kZS5yZXNvbHZlKGV4cG9ydGVkUnVsZSksIHsgZXZlbnRSdWxlQXJuOiB7ICdGbjo6SW1wb3J0VmFsdWUnOiAnU3RhY2s6TXlSdWxlUnVsZUFybkRCMTNBREIxJyB9IH0pO1xuICAgIHRlc3QuZGVlcEVxdWFsKGltcG9ydGVkUnVsZS5ydWxlQXJuLCAnYXJuOm9mOnJ1bGUnKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdqc29uIHRlbXBsYXRlJzoge1xuICAgICdjYW4ganVzdCBiZSBhIEpTT04gb2JqZWN0Jyh0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnUnVsZScsIHtcbiAgICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiAncmF0ZSgxIG1pbnV0ZSknXG4gICAgICB9KTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSwge1xuICAgICAgICBqc29uVGVtcGxhdGU6IHsgU29tZU9iamVjdDogJ3dpdGhBVmFsdWUnIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgZXhwZWN0KHN0YWNrKS50byhoYXZlUmVzb3VyY2VMaWtlKCdBV1M6OkV2ZW50czo6UnVsZScsIHtcbiAgICAgICAgVGFyZ2V0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIElucHV0VHJhbnNmb3JtZXI6IHtcbiAgICAgICAgICAgICAgSW5wdXRUZW1wbGF0ZTogXCJ7XFxcIlNvbWVPYmplY3RcXFwiOlxcXCJ3aXRoQVZhbHVlXFxcIn1cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0pKTtcbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG4gIH0sXG5cbiAgJ3RleHQgdGVtcGxhdGVzJzoge1xuICAgICdzdHJpbmdzIHdpdGggbmV3bGluZXMgYXJlIHNlcmlhbGl6ZWQgdG8gYSBuZXdsaW5lLWRlbGltaXRlZCBsaXN0IG9mIEpTT04gc3RyaW5ncycodGVzdDogVGVzdCkge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICBjb25zdCBydWxlID0gbmV3IEV2ZW50UnVsZShzdGFjaywgJ1J1bGUnLCB7XG4gICAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogJ3JhdGUoMSBtaW51dGUpJ1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyBTb21lVGFyZ2V0KCksIHtcbiAgICAgICAgdGV4dFRlbXBsYXRlOiAnSSBoYXZlXFxubXVsdGlwbGUgbGluZXMnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICAgIFRhcmdldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnB1dFRyYW5zZm9ybWVyOiB7XG4gICAgICAgICAgICAgIElucHV0VGVtcGxhdGU6IFwiXFxcIkkgaGF2ZVxcXCJcXG5cXFwibXVsdGlwbGUgbGluZXNcXFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnZXNjYXBlZCBuZXdsaW5lcyBhcmUgbm90IGludGVycHJldGVkIGFzIG5ld2xpbmVzJyh0ZXN0OiBUZXN0KSB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnUnVsZScsIHtcbiAgICAgICAgc2NoZWR1bGVFeHByZXNzaW9uOiAncmF0ZSgxIG1pbnV0ZSknXG4gICAgICB9KTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSwge1xuICAgICAgICB0ZXh0VGVtcGxhdGU6ICd0aGlzIGlzIG5vdFxcXFxuYSByZWFsIG5ld2xpbmUnLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICAgIFRhcmdldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnB1dFRyYW5zZm9ybWVyOiB7XG4gICAgICAgICAgICAgIElucHV0VGVtcGxhdGU6IFwiXFxcInRoaXMgaXMgbm90XFxcXFxcXFxuYSByZWFsIG5ld2xpbmVcXFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9KSk7XG5cbiAgICAgIHRlc3QuZG9uZSgpO1xuICAgIH0sXG5cbiAgICAnY2FuIHVzZSBUb2tlbnMgaW4gdGV4dCB0ZW1wbGF0ZXMnKHRlc3Q6IFRlc3QpIHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBFdmVudFJ1bGUoc3RhY2ssICdSdWxlJywge1xuICAgICAgICBzY2hlZHVsZUV4cHJlc3Npb246ICdyYXRlKDEgbWludXRlKSdcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB3b3JsZCA9IG5ldyBjZGsuVG9rZW4oKCkgPT4gJ3dvcmxkJyk7XG5cbiAgICAgIC8vIFdIRU5cbiAgICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyBTb21lVGFyZ2V0KCksIHtcbiAgICAgICAgdGV4dFRlbXBsYXRlOiBgaGVsbG8gJHt3b3JsZH1gLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGV4cGVjdChzdGFjaykudG8oaGF2ZVJlc291cmNlTGlrZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICAgIFRhcmdldHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBJbnB1dFRyYW5zZm9ybWVyOiB7XG4gICAgICAgICAgICAgIElucHV0VGVtcGxhdGU6IFwiXFxcImhlbGxvIHdvcmxkXFxcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSkpO1xuXG4gICAgICB0ZXN0LmRvbmUoKTtcbiAgICB9XG4gIH0sXG5cbiAgJ3J1bGUgY2FuIGJlIGRpc2FibGVkJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcblxuICAgIC8vIFdIRU5cbiAgICBuZXcgRXZlbnRSdWxlKHN0YWNrLCAnUnVsZScsIHtcbiAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogJ2Zvb20nLFxuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9KTtcblxuICAgIC8vIFRIRU5cbiAgICBleHBlY3Qoc3RhY2spLnRvKGhhdmVSZXNvdXJjZSgnQVdTOjpFdmVudHM6OlJ1bGUnLCB7XG4gICAgICBcIlN0YXRlXCI6IFwiRElTQUJMRURcIlxuICAgIH0pKTtcblxuICAgIHRlc3QuZG9uZSgpO1xuICB9LFxuXG4gICdmYWlscyBpZiBtdWx0aXBsZSB0YXJnZXRzIHdpdGggdGhlIHNhbWUgaWQgYXJlIGFkZGVkJyh0ZXN0OiBUZXN0KSB7XG4gICAgLy8gR0lWRU5cbiAgICBjb25zdCBzdGFjayA9IG5ldyBjZGsuU3RhY2soKTtcbiAgICBjb25zdCBydWxlID0gbmV3IEV2ZW50UnVsZShzdGFjaywgJ1J1bGUnLCB7XG4gICAgICBzY2hlZHVsZUV4cHJlc3Npb246ICdmb29tJyxcbiAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgfSk7XG4gICAgcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSk7XG5cbiAgICAvLyBUSEVOXG4gICAgdGVzdC50aHJvd3MoKCkgPT4gcnVsZS5hZGRUYXJnZXQobmV3IFNvbWVUYXJnZXQoKSksIC9EdXBsaWNhdGUgZXZlbnQgcnVsZSB0YXJnZXQgd2l0aCBJRC8pO1xuICAgIHRlc3QuZG9uZSgpO1xuICB9XG59O1xuXG5jbGFzcyBTb21lVGFyZ2V0IGltcGxlbWVudHMgSUV2ZW50UnVsZVRhcmdldCB7XG4gIHB1YmxpYyBhc0V2ZW50UnVsZVRhcmdldCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICdUMScsIGFybjogJ0FSTjEnLCBraW5lc2lzUGFyYW1ldGVyczogeyBwYXJ0aXRpb25LZXlQYXRoOiAncGFydGl0aW9uS2V5UGF0aCcgfVxuICAgIH07XG4gIH1cbn0iXX0=

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc