VaporShell.SAM.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'SAMApplicationApplicationLocation'"

class SAMApplicationApplicationLocation : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMApplicationApplicationLocation'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapplication'

    hidden [object] $_applicationId
    hidden [object] $_semanticVersion

    [string] $ApplicationId
    [string] $SemanticVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ApplicationId -Value {
            $this._applicationId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._applicationId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SemanticVersion -Value {
            $this._semanticVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._semanticVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMApplicationApplicationLocation() : base() {}
    SAMApplicationApplicationLocation([IDictionary] $props) : base($props) {}
    SAMApplicationApplicationLocation([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionS3Location'"

class SAMFunctionS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionS3Location'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object'

    hidden [object] $_bucket
    hidden [object] $_key
    hidden [object] $_version

    [string] $Bucket
    [string] $Key
    [int] $Version

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    SAMFunctionS3Location() : base() {}
    SAMFunctionS3Location([IDictionary] $props) : base($props) {}
    SAMFunctionS3Location([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMLayerVersionS3Location'"

class SAMLayerVersionS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMLayerVersionS3Location'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object'

    hidden [object] $_bucket
    hidden [object] $_key
    hidden [object] $_version

    [string] $Bucket
    [string] $Key
    [int] $Version

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    SAMLayerVersionS3Location() : base() {}
    SAMLayerVersionS3Location([IDictionary] $props) : base($props) {}
    SAMLayerVersionS3Location([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionFileSystemConfig'"

class SAMFunctionFileSystemConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionFileSystemConfig'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-filesystemconfig.html#cfn-lambda-function-filesystemconfig-localmountpath'

    hidden [object] $_arn
    hidden [object] $_localMountPath

    [string] $Arn
    [string] $LocalMountPath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Arn -Value {
            $this._arn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._arn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LocalMountPath -Value {
            $this._localMountPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._localMountPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionFileSystemConfig() : base() {}
    SAMFunctionFileSystemConfig([IDictionary] $props) : base($props) {}
    SAMFunctionFileSystemConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionEventSource'"

class SAMFunctionEventSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionEventSource'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#event-source-object'

    hidden [object] $_type
    hidden [object] $_properties

    [string] $Type
    [object] $Properties

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Properties -Value {
            $this._properties
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._properties = $value
        }
    }

    SAMFunctionEventSource() : base() {}
    SAMFunctionEventSource([IDictionary] $props) : base($props) {}
    SAMFunctionEventSource([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionS3Event'"

class SAMFunctionS3Event : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionS3Event'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3'

    hidden [object] $_bucket
    hidden [object] $_events
    hidden [object] $_filter

    [string] $Bucket
    [object] $Events
    [SAMFunctionS3NotificationFilter] $Filter

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Events -Value {
            $this._events
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._events = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Filter -Value {
            $this._filter
        } -SecondValue {
            param([ValidateType(([SAMFunctionS3NotificationFilter], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._filter = $value
        }
    }

    SAMFunctionS3Event() : base() {}
    SAMFunctionS3Event([IDictionary] $props) : base($props) {}
    SAMFunctionS3Event([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionS3NotificationFilter'"

class SAMFunctionS3NotificationFilter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionS3NotificationFilter'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html'

    hidden [object] $_s3Key

    [SAMFunctionS3KeyFilter] $S3Key

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3Key -Value {
            $this._s3Key
        } -SecondValue {
            param([ValidateType(([SAMFunctionS3KeyFilter], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3Key = $value
        }
    }

    SAMFunctionS3NotificationFilter() : base() {}
    SAMFunctionS3NotificationFilter([IDictionary] $props) : base($props) {}
    SAMFunctionS3NotificationFilter([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionSNSEvent'"

class SAMFunctionSNSEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionSNSEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sns'

    hidden [object] $_topic

    [string] $Topic

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Topic -Value {
            $this._topic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._topic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionSNSEvent() : base() {}
    SAMFunctionSNSEvent([IDictionary] $props) : base($props) {}
    SAMFunctionSNSEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionKinesisEvent'"

class SAMFunctionKinesisEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionKinesisEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#kinesis'

    hidden [object] $_stream
    hidden [object] $_startingPosition
    hidden [object] $_batchSize
    hidden [object] $_enabled

    [string] $Stream
    [string] $StartingPosition
    [int] $BatchSize
    [bool] $Enabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Stream -Value {
            $this._stream
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stream = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartingPosition -Value {
            $this._startingPosition
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._startingPosition = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BatchSize -Value {
            $this._batchSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._batchSize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
    }

    SAMFunctionKinesisEvent() : base() {}
    SAMFunctionKinesisEvent([IDictionary] $props) : base($props) {}
    SAMFunctionKinesisEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionDynamoDBEvent'"

class SAMFunctionDynamoDBEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionDynamoDBEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#dynamodb'

    hidden [object] $_stream
    hidden [object] $_startingPosition
    hidden [object] $_batchSize
    hidden [object] $_enabled
    hidden [object] $_maximumBatchingWindowInSeconds
    hidden [object] $_maximumRetryAttempts
    hidden [object] $_bisectBatchOnFunctionError
    hidden [object] $_maximumRecordAgeInSeconds
    hidden [object] $_destinationConfig
    hidden [object] $_parallelizationFactor

    [string] $Stream
    [string] $StartingPosition
    [int] $BatchSize
    [bool] $Enabled
    [int] $MaximumBatchingWindowInSeconds
    [int] $MaximumRetryAttempts
    [bool] $BisectBatchOnFunctionError
    [int] $MaximumRecordAgeInSeconds
    [SAMFunctionDestinationConfig] $DestinationConfig
    [int] $ParallelizationFactor

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Stream -Value {
            $this._stream
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stream = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StartingPosition -Value {
            $this._startingPosition
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._startingPosition = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BatchSize -Value {
            $this._batchSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._batchSize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumBatchingWindowInSeconds -Value {
            $this._maximumBatchingWindowInSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumBatchingWindowInSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumRetryAttempts -Value {
            $this._maximumRetryAttempts
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumRetryAttempts = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BisectBatchOnFunctionError -Value {
            $this._bisectBatchOnFunctionError
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bisectBatchOnFunctionError = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumRecordAgeInSeconds -Value {
            $this._maximumRecordAgeInSeconds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumRecordAgeInSeconds = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationConfig -Value {
            $this._destinationConfig
        } -SecondValue {
            param([ValidateType(([SAMFunctionDestinationConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destinationConfig = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ParallelizationFactor -Value {
            $this._parallelizationFactor
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._parallelizationFactor = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    SAMFunctionDynamoDBEvent() : base() {}
    SAMFunctionDynamoDBEvent([IDictionary] $props) : base($props) {}
    SAMFunctionDynamoDBEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionSQSEvent'"

class SAMFunctionSQSEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionSQSEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sqs'

    hidden [object] $_queue
    hidden [object] $_batchSize
    hidden [object] $_enabled

    [string] $Queue
    [int] $BatchSize
    [bool] $Enabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Queue -Value {
            $this._queue
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._queue = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BatchSize -Value {
            $this._batchSize
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._batchSize = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
    }

    SAMFunctionSQSEvent() : base() {}
    SAMFunctionSQSEvent([IDictionary] $props) : base($props) {}
    SAMFunctionSQSEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionApiEvent'"

class SAMFunctionApiEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionApiEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api'

    hidden [object] $_path
    hidden [object] $_method
    hidden [object] $_restApiId

    [string] $Path
    [string] $Method
    [string] $RestApiId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Method -Value {
            $this._method
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._method = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this._restApiId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._restApiId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionApiEvent() : base() {}
    SAMFunctionApiEvent([IDictionary] $props) : base($props) {}
    SAMFunctionApiEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionScheduleEvent'"

class SAMFunctionScheduleEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionScheduleEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#schedule'

    hidden [object] $_schedule
    hidden [object] $_input

    [string] $Schedule
    [string] $Input

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this._schedule
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._schedule = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Input -Value {
            $this._input
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._input = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionScheduleEvent() : base() {}
    SAMFunctionScheduleEvent([IDictionary] $props) : base($props) {}
    SAMFunctionScheduleEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionCloudWatchEventEvent'"

class SAMFunctionCloudWatchEventEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionCloudWatchEventEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#cloudwatchevent'

    hidden [VSJson] $_pattern
    hidden [object] $_input
    hidden [object] $_inputPath

    [VSJson] $Pattern
    [string] $Input
    [string] $InputPath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Pattern -Value {
            $this._pattern
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._pattern = [VSJson]::Transform($value)
            Write-Debug $this._pattern
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Input -Value {
            $this._input
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._input = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InputPath -Value {
            $this._inputPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._inputPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionCloudWatchEventEvent() : base() {}
    SAMFunctionCloudWatchEventEvent([IDictionary] $props) : base($props) {}
    SAMFunctionCloudWatchEventEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionCloudWatchLogsEvent'"

class SAMFunctionCloudWatchLogsEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionCloudWatchLogsEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#cloudwatchevent'

    hidden [object] $_logGroupName
    hidden [object] $_filterPattern

    [string] $LogGroupName
    [string] $FilterPattern

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogGroupName -Value {
            $this._logGroupName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logGroupName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FilterPattern -Value {
            $this._filterPattern
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._filterPattern = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionCloudWatchLogsEvent() : base() {}
    SAMFunctionCloudWatchLogsEvent([IDictionary] $props) : base($props) {}
    SAMFunctionCloudWatchLogsEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionIoTRuleEvent'"

class SAMFunctionIoTRuleEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionIoTRuleEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#iotrule'

    hidden [object] $_sql
    hidden [object] $_awsIotSqlVersion

    [string] $Sql
    [string] $AwsIotSqlVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Sql -Value {
            $this._sql
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sql = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AwsIotSqlVersion -Value {
            $this._awsIotSqlVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._awsIotSqlVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionIoTRuleEvent() : base() {}
    SAMFunctionIoTRuleEvent([IDictionary] $props) : base($props) {}
    SAMFunctionIoTRuleEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionAlexaSkillEvent'"

class SAMFunctionAlexaSkillEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionAlexaSkillEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#alexaskill'

    hidden [object] $_variables

    [string] $Variables

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Variables -Value {
            $this._variables
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._variables = $value
        }
    }

    SAMFunctionAlexaSkillEvent() : base() {}
    SAMFunctionAlexaSkillEvent([IDictionary] $props) : base($props) {}
    SAMFunctionAlexaSkillEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionDestinationConfig'"

class SAMFunctionDestinationConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionDestinationConfig'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#destination-config-object'

    hidden [object] $_onFailure

    [SAMFunctionOnFailure] $OnFailure

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnFailure -Value {
            $this._onFailure
        } -SecondValue {
            param([ValidateType(([SAMFunctionOnFailure], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onFailure = $value
        }
    }

    SAMFunctionDestinationConfig() : base() {}
    SAMFunctionDestinationConfig([IDictionary] $props) : base($props) {}
    SAMFunctionDestinationConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionOnFailure'"

class SAMFunctionOnFailure : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionOnFailure'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#destination-config-object'

    hidden [object] $_type
    hidden [object] $_destination

    [string] $Type
    [string] $Destination

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Destination -Value {
            $this._destination
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destination = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionOnFailure() : base() {}
    SAMFunctionOnFailure([IDictionary] $props) : base($props) {}
    SAMFunctionOnFailure([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionEventBridgeRuleEvent'"

class SAMFunctionEventBridgeRuleEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionEventBridgeRuleEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#eventbridgerule'

    hidden [VSJson] $_pattern
    hidden [object] $_eventBusName
    hidden [object] $_input
    hidden [object] $_inputPath

    [VSJson] $Pattern
    [string] $EventBusName
    [string] $Input
    [string] $InputPath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Pattern -Value {
            $this._pattern
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._pattern = [VSJson]::Transform($value)
            Write-Debug $this._pattern
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventBusName -Value {
            $this._eventBusName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventBusName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Input -Value {
            $this._input
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._input = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InputPath -Value {
            $this._inputPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._inputPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionEventBridgeRuleEvent() : base() {}
    SAMFunctionEventBridgeRuleEvent([IDictionary] $props) : base($props) {}
    SAMFunctionEventBridgeRuleEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionVpcConfig'"

class SAMFunctionVpcConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionVpcConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html'

    hidden [object] $_securityGroupIds
    hidden [object] $_subnetIds

    [string[]] $SecurityGroupIds
    [string[]] $SubnetIds

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityGroupIds -Value {
            $this._securityGroupIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._securityGroupIds = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetIds -Value {
            $this._subnetIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._subnetIds = @($value)
        }
    }

    SAMFunctionVpcConfig() : base() {}
    SAMFunctionVpcConfig([IDictionary] $props) : base($props) {}
    SAMFunctionVpcConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionIAMPolicyDocument'"

class SAMFunctionIAMPolicyDocument : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionIAMPolicyDocument'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html'

    hidden [VSJson] $_statement

    [VSJson] $Statement

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statement -Value {
            $this._statement
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._statement = [VSJson]::Transform($value)
            Write-Debug $this._statement
        }
    }

    SAMFunctionIAMPolicyDocument() : base() {}
    SAMFunctionIAMPolicyDocument([IDictionary] $props) : base($props) {}
    SAMFunctionIAMPolicyDocument([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionSAMPolicyTemplate'"

class SAMFunctionSAMPolicyTemplate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionSAMPolicyTemplate'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_cloudWatchPutMetricPolicy
    hidden [object] $_eC2DescribePolicy
    hidden [object] $_aMIDescribePolicy
    hidden [object] $_cloudFormationDescribeStacksPolicy
    hidden [object] $_rekognitionDetectOnlyPolicy
    hidden [object] $_rekognitionLabelsPolicy
    hidden [object] $_vPCAccessPolicy
    hidden [object] $_sESEmailTemplateCrudPolicy
    hidden [object] $_sQSPollerPolicy
    hidden [object] $_sQSSendMessagePolicy
    hidden [object] $_lambdaInvokePolicy
    hidden [object] $_dynamoDBCrudPolicy
    hidden [object] $_dynamoDBReadPolicy
    hidden [object] $_dynamoDBStreamReadPolicy
    hidden [object] $_sESSendBouncePolicy
    hidden [object] $_sESCrudPolicy
    hidden [object] $_sESBulkTemplatedCrudPolicy
    hidden [object] $_elasticsearchHttpPostPolicy
    hidden [object] $_s3ReadPolicy
    hidden [object] $_s3CrudPolicy
    hidden [object] $_rekognitionNoDataAccessPolicy
    hidden [object] $_rekognitionReadPolicy
    hidden [object] $_rekognitionWriteOnlyAccessPolicy
    hidden [object] $_sNSCrudPolicy
    hidden [object] $_sNSPublishMessagePolicy
    hidden [object] $_kinesisStreamReadPolicy
    hidden [object] $_kinesisCrudPolicy
    hidden [object] $_kMSDecryptPolicy
    hidden [object] $_filterLogEventsPolicy
    hidden [object] $_stepFunctionsExecutionPolicy

    [SAMFunctionEmptySAMPT] $CloudWatchPutMetricPolicy
    [SAMFunctionEmptySAMPT] $EC2DescribePolicy
    [SAMFunctionEmptySAMPT] $AMIDescribePolicy
    [SAMFunctionEmptySAMPT] $CloudFormationDescribeStacksPolicy
    [SAMFunctionEmptySAMPT] $RekognitionDetectOnlyPolicy
    [SAMFunctionEmptySAMPT] $RekognitionLabelsPolicy
    [SAMFunctionEmptySAMPT] $VPCAccessPolicy
    [SAMFunctionEmptySAMPT] $SESEmailTemplateCrudPolicy
    [SAMFunctionQueueSAMPT] $SQSPollerPolicy
    [SAMFunctionQueueSAMPT] $SQSSendMessagePolicy
    [SAMFunctionFunctionSAMPT] $LambdaInvokePolicy
    [SAMFunctionTableSAMPT] $DynamoDBCrudPolicy
    [SAMFunctionTableSAMPT] $DynamoDBReadPolicy
    [SAMFunctionTableStreamSAMPT] $DynamoDBStreamReadPolicy
    [SAMFunctionIdentitySAMPT] $SESSendBouncePolicy
    [SAMFunctionIdentitySAMPT] $SESCrudPolicy
    [SAMFunctionIdentitySAMPT] $SESBulkTemplatedCrudPolicy
    [SAMFunctionDomainSAMPT] $ElasticsearchHttpPostPolicy
    [SAMFunctionBucketSAMPT] $S3ReadPolicy
    [SAMFunctionBucketSAMPT] $S3CrudPolicy
    [SAMFunctionCollectionSAMPT] $RekognitionNoDataAccessPolicy
    [SAMFunctionCollectionSAMPT] $RekognitionReadPolicy
    [SAMFunctionCollectionSAMPT] $RekognitionWriteOnlyAccessPolicy
    [SAMFunctionTopicSAMPT] $SNSCrudPolicy
    [SAMFunctionTopicSAMPT] $SNSPublishMessagePolicy
    [SAMFunctionStreamSAMPT] $KinesisStreamReadPolicy
    [SAMFunctionStreamSAMPT] $KinesisCrudPolicy
    [SAMFunctionKeySAMPT] $KMSDecryptPolicy
    [SAMFunctionLogGroupSAMPT] $FilterLogEventsPolicy
    [SAMFunctionStateMachineSAMPT] $StepFunctionsExecutionPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchPutMetricPolicy -Value {
            $this._cloudWatchPutMetricPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudWatchPutMetricPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EC2DescribePolicy -Value {
            $this._eC2DescribePolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eC2DescribePolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AMIDescribePolicy -Value {
            $this._aMIDescribePolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aMIDescribePolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudFormationDescribeStacksPolicy -Value {
            $this._cloudFormationDescribeStacksPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudFormationDescribeStacksPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RekognitionDetectOnlyPolicy -Value {
            $this._rekognitionDetectOnlyPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rekognitionDetectOnlyPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RekognitionLabelsPolicy -Value {
            $this._rekognitionLabelsPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rekognitionLabelsPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VPCAccessPolicy -Value {
            $this._vPCAccessPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._vPCAccessPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SESEmailTemplateCrudPolicy -Value {
            $this._sESEmailTemplateCrudPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionEmptySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sESEmailTemplateCrudPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SQSPollerPolicy -Value {
            $this._sQSPollerPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionQueueSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sQSPollerPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SQSSendMessagePolicy -Value {
            $this._sQSSendMessagePolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionQueueSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sQSSendMessagePolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LambdaInvokePolicy -Value {
            $this._lambdaInvokePolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionFunctionSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lambdaInvokePolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DynamoDBCrudPolicy -Value {
            $this._dynamoDBCrudPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionTableSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dynamoDBCrudPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DynamoDBReadPolicy -Value {
            $this._dynamoDBReadPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionTableSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dynamoDBReadPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DynamoDBStreamReadPolicy -Value {
            $this._dynamoDBStreamReadPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionTableStreamSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._dynamoDBStreamReadPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SESSendBouncePolicy -Value {
            $this._sESSendBouncePolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionIdentitySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sESSendBouncePolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SESCrudPolicy -Value {
            $this._sESCrudPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionIdentitySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sESCrudPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SESBulkTemplatedCrudPolicy -Value {
            $this._sESBulkTemplatedCrudPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionIdentitySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sESBulkTemplatedCrudPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ElasticsearchHttpPostPolicy -Value {
            $this._elasticsearchHttpPostPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionDomainSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._elasticsearchHttpPostPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3ReadPolicy -Value {
            $this._s3ReadPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionBucketSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3ReadPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name S3CrudPolicy -Value {
            $this._s3CrudPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionBucketSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._s3CrudPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RekognitionNoDataAccessPolicy -Value {
            $this._rekognitionNoDataAccessPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionCollectionSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rekognitionNoDataAccessPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RekognitionReadPolicy -Value {
            $this._rekognitionReadPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionCollectionSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rekognitionReadPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RekognitionWriteOnlyAccessPolicy -Value {
            $this._rekognitionWriteOnlyAccessPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionCollectionSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._rekognitionWriteOnlyAccessPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SNSCrudPolicy -Value {
            $this._sNSCrudPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionTopicSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sNSCrudPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SNSPublishMessagePolicy -Value {
            $this._sNSPublishMessagePolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionTopicSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sNSPublishMessagePolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KinesisStreamReadPolicy -Value {
            $this._kinesisStreamReadPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionStreamSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kinesisStreamReadPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KinesisCrudPolicy -Value {
            $this._kinesisCrudPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionStreamSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kinesisCrudPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KMSDecryptPolicy -Value {
            $this._kMSDecryptPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionKeySAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kMSDecryptPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FilterLogEventsPolicy -Value {
            $this._filterLogEventsPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionLogGroupSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._filterLogEventsPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepFunctionsExecutionPolicy -Value {
            $this._stepFunctionsExecutionPolicy
        } -SecondValue {
            param([ValidateType(([SAMFunctionStateMachineSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stepFunctionsExecutionPolicy = $value
        }
    }

    SAMFunctionSAMPolicyTemplate() : base() {}
    SAMFunctionSAMPolicyTemplate([IDictionary] $props) : base($props) {}
    SAMFunctionSAMPolicyTemplate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionEmptySAMPT'"

class SAMFunctionEmptySAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionEmptySAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'



    hidden [void] _addAccessors() {
    }

    SAMFunctionEmptySAMPT() : base() {}
    SAMFunctionEmptySAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionEmptySAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionQueueSAMPT'"

class SAMFunctionQueueSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionQueueSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_queueName

    [string] $QueueName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueueName -Value {
            $this._queueName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._queueName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionQueueSAMPT() : base() {}
    SAMFunctionQueueSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionQueueSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionFunctionSAMPT'"

class SAMFunctionFunctionSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionFunctionSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_functionName

    [string] $FunctionName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionName -Value {
            $this._functionName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._functionName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionFunctionSAMPT() : base() {}
    SAMFunctionFunctionSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionFunctionSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionTableStreamSAMPT'"

class SAMFunctionTableStreamSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionTableStreamSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_tableName
    hidden [object] $_streamName

    [string] $TableName
    [string] $StreamName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TableName -Value {
            $this._tableName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tableName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StreamName -Value {
            $this._streamName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._streamName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionTableStreamSAMPT() : base() {}
    SAMFunctionTableStreamSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionTableStreamSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionTableSAMPT'"

class SAMFunctionTableSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionTableSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_tableName

    [string] $TableName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TableName -Value {
            $this._tableName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._tableName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionTableSAMPT() : base() {}
    SAMFunctionTableSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionTableSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionIdentitySAMPT'"

class SAMFunctionIdentitySAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionIdentitySAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_identityName

    [string] $IdentityName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdentityName -Value {
            $this._identityName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._identityName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionIdentitySAMPT() : base() {}
    SAMFunctionIdentitySAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionIdentitySAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionDomainSAMPT'"

class SAMFunctionDomainSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionDomainSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_domainName

    [string] $DomainName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DomainName -Value {
            $this._domainName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._domainName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionDomainSAMPT() : base() {}
    SAMFunctionDomainSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionDomainSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionBucketSAMPT'"

class SAMFunctionBucketSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionBucketSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_bucketName

    [string] $BucketName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BucketName -Value {
            $this._bucketName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucketName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionBucketSAMPT() : base() {}
    SAMFunctionBucketSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionBucketSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionCollectionSAMPT'"

class SAMFunctionCollectionSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionCollectionSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_collectionId

    [string] $CollectionId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CollectionId -Value {
            $this._collectionId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._collectionId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionCollectionSAMPT() : base() {}
    SAMFunctionCollectionSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionCollectionSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionTopicSAMPT'"

class SAMFunctionTopicSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionTopicSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_topicName

    [string] $TopicName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name TopicName -Value {
            $this._topicName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._topicName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionTopicSAMPT() : base() {}
    SAMFunctionTopicSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionTopicSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionStreamSAMPT'"

class SAMFunctionStreamSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionStreamSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_streamName

    [string] $StreamName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StreamName -Value {
            $this._streamName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._streamName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionStreamSAMPT() : base() {}
    SAMFunctionStreamSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionStreamSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionKeySAMPT'"

class SAMFunctionKeySAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionKeySAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_keyId

    [string] $KeyId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name KeyId -Value {
            $this._keyId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._keyId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionKeySAMPT() : base() {}
    SAMFunctionKeySAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionKeySAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionLogGroupSAMPT'"

class SAMFunctionLogGroupSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionLogGroupSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_logGroupName

    [string] $LogGroupName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogGroupName -Value {
            $this._logGroupName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logGroupName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionLogGroupSAMPT() : base() {}
    SAMFunctionLogGroupSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionLogGroupSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionStateMachineSAMPT'"

class SAMFunctionStateMachineSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionStateMachineSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_stateMachineName

    [string] $StateMachineName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StateMachineName -Value {
            $this._stateMachineName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stateMachineName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionStateMachineSAMPT() : base() {}
    SAMFunctionStateMachineSAMPT([IDictionary] $props) : base($props) {}
    SAMFunctionStateMachineSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionFunctionEnvironment'"

class SAMFunctionFunctionEnvironment : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionFunctionEnvironment'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object'

    hidden [object] $_variables

    [string] $Variables

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Variables -Value {
            $this._variables
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._variables = $value
        }
    }

    SAMFunctionFunctionEnvironment() : base() {}
    SAMFunctionFunctionEnvironment([IDictionary] $props) : base($props) {}
    SAMFunctionFunctionEnvironment([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionDeadLetterQueue'"

class SAMFunctionDeadLetterQueue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionDeadLetterQueue'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#deadletterqueue-object'

    hidden [object] $_type
    hidden [object] $_targetArn

    [string] $Type
    [string] $TargetArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetArn -Value {
            $this._targetArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionDeadLetterQueue() : base() {}
    SAMFunctionDeadLetterQueue([IDictionary] $props) : base($props) {}
    SAMFunctionDeadLetterQueue([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionDeploymentPreference'"

class SAMFunctionDeploymentPreference : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionDeploymentPreference'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#deploymentpreference-object'

    hidden [object] $_type
    hidden [object] $_alarms
    hidden [object] $_hooks
    hidden [object] $_role
    hidden [object] $_enabled

    [string] $Type
    [string[]] $Alarms
    [string] $Hooks
    [string] $Role
    [bool] $Enabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Alarms -Value {
            $this._alarms
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._alarms = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Hooks -Value {
            $this._hooks
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hooks = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Role -Value {
            $this._role
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._role = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Enabled -Value {
            $this._enabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enabled = $value
        }
    }

    SAMFunctionDeploymentPreference() : base() {}
    SAMFunctionDeploymentPreference([IDictionary] $props) : base($props) {}
    SAMFunctionDeploymentPreference([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionS3KeyFilter'"

class SAMFunctionS3KeyFilter : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionS3KeyFilter'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter.html'

    hidden [object] $_rules

    [SAMFunctionS3KeyFilterRule[]] $Rules

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Rules -Value {
            $this._rules
        } -SecondValue {
            param([ValidateType(([SAMFunctionS3KeyFilterRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._rules = $value
        }
    }

    SAMFunctionS3KeyFilter() : base() {}
    SAMFunctionS3KeyFilter([IDictionary] $props) : base($props) {}
    SAMFunctionS3KeyFilter([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionS3KeyFilterRule'"

class SAMFunctionS3KeyFilterRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionS3KeyFilterRule'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfiguration-config-filter-s3key-rules.html'

    hidden [object] $_name
    hidden [object] $_value

    [string] $Name
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionS3KeyFilterRule() : base() {}
    SAMFunctionS3KeyFilterRule([IDictionary] $props) : base($props) {}
    SAMFunctionS3KeyFilterRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunctionProvisionedConcurrencyConfig'"

class SAMFunctionProvisionedConcurrencyConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMFunctionProvisionedConcurrencyConfig'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#provisioned-concurrency-config-object'

    hidden [object] $_provisionedConcurrentExecutions

    [string] $ProvisionedConcurrentExecutions

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ProvisionedConcurrentExecutions -Value {
            $this._provisionedConcurrentExecutions
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._provisionedConcurrentExecutions = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMFunctionProvisionedConcurrencyConfig() : base() {}
    SAMFunctionProvisionedConcurrencyConfig([IDictionary] $props) : base($props) {}
    SAMFunctionProvisionedConcurrencyConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineLoggingConfiguration'"

class SAMStateMachineLoggingConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineLoggingConfiguration'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachine-loggingconfiguration.html'

    hidden [object] $_destinations
    hidden [object] $_includeExecutionData
    hidden [object] $_level

    [SAMStateMachineLogDestination[]] $Destinations
    [bool] $IncludeExecutionData
    [string] $Level

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Destinations -Value {
            $this._destinations
        } -SecondValue {
            param([ValidateType(([SAMStateMachineLogDestination], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._destinations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IncludeExecutionData -Value {
            $this._includeExecutionData
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._includeExecutionData = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Level -Value {
            $this._level
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._level = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineLoggingConfiguration() : base() {}
    SAMStateMachineLoggingConfiguration([IDictionary] $props) : base($props) {}
    SAMStateMachineLoggingConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineLogDestination'"

class SAMStateMachineLogDestination : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineLogDestination'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachine-logdestination.html#cfn-stepfunctions-statemachine-logdestination-cloudwatchlogsloggroup'

    hidden [object] $_cloudWatchLogsLogGroup

    [SAMStateMachineCloudWatchLogsLogGroup] $CloudWatchLogsLogGroup

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchLogsLogGroup -Value {
            $this._cloudWatchLogsLogGroup
        } -SecondValue {
            param([ValidateType(([SAMStateMachineCloudWatchLogsLogGroup], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudWatchLogsLogGroup = $value
        }
    }

    SAMStateMachineLogDestination() : base() {}
    SAMStateMachineLogDestination([IDictionary] $props) : base($props) {}
    SAMStateMachineLogDestination([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineCloudWatchLogsLogGroup'"

class SAMStateMachineCloudWatchLogsLogGroup : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineCloudWatchLogsLogGroup'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachine-logdestination-cloudwatchlogsloggroup.html'

    hidden [object] $_logGroupArn

    [string] $LogGroupArn

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogGroupArn -Value {
            $this._logGroupArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._logGroupArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineCloudWatchLogsLogGroup() : base() {}
    SAMStateMachineCloudWatchLogsLogGroup([IDictionary] $props) : base($props) {}
    SAMStateMachineCloudWatchLogsLogGroup([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMApiS3Location'"

class SAMApiS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMApiS3Location'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object'

    hidden [object] $_bucket
    hidden [object] $_key
    hidden [object] $_version

    [string] $Bucket
    [string] $Key
    [int] $Version

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    SAMApiS3Location() : base() {}
    SAMApiS3Location([IDictionary] $props) : base($props) {}
    SAMApiS3Location([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMApiAuth'"

class SAMApiAuth : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMApiAuth'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api-auth-object'

    hidden [object] $_defaultAuthorizer
    hidden [VSJson] $_authorizers

    [string] $DefaultAuthorizer
    [VSJson] $Authorizers

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultAuthorizer -Value {
            $this._defaultAuthorizer
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._defaultAuthorizer = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Authorizers -Value {
            $this._authorizers
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._authorizers = [VSJson]::Transform($value)
            Write-Debug $this._authorizers
        }
    }

    SAMApiAuth() : base() {}
    SAMApiAuth([IDictionary] $props) : base($props) {}
    SAMApiAuth([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMApiAccessLogSetting'"

class SAMApiAccessLogSetting : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMApiAccessLogSetting'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-stage-accesslogsetting.html'

    hidden [object] $_destinationArn
    hidden [object] $_format

    [string] $DestinationArn
    [string] $Format

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name DestinationArn -Value {
            $this._destinationArn
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._destinationArn = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Format -Value {
            $this._format
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._format = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMApiAccessLogSetting() : base() {}
    SAMApiAccessLogSetting([IDictionary] $props) : base($props) {}
    SAMApiAccessLogSetting([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMApiCorsConfiguration'"

class SAMApiCorsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMApiCorsConfiguration'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#cors-configuration'

    hidden [object] $_allowMethods
    hidden [object] $_allowHeaders
    hidden [object] $_allowOrigin
    hidden [object] $_maxAge
    hidden [object] $_allowCredentials

    [string] $AllowMethods
    [string] $AllowHeaders
    [string] $AllowOrigin
    [string] $MaxAge
    [bool] $AllowCredentials

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowMethods -Value {
            $this._allowMethods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allowMethods = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowHeaders -Value {
            $this._allowHeaders
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allowHeaders = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowOrigin -Value {
            $this._allowOrigin
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allowOrigin = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxAge -Value {
            $this._maxAge
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxAge = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllowCredentials -Value {
            $this._allowCredentials
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allowCredentials = $value
        }
    }

    SAMApiCorsConfiguration() : base() {}
    SAMApiCorsConfiguration([IDictionary] $props) : base($props) {}
    SAMApiCorsConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMSimpleTablePrimaryKey'"

class SAMSimpleTablePrimaryKey : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMSimpleTablePrimaryKey'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#primary-key-object'

    hidden [object] $_name
    hidden [object] $_type

    [string] $Name
    [string] $Type

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMSimpleTablePrimaryKey() : base() {}
    SAMSimpleTablePrimaryKey([IDictionary] $props) : base($props) {}
    SAMSimpleTablePrimaryKey([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMSimpleTableProvisionedThroughput'"

class SAMSimpleTableProvisionedThroughput : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMSimpleTableProvisionedThroughput'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html'

    hidden [object] $_readCapacityUnits
    hidden [object] $_writeCapacityUnits

    [int] $ReadCapacityUnits
    [int] $WriteCapacityUnits

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReadCapacityUnits -Value {
            $this._readCapacityUnits
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._readCapacityUnits = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WriteCapacityUnits -Value {
            $this._writeCapacityUnits
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._writeCapacityUnits = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    SAMSimpleTableProvisionedThroughput() : base() {}
    SAMSimpleTableProvisionedThroughput([IDictionary] $props) : base($props) {}
    SAMSimpleTableProvisionedThroughput([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMSimpleTableSSESpecification'"

class SAMSimpleTableSSESpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMSimpleTableSSESpecification'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html'

    hidden [object] $_sSEEnabled

    [bool] $SSEEnabled

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SSEEnabled -Value {
            $this._sSEEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sSEEnabled = $value
        }
    }

    SAMSimpleTableSSESpecification() : base() {}
    SAMSimpleTableSSESpecification([IDictionary] $props) : base($props) {}
    SAMSimpleTableSSESpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineIAMPolicyDocument'"

class SAMStateMachineIAMPolicyDocument : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineIAMPolicyDocument'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html'

    hidden [VSJson] $_statement

    [VSJson] $Statement

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statement -Value {
            $this._statement
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._statement = [VSJson]::Transform($value)
            Write-Debug $this._statement
        }
    }

    SAMStateMachineIAMPolicyDocument() : base() {}
    SAMStateMachineIAMPolicyDocument([IDictionary] $props) : base($props) {}
    SAMStateMachineIAMPolicyDocument([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineSAMPolicyTemplate'"

class SAMStateMachineSAMPolicyTemplate : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineSAMPolicyTemplate'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_lambdaInvokePolicy
    hidden [object] $_stepFunctionsExecutionPolicy

    [SAMStateMachineFunctionSAMPT] $LambdaInvokePolicy
    [SAMStateMachineStateMachineSAMPT] $StepFunctionsExecutionPolicy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name LambdaInvokePolicy -Value {
            $this._lambdaInvokePolicy
        } -SecondValue {
            param([ValidateType(([SAMStateMachineFunctionSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._lambdaInvokePolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepFunctionsExecutionPolicy -Value {
            $this._stepFunctionsExecutionPolicy
        } -SecondValue {
            param([ValidateType(([SAMStateMachineStateMachineSAMPT], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stepFunctionsExecutionPolicy = $value
        }
    }

    SAMStateMachineSAMPolicyTemplate() : base() {}
    SAMStateMachineSAMPolicyTemplate([IDictionary] $props) : base($props) {}
    SAMStateMachineSAMPolicyTemplate([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineStateMachineSAMPT'"

class SAMStateMachineStateMachineSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineStateMachineSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_stateMachineName

    [string] $StateMachineName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name StateMachineName -Value {
            $this._stateMachineName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._stateMachineName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineStateMachineSAMPT() : base() {}
    SAMStateMachineStateMachineSAMPT([IDictionary] $props) : base($props) {}
    SAMStateMachineStateMachineSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineFunctionSAMPT'"

class SAMStateMachineFunctionSAMPT : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineFunctionSAMPT'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/docs/policy_templates.rst'

    hidden [object] $_functionName

    [string] $FunctionName

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionName -Value {
            $this._functionName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._functionName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineFunctionSAMPT() : base() {}
    SAMStateMachineFunctionSAMPT([IDictionary] $props) : base($props) {}
    SAMStateMachineFunctionSAMPT([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineS3Location'"

class SAMStateMachineS3Location : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineS3Location'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object'

    hidden [object] $_bucket
    hidden [object] $_key
    hidden [object] $_version

    [string] $Bucket
    [string] $Key
    [int] $Version

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Bucket -Value {
            $this._bucket
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bucket = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineS3Location() : base() {}
    SAMStateMachineS3Location([IDictionary] $props) : base($props) {}
    SAMStateMachineS3Location([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineEventSource'"

class SAMStateMachineEventSource : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineEventSource'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#event-source-object'

    hidden [object] $_type
    hidden [object] $_properties

    [string] $Type
    [object] $Properties

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Type -Value {
            $this._type
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._type = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Properties -Value {
            $this._properties
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._properties = $value
        }
    }

    SAMStateMachineEventSource() : base() {}
    SAMStateMachineEventSource([IDictionary] $props) : base($props) {}
    SAMStateMachineEventSource([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineCloudWatchEventEvent'"

class SAMStateMachineCloudWatchEventEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineCloudWatchEventEvent'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-statemachine-cloudwatchevent.html'

    hidden [VSJson] $_pattern
    hidden [object] $_eventBusName
    hidden [object] $_input
    hidden [object] $_inputPath

    [VSJson] $Pattern
    [string] $EventBusName
    [string] $Input
    [string] $InputPath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Pattern -Value {
            $this._pattern
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._pattern = [VSJson]::Transform($value)
            Write-Debug $this._pattern
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventBusName -Value {
            $this._eventBusName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventBusName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Input -Value {
            $this._input
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._input = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InputPath -Value {
            $this._inputPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._inputPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineCloudWatchEventEvent() : base() {}
    SAMStateMachineCloudWatchEventEvent([IDictionary] $props) : base($props) {}
    SAMStateMachineCloudWatchEventEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineEventBridgeRuleEvent'"

class SAMStateMachineEventBridgeRuleEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineEventBridgeRuleEvent'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-statemachine-cloudwatchevent.html'

    hidden [VSJson] $_pattern
    hidden [object] $_eventBusName
    hidden [object] $_input
    hidden [object] $_inputPath

    [VSJson] $Pattern
    [string] $EventBusName
    [string] $Input
    [string] $InputPath

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Pattern -Value {
            $this._pattern
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this._pattern = [VSJson]::Transform($value)
            Write-Debug $this._pattern
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EventBusName -Value {
            $this._eventBusName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._eventBusName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Input -Value {
            $this._input
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._input = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InputPath -Value {
            $this._inputPath
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._inputPath = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineEventBridgeRuleEvent() : base() {}
    SAMStateMachineEventBridgeRuleEvent([IDictionary] $props) : base($props) {}
    SAMStateMachineEventBridgeRuleEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineScheduleEvent'"

class SAMStateMachineScheduleEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineScheduleEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#schedule'

    hidden [object] $_schedule
    hidden [object] $_input

    [string] $Schedule
    [string] $Input

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Schedule -Value {
            $this._schedule
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._schedule = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Input -Value {
            $this._input
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._input = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineScheduleEvent() : base() {}
    SAMStateMachineScheduleEvent([IDictionary] $props) : base($props) {}
    SAMStateMachineScheduleEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachineApiEvent'"

class SAMStateMachineApiEvent : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSSAMStateMachineApiEvent'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api'

    hidden [object] $_path
    hidden [object] $_method
    hidden [object] $_restApiId

    [string] $Path
    [string] $Method
    [string] $RestApiId

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Method -Value {
            $this._method
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._method = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RestApiId -Value {
            $this._restApiId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._restApiId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    SAMStateMachineApiEvent() : base() {}
    SAMStateMachineApiEvent([IDictionary] $props) : base($props) {}
    SAMStateMachineApiEvent([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMFunction'"

class SAMFunction : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSAMFunction'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction'

    hidden [object] $_condition

    [string] $Type = 'AWS::Serverless::Function'
    [string] $Handler
    [string] $Runtime
    [object] $CodeUri
    [string] $FunctionName
    [SAMFunctionFileSystemConfig[]] $FileSystemConfigs
    [string] $Description
    [int] $MemorySize
    [int] $Timeout
    [string] $Role
    [object] $Policies
    [string] $PermissionsBoundary
    [SAMFunctionFunctionEnvironment] $Environment
    [SAMFunctionVpcConfig] $VpcConfig
    [SAMFunctionEventSource] $Events
    [string] $Tags
    [string] $Tracing
    [string] $KmsKeyArn
    [SAMFunctionDeadLetterQueue] $DeadLetterQueue
    [SAMFunctionDeploymentPreference] $DeploymentPreference
    [string[]] $Layers
    [string] $AutoPublishAlias
    [int] $ReservedConcurrentExecutions
    [SAMFunctionProvisionedConcurrencyConfig] $ProvisionedConcurrencyConfig
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Handler -Value {
            $this.Properties['Handler']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Handler'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Runtime -Value {
            $this.Properties['Runtime']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Runtime'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CodeUri -Value {
            $this.Properties['CodeUri']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CodeUri'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FunctionName -Value {
            $this.Properties['FunctionName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['FunctionName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name FileSystemConfigs -Value {
            $this.Properties['FileSystemConfigs']
        } -SecondValue {
            param([ValidateType(([SAMFunctionFileSystemConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['FileSystemConfigs'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MemorySize -Value {
            $this.Properties['MemorySize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['MemorySize'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Timeout -Value {
            $this.Properties['Timeout']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Timeout'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Role -Value {
            $this.Properties['Role']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Role'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Policies -Value {
            $this.Properties['Policies']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Policies'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PermissionsBoundary -Value {
            $this.Properties['PermissionsBoundary']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PermissionsBoundary'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Environment -Value {
            $this.Properties['Environment']
        } -SecondValue {
            param([ValidateType(([SAMFunctionFunctionEnvironment], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Environment'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcConfig -Value {
            $this.Properties['VpcConfig']
        } -SecondValue {
            param([ValidateType(([SAMFunctionVpcConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Events -Value {
            $this.Properties['Events']
        } -SecondValue {
            param([ValidateType(([SAMFunctionEventSource], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Events'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tracing -Value {
            $this.Properties['Tracing']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tracing'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KmsKeyArn -Value {
            $this.Properties['KmsKeyArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KmsKeyArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeadLetterQueue -Value {
            $this.Properties['DeadLetterQueue']
        } -SecondValue {
            param([ValidateType(([SAMFunctionDeadLetterQueue], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeadLetterQueue'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DeploymentPreference -Value {
            $this.Properties['DeploymentPreference']
        } -SecondValue {
            param([ValidateType(([SAMFunctionDeploymentPreference], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DeploymentPreference'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Layers -Value {
            $this.Properties['Layers']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Layers'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoPublishAlias -Value {
            $this.Properties['AutoPublishAlias']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoPublishAlias'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReservedConcurrentExecutions -Value {
            $this.Properties['ReservedConcurrentExecutions']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ReservedConcurrentExecutions'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ProvisionedConcurrencyConfig -Value {
            $this.Properties['ProvisionedConcurrencyConfig']
        } -SecondValue {
            param([ValidateType(([SAMFunctionProvisionedConcurrencyConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ProvisionedConcurrencyConfig'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    SAMFunction() : base() {}
    SAMFunction([IDictionary] $props) : base($props) {}
    SAMFunction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMApi'"

class SAMApi : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSAMApi'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi'

    hidden [object] $_condition

    [string] $Type = 'AWS::Serverless::Api'
    [string] $Name
    [string] $StageName
    [object] $DefinitionUri
    [VSJson] $DefinitionBody
    [bool] $CacheClusterEnabled
    [string] $CacheClusterSize
    [string] $Variables
    [VSJson[]] $MethodSettings
    [string] $EndpointConfiguration
    [string[]] $BinaryMediaTypes
    [object] $Cors
    [SAMApiAuth] $Auth
    [bool] $TracingEnabled
    [SAMApiAccessLogSetting] $AccessLogSetting
    [string] $OpenApiVersion
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StageName -Value {
            $this.Properties['StageName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StageName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefinitionUri -Value {
            $this.Properties['DefinitionUri']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefinitionUri'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefinitionBody -Value {
            $this.Properties['DefinitionBody']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['DefinitionBody'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['DefinitionBody']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheClusterEnabled -Value {
            $this.Properties['CacheClusterEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CacheClusterEnabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CacheClusterSize -Value {
            $this.Properties['CacheClusterSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CacheClusterSize'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Variables -Value {
            $this.Properties['Variables']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Variables'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MethodSettings -Value {
            $this.Properties['MethodSettings']
        } -SecondValue {
            param([ValidateType(([VSJson], [string], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['MethodSettings'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EndpointConfiguration -Value {
            $this.Properties['EndpointConfiguration']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EndpointConfiguration'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BinaryMediaTypes -Value {
            $this.Properties['BinaryMediaTypes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['BinaryMediaTypes'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Cors -Value {
            $this.Properties['Cors']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Cors'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Auth -Value {
            $this.Properties['Auth']
        } -SecondValue {
            param([ValidateType(([SAMApiAuth], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Auth'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TracingEnabled -Value {
            $this.Properties['TracingEnabled']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TracingEnabled'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AccessLogSetting -Value {
            $this.Properties['AccessLogSetting']
        } -SecondValue {
            param([ValidateType(([SAMApiAccessLogSetting], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AccessLogSetting'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OpenApiVersion -Value {
            $this.Properties['OpenApiVersion']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['OpenApiVersion'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    SAMApi() : base() {}
    SAMApi([IDictionary] $props) : base($props) {}
    SAMApi([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMApplication'"

class SAMApplication : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSAMApplication'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapplication'

    hidden [object] $_condition

    [string] $Type = 'AWS::Serverless::Application'
    [object] $Location
    [string] $Parameters
    [string[]] $NotificationArns
    [string] $Tags
    [int] $TimeoutInMinutes
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Location -Value {
            $this.Properties['Location']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Location'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this.Properties['Parameters']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Parameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name NotificationArns -Value {
            $this.Properties['NotificationArns']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['NotificationArns'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutInMinutes -Value {
            $this.Properties['TimeoutInMinutes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TimeoutInMinutes'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    SAMApplication() : base() {}
    SAMApplication([IDictionary] $props) : base($props) {}
    SAMApplication([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMSimpleTable'"

class SAMSimpleTable : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSAMSimpleTable'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlesssimpletable'

    hidden [object] $_condition

    [string] $Type = 'AWS::Serverless::SimpleTable'
    [SAMSimpleTablePrimaryKey] $PrimaryKey
    [SAMSimpleTableProvisionedThroughput] $ProvisionedThroughput
    [string] $Tags
    [string] $TableName
    [SAMSimpleTableSSESpecification] $SSESpecification
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name PrimaryKey -Value {
            $this.Properties['PrimaryKey']
        } -SecondValue {
            param([ValidateType(([SAMSimpleTablePrimaryKey], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['PrimaryKey'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ProvisionedThroughput -Value {
            $this.Properties['ProvisionedThroughput']
        } -SecondValue {
            param([ValidateType(([SAMSimpleTableProvisionedThroughput], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ProvisionedThroughput'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TableName -Value {
            $this.Properties['TableName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TableName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SSESpecification -Value {
            $this.Properties['SSESpecification']
        } -SecondValue {
            param([ValidateType(([SAMSimpleTableSSESpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SSESpecification'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    SAMSimpleTable() : base() {}
    SAMSimpleTable([IDictionary] $props) : base($props) {}
    SAMSimpleTable([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMLayerVersion'"

class SAMLayerVersion : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSAMLayerVersion'
    hidden [string] $_awsDocumentation = 'https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlesslayerversion'

    hidden [object] $_condition

    [string] $Type = 'AWS::Serverless::LayerVersion'
    [string] $LayerName
    [string] $Description
    [object] $ContentUri
    [string[]] $CompatibleRuntimes
    [string] $LicenseInfo
    [string] $RetentionPolicy
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name LayerName -Value {
            $this.Properties['LayerName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LayerName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ContentUri -Value {
            $this.Properties['ContentUri']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ContentUri'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CompatibleRuntimes -Value {
            $this.Properties['CompatibleRuntimes']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['CompatibleRuntimes'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LicenseInfo -Value {
            $this.Properties['LicenseInfo']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LicenseInfo'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RetentionPolicy -Value {
            $this.Properties['RetentionPolicy']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RetentionPolicy'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    SAMLayerVersion() : base() {}
    SAMLayerVersion([IDictionary] $props) : base($props) {}
    SAMLayerVersion([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'SAMStateMachine'"

class SAMStateMachine : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSSAMStateMachine'
    hidden [string] $_awsDocumentation = 'https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Serverless::StateMachine'
    [VSJson] $Definition
    [string] $DefinitionSubstitutions
    [object] $DefinitionUri
    [SAMStateMachineEventSource] $Events
    [SAMStateMachineLoggingConfiguration] $Logging
    [string] $Name
    [object] $Policies
    [string] $Role
    [string] $Tags
    [string] $StateMachineType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Definition -Value {
            $this.Properties['Definition']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['Definition'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['Definition']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefinitionSubstitutions -Value {
            $this.Properties['DefinitionSubstitutions']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefinitionSubstitutions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefinitionUri -Value {
            $this.Properties['DefinitionUri']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefinitionUri'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Events -Value {
            $this.Properties['Events']
        } -SecondValue {
            param([ValidateType(([SAMStateMachineEventSource], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Events'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Logging -Value {
            $this.Properties['Logging']
        } -SecondValue {
            param([ValidateType(([SAMStateMachineLoggingConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Logging'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Policies -Value {
            $this.Properties['Policies']
        } -SecondValue {
            param([ValidateType(([object], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Policies'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Role -Value {
            $this.Properties['Role']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Role'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Tags'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StateMachineType -Value {
            $this.Properties['StateMachineType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StateMachineType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    SAMStateMachine() : base() {}
    SAMStateMachine([IDictionary] $props) : base($props) {}
    SAMStateMachine([psobject] $props) : base($props) {}
}