{
  "Description": "(SO0241-CMS.1) connected-mobility-solution-on-aws - cms-vehicle-simulator. Version v2.1.5",
  "Transform": "AWS::Serverless-2016-10-31",
  "AWSTemplateFormatVersion": "2010-09-09",
  "Metadata": {
    "AWS::CloudFormation::Interface": {
      "ParameterGroups": [
        {
          "Label": {
            "default": "Console access"
          },
          "Parameters": [
            "AdminUserEmail"
          ]
        }
      ],
      "ParameterLabels": {
        "AdminUserEmail": {
          "default": "* Console Administrator Email"
        }
      }
    }
  },
  "Mappings": {
    "Solution": {
      "AssetsConfig": {
        "S3AssetBucketBaseName": "solutions",
        "S3AssetKeyPrefix": "connected-mobility-solution-on-aws/v2.1.5/cms-vehicle-simulator"
      }
    }
  },
  "Resources": {
    "appregistryconstructappregistryapplicationAC1A319B": {
      "Type": "AWS::ServiceCatalogAppRegistry::Application",
      "Properties": {
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-",
              {
                "Ref": "AWS::Region"
              },
              "-",
              {
                "Ref": "AWS::AccountId"
              }
            ]
          ]
        },
        "Tags": {
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:ModuleName": "cms-vehicle-simulator",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/app-registry-construct/app-registry-application"
      }
    },
    "appregistryconstructdefaultapplicationattributes8FF6B3DB": {
      "Type": "AWS::ServiceCatalogAppRegistry::AttributeGroup",
      "Properties": {
        "Attributes": {
          "ApplicationType": "AWS-Solutions",
          "Version": "v2.1.5",
          "SolutionID": "SO0241",
          "SolutionName": "connected-mobility-solution-on-aws"
        },
        "Description": "Attribute group for solution information",
        "Name": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-",
              {
                "Ref": "AWS::Region"
              },
              "-",
              {
                "Ref": "AWS::AccountId"
              }
            ]
          ]
        },
        "Tags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:ModuleName": "cms-vehicle-simulator",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/app-registry-construct/default-application-attributes"
      }
    },
    "appregistryconstructappregistryapplicationattributeassociation802A10B5": {
      "Type": "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation",
      "Properties": {
        "Application": {
          "Fn::GetAtt": [
            "appregistryconstructappregistryapplicationAC1A319B",
            "Id"
          ]
        },
        "AttributeGroup": {
          "Fn::GetAtt": [
            "appregistryconstructdefaultapplicationattributes8FF6B3DB",
            "Id"
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/app-registry-construct/app-registry-application-attribute-association"
      }
    },
    "moduleinputsconstructvpcnamecustomresource12726E51": {
      "Type": "Custom::SsmParameters",
      "Properties": {
        "ServiceToken": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/config/aws-resource-lookup-lambda/arn}}"
            ]
          ]
        },
        "Resource": "SsmParameters",
        "ParameterName": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/config/vpc/name"
            ]
          ]
        }
      },
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/module-inputs-construct/vpc-name-custom-resource/Default"
      }
    },
    "ssmappuniqueidregistermodule9C5C2C5D": {
      "Type": "AWS::SSM::Parameter",
      "Properties": {
        "Description": "SSM parameter to register a module with an app unique ID.",
        "Name": {
          "Fn::Join": [
            "",
            [
              "/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "/cms-vehicle-simulator"
            ]
          ]
        },
        "Tags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:ModuleName": "cms-vehicle-simulator",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Type": "String",
        "Value": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/",
              {
                "Ref": "AppUniqueId"
              },
              "}}"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/ssm-app-unique-id-register-module/Resource"
      }
    },
    "cmsvehiclesimulatorcdklambdasvpcconstructsecuritygroupE8006040": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-vehicle-simulator/cms-vehicle-simulator/cdk-lambdas-vpc-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cdk-lambdas-vpc-construct/security-group/Resource"
      }
    },
    "cmsvehiclesimulatorstorageconstructvssimulationstable298F37DD": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "sim_id",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "sim_id",
            "KeyType": "HASH"
          }
        ],
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "SSEEnabled": true
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/storage-construct/vs-simulations-table/Resource"
      }
    },
    "cmsvehiclesimulatorstorageconstructvsdevicetypestable74C0B6F1": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "type_id",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "type_id",
            "KeyType": "HASH"
          }
        ],
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "SSEEnabled": true
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/storage-construct/vs-device-types-table/Resource"
      }
    },
    "cmsvehiclesimulatorstorageconstructvstemplatestableE83BA6AA": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "template_id",
            "AttributeType": "S"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "KeySchema": [
          {
            "AttributeName": "template_id",
            "KeyType": "HASH"
          }
        ],
        "PointInTimeRecoverySpecification": {
          "PointInTimeRecoveryEnabled": true
        },
        "SSESpecification": {
          "SSEEnabled": true
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/storage-construct/vs-templates-table/Resource"
      }
    },
    "cmsvehiclesimulatordependencylayerconstructlambdadependencylayerversionA3429E38": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "CompatibleArchitectures": [
          "x86_64",
          "arm64"
        ],
        "CompatibleRuntimes": [
          "python3.12"
        ],
        "Content": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset2a7a4c1dc6edd060f9a42b82d61f81fe8a2e12bcb993024483818d107696ad3e.zip"
              ]
            ]
          }
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/dependency-layer-construct/lambda-dependency-layer-version/Resource",
        "aws:asset:path": "asset.2a7a4c1dc6edd060f9a42b82d61f81fe8a2e12bcb993024483818d107696ad3e",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Content"
      }
    },
    "cmsvehiclesimulatorcustomresourceconstructlambdarole96B82A97": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-custom-resource"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-custom-resource:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-logs-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/custom-resource-construct/lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-vehicle-simulator-custom-resource:log-stream:*",
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AcdpUniqueId>-vehicle-simulator-custom-resource:log-stream:*"
              ],
              "reason": "Log retention lambda uses policies that require wildcard permissions"
            },
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*",
                "Resource::*"
              ],
              "reason": "ec2 Network Interfaces permissions need to be wildcard"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorcustomresourceconstructsecuritygroup7A3C4A3E": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-vehicle-simulator/cms-vehicle-simulator/custom-resource-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/custom-resource-construct/security-group/Resource"
      }
    },
    "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset52794f68c003825f8d164aa393b4d400ad4be444d773d68bf13d20410f381bc3.zip"
              ]
            ]
          }
        },
        "Environment": {
          "Variables": {
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.1/v2.1.5"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-vehicle-simulator-custom-resource"
            ]
          ]
        },
        "Handler": "function.main.handler",
        "Layers": [
          {
            "Ref": "cmsvehiclesimulatordependencylayerconstructlambdadependencylayerversionA3429E38"
          }
        ],
        "MemorySize": 1024,
        "Role": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorcustomresourceconstructlambdarole96B82A97",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 300,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorcustomresourceconstructsecuritygroup7A3C4A3E",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorcustomresourceconstructlambdarole96B82A97",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/custom-resource-construct/lambda-function/Resource",
        "aws:asset:path": "asset.52794f68c003825f8d164aa393b4d400ad4be444d773d68bf13d20410f381bc3.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorcustomresourceconstructlambdafunctionLogRetentionD7F7CAE6": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/custom-resource-construct/lambda-function/LogRetention/Resource"
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructlogbucket2F95631C": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "AccessControl": "LogDeliveryWrite",
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "LifecycleConfiguration": {
          "Rules": [
            {
              "Id": "expire-current-version-and-delete-old-objects",
              "Status": "Enabled",
              "ExpirationInDays": 90,
              "NoncurrentVersionExpirationInDays": 1,
              "AbortIncompleteMultipartUpload": {
                "DaysAfterInitiation": 1
              }
            }
          ]
        },
        "OwnershipControls": {
          "Rules": [
            {
              "ObjectOwnership": "ObjectWriter"
            }
          ]
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/log-bucket/Resource"
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructlogbucketPolicy5232FA4C": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "cmsvehiclesimulatorcloudfrontconstructlogbucket2F95631C"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmsvehiclesimulatorcloudfrontconstructlogbucket2F95631C",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmsvehiclesimulatorcloudfrontconstructlogbucket2F95631C",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/log-bucket/Policy/Resource"
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "LifecycleConfiguration": {
          "Rules": [
            {
              "NoncurrentVersionTransitions": [
                {
                  "StorageClass": "GLACIER",
                  "TransitionInDays": 90
                }
              ],
              "Status": "Enabled"
            }
          ]
        },
        "LoggingConfiguration": {
          "DestinationBucketName": {
            "Ref": "cmsvehiclesimulatorcloudfrontconstructlogbucket2F95631C"
          },
          "LogFilePrefix": "console-s3/"
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/distribution/S3Bucket/Resource"
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructdistributionS3BucketPolicy54189606": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "s3:GetObject",
              "Condition": {
                "StringEquals": {
                  "AWS:SourceArn": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":cloudfront::",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":distribution/",
                        {
                          "Ref": "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B"
                        }
                      ]
                    ]
                  }
                }
              },
              "Effect": "Allow",
              "Principal": {
                "Service": "cloudfront.amazonaws.com"
              },
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                        "Arn"
                      ]
                    },
                    "/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/distribution/S3Bucket/Policy/Resource",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "F16",
              "reason": "Public website bucket policy requires a wildcard principal"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontOac5BA33F46": {
      "Type": "AWS::CloudFront::OriginAccessControl",
      "Properties": {
        "OriginAccessControlConfig": {
          "Description": "Origin access control provisioned by aws-cloudfront-s3",
          "Name": {
            "Fn::Join": [
              "",
              [
                "aws-cloudfront-s3-distution-",
                {
                  "Fn::Select": [
                    2,
                    {
                      "Fn::Split": [
                        "/",
                        {
                          "Ref": "AWS::StackId"
                        }
                      ]
                    }
                  ]
                }
              ]
            ]
          },
          "OriginAccessControlOriginType": "s3",
          "SigningBehavior": "always",
          "SigningProtocol": "sigv4"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/distribution/CloudFrontOac"
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructdistributionResponseHeadersPolicyAC559DA5": {
      "Type": "AWS::CloudFront::ResponseHeadersPolicy",
      "Properties": {
        "ResponseHeadersPolicyConfig": {
          "Comment": "Response header policy for CMS Vehicle Simulator cloudfront distribution",
          "CustomHeadersConfig": {
            "Items": [
              {
                "Header": "Cache-Control",
                "Override": true,
                "Value": "no-store, no-cache"
              },
              {
                "Header": "Pragma",
                "Override": true,
                "Value": "no-cache"
              }
            ]
          },
          "Name": {
            "Fn::Join": [
              "",
              [
                {
                  "Ref": "AppUniqueId"
                },
                "-vehicle-simulator-",
                {
                  "Ref": "AWS::Region"
                },
                "-response-header-policy"
              ]
            ]
          },
          "SecurityHeadersConfig": {
            "ContentSecurityPolicy": {
              "ContentSecurityPolicy": "upgrade-insecure-requests;default-src 'none';object-src 'none';base-uri 'none';img-src 'self' https://*.amazonaws.com data: blob:;script-src 'self';style-src 'self' 'unsafe-inline' https:;connect-src 'self' wss://*.amazonaws.com https://*.amazonaws.com;font-src 'self' https:;manifest-src 'self';frame-ancestors 'none';",
              "Override": true
            },
            "ContentTypeOptions": {
              "Override": true
            },
            "FrameOptions": {
              "FrameOption": "DENY",
              "Override": true
            },
            "ReferrerPolicy": {
              "Override": true,
              "ReferrerPolicy": "same-origin"
            },
            "StrictTransportSecurity": {
              "AccessControlMaxAgeSec": 47304000,
              "IncludeSubdomains": true,
              "Override": true
            }
          }
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/distribution/ResponseHeadersPolicy/Resource"
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B": {
      "Type": "AWS::CloudFront::Distribution",
      "Properties": {
        "DistributionConfig": {
          "Comment": "CMS Vehicle Simulator Distribution",
          "CustomErrorResponses": [
            {
              "ErrorCode": 403,
              "ResponseCode": 200,
              "ResponsePagePath": "/index.html"
            },
            {
              "ErrorCode": 404,
              "ResponseCode": 200,
              "ResponsePagePath": "/index.html"
            }
          ],
          "DefaultCacheBehavior": {
            "CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6",
            "Compress": true,
            "ResponseHeadersPolicyId": {
              "Ref": "cmsvehiclesimulatorcloudfrontconstructdistributionResponseHeadersPolicyAC559DA5"
            },
            "TargetOriginId": "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionOrigin13B02EEDC",
            "ViewerProtocolPolicy": "redirect-to-https"
          },
          "DefaultRootObject": "index.html",
          "Enabled": true,
          "HttpVersion": "http2",
          "IPV6Enabled": true,
          "Logging": {
            "Bucket": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorcloudfrontconstructlogbucket2F95631C",
                "RegionalDomainName"
              ]
            },
            "Prefix": "console-cf/"
          },
          "Origins": [
            {
              "DomainName": {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                  "RegionalDomainName"
                ]
              },
              "Id": "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionOrigin13B02EEDC",
              "OriginAccessControlId": {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontOac5BA33F46",
                  "Id"
                ]
              },
              "S3OriginConfig": {
                "OriginAccessIdentity": ""
              }
            }
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/distribution/CloudFrontDistribution/Resource",
        "cfn_nag": {
          "rules_to_suppress": [
            {
              "id": "W70",
              "reason": "Since the distribution uses the CloudFront domain name, CloudFront automatically sets the security policy to TLSv1 regardless of the value of MinimumProtocolVersion"
            }
          ]
        },
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-CFR1",
              "reason": "Not providing geo restriction functionality for vehicle simulator"
            },
            {
              "id": "AwsSolutions-CFR4",
              "reason": "Since the distribution uses the CloudFront domain name, CloudFront automatically sets the security policy to TLSv1 regardless of the value of MinimumProtocolVersion"
            },
            {
              "id": "AwsSolutions-CFR2",
              "reason": "Ignore Web Application Firewall for now"
            },
            {
              "id": "AwsSolutions-CFR7",
              "reason": "False alarm. The AWS-cloudfront-s3 solutions construct provides Origin-Access-Control by default."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketEncryption": {
          "ServerSideEncryptionConfiguration": [
            {
              "ServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
              }
            }
          ]
        },
        "LoggingConfiguration": {
          "DestinationBucketName": {
            "Ref": "cmsvehiclesimulatorcloudfrontconstructlogbucket2F95631C"
          },
          "LogFilePrefix": "routes-bucket-access/"
        },
        "PublicAccessBlockConfiguration": {
          "BlockPublicAcls": true,
          "BlockPublicPolicy": true,
          "IgnorePublicAcls": true,
          "RestrictPublicBuckets": true
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VersioningConfiguration": {
          "Status": "Enabled"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/routes-bucket/Resource"
      }
    },
    "cmsvehiclesimulatorcloudfrontconstructroutesbucketPolicy84406AF0": {
      "Type": "AWS::S3::BucketPolicy",
      "Properties": {
        "Bucket": {
          "Ref": "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D"
        },
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "s3:*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": "*",
              "Condition": {
                "Bool": {
                  "aws:SecureTransport": "false"
                }
              },
              "Effect": "Deny",
              "Principal": {
                "AWS": "*"
              },
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ],
              "Sid": "HttpsOnly"
            }
          ],
          "Version": "2012-10-17"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cloudfront-construct/routes-bucket/Policy/Resource"
      }
    },
    "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6": {
      "Type": "AWS::Cognito::UserPool",
      "Properties": {
        "AccountRecoverySetting": {
          "RecoveryMechanisms": [
            {
              "Name": "verified_phone_number",
              "Priority": 1
            },
            {
              "Name": "verified_email",
              "Priority": 2
            }
          ]
        },
        "AdminCreateUserConfig": {
          "AllowAdminCreateUserOnly": true,
          "InviteMessageTemplate": {
            "EmailMessage": {
              "Fn::Join": [
                "",
                [
                  "\n                    <p>\n                        You are invited to join CMS Vehicle Simulator.<br />\n                        https://",
                  {
                    "Fn::GetAtt": [
                      "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                      "DomainName"
                    ]
                  },
                  "\n                    </p>\n                    <p>\n                        Please sign in to CMS Vehicle Simulator using the temporary credentials below:<br />\n                        Username: <strong>{username}</strong><br />Password: <strong>{####}</strong>\n                    </p>\n                "
                ]
              ]
            },
            "EmailSubject": "[CMS Vehicle Simulator] Login information"
          }
        },
        "AutoVerifiedAttributes": [
          "email"
        ],
        "EmailVerificationMessage": "The verification code to your new account is {####}",
        "EmailVerificationSubject": "Verify your new account",
        "Policies": {
          "PasswordPolicy": {
            "MinimumLength": 12,
            "RequireLowercase": true,
            "RequireNumbers": true,
            "RequireSymbols": true,
            "RequireUppercase": true
          }
        },
        "SmsVerificationMessage": "The verification code to your new account is {####}",
        "UserPoolName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-user-pool"
            ]
          ]
        },
        "UserPoolTags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-vehicle-simulator",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "UsernameAttributes": [
          "email"
        ],
        "VerificationMessageTemplate": {
          "DefaultEmailOption": "CONFIRM_WITH_CODE",
          "EmailMessage": "The verification code to your new account is {####}",
          "EmailSubject": "Verify your new account",
          "SmsMessage": "The verification code to your new account is {####}"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cognito-construct/user-pool/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-COG2",
              "reason": "Vehicle Simulator does not require MFA because it does not handle customer data or communicate with the rest of the solution."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorcognitoconstructuserpoolclient67539730": {
      "Type": "AWS::Cognito::UserPoolClient",
      "Properties": {
        "AccessTokenValidity": 60,
        "AllowedOAuthFlows": [
          "code"
        ],
        "AllowedOAuthFlowsUserPoolClient": true,
        "AllowedOAuthScopes": [
          "profile",
          "phone",
          "email",
          "openid",
          "aws.cognito.signin.user.admin"
        ],
        "AuthSessionValidity": 3,
        "CallbackURLs": [
          "https://example.com"
        ],
        "ClientName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              "-userpool-client"
            ]
          ]
        },
        "EnableTokenRevocation": true,
        "GenerateSecret": false,
        "IdTokenValidity": 60,
        "PreventUserExistenceErrors": "ENABLED",
        "RefreshTokenValidity": 120,
        "SupportedIdentityProviders": [
          "COGNITO"
        ],
        "TokenValidityUnits": {
          "AccessToken": "minutes",
          "IdToken": "minutes",
          "RefreshToken": "minutes"
        },
        "UserPoolId": {
          "Ref": "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cognito-construct/user-pool-client/Resource"
      }
    },
    "cmsvehiclesimulatorcognitoconstructidentitypool7554F769": {
      "Type": "AWS::Cognito::IdentityPool",
      "Properties": {
        "AllowUnauthenticatedIdentities": false,
        "CognitoIdentityProviders": [
          {
            "ClientId": {
              "Ref": "cmsvehiclesimulatorcognitoconstructuserpoolclient67539730"
            },
            "ProviderName": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6",
                "ProviderName"
              ]
            },
            "ServerSideTokenCheck": false
          }
        ],
        "IdentityPoolTags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cognito-construct/identity-pool"
      }
    },
    "cmsvehiclesimulatorcognitoconstructcustomresourcepolicyB3B28CFC": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "cognito-idp:AdminCreateUser",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6",
                  "Arn"
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmsvehiclesimulatorcognitoconstructcustomresourcepolicyB3B28CFC",
        "Roles": [
          {
            "Ref": "cmsvehiclesimulatorcustomresourceconstructlambdarole96B82A97"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cognito-construct/custom-resource-policy/Resource"
      }
    },
    "cmsvehiclesimulatorcognitoconstructconsolecognitouser59778E59": {
      "Type": "Custom::CreateUserpoolUser",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969",
            "Arn"
          ]
        },
        "Resource": "CreateUserpoolUser",
        "UserpoolId": {
          "Ref": "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6"
        },
        "DesiredDeliveryMediums": [
          "EMAIL"
        ],
        "ForceAliasCreation": "true",
        "Username": {
          "Ref": "AdminUserEmail"
        },
        "UserAttributes": [
          {
            "Name": "email",
            "Value": {
              "Ref": "AdminUserEmail"
            }
          },
          {
            "Name": "email_verified",
            "Value": true
          }
        ]
      },
      "DependsOn": [
        "cmsvehiclesimulatorcognitoconstructcustomresourcepolicyB3B28CFC",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/cognito-construct/console-cognito-user/Default"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructcustomresourcepolicy91808831": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "iot:CreateThingGroup",
                "iot:TagResource"
              ],
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmsvehiclesimulatorsimulatorconstructcustomresourcepolicy91808831",
        "Roles": [
          {
            "Ref": "cmsvehiclesimulatorcustomresourceconstructlambdarole96B82A97"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/custom-resource-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "iot:CreateThingGroup permissions are given to the custom resource lambda before creation of subsequent resources."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsimulatorthinggroupA18F209C": {
      "Type": "Custom::CreateIoTThingGroup",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969",
            "Arn"
          ]
        },
        "Resource": "CreateIoTThingGroup",
        "ThingGroupName": "cms-simulated-vehicle"
      },
      "DependsOn": [
        "cmsvehiclesimulatorsimulatorconstructcustomresourcepolicy91808831",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/simulator-thing-group/Default"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambdaroleC6FC5E08": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "s3:GetObject",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        {
                          "Fn::GetAtt": [
                            "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D",
                            "Arn"
                          ]
                        },
                        "/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "s3-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "dynamodb:GetItem",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::GetAtt": [
                      "cmsvehiclesimulatorstorageconstructvssimulationstable298F37DD",
                      "Arn"
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "dynamodb-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "iot:Publish",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":topic/cms/data/simulated/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "iot-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-simulator"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-simulator:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-logs-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-vpc-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/simulator-engine-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions ec2:CreateNetworkInterface, ec2:DescribeNetworkInterfaces and ec2:DeleteNetworkInterface are allowed to create new network interfaces. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it."
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:topic/cms/data/simulated/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Simulator lambda is allowed to publish to all iot topics with cms/data/simulated prefix on this account"
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-vehicle-simulator-simulator:log-stream:*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Log stream has to be a wildcard"
            },
            {
              "appliesTo": [
                "Resource::<cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D.Arn>/*",
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "GetObject action requires resource wildcard to access all objects in bucket"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructprovisioninglambdaroleE9ECED7F": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "iot:AttachThingPrincipal",
                    "iot:CreateKeysAndCertificate"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                },
                {
                  "Action": [
                    "iot:CreateThing",
                    "iot:DescribeThing"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":thing/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "iot:AddThingToThingGroup",
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":iot:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":thing/*"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":iot:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":thinggroup/*"
                        ]
                      ]
                    }
                  ]
                },
                {
                  "Action": "iot:CreatePolicy",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":policy/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "iot:AttachPolicy",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":cert/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "iot-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "secretsmanager:CreateSecret",
                    "secretsmanager:TagResource"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":secretsmanager:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":secret:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "secrets-manager-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-provisioning"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-provisioning:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-logs-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-vpc-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/provisioning-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions ec2:CreateNetworkInterface, ec2:DescribeNetworkInterfaces and ec2:DeleteNetworkInterface are allowed to create new network interfaces. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it."
            },
            {
              "appliesTo": [
                "Resource::<simulatorconstructprovisioningbucketEBD82590.Arn>/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "The four actions s3:DeleteObject, s3:GetObject, s3:PutObject, s3:PutObjectAcl are allowed on all items inside the provisioning bucket"
            },
            {
              "appliesTo": [
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions iot:CreateKeysAndCertificate and iot:AttachThingPrincipal does not support resource specific permission"
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:thing/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:thinggroup/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions iot:CreateThing, iot:DescrieThing and iot:AddThingToThingGroup are allowed to create any new thing and add it to any thing group. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it and hence lambda will always only perform resources created by itself."
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:policy/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions iot:CreatePolicy is allowed to create new policies. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it and hence lambda will always only perform resources created by itself."
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:cert/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions iot:AttachPolicy is allowed to certify any resource in iot core. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it and hence lambda will always only perform resources created by itself."
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:secretsmanager:<AWS::Region>:<AWS::AccountId>:secret:*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions secretsmanager:CreateSecret and secretsmanager:TagResource are allowed to create new secrets and tag them. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it and hence lambda will always only perform resources created by itself."
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-vehicle-simulator-provisioning:log-stream:*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Log stream has to be a wildcard"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructcleanuplambdarole0E4889DE": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "iot:DeleteThing",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":thing/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "iot:DeletePolicy",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":policy/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "iot:DeleteCertificate",
                    "iot:DetachPolicy"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":cert/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "iot:DetachThingPrincipal",
                    "iot:ListPrincipalPolicies",
                    "iot:ListThingPrincipals",
                    "iot:ListThings"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "iot-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "secretsmanager:DeleteSecret",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":secretsmanager:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":secret:vs-device/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "secrets-manager-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "tag:GetResources",
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "tagging-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-cleanup"
                        ]
                      ]
                    },
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":logs:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":log-group:/aws/lambda/",
                          {
                            "Ref": "AppUniqueId"
                          },
                          "-vehicle-simulator-cleanup:log-stream:*"
                        ]
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-logs-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-vpc-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/cleanup-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions ec2:CreateNetworkInterface, ec2:DescribeNetworkInterfaces and ec2:DeleteNetworkInterface are allowed to create new network interfaces. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it."
            },
            {
              "appliesTo": [
                "Resource::<simulatorconstructprovisioningbucketEBD82590.Arn>/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "The four actions s3:DeleteObject, s3:GetObject, s3:PutObject, s3:PutObjectAcl are allowed on all items within the provisioning bucket"
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:thing/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:policy/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:cert/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Delete actions are allowed to delete thing, policy and cert. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it and hence lambda will always only perform resources created by itself."
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:secretsmanager:<AWS::Region>:<AWS::AccountId>:secret:vs-device/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Delete secret is allowed for any resource with resource name starting with vs-device. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it and hence lambda will always only perform resources created by itself."
            },
            {
              "appliesTo": [
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "tag:GetResources action does not allow resource specific permissions"
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/<AppUniqueId>-vehicle-simulator-cleanup:log-stream:*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Log stream has to be a wildcard"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresource60BD3805": {
      "Type": "Custom::AWS",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "AWS679f53fac002430cb0da5b7982bd22872D164C4C",
            "Arn"
          ]
        },
        "Create": "{\"action\":\"describeEndpoint\",\"service\":\"Iot\",\"parameters\":{\"endpointType\":\"iot:Data-ATS\"},\"physicalResourceId\":{\"responsePath\":\"endpointAddress\"}}",
        "InstallLatestAwsSdk": false
      },
      "DependsOn": [
        "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresourceCustomResourcePolicy496B3DB6",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/iot-endpoint-custom-resource/Resource/Default"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresourceCustomResourcePolicy496B3DB6": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "iot:DescribeEndpoint",
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresourceCustomResourcePolicy496B3DB6",
        "Roles": [
          {
            "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/iot-endpoint-custom-resource/CustomResourcePolicy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "iot:DescribeEndpoint action does not allow resource specific permissions"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsecuritygroup12D3AD742": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/security-group-1",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/security-group-1/Resource"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructprovisioninglambda957E16DB": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "assetfb3ab3b6c321921cbaf3851d77c7611ba658fbef68aa08f95007e3e5859901af.zip"
              ]
            ]
          }
        },
        "Description": "CMS Vehicle Simulator Provisioning Function",
        "Environment": {
          "Variables": {
            "IOT_ENDPOINT": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresource60BD3805",
                "endpointAddress"
              ]
            },
            "SOLUTION_ID": "SO0241",
            "VERSION": "v2.1.5",
            "SIMULATOR_THING_GROUP_NAME": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructsimulatorthinggroupA18F209C",
                "THING_GROUP_NAME"
              ]
            },
            "TOPIC_PREFIX": "cms/data/simulated",
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.1/v2.1.5"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-vehicle-simulator-provisioning"
            ]
          ]
        },
        "Handler": "function.handlers.provision_handler",
        "Layers": [
          {
            "Ref": "cmsvehiclesimulatordependencylayerconstructlambdadependencylayerversionA3429E38"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorsimulatorconstructprovisioninglambdaroleE9ECED7F",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 60,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructsecuritygroup12D3AD742",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorsimulatorconstructprovisioninglambdaroleE9ECED7F",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/provisioning-lambda/Resource",
        "aws:asset:path": "asset.fb3ab3b6c321921cbaf3851d77c7611ba658fbef68aa08f95007e3e5859901af.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructprovisioninglambdaLogRetentionE1910856": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsvehiclesimulatorsimulatorconstructprovisioninglambda957E16DB"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/provisioning-lambda/LogRetention/Resource"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsecuritygroup2EE98052B": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/security-group-2",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/security-group-2/Resource"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambda47803FEE": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "assetfb3ab3b6c321921cbaf3851d77c7611ba658fbef68aa08f95007e3e5859901af.zip"
              ]
            ]
          }
        },
        "Description": "CMS Vehicle Simulator Function",
        "Environment": {
          "Variables": {
            "IOT_ENDPOINT": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresource60BD3805",
                "endpointAddress"
              ]
            },
            "SOLUTION_ID": "SO0241",
            "VERSION": "v2.1.5",
            "ROUTE_BUCKET": {
              "Fn::Select": [
                0,
                {
                  "Fn::Split": [
                    "/",
                    {
                      "Fn::Select": [
                        5,
                        {
                          "Fn::Split": [
                            ":",
                            {
                              "Fn::GetAtt": [
                                "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D",
                                "Arn"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "SIM_TABLE": {
              "Ref": "cmsvehiclesimulatorstorageconstructvssimulationstable298F37DD"
            },
            "TOPIC_PREFIX": "cms/data/simulated",
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.1/v2.1.5"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-vehicle-simulator-simulator"
            ]
          ]
        },
        "Handler": "function.handlers.data_sim_handler",
        "Layers": [
          {
            "Ref": "cmsvehiclesimulatordependencylayerconstructlambdadependencylayerversionA3429E38"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambdaroleC6FC5E08",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 60,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructsecuritygroup2EE98052B",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambdaroleC6FC5E08",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/simulator-engine-lambda/Resource",
        "aws:asset:path": "asset.fb3ab3b6c321921cbaf3851d77c7611ba658fbef68aa08f95007e3e5859901af.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambdaLogRetention5A0969E9": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambda47803FEE"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/simulator-engine-lambda/LogRetention/Resource"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsecuritygroup36683A1E6": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/security-group-3",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/security-group-3/Resource"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructcleanuplambda93C8D739": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "assetfb3ab3b6c321921cbaf3851d77c7611ba658fbef68aa08f95007e3e5859901af.zip"
              ]
            ]
          }
        },
        "Description": "Provisioning Artifact Cleanup Function",
        "Environment": {
          "Variables": {
            "IOT_ENDPOINT": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresource60BD3805",
                "endpointAddress"
              ]
            },
            "SOLUTION_ID": "SO0241",
            "VERSION": "v2.1.5",
            "SIMULATOR_THING_GROUP_NAME": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructsimulatorthinggroupA18F209C",
                "THING_GROUP_NAME"
              ]
            },
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.1/v2.1.5"
          }
        },
        "FunctionName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AppUniqueId"
              },
              "-vehicle-simulator-cleanup"
            ]
          ]
        },
        "Handler": "function.handlers.cleanup_handler",
        "Layers": [
          {
            "Ref": "cmsvehiclesimulatordependencylayerconstructlambdadependencylayerversionA3429E38"
          }
        ],
        "Role": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorsimulatorconstructcleanuplambdarole0E4889DE",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 60,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructsecuritygroup36683A1E6",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorsimulatorconstructcleanuplambdarole0E4889DE",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/cleanup-lambda/Resource",
        "aws:asset:path": "asset.fb3ab3b6c321921cbaf3851d77c7611ba658fbef68aa08f95007e3e5859901af.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "The non-container Lambda function is not configured to use the latest runtime version."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructcleanuplambdaLogRetention1D4F3E64": {
      "Type": "Custom::LogRetention",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A",
            "Arn"
          ]
        },
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/lambda/",
              {
                "Ref": "cmsvehiclesimulatorsimulatorconstructcleanuplambda93C8D739"
              }
            ]
          ]
        },
        "RetentionInDays": 90
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/cleanup-lambda/LogRetention/Resource"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructstepfunctionsloggroup5CADC94F": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "LogGroupName": {
          "Fn::Join": [
            "",
            [
              "/aws/vendedlogs/statescms-vehicle-simulatorcms-vehicle-simulatorstate-machine-log-",
              {
                "Fn::Select": [
                  2,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Ref": "AWS::StackId"
                      }
                    ]
                  }
                ]
              }
            ]
          ]
        },
        "RetentionInDays": 90,
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/step-functions-log-group/Resource"
      }
    },
    "cmsvehiclesimulatorsimulatorconstructsimulatorstatemachinerole5BAFD074": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "states.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogDelivery",
                    "logs:DeleteLogDelivery",
                    "logs:GetLogDelivery",
                    "logs:ListLogDeliveries",
                    "logs:UpdateLogDelivery"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-logs-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:DescribeLogGroups",
                    "logs:DescribeResourcePolicies",
                    "logs:PutResourcePolicy"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "cloudwatch-logs-policy2"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "xray:GetSamplingRules",
                    "xray:GetSamplingTargets",
                    "xray:PutTelemetryRecords",
                    "xray:PutTraceSegments"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "xray-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "Lambda:InvokeFunction",
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorsimulatorconstructcleanuplambda93C8D739",
                        "Arn"
                      ]
                    },
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorsimulatorconstructprovisioninglambda957E16DB",
                        "Arn"
                      ]
                    },
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambda47803FEE",
                        "Arn"
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "lambda-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "dynamodb:UpdateItem",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":dynamodb:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":table/",
                        {
                          "Ref": "cmsvehiclesimulatorstorageconstructvssimulationstable298F37DD"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "sim-table-dynamodb-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "dynamodb:GetItem",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":dynamodb:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":table/",
                        {
                          "Ref": "cmsvehiclesimulatorstorageconstructvsdevicetypestable74C0B6F1"
                        }
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "device-types-table-dynamodb-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/simulator-statemachine-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::*",
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "LogDelivery and Xray actions do not support resource-level authorizations"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorsimulatorconstructstepfunctionsCE10CFB1": {
      "Type": "AWS::StepFunctions::StateMachine",
      "Properties": {
        "DefinitionString": {
          "Fn::Join": [
            "",
            [
              "{\"StartAt\":\"get-device-type-map\",\"States\":{\"get-device-type-map\":{\"Type\":\"Map\",\"End\":true,\"Parameters\":{\"type_id.$\":\"$$.Map.Item.Value.type_id\",\"amount.$\":\"States.StringToJson($$.Map.Item.Value.amount)\",\"simulation.$\":\"$.simulation\"},\"ItemsPath\":\"$.simulation.devices\",\"Iterator\":{\"StartAt\":\"get-device-type-info\",\"States\":{\"get-device-type-info\":{\"Next\":\"device-pass\",\"Type\":\"Task\",\"ResultPath\":\"$.info\",\"ResultSelector\":{\"name.$\":\"$.Item.name\",\"topic.$\":\"$.Item.topic\",\"payload.$\":\"$.Item.payload\",\"simulation\":\"$.simulation\",\"amount\":\"$.amount\"},\"Resource\":\"arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":states:::dynamodb:getItem\",\"Parameters\":{\"Key\":{\"type_id\":{\"S.$\":\"$.type_id\"}},\"TableName\":\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Fn::Select": [
                          5,
                          {
                            "Fn::Split": [
                              ":",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorstorageconstructvsdevicetypestable74C0B6F1",
                                  "Arn"
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              "\",\"ConsistentRead\":false}},\"device-pass\":{\"Type\":\"Pass\",\"Parameters\":{\"amount_range.$\":\"States.ArrayRange(1,$.amount,1)\",\"info.$\":\"$.info\",\"simulation.$\":\"$.simulation\"},\"Next\":\"device-map\"},\"device-map\":{\"Type\":\"Map\",\"ResultPath\":null,\"Next\":\"cleanup-invoke\",\"Parameters\":{\"simulation.$\":\"$.simulation\",\"info.$\":\"$.info\",\"index.$\":\"$$.Map.Item.Index\"},\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"Next\":\"cleanup-invoke\"}],\"ItemsPath\":\"$.amount_range\",\"Iterator\":{\"StartAt\":\"provisioning-invoke\",\"States\":{\"provisioning-invoke\":{\"Next\":\"simulator-invoke\",\"Retry\":[{\"ErrorEquals\":[\"Lambda.ClientExecutionTimeoutException\",\"Lambda.ServiceException\",\"Lambda.AWSLambdaException\",\"Lambda.SdkClientException\"],\"IntervalSeconds\":2,\"MaxAttempts\":6,\"BackoffRate\":2}],\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"Next\":\"Done\"}],\"Type\":\"Task\",\"ResultPath\":null,\"Resource\":\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorsimulatorconstructprovisioninglambda957E16DB",
                  "Arn"
                ]
              },
              "\"},\"simulator-invoke\":{\"Next\":\"engine-choice\",\"Retry\":[{\"ErrorEquals\":[\"Lambda.ClientExecutionTimeoutException\",\"Lambda.ServiceException\",\"Lambda.AWSLambdaException\",\"Lambda.SdkClientException\"],\"IntervalSeconds\":2,\"MaxAttempts\":6,\"BackoffRate\":2}],\"Catch\":[{\"ErrorEquals\":[\"States.ALL\"],\"ResultPath\":\"$.error\",\"Next\":\"update-sim-table\"}],\"Type\":\"Task\",\"ResultPath\":\"$.options\",\"Resource\":\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorsimulatorconstructsimulatorenginelambda47803FEE",
                  "Arn"
                ]
              },
              "\"},\"engine-wait\":{\"Type\":\"Wait\",\"SecondsPath\":\"$.simulation.interval\",\"Next\":\"simulator-invoke\"},\"engine-choice\":{\"Type\":\"Choice\",\"Choices\":[{\"Variable\":\"$.simulation.duration\",\"NumericGreaterThanPath\":\"$.options.runtime\",\"Next\":\"engine-wait\"}],\"Default\":\"devicesRunning?\"},\"devicesRunning?\":{\"Type\":\"Choice\",\"Choices\":[{\"Variable\":\"$.options.restart\",\"BooleanEquals\":true,\"Next\":\"simulator-invoke\"}],\"Default\":\"update-sim-table\"},\"update-sim-table\":{\"Next\":\"Done\",\"Catch\":[{\"ErrorEquals\":[\"DynamoDB.ConditionalCheckFailedException\"],\"Next\":\"Done\"}],\"Type\":\"Task\",\"Resource\":\"arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":states:::dynamodb:updateItem\",\"Parameters\":{\"Key\":{\"sim_id\":{\"S.$\":\"$.simulation.sim_id\"}},\"TableName\":\"",
              {
                "Fn::Select": [
                  1,
                  {
                    "Fn::Split": [
                      "/",
                      {
                        "Fn::Select": [
                          5,
                          {
                            "Fn::Split": [
                              ":",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorstorageconstructvssimulationstable298F37DD",
                                  "Arn"
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              "\",\"ConditionExpression\":\"attribute_exists(sim_id)\",\"ExpressionAttributeValues\":{\":stage\":{\"S\":\"sleeping\"},\":time\":{\"S.$\":\"$$.State.EnteredTime\"}},\"UpdateExpression\":\"SET stage = :stage, updatedAt = :time\"}},\"Done\":{\"Type\":\"Succeed\"}}}},\"cleanup-invoke\":{\"End\":true,\"Retry\":[{\"ErrorEquals\":[\"Lambda.ClientExecutionTimeoutException\",\"Lambda.ServiceException\",\"Lambda.AWSLambdaException\",\"Lambda.SdkClientException\"],\"IntervalSeconds\":2,\"MaxAttempts\":6,\"BackoffRate\":2}],\"Type\":\"Task\",\"ResultPath\":null,\"Resource\":\"arn:",
              {
                "Ref": "AWS::Partition"
              },
              ":states:::lambda:invoke\",\"Parameters\":{\"FunctionName\":\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorsimulatorconstructcleanuplambda93C8D739",
                  "Arn"
                ]
              },
              "\",\"Payload.$\":\"$\"}}}}}}}"
            ]
          ]
        },
        "LoggingConfiguration": {
          "Destinations": [
            {
              "CloudWatchLogsLogGroup": {
                "LogGroupArn": {
                  "Fn::GetAtt": [
                    "cmsvehiclesimulatorsimulatorconstructstepfunctionsloggroup5CADC94F",
                    "Arn"
                  ]
                }
              }
            }
          ],
          "IncludeExecutionData": false,
          "Level": "ALL"
        },
        "RoleArn": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorsimulatorconstructsimulatorstatemachinerole5BAFD074",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "TracingConfiguration": {
          "Enabled": true
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorsimulatorconstructsimulatorstatemachinerole5BAFD074",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/simulator-construct/step-functions/Resource"
      }
    },
    "cmsvehiclesimulatorvsapiconstructvsapiloggroup71627D59": {
      "Type": "AWS::Logs::LogGroup",
      "Properties": {
        "RetentionInDays": 90,
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Retain",
      "DeletionPolicy": "Retain",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/vs-api-construct/vs-api-log-group/Resource"
      }
    },
    "cmsvehiclesimulatorvsapiconstructvsapilambdarole0FA0D8E2": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":logs:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":log-group:/aws/lambda/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "api-cloudwatch-logs-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "dynamodb:DeleteItem",
                    "dynamodb:GetItem",
                    "dynamodb:PutItem",
                    "dynamodb:Scan",
                    "dynamodb:UpdateItem"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorstorageconstructvsdevicetypestable74C0B6F1",
                        "Arn"
                      ]
                    },
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorstorageconstructvssimulationstable298F37DD",
                        "Arn"
                      ]
                    },
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorstorageconstructvstemplatestableE83BA6AA",
                        "Arn"
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "dynamodb-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "states:StartExecution",
                    "states:StopExecution"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          "arn:",
                          {
                            "Ref": "AWS::Partition"
                          },
                          ":states:",
                          {
                            "Ref": "AWS::Region"
                          },
                          ":",
                          {
                            "Ref": "AWS::AccountId"
                          },
                          ":execution:",
                          {
                            "Fn::GetAtt": [
                              "cmsvehiclesimulatorsimulatorconstructstepfunctionsCE10CFB1",
                              "Name"
                            ]
                          },
                          ":*"
                        ]
                      ]
                    },
                    {
                      "Ref": "cmsvehiclesimulatorsimulatorconstructstepfunctionsCE10CFB1"
                    }
                  ]
                },
                {
                  "Action": "states:ListStateMachines",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":states:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":stateMachine:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "state-machine-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "iot:DeleteThing",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":thing/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "iot:DeletePolicy",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":policy/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "iot:DetachThingPrincipal",
                    "iot:ListAttachedPolicies",
                    "iot:ListThingPrincipals",
                    "iot:ListThings"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                },
                {
                  "Action": [
                    "iot:DeleteCertificate",
                    "iot:DetachPolicy"
                  ],
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":cert/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "iot-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "tag:GetResources",
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "tags-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "secretsmanager:DeleteSecret",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":secretsmanager:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":secret:*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "secrets-manager-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "ec2:CreateNetworkInterfacePermission",
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/1}}"
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/{{resolve:ssm:/solution/vpc/",
                              {
                                "Fn::GetAtt": [
                                  "moduleinputsconstructvpcnamecustomresource12726E51",
                                  "parameter_value"
                                ]
                              },
                              "/subnets/private/2}}"
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface",
                    "ec2:DescribeNetworkInterfaces"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-vpc-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/vs-api-construct/vs-api-lambda-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:ec2:<AWS::Region>:<AWS::AccountId>:network-interface/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions ec2:CreateNetworkInterface, ec2:DescribeNetworkInterfaces and ec2:DeleteNetworkInterface are allowed to create new network interfaces. The lambda itself is protected by policies which only allowed users authenticated via cognito userpool to use it."
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:thing/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:policy/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:cert/*",
                "Resource::arn:<AWS::Partition>:secretsmanager:<AWS::Region>:<AWS::AccountId>:secret:*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "This lamdba needs permission to access all the 'things','certs', 'policy' and 'secrets' to identify and delete resources provioned by vehicle simulator. tags:GetResources action does not have option of resource level permissions"
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:states:<AWS::Region>:<AWS::AccountId>:execution:<cmsvehiclesimulatorsimulatorconstructstepfunctionsCE10CFB1.Name>:*",
                "Resource::arn:<AWS::Partition>:states:<AWS::Region>:<AWS::AccountId>:stateMachine:*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "ListStateMachine action does not allow resource level permission. Execution permissions are only provided to the statemachine created by vehicle simulator"
            },
            {
              "appliesTo": [
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Actions tag:GetResources, iot:DetachThingPrincipal, iot:ListThings, iot:ListThingPrincipals, iot:ListPrincipalPolicies does not allow to choose a specific resource"
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:logs:<AWS::Region>:<AWS::AccountId>:log-group:/aws/lambda/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "We do not have arn or name of the lambda which will be created by Chalice, thus we cannot give resource specific permission for logs"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorvsapiconstructsecuritygroup8EDFA93D": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "cms-vehicle-simulator/cms-vehicle-simulator/vs-api-construct/security-group",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/vs-api-construct/security-group/Resource"
      }
    },
    "APIHandler": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
        "CodeUri": {
          "Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset418b12970c2ad1a6054a64bf5cf4c8cca6099e92477f1f5341c529a0a4850d37.zip"
              ]
            ]
          }
        },
        "Environment": {
          "Variables": {
            "DYN_DEVICE_TYPES_TABLE": {
              "Ref": "cmsvehiclesimulatorstorageconstructvsdevicetypestable74C0B6F1"
            },
            "DYN_TEMPLATES_TABLE": {
              "Ref": "cmsvehiclesimulatorstorageconstructvstemplatestableE83BA6AA"
            },
            "DYN_SIMULATIONS_TABLE": {
              "Ref": "cmsvehiclesimulatorstorageconstructvssimulationstable298F37DD"
            },
            "SIMULATOR_STATE_MACHINE_NAME": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorsimulatorconstructstepfunctionsCE10CFB1",
                "Name"
              ]
            },
            "CROSS_ORIGIN_DOMAIN": {
              "Fn::Join": [
                "",
                [
                  "https://",
                  {
                    "Fn::GetAtt": [
                      "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                      "DomainName"
                    ]
                  }
                ]
              ]
            },
            "USER_POOL_ARN": {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6",
                "Arn"
              ]
            },
            "USER_AGENT_STRING": "AWSSOLUTION/SO0241/v2.1.5 AWSSOLUTION-CAPABILITY/CMS.1/v2.1.5"
          }
        },
        "Handler": "app.app",
        "MemorySize": 128,
        "Role": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorvsapiconstructvsapilambdarole0FA0D8E2",
            "Arn"
          ]
        },
        "Runtime": "python3.12",
        "Tags": {
          "aws-chalice": "version=1.32.0:stage=cms-vehicle-simulator/cms-vehicle-simulator/vs-api-construct:app=vs_api",
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-vehicle-simulator",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        },
        "Timeout": 60,
        "Tracing": "PassThrough",
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorvsapiconstructsecuritygroup8EDFA93D",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ]
    },
    "RestAPI": {
      "Type": "AWS::Serverless::Api",
      "Properties": {
        "DefinitionBody": {
          "swagger": "2.0",
          "info": {
            "version": "1.0",
            "title": "VSApi"
          },
          "schemes": [
            "https"
          ],
          "paths": {
            "/template/{template_id}": {
              "get": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ],
                "parameters": [
                  {
                    "name": "template_id",
                    "in": "path",
                    "required": true,
                    "type": "string"
                  }
                ]
              },
              "delete": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ],
                "parameters": [
                  {
                    "name": "template_id",
                    "in": "path",
                    "required": true,
                    "type": "string"
                  }
                ]
              },
              "options": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    },
                    "headers": {
                      "Access-Control-Allow-Methods": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Origin": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Headers": {
                        "type": "string"
                      }
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200",
                      "responseParameters": {
                        "method.response.header.Access-Control-Allow-Methods": "'GET,DELETE,OPTIONS'",
                        "method.response.header.Access-Control-Allow-Origin": {
                          "Fn::Join": [
                            "",
                            [
                              "'https://",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                                  "DomainName"
                                ]
                              },
                              "'"
                            ]
                          ]
                        },
                        "method.response.header.Access-Control-Allow-Headers": "'Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key'"
                      }
                    }
                  },
                  "requestTemplates": {
                    "application/json": "{\"statusCode\": 200}"
                  },
                  "passthroughBehavior": "when_no_match",
                  "type": "mock",
                  "contentHandling": "CONVERT_TO_TEXT"
                }
              }
            },
            "/template": {
              "get": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "post": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "put": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "options": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    },
                    "headers": {
                      "Access-Control-Allow-Methods": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Origin": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Headers": {
                        "type": "string"
                      }
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200",
                      "responseParameters": {
                        "method.response.header.Access-Control-Allow-Methods": "'GET,POST,PUT,OPTIONS'",
                        "method.response.header.Access-Control-Allow-Origin": {
                          "Fn::Join": [
                            "",
                            [
                              "'https://",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                                  "DomainName"
                                ]
                              },
                              "'"
                            ]
                          ]
                        },
                        "method.response.header.Access-Control-Allow-Headers": "'Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key'"
                      }
                    }
                  },
                  "requestTemplates": {
                    "application/json": "{\"statusCode\": 200}"
                  },
                  "passthroughBehavior": "when_no_match",
                  "type": "mock",
                  "contentHandling": "CONVERT_TO_TEXT"
                }
              }
            },
            "/device": {
              "get": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "options": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    },
                    "headers": {
                      "Access-Control-Allow-Methods": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Origin": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Headers": {
                        "type": "string"
                      }
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200",
                      "responseParameters": {
                        "method.response.header.Access-Control-Allow-Methods": "'GET,OPTIONS'",
                        "method.response.header.Access-Control-Allow-Origin": {
                          "Fn::Join": [
                            "",
                            [
                              "'https://",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                                  "DomainName"
                                ]
                              },
                              "'"
                            ]
                          ]
                        },
                        "method.response.header.Access-Control-Allow-Headers": "'Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key'"
                      }
                    }
                  },
                  "requestTemplates": {
                    "application/json": "{\"statusCode\": 200}"
                  },
                  "passthroughBehavior": "when_no_match",
                  "type": "mock",
                  "contentHandling": "CONVERT_TO_TEXT"
                }
              }
            },
            "/device/type": {
              "get": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "post": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "put": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "options": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    },
                    "headers": {
                      "Access-Control-Allow-Methods": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Origin": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Headers": {
                        "type": "string"
                      }
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200",
                      "responseParameters": {
                        "method.response.header.Access-Control-Allow-Methods": "'GET,POST,PUT,OPTIONS'",
                        "method.response.header.Access-Control-Allow-Origin": {
                          "Fn::Join": [
                            "",
                            [
                              "'https://",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                                  "DomainName"
                                ]
                              },
                              "'"
                            ]
                          ]
                        },
                        "method.response.header.Access-Control-Allow-Headers": "'Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key'"
                      }
                    }
                  },
                  "requestTemplates": {
                    "application/json": "{\"statusCode\": 200}"
                  },
                  "passthroughBehavior": "when_no_match",
                  "type": "mock",
                  "contentHandling": "CONVERT_TO_TEXT"
                }
              }
            },
            "/device/type/{device_type_id}": {
              "get": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ],
                "parameters": [
                  {
                    "name": "device_type_id",
                    "in": "path",
                    "required": true,
                    "type": "string"
                  }
                ]
              },
              "delete": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ],
                "parameters": [
                  {
                    "name": "device_type_id",
                    "in": "path",
                    "required": true,
                    "type": "string"
                  }
                ]
              },
              "options": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    },
                    "headers": {
                      "Access-Control-Allow-Methods": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Origin": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Headers": {
                        "type": "string"
                      }
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200",
                      "responseParameters": {
                        "method.response.header.Access-Control-Allow-Methods": "'GET,DELETE,OPTIONS'",
                        "method.response.header.Access-Control-Allow-Origin": {
                          "Fn::Join": [
                            "",
                            [
                              "'https://",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                                  "DomainName"
                                ]
                              },
                              "'"
                            ]
                          ]
                        },
                        "method.response.header.Access-Control-Allow-Headers": "'Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key'"
                      }
                    }
                  },
                  "requestTemplates": {
                    "application/json": "{\"statusCode\": 200}"
                  },
                  "passthroughBehavior": "when_no_match",
                  "type": "mock",
                  "contentHandling": "CONVERT_TO_TEXT"
                }
              }
            },
            "/simulation": {
              "get": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "post": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "put": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ]
              },
              "options": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    },
                    "headers": {
                      "Access-Control-Allow-Methods": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Origin": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Headers": {
                        "type": "string"
                      }
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200",
                      "responseParameters": {
                        "method.response.header.Access-Control-Allow-Methods": "'GET,POST,PUT,OPTIONS'",
                        "method.response.header.Access-Control-Allow-Origin": {
                          "Fn::Join": [
                            "",
                            [
                              "'https://",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                                  "DomainName"
                                ]
                              },
                              "'"
                            ]
                          ]
                        },
                        "method.response.header.Access-Control-Allow-Headers": "'Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key'"
                      }
                    }
                  },
                  "requestTemplates": {
                    "application/json": "{\"statusCode\": 200}"
                  },
                  "passthroughBehavior": "when_no_match",
                  "type": "mock",
                  "contentHandling": "CONVERT_TO_TEXT"
                }
              }
            },
            "/simulation/{simulation_id}": {
              "get": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ],
                "parameters": [
                  {
                    "name": "simulation_id",
                    "in": "path",
                    "required": true,
                    "type": "string"
                  }
                ]
              },
              "put": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ],
                "parameters": [
                  {
                    "name": "simulation_id",
                    "in": "path",
                    "required": true,
                    "type": "string"
                  }
                ]
              },
              "delete": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200"
                    }
                  },
                  "uri": {
                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${APIHandler.Arn}/invocations"
                  },
                  "passthroughBehavior": "when_no_match",
                  "httpMethod": "POST",
                  "contentHandling": "CONVERT_TO_TEXT",
                  "type": "aws_proxy"
                },
                "security": [
                  {
                    "vehicle-simulator-api-authorizer": []
                  }
                ],
                "parameters": [
                  {
                    "name": "simulation_id",
                    "in": "path",
                    "required": true,
                    "type": "string"
                  }
                ]
              },
              "options": {
                "consumes": [
                  "application/json"
                ],
                "produces": [
                  "application/json"
                ],
                "responses": {
                  "200": {
                    "description": "200 response",
                    "schema": {
                      "$ref": "#/definitions/Empty"
                    },
                    "headers": {
                      "Access-Control-Allow-Methods": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Origin": {
                        "type": "string"
                      },
                      "Access-Control-Allow-Headers": {
                        "type": "string"
                      }
                    }
                  }
                },
                "x-amazon-apigateway-integration": {
                  "responses": {
                    "default": {
                      "statusCode": "200",
                      "responseParameters": {
                        "method.response.header.Access-Control-Allow-Methods": "'GET,PUT,DELETE,OPTIONS'",
                        "method.response.header.Access-Control-Allow-Origin": {
                          "Fn::Join": [
                            "",
                            [
                              "'https://",
                              {
                                "Fn::GetAtt": [
                                  "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                                  "DomainName"
                                ]
                              },
                              "'"
                            ]
                          ]
                        },
                        "method.response.header.Access-Control-Allow-Headers": "'Authorization,Content-Type,X-Amz-Date,X-Amz-Security-Token,X-Api-Key'"
                      }
                    }
                  },
                  "requestTemplates": {
                    "application/json": "{\"statusCode\": 200}"
                  },
                  "passthroughBehavior": "when_no_match",
                  "type": "mock",
                  "contentHandling": "CONVERT_TO_TEXT"
                }
              }
            }
          },
          "definitions": {
            "Empty": {
              "type": "object",
              "title": "Empty Schema"
            }
          },
          "x-amazon-apigateway-binary-media-types": [
            "application/octet-stream",
            "application/x-tar",
            "application/zip",
            "audio/basic",
            "audio/ogg",
            "audio/mp4",
            "audio/mpeg",
            "audio/wav",
            "audio/webm",
            "image/png",
            "image/jpg",
            "image/jpeg",
            "image/gif",
            "video/ogg",
            "video/mpeg",
            "video/webm"
          ],
          "securityDefinitions": {
            "vehicle-simulator-api-authorizer": {
              "in": "header",
              "type": "apiKey",
              "name": "Authorization",
              "x-amazon-apigateway-authtype": "cognito_user_pools",
              "x-amazon-apigateway-authorizer": {
                "type": "cognito_user_pools",
                "providerARNs": [
                  {
                    "Fn::GetAtt": [
                      "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6",
                      "Arn"
                    ]
                  }
                ]
              }
            }
          }
        },
        "EndpointConfiguration": "REGIONAL",
        "StageName": "dev",
        "Tags": {
          "awsApplication": {
            "Fn::GetAtt": [
              "appregistryconstructappregistryapplicationAC1A319B",
              "ApplicationTagValue"
            ]
          },
          "Solutions:ApplicationType": "AWS-Solutions",
          "Solutions:DeploymentUUID": {
            "Fn::Join": [
              "",
              [
                "{{resolve:ssm:/solution/",
                {
                  "Ref": "AppUniqueId"
                },
                "/config/deployment-uuid}}"
              ]
            ]
          },
          "Solutions:ModuleName": "cms-vehicle-simulator",
          "Solutions:SolutionID": "SO0241",
          "Solutions:SolutionName": "connected-mobility-solution-on-aws",
          "Solutions:SolutionVersion": "v2.1.5"
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ]
    },
    "APIHandlerInvokePermission": {
      "Type": "AWS::Lambda::Permission",
      "Properties": {
        "Action": "lambda:InvokeFunction",
        "FunctionName": {
          "Ref": "APIHandler"
        },
        "Principal": "apigateway.amazonaws.com",
        "SourceArn": {
          "Fn::Sub": [
            "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${RestAPIId}/*",
            {
              "RestAPIId": {
                "Ref": "RestAPI"
              }
            }
          ]
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ]
    },
    "cmsvehiclesimulatorconsoleconstructcustomresourcepolicyC5DD1272": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "dynamodb:PutItem",
              "Effect": "Allow",
              "Resource": {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorstorageconstructvstemplatestableE83BA6AA",
                  "Arn"
                ]
              }
            },
            {
              "Action": [
                "s3:AbortMultipartUpload",
                "s3:PutObject"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "iot:DescribeEndpoint",
                "iot:DetachPrincipalPolicy",
                "iot:TagResource"
              ],
              "Effect": "Allow",
              "Resource": "*"
            },
            {
              "Action": "iot:ListTargetsForPolicy",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":iot:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":policy/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "cmsvehiclesimulatorconsoleconstructcustomresourcepolicyC5DD1272",
        "Roles": [
          {
            "Ref": "cmsvehiclesimulatorcustomresourceconstructlambdarole96B82A97"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/custom-resource-policy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::<cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA.Arn>/*",
                "Resource::<cmsvehiclesimulatorcloudfrontconstructroutesbucket8622DA8D.Arn>/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "s3:PutObject and s3:AbortMultipartUpload actions are allowed on any item within the mentioned buckets"
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:policy/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "s3:PutObject and s3:AbortMultipartUpload actions are allowed on any item within the mentioned buckets"
            },
            {
              "appliesTo": [
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "iot:DescribeEndpoint action does not allow resource specific permissions. iot:TagResource and iot:DetachPrincipalPolicy permissions are given to this custom resource lambda before creation of subsequent resources like the vs-iot policy."
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D": {
      "Type": "AWS::CloudFormation::CustomResource",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969",
            "Arn"
          ]
        },
        "Resource": "CreateUUID",
        "StackName": {
          "Ref": "AWS::StackName"
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorconsoleconstructcustomresourcepolicyC5DD1272",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/console-uuid-custom-resource/Default"
      }
    },
    "cmsvehiclesimulatorconsoleconstructiotdevicesimulatormap44B8FB08": {
      "Type": "AWS::Location::Map",
      "Properties": {
        "Configuration": {
          "Style": "VectorEsriNavigation"
        },
        "MapName": {
          "Fn::Join": [
            "",
            [
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "REDUCED_STACK_NAME"
                ]
              },
              "-IoTDeviceSimulatorPlaceIndex-",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "UNIQUE_SUFFIX"
                ]
              }
            ]
          ]
        },
        "PricingPlan": "RequestBasedUsage",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/iot-device-simulator-map"
      }
    },
    "cmsvehiclesimulatorconsoleconstructiotdevicesimulatorplaceindexDF15A697": {
      "Type": "AWS::Location::PlaceIndex",
      "Properties": {
        "DataSource": "Esri",
        "IndexName": {
          "Fn::Join": [
            "",
            [
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "REDUCED_STACK_NAME"
                ]
              },
              "-IoTDeviceSimulatorPlaceIndex-",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "UNIQUE_SUFFIX"
                ]
              }
            ]
          ]
        },
        "PricingPlan": "RequestBasedUsage",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/iot-device-simulator-place-index"
      }
    },
    "cmsvehiclesimulatorconsoleconstructidentitypoolauthenticatedrole5976347A": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRoleWithWebIdentity",
              "Condition": {
                "StringEquals": {
                  "cognito-identity.amazonaws.com:aud": {
                    "Ref": "cmsvehiclesimulatorcognitoconstructidentitypool7554F769"
                  }
                },
                "ForAnyValue:StringLike": {
                  "cognito-identity.amazonaws.com:amr": "authenticated"
                }
              },
              "Effect": "Allow",
              "Principal": {
                "Federated": "cognito-identity.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Description": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "AWS::StackName"
              },
              " Identity Pool authenticated role"
            ]
          ]
        },
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "execute-api:Invoke",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":execute-api:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":",
                        {
                          "Ref": "RestAPI"
                        },
                        "/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "execute-api-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "execute-api:Invoke",
                    "geo:GetMapGlyphs",
                    "geo:GetMapSprites",
                    "geo:GetMapStyleDescriptor",
                    "geo:GetMapTile",
                    "geo:SearchPlaceIndexForPosition",
                    "geo:SearchPlaceIndexForText"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorconsoleconstructiotdevicesimulatormap44B8FB08",
                        "MapArn"
                      ]
                    },
                    {
                      "Fn::GetAtt": [
                        "cmsvehiclesimulatorconsoleconstructiotdevicesimulatorplaceindexDF15A697",
                        "IndexArn"
                      ]
                    }
                  ]
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "location-service-policy"
          },
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": "iot:AttachPolicy",
                  "Effect": "Allow",
                  "Resource": "*"
                },
                {
                  "Action": "iot:Connect",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":client/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "iot:Subscribe",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":topicfilter/cms/data/simulated/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": "iot:Receive",
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":iot:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":topic/cms/data/simulated/*"
                      ]
                    ]
                  }
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "iot-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/identity-pool-authenticated-role/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:execute-api:<AWS::Region>:<AWS::AccountId>:<RestAPI>/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "An authenticated user is allowed to execute any of the api gateway resources for given rest api id"
            },
            {
              "appliesTo": [
                "Resource::*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Only a user authenticated using cognito would be able to perform the iot:AttachPrincipalPolicy action. "
            },
            {
              "appliesTo": [
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:topic/cms/data/simulated/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:topicfilter/cms/data/simulated/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:client/*",
                "Resource::arn:<AWS::Partition>:iot:<AWS::Region>:<AWS::AccountId>:cert/*"
              ],
              "id": "AwsSolutions-IAM5",
              "reason": "Authenticated user is allowed to perform iot:Connect, iot:Subscribe, iot:Receive actions"
            }
          ]
        }
      }
    },
    "cmsvehiclesimulatorconsoleconstructidentitypoolroleattachment4B308D51": {
      "Type": "AWS::Cognito::IdentityPoolRoleAttachment",
      "Properties": {
        "IdentityPoolId": {
          "Ref": "cmsvehiclesimulatorcognitoconstructidentitypool7554F769"
        },
        "Roles": {
          "authenticated": {
            "Fn::GetAtt": [
              "cmsvehiclesimulatorconsoleconstructidentitypoolauthenticatedrole5976347A",
              "Arn"
            ]
          }
        }
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/identity-pool-role-attachment"
      }
    },
    "cmsvehiclesimulatorconsoleconstructconsolebucketdeploymentAwsCliLayer0549F181": {
      "Type": "AWS::Lambda::LayerVersion",
      "Properties": {
        "Content": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset1b2c92f2cd21c170884393633bd4c732676df6290562199b6e3ca5e2a1be7d18.zip"
              ]
            ]
          }
        },
        "Description": "/opt/awscli/aws"
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/console-bucket-deployment/AwsCliLayer/Resource",
        "aws:asset:path": "asset.1b2c92f2cd21c170884393633bd4c732676df6290562199b6e3ca5e2a1be7d18.zip",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Content"
      }
    },
    "cmsvehiclesimulatorconsoleconstructconsolebucketdeploymentCustomResource1024MiBc8ed8da5462554f60496fdb0e397446d122355506a8E6A8912": {
      "Type": "Custom::CDKBucketDeployment",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506a5B5C79FE",
            "Arn"
          ]
        },
        "SourceBucketNames": [
          {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          }
        ],
        "SourceObjectKeys": [
          {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset8dd23a4b6f885cbffc54c2791062c33e339b9f7587cf874b0f43b71b33d1734a.zip"
              ]
            ]
          }
        ],
        "DestinationBucketName": {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                "/",
                {
                  "Fn::Select": [
                    5,
                    {
                      "Fn::Split": [
                        ":",
                        {
                          "Fn::GetAtt": [
                            "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                            "Arn"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        "Prune": false,
        "Exclude": [
          "aws_config.js"
        ],
        "OutputObjectKeys": true
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/console-bucket-deployment/CustomResource-1024MiB-c8ed8da5462554f60496fdb0e397446d122355506a/Default"
      }
    },
    "cmsvehiclesimulatorconsoleconstructvsiotpolicy701BC6B2": {
      "Type": "AWS::IoT::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": "iot:Connect",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":iot:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":client/*"
                  ]
                ]
              }
            },
            {
              "Action": "iot:Subscribe",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":iot:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":topicfilter/cms/data/simulated/*"
                  ]
                ]
              }
            },
            {
              "Action": "iot:Receive",
              "Effect": "Allow",
              "Resource": {
                "Fn::Join": [
                  "",
                  [
                    "arn:",
                    {
                      "Ref": "AWS::Partition"
                    },
                    ":iot:",
                    {
                      "Ref": "AWS::Region"
                    },
                    ":",
                    {
                      "Ref": "AWS::AccountId"
                    },
                    ":topic/cms/data/simulated/*"
                  ]
                ]
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:DeploymentUUID",
            "Value": {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/",
                  {
                    "Ref": "AppUniqueId"
                  },
                  "/config/deployment-uuid}}"
                ]
              ]
            }
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "DependsOn": [
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/vs-iot-policy"
      }
    },
    "cmsvehiclesimulatorconsoleconstructconsoleconfig922DD816": {
      "Type": "Custom::CopyConfigFiles",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969",
            "Arn"
          ]
        },
        "Resource": "CreateConfig",
        "ConfigFileName": "aws_config.js",
        "DestinationBucket": {
          "Ref": "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA"
        },
        "configObj": {
          "Fn::Join": [
            "",
            [
              "{\"aws_iot_endpoint\":\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorsimulatorconstructiotendpointcustomresource60BD3805",
                  "endpointAddress"
                ]
              },
              "\",\"API\":{\"endpoints\":[{\"name\":\"ids\",\"endpoint\":\"https://",
              {
                "Ref": "RestAPI"
              },
              ".execute-api.",
              {
                "Ref": "AWS::Region"
              },
              ".",
              {
                "Ref": "AWS::URLSuffix"
              },
              "/dev\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\"}]},\"Auth\":{\"identityPoolId\":\"",
              {
                "Ref": "cmsvehiclesimulatorcognitoconstructidentitypool7554F769"
              },
              "\",\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"userPoolId\":\"",
              {
                "Ref": "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6"
              },
              "\",\"userPoolWebClientId\":\"",
              {
                "Ref": "cmsvehiclesimulatorcognitoconstructuserpoolclient67539730"
              },
              "\"},\"aws_iot_policy_name\":\"",
              {
                "Ref": "cmsvehiclesimulatorconsoleconstructvsiotpolicy701BC6B2"
              },
              "\",\"aws_project_region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"geo\":{\"AmazonLocationService\":{\"region\":\"",
              {
                "Ref": "AWS::Region"
              },
              "\",\"maps\":{\"items\":{\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "REDUCED_STACK_NAME"
                ]
              },
              "-IoTDeviceSimulatorPlaceIndex-",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "UNIQUE_SUFFIX"
                ]
              },
              "\":{\"style\":\"VectorEsriNavigation\"}},\"default\":\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "REDUCED_STACK_NAME"
                ]
              },
              "-IoTDeviceSimulatorPlaceIndex-",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "UNIQUE_SUFFIX"
                ]
              },
              "\"},\"search_indices\":{\"items\":[\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "REDUCED_STACK_NAME"
                ]
              },
              "-IoTDeviceSimulatorPlaceIndex-",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "UNIQUE_SUFFIX"
                ]
              },
              "\"],\"default\":\"",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "REDUCED_STACK_NAME"
                ]
              },
              "-IoTDeviceSimulatorPlaceIndex-",
              {
                "Fn::GetAtt": [
                  "cmsvehiclesimulatorconsoleconstructconsoleuuidcustomresourceAEEF215D",
                  "UNIQUE_SUFFIX"
                ]
              },
              "\"}}},\"topic_prefix\":\"cms/data/simulated\"}"
            ]
          ]
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorconsoleconstructcustomresourcepolicyC5DD1272",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/console-config/Default"
      }
    },
    "cmsvehiclesimulatorconsoleconstructcustomtemplatevssdefaulttemplatejson7E688AEB": {
      "Type": "Custom::CopyTemplate",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969",
            "Arn"
          ]
        },
        "TableName": {
          "Ref": "cmsvehiclesimulatorstorageconstructvstemplatestableE83BA6AA"
        },
        "Resource": "CopyTemplate",
        "Template": "{\"template_id\":\"vehicle\",\"payload\":[{\"type\":\"object\",\"name\":\"adas\",\"payload\":[{\"type\":\"object\",\"name\":\"abs\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"isengaged\"},{\"type\":\"bool\",\"name\":\"iserror\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"SAE_0\",\"SAE_1\",\"SAE_2_DISENGAGING\",\"SAE_2\",\"SAE_3_DISENGAGING\",\"SAE_3\",\"SAE_4_DISENGAGING\",\"SAE_4\",\"SAE_5\"],\"name\":\"activeautonomylevel\"},{\"type\":\"object\",\"name\":\"cruisecontrol\",\"payload\":[{\"type\":\"bool\",\"name\":\"isactive\"},{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"iserror\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"speedset\"}]},{\"type\":\"object\",\"name\":\"dms\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"iserror\"},{\"type\":\"bool\",\"name\":\"iswarning\"}]},{\"type\":\"object\",\"name\":\"eba\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"isengaged\"},{\"type\":\"bool\",\"name\":\"iserror\"}]},{\"type\":\"object\",\"name\":\"ebd\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"isengaged\"},{\"type\":\"bool\",\"name\":\"iserror\"}]},{\"type\":\"object\",\"name\":\"esc\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"isengaged\"},{\"type\":\"bool\",\"name\":\"iserror\"},{\"type\":\"bool\",\"name\":\"isstrongcrosswinddetected\"},{\"type\":\"object\",\"name\":\"roadfriction\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lowerbound\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"mostprobable\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"upperbound\"}]}]},{\"type\":\"object\",\"name\":\"lanedeparturedetection\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"iserror\"},{\"type\":\"bool\",\"name\":\"iswarning\"}]},{\"type\":\"object\",\"name\":\"obstacledetection\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"iserror\"},{\"type\":\"bool\",\"name\":\"iswarning\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"poweroptimizelevel\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"SAE_0\",\"SAE_1\",\"SAE_2\",\"SAE_3\",\"SAE_4\",\"SAE_5\"],\"name\":\"supportedautonomylevel\"},{\"type\":\"object\",\"name\":\"tcs\",\"payload\":[{\"type\":\"bool\",\"name\":\"isenabled\"},{\"type\":\"bool\",\"name\":\"isengaged\"},{\"type\":\"bool\",\"name\":\"iserror\"}]}]},{\"type\":\"object\",\"name\":\"acceleration\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lateral\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"longitudinal\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"vertical\"}]},{\"type\":\"object\",\"name\":\"angularvelocity\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"pitch\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"roll\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"yaw\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"averagespeed\"},{\"type\":\"object\",\"name\":\"body\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"bodytype\"},{\"type\":\"object\",\"name\":\"hood\",\"payload\":[{\"type\":\"bool\",\"name\":\"isopen\"}]},{\"type\":\"object\",\"name\":\"horn\",\"payload\":[{\"type\":\"bool\",\"name\":\"isactive\"}]},{\"type\":\"object\",\"name\":\"lights\",\"payload\":[{\"type\":\"object\",\"name\":\"backup\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]},{\"type\":\"object\",\"name\":\"beam\",\"payload\":[{\"type\":\"object\",\"name\":\"high\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]},{\"type\":\"object\",\"name\":\"low\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]}]},{\"type\":\"object\",\"name\":\"brake\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"ACTIVE\",\"ADAPTIVE\"],\"name\":\"isactive\"},{\"type\":\"bool\",\"name\":\"isdefect\"}]},{\"type\":\"object\",\"name\":\"directionindicator\",\"payload\":[{\"type\":\"object\",\"name\":\"left\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"issignaling\"}]},{\"type\":\"object\",\"name\":\"right\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"issignaling\"}]}]},{\"type\":\"object\",\"name\":\"fog\",\"payload\":[{\"type\":\"object\",\"name\":\"front\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]},{\"type\":\"object\",\"name\":\"rear\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]}]},{\"type\":\"object\",\"name\":\"hazard\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"issignaling\"}]},{\"type\":\"bool\",\"name\":\"ishighbeamswitchon\"},{\"type\":\"object\",\"name\":\"licenseplate\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"OFF\",\"POSITION\",\"DAYTIME_RUNNING_LIGHTS\",\"AUTO\",\"BEAM\"],\"name\":\"lightswitch\"},{\"type\":\"object\",\"name\":\"parking\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]},{\"type\":\"object\",\"name\":\"running\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdefect\"},{\"type\":\"bool\",\"name\":\"ison\"}]}]},{\"type\":\"object\",\"name\":\"mirrors\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"bool\",\"name\":\"isfolded\"},{\"type\":\"bool\",\"name\":\"isheatingon\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"pan\"},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"tilt\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"bool\",\"name\":\"isfolded\"},{\"type\":\"bool\",\"name\":\"isheatingon\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"pan\"},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"tilt\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"poweroptimizelevel\"},{\"type\":\"object\",\"name\":\"raindetection\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"intensity\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"rearmainspoilerposition\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"FRONT_LEFT\",\"FRONT_RIGHT\",\"MIDDLE_LEFT\",\"MIDDLE_RIGHT\",\"REAR_LEFT\",\"REAR_RIGHT\"],\"name\":\"refuelposition\"},{\"type\":\"object\",\"name\":\"trunk\",\"payload\":[{\"type\":\"object\",\"name\":\"front\",\"payload\":[{\"type\":\"bool\",\"name\":\"islighton\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"bool\",\"name\":\"isopen\"}]},{\"type\":\"object\",\"name\":\"rear\",\"payload\":[{\"type\":\"bool\",\"name\":\"islighton\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"bool\",\"name\":\"isopen\"}]}]},{\"type\":\"object\",\"name\":\"windshield\",\"payload\":[{\"type\":\"object\",\"name\":\"front\",\"payload\":[{\"type\":\"bool\",\"name\":\"isheatingon\"},{\"type\":\"object\",\"name\":\"washerfluid\",\"payload\":[{\"type\":\"bool\",\"name\":\"islevellow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"level\"}]},{\"type\":\"object\",\"name\":\"wiping\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"iswipersworn\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"OFF\",\"SLOW\",\"MEDIUM\",\"FAST\",\"INTERVAL\",\"RAIN_SENSOR\"],\"name\":\"mode\"},{\"type\":\"object\",\"name\":\"system\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"actualposition\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"drivecurrent\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"frequency\"},{\"type\":\"bool\",\"name\":\"isblocked\"},{\"type\":\"bool\",\"name\":\"isendingwipecycle\"},{\"type\":\"bool\",\"name\":\"isoverheated\"},{\"type\":\"bool\",\"name\":\"ispositionreached\"},{\"type\":\"bool\",\"name\":\"iswipererror\"},{\"type\":\"bool\",\"name\":\"iswiping\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"STOP_HOLD\",\"WIPE\",\"PLANT_MODE\",\"EMERGENCY_STOP\"],\"name\":\"mode\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"targetposition\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"wiperwear\"}]}]},{\"type\":\"object\",\"name\":\"rear\",\"payload\":[{\"type\":\"bool\",\"name\":\"isheatingon\"},{\"type\":\"object\",\"name\":\"washerfluid\",\"payload\":[{\"type\":\"bool\",\"name\":\"islevellow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"level\"}]},{\"type\":\"object\",\"name\":\"wiping\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"iswipersworn\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"OFF\",\"SLOW\",\"MEDIUM\",\"FAST\",\"INTERVAL\",\"RAIN_SENSOR\"],\"name\":\"mode\"},{\"type\":\"object\",\"name\":\"system\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"actualposition\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"drivecurrent\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"frequency\"},{\"type\":\"bool\",\"name\":\"isblocked\"},{\"type\":\"bool\",\"name\":\"isendingwipecycle\"},{\"type\":\"bool\",\"name\":\"isoverheated\"},{\"type\":\"bool\",\"name\":\"ispositionreached\"},{\"type\":\"bool\",\"name\":\"iswipererror\"},{\"type\":\"bool\",\"name\":\"iswiping\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"STOP_HOLD\",\"WIPE\",\"PLANT_MODE\",\"EMERGENCY_STOP\"],\"name\":\"mode\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"targetposition\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"wiperwear\"}]}]}]}]},{\"type\":\"object\",\"name\":\"cabin\",\"payload\":[{\"type\":\"object\",\"name\":\"convertible\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UNDEFINED\",\"CLOSED\",\"OPEN\",\"CLOSING\",\"OPENING\",\"STALLED\"],\"name\":\"status\"}]},{\"type\":\"object\",\"name\":\"door\",\"payload\":[{\"type\":\"object\",\"name\":\"row1\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"bool\",\"name\":\"ischildlockactive\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"object\",\"name\":\"shade\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]},{\"type\":\"object\",\"name\":\"window\",\"payload\":[{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"bool\",\"name\":\"ischildlockactive\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"object\",\"name\":\"shade\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]},{\"type\":\"object\",\"name\":\"window\",\"payload\":[{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]}]}]},{\"type\":\"object\",\"name\":\"row2\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"bool\",\"name\":\"ischildlockactive\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"object\",\"name\":\"shade\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]},{\"type\":\"object\",\"name\":\"window\",\"payload\":[{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"bool\",\"name\":\"ischildlockactive\"},{\"type\":\"bool\",\"name\":\"islocked\"},{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"object\",\"name\":\"shade\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]},{\"type\":\"object\",\"name\":\"window\",\"payload\":[{\"type\":\"bool\",\"name\":\"isopen\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]}]}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"default\":4,\"name\":\"doorcount\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"LEFT\",\"MIDDLE\",\"RIGHT\"],\"name\":\"driverposition\"},{\"type\":\"object\",\"name\":\"hvac\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"ambientairtemperature\"},{\"type\":\"bool\",\"name\":\"isairconditioningactive\"},{\"type\":\"bool\",\"name\":\"isfrontdefrosteractive\"},{\"type\":\"bool\",\"name\":\"isreardefrosteractive\"},{\"type\":\"bool\",\"name\":\"isrecirculationactive\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"poweroptimizelevel\"},{\"type\":\"object\",\"name\":\"station\",\"payload\":[{\"type\":\"object\",\"name\":\"row1\",\"payload\":[{\"type\":\"object\",\"name\":\"driver\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]},{\"type\":\"object\",\"name\":\"passenger\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]}]},{\"type\":\"object\",\"name\":\"row2\",\"payload\":[{\"type\":\"object\",\"name\":\"driver\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]},{\"type\":\"object\",\"name\":\"passenger\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]}]},{\"type\":\"object\",\"name\":\"row3\",\"payload\":[{\"type\":\"object\",\"name\":\"driver\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]},{\"type\":\"object\",\"name\":\"passenger\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]}]},{\"type\":\"object\",\"name\":\"row4\",\"payload\":[{\"type\":\"object\",\"name\":\"driver\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]},{\"type\":\"object\",\"name\":\"passenger\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UP\",\"MIDDLE\",\"DOWN\"],\"name\":\"airdistribution\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fanspeed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"}]}]}]}]},{\"type\":\"object\",\"name\":\"infotainment\",\"payload\":[{\"type\":\"object\",\"name\":\"hmi\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"brightness\"},{\"type\":\"string\",\"length\":20,\"name\":\"currentlanguage\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"YYYY_MM_DD\",\"DD_MM_YYYY\",\"MM_DD_YYYY\",\"YY_MM_DD\",\"DD_MM_YY\",\"MM_DD_YY\"],\"name\":\"dateformat\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"DAY\",\"NIGHT\"],\"name\":\"daynightmode\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"displayoffduration\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"MILES\",\"KILOMETERS\"],\"name\":\"distanceunit\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"MILES_PER_KILOWATT_HOUR\",\"KILOMETERS_PER_KILOWATT_HOUR\",\"KILOWATT_HOURS_PER_100_MILES\",\"KILOWATT_HOURS_PER_100_KILOMETERS\",\"WATT_HOURS_PER_MILE\",\"WATT_HOURS_PER_KILOMETER\"],\"name\":\"eveconomyunits\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"WATT_HOURS\",\"AMPERE_HOURS\",\"KILOWATT_HOURS\"],\"name\":\"evenergyunits\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"STANDARD\",\"LARGE\",\"EXTRA_LARGE\"],\"name\":\"fontsize\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"MPG_UK\",\"MPG_US\",\"MILES_PER_LITER\",\"KILOMETERS_PER_LITER\",\"LITERS_PER_100_KILOMETERS\"],\"name\":\"fueleconomyunits\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"LITER\",\"GALLON_US\",\"GALLON_UK\"],\"name\":\"fuelvolumeunit\"},{\"type\":\"bool\",\"name\":\"isscreenalwayson\"},{\"type\":\"string\",\"length\":20,\"name\":\"lastactiontime\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"METERS_PER_SECOND\",\"MILES_PER_HOUR\",\"KILOMETERS_PER_HOUR\"],\"name\":\"speedunit\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"C\",\"F\"],\"name\":\"temperatureunit\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"HR_12\",\"HR_24\"],\"name\":\"timeformat\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"PSI\",\"KPA\",\"BAR\"],\"name\":\"tirepressureunit\"}]},{\"type\":\"object\",\"name\":\"media\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UNKNOWN\",\"STOP\",\"PLAY\",\"FAST_FORWARD\",\"FAST_BACKWARD\",\"SKIP_FORWARD\",\"SKIP_BACKWARD\"],\"name\":\"action\"},{\"type\":\"string\",\"length\":20,\"name\":\"declineduri\"},{\"type\":\"object\",\"name\":\"played\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"album\"},{\"type\":\"string\",\"length\":20,\"name\":\"artist\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"playbackrate\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UNKNOWN\",\"SIRIUS_XM\",\"AM\",\"FM\",\"DAB\",\"TV\",\"CD\",\"DVD\",\"AUX\",\"USB\",\"DISK\",\"BLUETOOTH\",\"INTERNET\",\"VOICE\",\"BEEP\"],\"name\":\"source\"},{\"type\":\"string\",\"length\":20,\"name\":\"track\"},{\"type\":\"string\",\"length\":20,\"name\":\"uri\"}]},{\"type\":\"string\",\"length\":20,\"name\":\"selecteduri\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"volume\"}]},{\"type\":\"object\",\"name\":\"navigation\",\"payload\":[{\"type\":\"object\",\"name\":\"destinationset\",\"payload\":[{\"type\":\"float\",\"minimum\":-90,\"maximum\":90,\"precision\":2,\"name\":\"latitude\"},{\"type\":\"float\",\"minimum\":-180,\"maximum\":180,\"precision\":2,\"name\":\"longitude\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"STANDARD_MALE\",\"STANDARD_FEMALE\",\"ETC\"],\"name\":\"guidancevoice\"},{\"type\":\"object\",\"name\":\"map\",\"payload\":[{\"type\":\"bool\",\"name\":\"isautoscalemodeused\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"MUTED\",\"ALERT_ONLY\",\"UNMUTED\"],\"name\":\"mute\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"volume\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"poweroptimizelevel\"},{\"type\":\"object\",\"name\":\"smartphoneprojection\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"NONE\",\"ACTIVE\",\"INACTIVE\"],\"name\":\"active\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"USB\",\"BLUETOOTH\",\"WIFI\"],\"name\":\"source\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"ANDROID_AUTO\",\"APPLE_CARPLAY\",\"MIRROR_LINK\",\"OTHER\"],\"name\":\"supportedmode\"}]}]},{\"type\":\"bool\",\"name\":\"iswindowchildlockengaged\"},{\"type\":\"object\",\"name\":\"light\",\"payload\":[{\"type\":\"object\",\"name\":\"ambientlight\",\"payload\":[{\"type\":\"object\",\"name\":\"row1\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]}]},{\"type\":\"object\",\"name\":\"row2\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]}]}]},{\"type\":\"object\",\"name\":\"interactivelightbar\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"string\",\"length\":20,\"name\":\"effect\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]},{\"type\":\"bool\",\"name\":\"isdomeon\"},{\"type\":\"bool\",\"name\":\"isgloveboxon\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"perceivedambientlight\"},{\"type\":\"object\",\"name\":\"spotlight\",\"payload\":[{\"type\":\"object\",\"name\":\"row1\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]}]},{\"type\":\"object\",\"name\":\"row2\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]}]},{\"type\":\"object\",\"name\":\"row3\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]}]},{\"type\":\"object\",\"name\":\"row4\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"color\"},{\"type\":\"int\",\"minimum\":1,\"maximum\":100,\"name\":\"intensity\"},{\"type\":\"bool\",\"name\":\"islighton\"}]}]}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"poweroptimizelevel\"},{\"type\":\"object\",\"name\":\"rearshade\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]},{\"type\":\"object\",\"name\":\"rearviewmirror\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"dimminglevel\"}]},{\"type\":\"object\",\"name\":\"seat\",\"payload\":[{\"type\":\"object\",\"name\":\"row1\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"object\",\"name\":\"airbag\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdeployed\"}]},{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"recline\"},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"angle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"}]},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"heating\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"bool\",\"name\":\"isbelted\"},{\"type\":\"bool\",\"name\":\"isoccupied\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"massage\"},{\"type\":\"object\",\"name\":\"occupant\",\"payload\":[{\"type\":\"object\",\"name\":\"identifier\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"issuer\"},{\"type\":\"string\",\"length\":20,\"name\":\"subject\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"position\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"seatbeltheight\"},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"length\"}]},{\"type\":\"object\",\"name\":\"switch\",\"payload\":[{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isreclinebackwardengaged\"},{\"type\":\"bool\",\"name\":\"isreclineforwardengaged\"},{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"iscoolerengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltbackwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"},{\"type\":\"bool\",\"name\":\"iswarmerengaged\"},{\"type\":\"object\",\"name\":\"massage\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdecreaseengaged\"},{\"type\":\"bool\",\"name\":\"isincreaseengaged\"}]},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tilt\"}]},{\"type\":\"object\",\"name\":\"middle\",\"payload\":[{\"type\":\"object\",\"name\":\"airbag\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdeployed\"}]},{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"recline\"},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"angle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"}]},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"heating\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"bool\",\"name\":\"isbelted\"},{\"type\":\"bool\",\"name\":\"isoccupied\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"massage\"},{\"type\":\"object\",\"name\":\"occupant\",\"payload\":[{\"type\":\"object\",\"name\":\"identifier\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"issuer\"},{\"type\":\"string\",\"length\":20,\"name\":\"subject\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"position\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"seatbeltheight\"},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"length\"}]},{\"type\":\"object\",\"name\":\"switch\",\"payload\":[{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isreclinebackwardengaged\"},{\"type\":\"bool\",\"name\":\"isreclineforwardengaged\"},{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"iscoolerengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltbackwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"},{\"type\":\"bool\",\"name\":\"iswarmerengaged\"},{\"type\":\"object\",\"name\":\"massage\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdecreaseengaged\"},{\"type\":\"bool\",\"name\":\"isincreaseengaged\"}]},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tilt\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"object\",\"name\":\"airbag\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdeployed\"}]},{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"recline\"},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"angle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"}]},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"heating\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"bool\",\"name\":\"isbelted\"},{\"type\":\"bool\",\"name\":\"isoccupied\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"massage\"},{\"type\":\"object\",\"name\":\"occupant\",\"payload\":[{\"type\":\"object\",\"name\":\"identifier\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"issuer\"},{\"type\":\"string\",\"length\":20,\"name\":\"subject\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"position\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"seatbeltheight\"},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"length\"}]},{\"type\":\"object\",\"name\":\"switch\",\"payload\":[{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isreclinebackwardengaged\"},{\"type\":\"bool\",\"name\":\"isreclineforwardengaged\"},{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"iscoolerengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltbackwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"},{\"type\":\"bool\",\"name\":\"iswarmerengaged\"},{\"type\":\"object\",\"name\":\"massage\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdecreaseengaged\"},{\"type\":\"bool\",\"name\":\"isincreaseengaged\"}]},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tilt\"}]}]},{\"type\":\"object\",\"name\":\"row2\",\"payload\":[{\"type\":\"object\",\"name\":\"driverside\",\"payload\":[{\"type\":\"object\",\"name\":\"airbag\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdeployed\"}]},{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"recline\"},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"angle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"}]},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"heating\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"bool\",\"name\":\"isbelted\"},{\"type\":\"bool\",\"name\":\"isoccupied\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"massage\"},{\"type\":\"object\",\"name\":\"occupant\",\"payload\":[{\"type\":\"object\",\"name\":\"identifier\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"issuer\"},{\"type\":\"string\",\"length\":20,\"name\":\"subject\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"position\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"seatbeltheight\"},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"length\"}]},{\"type\":\"object\",\"name\":\"switch\",\"payload\":[{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isreclinebackwardengaged\"},{\"type\":\"bool\",\"name\":\"isreclineforwardengaged\"},{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"iscoolerengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltbackwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"},{\"type\":\"bool\",\"name\":\"iswarmerengaged\"},{\"type\":\"object\",\"name\":\"massage\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdecreaseengaged\"},{\"type\":\"bool\",\"name\":\"isincreaseengaged\"}]},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tilt\"}]},{\"type\":\"object\",\"name\":\"middle\",\"payload\":[{\"type\":\"object\",\"name\":\"airbag\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdeployed\"}]},{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"recline\"},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"angle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"}]},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"heating\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"bool\",\"name\":\"isbelted\"},{\"type\":\"bool\",\"name\":\"isoccupied\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"massage\"},{\"type\":\"object\",\"name\":\"occupant\",\"payload\":[{\"type\":\"object\",\"name\":\"identifier\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"issuer\"},{\"type\":\"string\",\"length\":20,\"name\":\"subject\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"position\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"seatbeltheight\"},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"length\"}]},{\"type\":\"object\",\"name\":\"switch\",\"payload\":[{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isreclinebackwardengaged\"},{\"type\":\"bool\",\"name\":\"isreclineforwardengaged\"},{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"iscoolerengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltbackwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"},{\"type\":\"bool\",\"name\":\"iswarmerengaged\"},{\"type\":\"object\",\"name\":\"massage\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdecreaseengaged\"},{\"type\":\"bool\",\"name\":\"isincreaseengaged\"}]},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tilt\"}]},{\"type\":\"object\",\"name\":\"passengerside\",\"payload\":[{\"type\":\"object\",\"name\":\"airbag\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdeployed\"}]},{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"recline\"},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"support\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"angle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"}]},{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"heating\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"bool\",\"name\":\"isbelted\"},{\"type\":\"bool\",\"name\":\"isoccupied\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"massage\"},{\"type\":\"object\",\"name\":\"occupant\",\"payload\":[{\"type\":\"object\",\"name\":\"identifier\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"issuer\"},{\"type\":\"string\",\"length\":20,\"name\":\"subject\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"position\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"seatbeltheight\"},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"length\"}]},{\"type\":\"object\",\"name\":\"switch\",\"payload\":[{\"type\":\"object\",\"name\":\"backrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isreclinebackwardengaged\"},{\"type\":\"bool\",\"name\":\"isreclineforwardengaged\"},{\"type\":\"object\",\"name\":\"lumbar\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"object\",\"name\":\"sidebolster\",\"payload\":[{\"type\":\"bool\",\"name\":\"islesssupportengaged\"},{\"type\":\"bool\",\"name\":\"ismoresupportengaged\"}]}]},{\"type\":\"object\",\"name\":\"headrest\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"}]},{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"iscoolerengaged\"},{\"type\":\"bool\",\"name\":\"isdownengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltbackwardengaged\"},{\"type\":\"bool\",\"name\":\"istiltforwardengaged\"},{\"type\":\"bool\",\"name\":\"isupengaged\"},{\"type\":\"bool\",\"name\":\"iswarmerengaged\"},{\"type\":\"object\",\"name\":\"massage\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdecreaseengaged\"},{\"type\":\"bool\",\"name\":\"isincreaseengaged\"}]},{\"type\":\"object\",\"name\":\"seating\",\"payload\":[{\"type\":\"bool\",\"name\":\"isbackwardengaged\"},{\"type\":\"bool\",\"name\":\"isforwardengaged\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tilt\"}]}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"default\":[2,3],\"name\":\"seatposcount\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"default\":2,\"name\":\"seatrowcount\"},{\"type\":\"object\",\"name\":\"sunroof\",\"payload\":[{\"type\":\"int\",\"minimum\":-100,\"maximum\":100,\"name\":\"position\"},{\"type\":\"object\",\"name\":\"shade\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"position\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\"],\"name\":\"switch\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"CLOSE\",\"OPEN\",\"ONE_SHOT_CLOSE\",\"ONE_SHOT_OPEN\",\"TILT_UP\",\"TILT_DOWN\"],\"name\":\"switch\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"cargovolume\"},{\"type\":\"object\",\"name\":\"chassis\",\"payload\":[{\"type\":\"object\",\"name\":\"accelerator\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"pedalposition\"}]},{\"type\":\"object\",\"name\":\"axle\",\"payload\":[{\"type\":\"object\",\"name\":\"row1\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"axlewidth\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"steeringangle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"tireaspectratio\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tirediameter\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"tirewidth\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"trackwidth\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"treadwidth\"},{\"type\":\"object\",\"name\":\"wheel\",\"payload\":[{\"type\":\"object\",\"name\":\"left\",\"payload\":[{\"type\":\"object\",\"name\":\"brake\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fluidlevel\"},{\"type\":\"bool\",\"name\":\"isbrakesworn\"},{\"type\":\"bool\",\"name\":\"isfluidlevellow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"padwear\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"speed\"},{\"type\":\"object\",\"name\":\"tire\",\"payload\":[{\"type\":\"bool\",\"name\":\"ispressurelow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"pressure\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature\"}]}]},{\"type\":\"object\",\"name\":\"right\",\"payload\":[{\"type\":\"object\",\"name\":\"brake\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fluidlevel\"},{\"type\":\"bool\",\"name\":\"isbrakesworn\"},{\"type\":\"bool\",\"name\":\"isfluidlevellow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"padwear\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"speed\"},{\"type\":\"object\",\"name\":\"tire\",\"payload\":[{\"type\":\"bool\",\"name\":\"ispressurelow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"pressure\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature\"}]}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"wheelcount\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"wheeldiameter\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"wheelwidth\"}]},{\"type\":\"object\",\"name\":\"row2\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"axlewidth\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"steeringangle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"tireaspectratio\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tirediameter\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"tirewidth\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"trackwidth\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"treadwidth\"},{\"type\":\"object\",\"name\":\"wheel\",\"payload\":[{\"type\":\"object\",\"name\":\"left\",\"payload\":[{\"type\":\"object\",\"name\":\"brake\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fluidlevel\"},{\"type\":\"bool\",\"name\":\"isbrakesworn\"},{\"type\":\"bool\",\"name\":\"isfluidlevellow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"padwear\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"speed\"},{\"type\":\"object\",\"name\":\"tire\",\"payload\":[{\"type\":\"bool\",\"name\":\"ispressurelow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"pressure\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature\"}]}]},{\"type\":\"object\",\"name\":\"right\",\"payload\":[{\"type\":\"object\",\"name\":\"brake\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"fluidlevel\"},{\"type\":\"bool\",\"name\":\"isbrakesworn\"},{\"type\":\"bool\",\"name\":\"isfluidlevellow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"padwear\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"speed\"},{\"type\":\"object\",\"name\":\"tire\",\"payload\":[{\"type\":\"bool\",\"name\":\"ispressurelow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"pressure\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature\"}]}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"wheelcount\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"wheeldiameter\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"wheelwidth\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"default\":2,\"name\":\"axlecount\"},{\"type\":\"object\",\"name\":\"brake\",\"payload\":[{\"type\":\"bool\",\"name\":\"isdriveremergencybrakingdetected\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"pedalposition\"}]},{\"type\":\"object\",\"name\":\"parkingbrake\",\"payload\":[{\"type\":\"bool\",\"name\":\"isautoapplyenabled\"},{\"type\":\"bool\",\"name\":\"isengaged\"}]},{\"type\":\"object\",\"name\":\"steeringwheel\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"angle\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"extension\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"tilt\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"wheelbase\"}]},{\"type\":\"object\",\"name\":\"connectivity\",\"payload\":[{\"type\":\"bool\",\"name\":\"isconnectivityavailable\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"curbweight\"},{\"type\":\"object\",\"name\":\"currentlocation\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"altitude\"},{\"type\":\"object\",\"name\":\"gnssreceiver\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"NONE\",\"TWO_D\",\"TWO_D_SATELLITE_BASED_AUGMENTATION\",\"TWO_D_GROUND_BASED_AUGMENTATION\",\"TWO_D_SATELLITE_AND_GROUND_BASED_AUGMENTATION\",\"THREE_D\",\"THREE_D_SATELLITE_BASED_AUGMENTATION\",\"THREE_D_GROUND_BASED_AUGMENTATION\",\"THREE_D_SATELLITE_AND_GROUND_BASED_AUGMENTATION\"],\"name\":\"fixtype\"},{\"type\":\"object\",\"name\":\"mountingposition\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"x\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"y\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"z\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":360,\"precision\":2,\"name\":\"heading\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"horizontalaccuracy\"},{\"type\":\"float\",\"minimum\":-90,\"maximum\":90,\"precision\":2,\"name\":\"latitude\"},{\"type\":\"float\",\"minimum\":-180,\"maximum\":180,\"precision\":2,\"name\":\"longitude\"},{\"type\":\"timestamp\",\"length\":20,\"name\":\"timestamp\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"verticalaccuracy\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"currentoverallweight\"},{\"type\":\"object\",\"name\":\"driver\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"attentiveprobability\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"distractionlevel\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fatiguelevel\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"heartrate\"},{\"type\":\"object\",\"name\":\"identifier\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"issuer\"},{\"type\":\"string\",\"length\":20,\"name\":\"subject\"}]},{\"type\":\"bool\",\"name\":\"iseyesonroad\"},{\"type\":\"bool\",\"name\":\"ishandsonwheel\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"emissionsco2\"},{\"type\":\"object\",\"name\":\"exterior\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"airtemperature\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"humidity\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lightintensity\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"grossweight\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"height\"},{\"type\":\"bool\",\"name\":\"isbrokendown\"},{\"type\":\"bool\",\"name\":\"ismoving\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"length\"},{\"type\":\"object\",\"name\":\"lowvoltagebattery\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"currentcurrent\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"currentvoltage\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"nominalcapacity\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"nominalvoltage\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"UNDEFINED\",\"LOCK\",\"OFF\",\"ACC\",\"ON\",\"START\"],\"name\":\"lowvoltagesystemstate\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxtowballweight\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxtowweight\"},{\"type\":\"object\",\"name\":\"obd\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"absoluteload\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"acceleratorpositiond\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"acceleratorpositione\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"acceleratorpositionf\"},{\"type\":\"string\",\"length\":20,\"name\":\"airstatus\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"ambientairtemperature\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"barometricpressure\"},{\"type\":\"object\",\"name\":\"catalyst\",\"payload\":[{\"type\":\"object\",\"name\":\"bank1\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature2\"}]},{\"type\":\"object\",\"name\":\"bank2\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature2\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"commandedegr\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"commandedevap\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"commandedequivalenceratio\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"controlmodulevoltage\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"coolanttemperature\"},{\"type\":\"string\",\"length\":20,\"name\":\"dtclist\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"distancesincedtcclear\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"distancewithmil\"},{\"type\":\"object\",\"name\":\"drivecyclestatus\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"dtccount\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"SPARK\",\"COMPRESSION\"],\"name\":\"ignitiontype\"},{\"type\":\"bool\",\"name\":\"ismilon\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"egrerror\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"evapvaporpressure\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"evapvaporpressureabsolute\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"evapvaporpressurealternate\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"engineload\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"enginespeed\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"ethanolpercent\"},{\"type\":\"string\",\"length\":20,\"name\":\"freezedtc\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fuelinjectiontiming\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fuellevel\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fuelpressure\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fuelrailpressureabsolute\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fuelrailpressuredirect\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fuelrailpressurevac\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"fuelrate\"},{\"type\":\"string\",\"length\":20,\"name\":\"fuelstatus\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":23,\"name\":\"fueltype\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"hybridbatteryremaining\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"intaketemp\"},{\"type\":\"bool\",\"name\":\"isptoactive\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"longtermfueltrim1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"longtermfueltrim2\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"longtermo2trim1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"longtermo2trim2\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"longtermo2trim3\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"longtermo2trim4\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"maf\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"map\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"maxmaf\"},{\"type\":\"object\",\"name\":\"o2\",\"payload\":[{\"type\":\"object\",\"name\":\"sensor1\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor2\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor3\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor4\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor5\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor6\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor7\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor8\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]}]},{\"type\":\"object\",\"name\":\"o2wr\",\"payload\":[{\"type\":\"object\",\"name\":\"sensor1\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor2\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor3\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor4\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor5\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor6\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor7\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]},{\"type\":\"object\",\"name\":\"sensor8\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"lambda\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"voltage\"}]}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"obdstandards\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"oiltemperature\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"oxygensensorsin2banks\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"oxygensensorsin4banks\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"01\",\"02\",\"03\",\"04\",\"05\",\"06\",\"07\",\"08\",\"09\",\"0A\",\"0B\",\"0C\",\"0D\",\"0E\",\"0F\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1A\",\"1B\",\"1C\",\"1D\",\"1E\",\"1F\",\"20\"],\"name\":\"pidsa\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"2A\",\"2B\",\"2C\",\"2D\",\"2E\",\"2F\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"3A\",\"3B\",\"3C\",\"3D\",\"3E\",\"3F\",\"40\"],\"name\":\"pidsb\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"4A\",\"4B\",\"4C\",\"4D\",\"4E\",\"4F\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"5A\",\"5B\",\"5C\",\"5D\",\"5E\",\"5F\",\"60\"],\"name\":\"pidsc\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"relativeacceleratorposition\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"relativethrottleposition\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"runtime\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"runtimemil\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermfueltrim2\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermo2trim1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermo2trim2\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermo2trim3\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"shorttermo2trim4\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"speed\"},{\"type\":\"object\",\"name\":\"status\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"dtccount\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"SPARK\",\"COMPRESSION\"],\"name\":\"ignitiontype\"},{\"type\":\"bool\",\"name\":\"ismilon\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"throttleactuator\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"throttleposition\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"throttlepositionb\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"throttlepositionc\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"timesincedtccleared\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"timingadvance\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"warmupssincedtcclear\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"poweroptimizelevel\"},{\"type\":\"object\",\"name\":\"powertrain\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"accumulatedbrakingenergy\"},{\"type\":\"object\",\"name\":\"combustionengine\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"default\":\"UNKNOWN\",\"arr\":[\"UNKNOWN\",\"NATURAL\",\"SUPERCHARGER\",\"TURBOCHARGER\"],\"name\":\"aspirationtype\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"bore\"},{\"type\":\"string\",\"length\":20,\"name\":\"compressionratio\"},{\"type\":\"pickOne\",\"length\":20,\"default\":\"UNKNOWN\",\"arr\":[\"UNKNOWN\",\"STRAIGHT\",\"V\",\"BOXER\",\"W\",\"ROTARY\",\"RADIAL\",\"SQUARE\",\"H\",\"U\",\"OPPOSED\",\"X\"],\"name\":\"configuration\"},{\"type\":\"object\",\"name\":\"dieselexhaustfluid\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"capacity\"},{\"type\":\"bool\",\"name\":\"islevellow\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"level\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"range\"}]},{\"type\":\"object\",\"name\":\"dieselparticulatefilter\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"deltapressure\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"inlettemperature\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"outlettemperature\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"displacement\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"ect\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"eop\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"eot\"},{\"type\":\"string\",\"length\":20,\"name\":\"enginecode\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"enginecoolantcapacity\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"enginehours\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"engineoilcapacity\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"CRITICALLY_LOW\",\"LOW\",\"NORMAL\",\"HIGH\",\"CRITICALLY_HIGH\"],\"name\":\"engineoillevel\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"idlehours\"},{\"type\":\"bool\",\"name\":\"isrunning\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maf\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"map\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxpower\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxtorque\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"numberofcylinders\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"numberofvalvespercylinder\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"oilliferemaining\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"power\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"speed\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"strokelength\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"tps\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"torque\"}]},{\"type\":\"object\",\"name\":\"electricmotor\",\"payload\":[{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"coolanttemperature\"},{\"type\":\"string\",\"length\":20,\"name\":\"enginecode\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxpower\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxregenpower\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxregentorque\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxtorque\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"power\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"speed\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"torque\"}]},{\"type\":\"object\",\"name\":\"fuelsystem\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"absolutelevel\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"averageconsumption\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"consumptionsincestart\"},{\"type\":\"pickOne\",\"length\":20,\"default\":\"UNKNOWN\",\"arr\":[\"UNKNOWN\",\"NOT_APPLICABLE\",\"STOP_START\",\"BELT_ISG\",\"CIMG\",\"PHEV\"],\"name\":\"hybridtype\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"instantconsumption\"},{\"type\":\"bool\",\"name\":\"isenginestopstartenabled\"},{\"type\":\"bool\",\"name\":\"isfuellevellow\"},{\"type\":\"bool\",\"name\":\"isfuelportflapopen\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"range\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"FRONT_LEFT\",\"FRONT_MIDDLE\",\"FRONT_RIGHT\",\"REAR_LEFT\",\"REAR_MIDDLE\",\"REAR_RIGHT\",\"LEFT_FRONT\",\"LEFT_MIDDLE\",\"LEFT_REAR\",\"RIGHT_FRONT\",\"RIGHT_MIDDLE\",\"RIGHT_REAR\"],\"name\":\"refuelportposition\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"relativelevel\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"E5_95\",\"E5_98\",\"E10_95\",\"E10_98\",\"E85\",\"B7\",\"B10\",\"B20\",\"B30\",\"B100\",\"XTL\",\"LPG\",\"CNG\",\"LNG\",\"H2\",\"OTHER\"],\"name\":\"supportedfuel\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"GASOLINE\",\"DIESEL\",\"E85\",\"LPG\",\"CNG\",\"LNG\",\"H2\",\"OTHER\"],\"name\":\"supportedfueltypes\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tankcapacity\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"timeremaining\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"poweroptimizelevel\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"range\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"timeremaining\"},{\"type\":\"object\",\"name\":\"tractionbattery\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"accumulatedchargedenergy\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"accumulatedchargedthroughput\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"accumulatedconsumedenergy\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"accumulatedconsumedthroughput\"},{\"type\":\"object\",\"name\":\"cellvoltage\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"cellvoltages\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"idmax\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"idmin\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"max\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"min\"}]},{\"type\":\"object\",\"name\":\"charging\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"averagepower\"},{\"type\":\"object\",\"name\":\"chargecurrent\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"dc\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase2\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase3\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"default\":100,\"name\":\"chargelimit\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"IEC_TYPE_1_AC\",\"IEC_TYPE_2_AC\",\"IEC_TYPE_3_AC\",\"IEC_TYPE_4_DC\",\"IEC_TYPE_1_CCS_DC\",\"IEC_TYPE_2_CCS_DC\",\"TESLA_ROADSTER\",\"TESLA_HPWC\",\"TESLA_SUPERCHARGER\",\"GBT_AC\",\"GBT_DC\",\"OTHER\"],\"name\":\"chargeplugtype\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"OPEN\",\"CLOSED\"],\"name\":\"chargeportflap\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"FRONT_LEFT\",\"FRONT_MIDDLE\",\"FRONT_RIGHT\",\"REAR_LEFT\",\"REAR_MIDDLE\",\"REAR_RIGHT\",\"LEFT_FRONT\",\"LEFT_MIDDLE\",\"LEFT_REAR\",\"RIGHT_FRONT\",\"RIGHT_MIDDLE\",\"RIGHT_REAR\"],\"name\":\"chargeportposition\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"IEC_TYPE_1_AC\",\"IEC_TYPE_2_AC\",\"IEC_TYPE_3_AC\",\"IEC_TYPE_4_DC\",\"IEC_TYPE_1_CCS_DC\",\"IEC_TYPE_2_CCS_DC\",\"TESLA_ROADSTER\",\"TESLA_HPWC\",\"TESLA_SUPERCHARGER\",\"GBT_AC\",\"GBT_DC\",\"OTHER\"],\"name\":\"chargeporttype\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"chargerate\"},{\"type\":\"object\",\"name\":\"chargevoltage\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"dc\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase2\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase3\"}]},{\"type\":\"string\",\"length\":20,\"name\":\"evseid\"},{\"type\":\"bool\",\"name\":\"ischargeportflapopen\"},{\"type\":\"bool\",\"name\":\"ischarging\"},{\"type\":\"bool\",\"name\":\"ischargingcableconnected\"},{\"type\":\"bool\",\"name\":\"ischargingcablelocked\"},{\"type\":\"bool\",\"name\":\"isdischarging\"},{\"type\":\"object\",\"name\":\"location\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"altitude\"},{\"type\":\"float\",\"minimum\":-90,\"maximum\":90,\"precision\":2,\"name\":\"latitude\"},{\"type\":\"float\",\"minimum\":-180,\"maximum\":180,\"precision\":2,\"name\":\"longitude\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"maxpower\"},{\"type\":\"object\",\"name\":\"maximumchargingcurrent\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"dc\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase1\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase2\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"phase3\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"DEACTIVATED\",\"AUTOMATIC\",\"TRIGGERED\",\"TIMER\",\"PROFILE\",\"EXTERNAL_ENTITY\",\"MANUAL\",\"GRID\"],\"name\":\"mode\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"powerloss\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"START\",\"STOP\"],\"name\":\"startstopcharging\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"timetocomplete\"},{\"type\":\"object\",\"name\":\"timer\",\"payload\":[{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"INACTIVE\",\"START_TIME\",\"END_TIME\"],\"name\":\"mode\"},{\"type\":\"string\",\"length\":20,\"name\":\"time\"}]}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"currentcurrent\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"currentpower\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"currentvoltage\"},{\"type\":\"object\",\"name\":\"dcdc\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"powerloss\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"temperature\"}]},{\"type\":\"string\",\"length\":20,\"name\":\"errorcodes\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"grosscapacity\"},{\"type\":\"string\",\"length\":20,\"name\":\"id\"},{\"type\":\"bool\",\"name\":\"isgroundconnected\"},{\"type\":\"bool\",\"name\":\"ispowerconnected\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"maxvoltage\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"netcapacity\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"nominalvoltage\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"powerloss\"},{\"type\":\"string\",\"length\":20,\"name\":\"productiondate\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"range\"},{\"type\":\"object\",\"name\":\"stateofcharge\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"current\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"currentenergy\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"displayed\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"stateofhealth\"},{\"type\":\"object\",\"name\":\"temperature\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"average\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"celltemperature\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"max\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"min\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"timeremaining\"}]},{\"type\":\"object\",\"name\":\"transmission\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"clutchengagement\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":100,\"name\":\"clutchwear\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"currentgear\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"difflockfrontengagement\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"difflockrearengagement\"},{\"type\":\"pickOne\",\"length\":20,\"default\":\"UNKNOWN\",\"arr\":[\"UNKNOWN\",\"FORWARD_WHEEL_DRIVE\",\"REAR_WHEEL_DRIVE\",\"ALL_WHEEL_DRIVE\"],\"name\":\"drivetype\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"MANUAL\",\"AUTOMATIC\"],\"name\":\"gearchangemode\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"gearcount\"},{\"type\":\"bool\",\"name\":\"iselectricalpowertrainengaged\"},{\"type\":\"bool\",\"name\":\"islowrangeengaged\"},{\"type\":\"bool\",\"name\":\"isparklockengaged\"},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"NORMAL\",\"SPORT\",\"ECONOMY\",\"SNOW\",\"RAIN\"],\"name\":\"performancemode\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"selectedgear\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"temperature\"},{\"type\":\"float\",\"minimum\":-100,\"maximum\":100,\"precision\":2,\"name\":\"torquedistribution\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"travelleddistance\"},{\"type\":\"pickOne\",\"length\":20,\"default\":\"UNKNOWN\",\"arr\":[\"UNKNOWN\",\"SEQUENTIAL\",\"H\",\"AUTOMATIC\",\"DSG\",\"CVT\"],\"name\":\"type\"}]},{\"type\":\"pickOne\",\"length\":20,\"arr\":[\"COMBUSTION\",\"HYBRID\",\"ELECTRIC\"],\"name\":\"type\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"roofload\"},{\"type\":\"object\",\"name\":\"service\",\"payload\":[{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"distancetoservice\"},{\"type\":\"bool\",\"name\":\"isservicedue\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"timetoservice\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"speed\"},{\"type\":\"string\",\"length\":20,\"default\":\"0000-01-01T00:00Z\",\"name\":\"starttime\"},{\"type\":\"object\",\"name\":\"trailer\",\"payload\":[{\"type\":\"bool\",\"name\":\"isconnected\"}]},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"traveleddistance\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"traveleddistancesincestart\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tripduration\"},{\"type\":\"float\",\"minimum\":0,\"maximum\":100,\"precision\":2,\"name\":\"tripmeterreading\"},{\"type\":\"object\",\"name\":\"vehicleidentification\",\"payload\":[{\"type\":\"string\",\"length\":20,\"name\":\"acrisscode\"},{\"type\":\"string\",\"length\":20,\"name\":\"bodytype\"},{\"type\":\"string\",\"length\":20,\"name\":\"brand\"},{\"type\":\"string\",\"length\":20,\"name\":\"datevehiclefirstregistered\"},{\"type\":\"string\",\"length\":20,\"name\":\"knownvehicledamages\"},{\"type\":\"string\",\"length\":20,\"name\":\"licenseplate\"},{\"type\":\"string\",\"length\":20,\"name\":\"meetsemissionstandard\"},{\"type\":\"string\",\"length\":20,\"name\":\"model\"},{\"type\":\"string\",\"length\":20,\"name\":\"optionalextras\"},{\"type\":\"string\",\"length\":20,\"name\":\"productiondate\"},{\"type\":\"string\",\"length\":20,\"name\":\"purchasedate\"},{\"type\":\"string\",\"length\":17,\"name\":\"vin\"},{\"type\":\"string\",\"length\":20,\"name\":\"vehicleconfiguration\"},{\"type\":\"string\",\"length\":20,\"name\":\"vehicleexteriorcolor\"},{\"type\":\"string\",\"length\":20,\"name\":\"vehicleinteriorcolor\"},{\"type\":\"string\",\"length\":20,\"name\":\"vehicleinteriortype\"},{\"type\":\"string\",\"length\":20,\"name\":\"vehiclemodeldate\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"vehicleseatingcapacity\"},{\"type\":\"string\",\"length\":20,\"name\":\"vehiclespecialusage\"},{\"type\":\"string\",\"length\":3,\"name\":\"wmi\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"year\"}]},{\"type\":\"object\",\"name\":\"versionvss\",\"payload\":[{\"type\":\"string\",\"length\":20,\"default\":\"dev\",\"name\":\"label\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"default\":4,\"name\":\"major\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"default\":1,\"name\":\"minor\"},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"patch\"}]},{\"type\":\"int\",\"minimum\":0,\"maximum\":10,\"name\":\"width\"}]}"
      },
      "DependsOn": [
        "cmsvehiclesimulatorconsoleconstructcustomresourcepolicyC5DD1272",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/custom-template-vss_default_template.json/Default"
      }
    },
    "cmsvehiclesimulatorconsoleconstructdetachiotpolicyA3764804": {
      "Type": "AWS::CloudFormation::CustomResource",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "cmsvehiclesimulatorcustomresourceconstructlambdafunction0843A969",
            "Arn"
          ]
        },
        "Resource": "DetachIoTPolicy",
        "IoTPolicyName": {
          "Ref": "cmsvehiclesimulatorconsoleconstructvsiotpolicy701BC6B2"
        }
      },
      "DependsOn": [
        "cmsvehiclesimulatorconsoleconstructcustomresourcepolicyC5DD1272",
        "ssmappuniqueidregistermodule9C5C2C5D"
      ],
      "UpdateReplacePolicy": "Delete",
      "DeletionPolicy": "Delete",
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/cms-vehicle-simulator/console-construct/detach-iot-policy/Default"
      }
    },
    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          }
        ],
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ec2:CreateNetworkInterfacePermission"
                  ],
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/",
                              {
                                "Fn::Join": [
                                  "",
                                  [
                                    "{{resolve:ssm:/solution/vpc/",
                                    {
                                      "Fn::GetAtt": [
                                        "moduleinputsconstructvpcnamecustomresource12726E51",
                                        "parameter_value"
                                      ]
                                    },
                                    "/subnets/private/1}}"
                                  ]
                                ]
                              }
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/",
                              {
                                "Fn::Join": [
                                  "",
                                  [
                                    "{{resolve:ssm:/solution/vpc/",
                                    {
                                      "Fn::GetAtt": [
                                        "moduleinputsconstructvpcnamecustomresource12726E51",
                                        "parameter_value"
                                      ]
                                    },
                                    "/subnets/private/2}}"
                                  ]
                                ]
                              }
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:DescribeNetworkInterfaces",
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM4",
              "appliesTo": [
                "Policy::arn:<AWS::Partition>:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ],
              "reason": "Log retention lambda uses managed policies"
            }
          ]
        }
      }
    },
    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "logs:DeleteRetentionPolicy",
                "logs:PutRetentionPolicy"
              ],
              "Effect": "Allow",
              "Resource": "*"
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
        "Roles": [
          {
            "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/ServiceRole/DefaultPolicy/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM5",
              "appliesTo": [
                "Resource::*"
              ],
              "reason": "Log retention lambda uses managed policies"
            }
          ]
        }
      }
    },
    "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Handler": "index.handler",
        "Runtime": "nodejs22.x",
        "Timeout": 900,
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d.zip"
              ]
            ]
          }
        },
        "Role": {
          "Fn::GetAtt": [
            "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB",
            "Arn"
          ]
        },
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorcdklambdasvpcconstructsecuritygroupE8006040",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB",
        "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8a/Resource",
        "aws:asset:path": "asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          },
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
              ]
            ]
          }
        ],
        "Policies": [
          {
            "PolicyDocument": {
              "Statement": [
                {
                  "Action": [
                    "ec2:CreateNetworkInterfacePermission"
                  ],
                  "Condition": {
                    "StringEquals": {
                      "ec2:Subnet": [
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/",
                              {
                                "Fn::Join": [
                                  "",
                                  [
                                    "{{resolve:ssm:/solution/vpc/",
                                    {
                                      "Fn::GetAtt": [
                                        "moduleinputsconstructvpcnamecustomresource12726E51",
                                        "parameter_value"
                                      ]
                                    },
                                    "/subnets/private/1}}"
                                  ]
                                ]
                              }
                            ]
                          ]
                        },
                        {
                          "Fn::Join": [
                            "",
                            [
                              "arn:",
                              {
                                "Ref": "AWS::Partition"
                              },
                              ":ec2:",
                              {
                                "Ref": "AWS::Region"
                              },
                              ":",
                              {
                                "Ref": "AWS::AccountId"
                              },
                              ":subnet/",
                              {
                                "Fn::Join": [
                                  "",
                                  [
                                    "{{resolve:ssm:/solution/vpc/",
                                    {
                                      "Fn::GetAtt": [
                                        "moduleinputsconstructvpcnamecustomresource12726E51",
                                        "parameter_value"
                                      ]
                                    },
                                    "/subnets/private/2}}"
                                  ]
                                ]
                              }
                            ]
                          ]
                        }
                      ],
                      "ec2:AuthorizedService": "lambda.amazonaws.com"
                    }
                  },
                  "Effect": "Allow",
                  "Resource": {
                    "Fn::Join": [
                      "",
                      [
                        "arn:",
                        {
                          "Ref": "AWS::Partition"
                        },
                        ":ec2:",
                        {
                          "Ref": "AWS::Region"
                        },
                        ":",
                        {
                          "Ref": "AWS::AccountId"
                        },
                        ":network-interface/*"
                      ]
                    ]
                  }
                },
                {
                  "Action": [
                    "ec2:DescribeNetworkInterfaces",
                    "ec2:CreateNetworkInterface",
                    "ec2:DeleteNetworkInterface"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
                }
              ],
              "Version": "2012-10-17"
            },
            "PolicyName": "ec2-policy"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/AWS679f53fac002430cb0da5b7982bd2287/ServiceRole/Resource",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-IAM4",
              "appliesTo": [
                "Policy::arn:<AWS::Partition>:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
                "Policy::arn:<AWS::Partition>:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
              ],
              "reason": "Lambda created by CDK constructs uses managed policies"
            }
          ]
        }
      }
    },
    "AWS679f53fac002430cb0da5b7982bd2287SecurityGroupBE06FF8C": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Automatic security group for Lambda Function cmsvehiclesimulatorAWS679f53fac002430cb0da5b7982bd22879AF82E35",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/AWS679f53fac002430cb0da5b7982bd2287/SecurityGroup/Resource"
      }
    },
    "AWS679f53fac002430cb0da5b7982bd22872D164C4C": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "assetc099eb4e32cbf1c3da9c45a3b280efe2bed38d27d74aa72702b67d86d1b52354.zip"
              ]
            ]
          }
        },
        "Handler": "index.handler",
        "Role": {
          "Fn::GetAtt": [
            "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2",
            "Arn"
          ]
        },
        "Runtime": "nodejs22.x",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 120,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorcdklambdasvpcconstructsecuritygroupE8006040",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/AWS679f53fac002430cb0da5b7982bd2287/Resource",
        "aws:asset:path": "asset.c099eb4e32cbf1c3da9c45a3b280efe2bed38d27d74aa72702b67d86d1b52354",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code",
        "cdk_nag": {
          "rules_to_suppress": [
            {
              "id": "AwsSolutions-L1",
              "reason": "Lambda created by CDK constructs cannot use a different runtime"
            }
          ]
        }
      }
    },
    "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aServiceRoleD3B1837C": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": "lambda.amazonaws.com"
              }
            }
          ],
          "Version": "2012-10-17"
        },
        "ManagedPolicyArns": [
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
              ]
            ]
          },
          {
            "Fn::Join": [
              "",
              [
                "arn:",
                {
                  "Ref": "AWS::Partition"
                },
                ":iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
              ]
            ]
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506a/ServiceRole/Resource"
      }
    },
    "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aServiceRoleDefaultPolicy2031E9D3": {
      "Type": "AWS::IAM::Policy",
      "Properties": {
        "PolicyDocument": {
          "Statement": [
            {
              "Action": [
                "s3:GetBucket*",
                "s3:GetObject*",
                "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":s3:::",
                      {
                        "Fn::Join": [
                          "-",
                          [
                            {
                              "Fn::FindInMap": [
                                "Solution",
                                "AssetsConfig",
                                "S3AssetBucketBaseName"
                              ]
                            },
                            {
                              "Fn::Sub": "${AWS::Region}"
                            }
                          ]
                        ]
                      },
                      "/*"
                    ]
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      {
                        "Ref": "AWS::Partition"
                      },
                      ":s3:::",
                      {
                        "Fn::Join": [
                          "-",
                          [
                            {
                              "Fn::FindInMap": [
                                "Solution",
                                "AssetsConfig",
                                "S3AssetBucketBaseName"
                              ]
                            },
                            {
                              "Fn::Sub": "${AWS::Region}"
                            }
                          ]
                        ]
                      }
                    ]
                  ]
                }
              ]
            },
            {
              "Action": [
                "s3:Abort*",
                "s3:DeleteObject*",
                "s3:GetBucket*",
                "s3:GetObject*",
                "s3:List*",
                "s3:PutObject",
                "s3:PutObjectLegalHold",
                "s3:PutObjectRetention",
                "s3:PutObjectTagging",
                "s3:PutObjectVersionTagging"
              ],
              "Effect": "Allow",
              "Resource": [
                {
                  "Fn::GetAtt": [
                    "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                    "Arn"
                  ]
                },
                {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA",
                          "Arn"
                        ]
                      },
                      "/*"
                    ]
                  ]
                }
              ]
            }
          ],
          "Version": "2012-10-17"
        },
        "PolicyName": "ucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aServiceRoleDefaultPolicy2031E9D3",
        "Roles": [
          {
            "Ref": "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aServiceRoleD3B1837C"
          }
        ]
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506a/ServiceRole/DefaultPolicy/Resource"
      }
    },
    "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aSecurityGroup91469B08": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Automatic security group for Lambda Function cmsvehiclesimulatorCustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aE3AD52C5",
        "SecurityGroupEgress": [
          {
            "CidrIp": "0.0.0.0/0",
            "Description": "Allow all outbound traffic by default",
            "IpProtocol": "-1"
          }
        ],
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "VpcId": {
          "Fn::Join": [
            "",
            [
              "{{resolve:ssm:/solution/vpc/",
              {
                "Fn::GetAtt": [
                  "moduleinputsconstructvpcnamecustomresource12726E51",
                  "parameter_value"
                ]
              },
              "/vpcid}}"
            ]
          ]
        }
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506a/SecurityGroup/Resource"
      }
    },
    "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506a5B5C79FE": {
      "Type": "AWS::Lambda::Function",
      "Properties": {
        "Code": {
          "S3Bucket": {
            "Fn::Join": [
              "-",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetBucketBaseName"
                  ]
                },
                {
                  "Fn::Sub": "${AWS::Region}"
                }
              ]
            ]
          },
          "S3Key": {
            "Fn::Join": [
              "/",
              [
                {
                  "Fn::FindInMap": [
                    "Solution",
                    "AssetsConfig",
                    "S3AssetKeyPrefix"
                  ]
                },
                "asset9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d.zip"
              ]
            ]
          }
        },
        "Environment": {
          "Variables": {
            "AWS_CA_BUNDLE": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"
          }
        },
        "Handler": "index.handler",
        "Layers": [
          {
            "Ref": "cmsvehiclesimulatorconsoleconstructconsolebucketdeploymentAwsCliLayer0549F181"
          }
        ],
        "MemorySize": 1024,
        "Role": {
          "Fn::GetAtt": [
            "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aServiceRoleD3B1837C",
            "Arn"
          ]
        },
        "Runtime": "python3.11",
        "Tags": [
          {
            "Key": "awsApplication",
            "Value": {
              "Fn::GetAtt": [
                "appregistryconstructappregistryapplicationAC1A319B",
                "ApplicationTagValue"
              ]
            }
          },
          {
            "Key": "Solutions:ApplicationType",
            "Value": "AWS-Solutions"
          },
          {
            "Key": "Solutions:ModuleName",
            "Value": "cms-vehicle-simulator"
          },
          {
            "Key": "Solutions:SolutionID",
            "Value": "SO0241"
          },
          {
            "Key": "Solutions:SolutionName",
            "Value": "connected-mobility-solution-on-aws"
          },
          {
            "Key": "Solutions:SolutionVersion",
            "Value": "v2.1.5"
          }
        ],
        "Timeout": 900,
        "VpcConfig": {
          "SecurityGroupIds": [
            {
              "Fn::GetAtt": [
                "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aSecurityGroup91469B08",
                "GroupId"
              ]
            }
          ],
          "SubnetIds": [
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/1}}"
                ]
              ]
            },
            {
              "Fn::Join": [
                "",
                [
                  "{{resolve:ssm:/solution/vpc/",
                  {
                    "Fn::GetAtt": [
                      "moduleinputsconstructvpcnamecustomresource12726E51",
                      "parameter_value"
                    ]
                  },
                  "/subnets/private/2}}"
                ]
              ]
            }
          ]
        }
      },
      "DependsOn": [
        "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aServiceRoleDefaultPolicy2031E9D3",
        "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506aServiceRoleD3B1837C"
      ],
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/Custom::CDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756C1024MiBc8ed8da5462554f60496fdb0e397446d122355506a/Resource",
        "aws:asset:path": "asset.9a1fcb4a7ecba81ad70e9d3fb241f6794497da945dae5f25924e4dd002b65f2d",
        "aws:asset:is-bundled": false,
        "aws:asset:property": "Code"
      }
    },
    "CDKMetadata": {
      "Type": "AWS::CDK::Metadata",
      "Properties": {
        "Analytics": "v2:deflate64:H4sIAAAAAAAA/21U3W/aMBD/W/pu3Ba0aY+joHZIVEXQbo/ocI7g4fgi36UsivK/T3ZCoN1ecr/79H1mrJvx3Vjf3cCJRyY7jpzd6WYjYI5qtvfPUJbW5wpOvG0Yw7s1aEDAUQ5lGTC3LKHWzWzvp2XprAGx5KPnVCTYXSX4FKgq/5VMmcnYZN4q5iI+GqzPVxCgQMEQXQamVWjGutmgqYKVeoj5QdCqrPZQULbTzSvsHEaLDqTvAzC2ykGxy0A3S6gx/MTAfcIf+MfKm3MlA95YnzsU8tfaFYbCMndlTLYNMKOwnkaiMiwd1QV60Q+VOaLMB0G01k0njYmpDsaQPerIipw19UXc8a2yUOhmTV2RiV4szzaOctbNkvI1CvqU8ZLyoXln3CrjqMr2gbykUb4Em1s/NQaZZ+QlkFNr5JI84w+EDANfHvu/Yh4XI067b9M13ypDubdCunljDCsiF00GfAYzZ9HLteoiWWSxIKnPztd87MZUBMyhb7Rgue9HxrrZVMYgZuoZSrUCZjU7kDWofoEVtREQfAZzsD519pr/FGkrwEfWzTwt3RPKQrBQy7ReC/9OR1Sd6q3MQDBqW8VxbNdLlS7Hxll1t5O0MbU4RwcGFz7DP62yJPpqtLOKhYo1MlXBYD+HAV+OaJCmhdwI5PGcTfLehl7JenriTxG7laBQpKy21htXZRhTWHQwvvNSSVlJf1JbFy9oCyc2zqaIzqajatW3L/rrzff4i2FyaQd4ZMizhMoI36Z/z7CCI57oWeQeI/dKm0mrVrUcyN9O9P1Y39/f/GZrR6HyYgvU647+BbebGD7KBAAA"
      },
      "Metadata": {
        "aws:cdk:path": "cms-vehicle-simulator/CDKMetadata/Default"
      },
      "Condition": "CDKMetadataAvailable"
    }
  },
  "Parameters": {
    "AppUniqueId": {
      "Type": "String",
      "AllowedPattern": "^(?!-)[a-z0-9-]+(?<!-)$",
      "ConstraintDescription": "AppUniqueId must contain min 3 and max 10 characters, and contain only lowercase alphanumeric characters and dashes.",
      "Description": "Application unique identifier used to uniquely name resources within the stack.",
      "MaxLength": 10,
      "MinLength": 3
    },
    "AdminUserEmail": {
      "Type": "String",
      "AllowedPattern": "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$",
      "ConstraintDescription": "User E-Mail must be a valid E-Mail address",
      "Description": "The user E-Mail to access the UI"
    }
  },
  "Outputs": {
    "RestAPIId": {
      "Value": {
        "Ref": "RestAPI"
      }
    },
    "APIHandlerName": {
      "Value": {
        "Ref": "APIHandler"
      }
    },
    "APIHandlerArn": {
      "Value": {
        "Fn::GetAtt": [
          "APIHandler",
          "Arn"
        ]
      }
    },
    "EndpointURL": {
      "Value": {
        "Fn::Sub": "https://${RestAPI}.execute-api.${AWS::Region}.${AWS::URLSuffix}/dev/"
      }
    },
    "adminuseremail": {
      "Description": "Admin User Email",
      "Value": {
        "Ref": "AdminUserEmail"
      }
    },
    "consoleclientid": {
      "Description": "The console client ID",
      "Value": {
        "Ref": "cmsvehiclesimulatorcognitoconstructuserpoolclient67539730"
      }
    },
    "identitypoolid": {
      "Description": "The ID for the Cognitio Identity Pool",
      "Value": {
        "Ref": "cmsvehiclesimulatorcognitoconstructidentitypool7554F769"
      }
    },
    "userpoolid": {
      "Description": "User Pool Id",
      "Value": {
        "Ref": "cmsvehiclesimulatorcognitoconstructuserpoolB9BCF5A6"
      }
    },
    "restapiid": {
      "Description": "API Gateway API ID",
      "Value": {
        "Ref": "RestAPI"
      }
    },
    "apigatewaystage": {
      "Description": "API Gateway Stage",
      "Value": "dev"
    },
    "consoleurl": {
      "Description": "Console URL",
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Fn::GetAtt": [
                "cmsvehiclesimulatorcloudfrontconstructdistributionCloudFrontDistributionEA34668B",
                "DomainName"
              ]
            }
          ]
        ]
      }
    },
    "cloudfrontdistributionbucketname": {
      "Description": "Cloudfront Distribution Bucket Name",
      "Value": {
        "Ref": "cmsvehiclesimulatorcloudfrontconstructdistributionS3Bucket4A436FFA"
      }
    }
  },
  "Conditions": {
    "CDKMetadataAvailable": {
      "Fn::Or": [
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "af-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-northeast-3"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-south-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-3"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ap-southeast-4"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "ca-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "cn-northwest-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-central-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-north-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-south-2"
              ]
            }
          ]
        },
        {
          "Fn::Or": [
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "eu-west-3"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "il-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "me-central-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "me-south-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "sa-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-1"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-east-2"
              ]
            },
            {
              "Fn::Equals": [
                {
                  "Ref": "AWS::Region"
                },
                "us-west-1"
              ]
            }
          ]
        },
        {
          "Fn::Equals": [
            {
              "Ref": "AWS::Region"
            },
            "us-west-2"
          ]
        }
      ]
    }
  }
}