text:
zerolike(x::Number) = zero(x)
zerolike(x::Tuple) = zerolike.(x)

@generated function zerolike(x::T) where T
  length(fieldnames(T)) == 0 ? nothing :
  :(NamedTuple{$(fieldnames(T))}(($(map(f -> :(zerolike(x.$f)), fieldnames(T))...),)))
end

# TODO figure out why this made a test fail
zerolike(x::Union{Module,Type}) = nothing

# TODO: `@nograd` and `@linear`

@tangent zerolike(x) = zerolike(x), _ -> zerolike(x)
@tangent one(x::Number) = one(x), _ -> zero(x)
@tangent one(T::Type) = one(T), _ -> zero(T)
@tangent Core.Typeof(x) = Core.Typeof(x), _ -> nothing
@tangent typeof(x) = typeof(x), _ -> nothing
@tangent Core.apply_type(args...) = Core.apply_type(args...), (_...) -> nothing
@tangent fieldtype(args...) = fieldtype(args...), (_...) -> nothing
@tangent isa(a, b) = isa(a, b), (_, _) -> false
@tangent repr(x) = repr(x), _ -> nothing
@tangent println(x...) = println(x...), (_...) -> nothing
@tangent typeassert(x, T) = typeassert(x, T), (ẋ, _) -> ẋ
@tangent fieldnames(T) = fieldnames(T), _ -> zerolike(fieldnames(T))
@tangent eltype(x) = eltype(x), ẋ -> zerolike(eltype(ẋ))

@tangent fieldcount(T) = fieldcount(T), _ -> zerolike(fieldcount(T))

@tangent tuple(t...) = t, (ṫ...) -> ṫ
@tangent tail(t) = tail(t), tail

@tangent setfield!(t, i, x) = setfield!(t, i, x), (ṫ, _, ẋ) -> setfield!(ṫ, i, ẋ)
@tangent getindex(t, i) = getindex(t, i), (ṫ, _) -> getindex(ṫ, i)
@tangent isdefined(t, i) = isdefined(t, i), (_, _) -> false

# TODO should be using a context for this
zerolike(x::Core.Box) = isdefined(x, :contents) ? Core.Box(zerolike(x.contents)) : Core.Box()
@tangent Core.Box() = Core.Box(), () -> Core.Box()
@tangent Core.Box(x) = Core.Box(x), ẋ -> Core.Box(x)
# TODO: this is too generic (e.g. broadcast).
# @tangent Base.copy(x) = copy(@show x), ẋ -> copy(ẋ)

@tangent Core.Compiler.return_type(args...) =
  Core.Compiler.return_type(args...), (_...) -> nothing

@tangent __new__(T, s...) =
  __new__(T, s...), (_, ṡ...) -> NamedTuple{fieldnames(T)}(ṡ)

@tangent __splatnew__(T, s) =
  __splatnew__(T, s), (_, ṡ) -> NamedTuple{fieldnames(T)}(ṡ)

function _pushforward(dargs, ::typeof(Core._apply), f, args...)
  dargs = tail(dargs) # drop self gradient
  df, dargs = first(dargs), tail(dargs)
  dargs = Core._apply(tuple, dargs...)
  Core._apply(_pushforward, ((df, dargs...), f), args...)
end

if VERSION >= v"1.4.0-DEV.304"
  _pushforward(dargs, ::typeof(Core._apply_iterate), ::typeof(iterate), f, args...) =
    _pushforward((first(args), tail(tail(dargs))...), Core._apply, f, args...)
end

using ..Zygote: literal_getproperty, literal_getindex

_pushforward(dargs, ::typeof(getproperty), x, f) =
  _pushforward(dargs, literal_getproperty, x, Val(f))

@tangent function literal_getproperty(t, ::Val{i}) where i
  y = getproperty(t, i)
  forw(ṫ, _) = getproperty(ṫ, i)
  forw(ṫ::Nothing, _) = zerolike(y)
  return y, forw
end

@tangent literal_getindex(t, ::Val{i}) where i =
  getindex(t, i), (ṫ, _) -> getindex(ṫ, i)

@tangent getfield(t::Tuple, i::Integer) =
  getfield(t, i), (ṫ, _) -> getfield(ṫ, i)


text:
# rmsd100

using MIRT: rmsd100

using Test: @test, @test_throws, @inferred

a = [1 2; 4 5; 7 8]
b = [3 2; 4 6; 8 7]
c = [false true; true false; false false] #avg. 0
d = [false false; false false; false true] #avg. 1
e = [true true; true true; true false] # average 1,0,1,0,4 = sqrt(6/5)
tests = cat(c, d, e, dims = 3)
pred = [0, 100, 100*sqrt(6/5)]
for i in 1:size(tests,1)
	@test rmsd100(a, b ; mask=tests[:,:,i]) == pred[i]
end
@test rmsd100([1, 0], [0, 1]) == 100 # no mask test

#=  not important to support or test.  user can pass mask=ig.mask if needed
a = ones(300,400)
b = ones(300,400)
b[100:200,100:200] .= 0
#so there's a blot of zeros from 100,100 to 200,200
b[200:250,300:320] .= 3
#and a blot of threes over here
ig1 = image_geom(nx = 300,ny = 400,dx = 1,dy = 1)
@test my_rmse(a,b,ig1) > 20
=#

ext: jl


text:
#==============================================================================#
# Inspector.jl
#
# This file is generated from:
# https://github.com/aws/aws-sdk-js/blob/master/apis/inspector-2016-02-16.normal.json
#==============================================================================#

__precompile__()

module Inspector

using AWSCore

"""
    using AWSSDK.Inspector.add_attributes_to_findings
    add_attributes_to_findings([::AWSConfig], arguments::Dict)
    add_attributes_to_findings([::AWSConfig]; findingArns=, attributes=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "AddAttributesToFindings", arguments::Dict)
    inspector([::AWSConfig], "AddAttributesToFindings", findingArns=, attributes=)

# AddAttributesToFindings Operation

Assigns attributes (key and value pairs) to the findings that are specified by the ARNs of the findings.

# Arguments

## `findingArns = [::String, ...]` -- *Required*
The ARNs that specify the findings that you want to assign attributes to.

## `attributes = [[ ... ], ...]` -- *Required*
The array of attributes that you want to assign to specified findings.
```
 attributes = [[
        "key" => <required> ::String,
        "value" =>  ::String
    ], ...]
```

# Returns

`AddAttributesToFindingsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Add attributes to findings

Assigns attributes (key and value pairs) to the findings that are specified by the ARNs of the findings.

Input:
```
[
    "attributes" => [
        [
            "key" => "Example",
            "value" => "example"
        ]
    ],
    "findingArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-8l1VIE0D/run/0-Z02cjjug/finding/0-T8yM9mEU"
    ]
]
```

Output:
```
Dict(
    "failedItems" => Dict(

    )
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/AddAttributesToFindings)
"""
@inline add_attributes_to_findings(aws::AWSConfig=default_aws_config(); args...) = add_attributes_to_findings(aws, args)

@inline add_attributes_to_findings(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "AddAttributesToFindings", args)

@inline add_attributes_to_findings(args) = add_attributes_to_findings(default_aws_config(), args)

"""
    using AWSSDK.Inspector.create_assessment_target
    create_assessment_target([::AWSConfig], arguments::Dict)
    create_assessment_target([::AWSConfig]; assessmentTargetName=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "CreateAssessmentTarget", arguments::Dict)
    inspector([::AWSConfig], "CreateAssessmentTarget", assessmentTargetName=, <keyword arguments>)

# CreateAssessmentTarget Operation

Creates a new assessment target using the ARN of the resource group that is generated by [CreateResourceGroup](@ref). If resourceGroupArn is not specified, all EC2 instances in the current AWS account and region are included in the assessment target. If the [service-linked role](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_slr.html) isn’t already registered, this action also creates and registers a service-linked role to grant Amazon Inspector access to AWS Services needed to perform security assessments. You can create up to 50 assessment targets per AWS account. You can run up to 500 concurrent agents per AWS account. For more information, see [Amazon Inspector Assessment Targets](http://docs.aws.amazon.com/inspector/latest/userguide/inspector_applications.html).

# Arguments

## `assessmentTargetName = ::String` -- *Required*
The user-defined name that identifies the assessment target that you want to create. The name must be unique within the AWS account.

## `resourceGroupArn = ::String`
The ARN that specifies the resource group that is used to create the assessment target. If resourceGroupArn is not specified, all EC2 instances in the current AWS account and region are included in the assessment target.

# Returns

`CreateAssessmentTargetResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `LimitExceededException`, `AccessDeniedException`, `NoSuchEntityException`, `InvalidCrossAccountRoleException` or `ServiceTemporarilyUnavailableException`.

# Example: Create assessment target

Creates a new assessment target using the ARN of the resource group that is generated by CreateResourceGroup. You can create up to 50 assessment targets per AWS account. You can run up to 500 concurrent agents per AWS account.

Input:
```
[
    "assessmentTargetName" => "ExampleAssessmentTarget",
    "resourceGroupArn" => "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-AB6DMKnv"
]
```

Output:
```
Dict(
    "assessmentTargetArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/CreateAssessmentTarget)
"""
@inline create_assessment_target(aws::AWSConfig=default_aws_config(); args...) = create_assessment_target(aws, args)

@inline create_assessment_target(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "CreateAssessmentTarget", args)

@inline create_assessment_target(args) = create_assessment_target(default_aws_config(), args)

"""
    using AWSSDK.Inspector.create_assessment_template
    create_assessment_template([::AWSConfig], arguments::Dict)
    create_assessment_template([::AWSConfig]; assessmentTargetArn=, assessmentTemplateName=, durationInSeconds=, rulesPackageArns=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "CreateAssessmentTemplate", arguments::Dict)
    inspector([::AWSConfig], "CreateAssessmentTemplate", assessmentTargetArn=, assessmentTemplateName=, durationInSeconds=, rulesPackageArns=, <keyword arguments>)

# CreateAssessmentTemplate Operation

Creates an assessment template for the assessment target that is specified by the ARN of the assessment target. If the [service-linked role](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_slr.html) isn’t already registered, this action also creates and registers a service-linked role to grant Amazon Inspector access to AWS Services needed to perform security assessments.

# Arguments

## `assessmentTargetArn = ::String` -- *Required*
The ARN that specifies the assessment target for which you want to create the assessment template.

## `assessmentTemplateName = ::String` -- *Required*
The user-defined name that identifies the assessment template that you want to create. You can create several assessment templates for an assessment target. The names of the assessment templates that correspond to a particular assessment target must be unique.

## `durationInSeconds = ::Int` -- *Required*
The duration of the assessment run in seconds.

## `rulesPackageArns = [::String, ...]` -- *Required*
The ARNs that specify the rules packages that you want to attach to the assessment template.

## `userAttributesForFindings = [[ ... ], ...]`
The user-defined attributes that are assigned to every finding that is generated by the assessment run that uses this assessment template. An attribute is a key and value pair (an [Attribute](@ref) object). Within an assessment template, each key must be unique.
```
 userAttributesForFindings = [[
        "key" => <required> ::String,
        "value" =>  ::String
    ], ...]
```

# Returns

`CreateAssessmentTemplateResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `LimitExceededException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Create assessment template

Creates an assessment template for the assessment target that is specified by the ARN of the assessment target.

Input:
```
[
    "assessmentTargetArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX",
    "assessmentTemplateName" => "ExampleAssessmentTemplate",
    "durationInSeconds" => 180,
    "rulesPackageArns" => [
        "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-11B9DBXp"
    ],
    "userAttributesForFindings" => [
        [
            "key" => "Example",
            "value" => "example"
        ]
    ]
]
```

Output:
```
Dict(
    "assessmentTemplateArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/CreateAssessmentTemplate)
"""
@inline create_assessment_template(aws::AWSConfig=default_aws_config(); args...) = create_assessment_template(aws, args)

@inline create_assessment_template(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "CreateAssessmentTemplate", args)

@inline create_assessment_template(args) = create_assessment_template(default_aws_config(), args)

"""
    using AWSSDK.Inspector.create_exclusions_preview
    create_exclusions_preview([::AWSConfig], arguments::Dict)
    create_exclusions_preview([::AWSConfig]; assessmentTemplateArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "CreateExclusionsPreview", arguments::Dict)
    inspector([::AWSConfig], "CreateExclusionsPreview", assessmentTemplateArn=)

# CreateExclusionsPreview Operation

Starts the generation of an exclusions preview for the specified assessment template. The exclusions preview lists the potential exclusions (ExclusionPreview) that Inspector can detect before it runs the assessment.

# Arguments

## `assessmentTemplateArn = ::String` -- *Required*
The ARN that specifies the assessment template for which you want to create an exclusions preview.

# Returns

`CreateExclusionsPreviewResponse`

# Exceptions

`InvalidInputException`, `PreviewGenerationInProgressException`, `InternalException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/CreateExclusionsPreview)
"""
@inline create_exclusions_preview(aws::AWSConfig=default_aws_config(); args...) = create_exclusions_preview(aws, args)

@inline create_exclusions_preview(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "CreateExclusionsPreview", args)

@inline create_exclusions_preview(args) = create_exclusions_preview(default_aws_config(), args)

"""
    using AWSSDK.Inspector.create_resource_group
    create_resource_group([::AWSConfig], arguments::Dict)
    create_resource_group([::AWSConfig]; resourceGroupTags=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "CreateResourceGroup", arguments::Dict)
    inspector([::AWSConfig], "CreateResourceGroup", resourceGroupTags=)

# CreateResourceGroup Operation

Creates a resource group using the specified set of tags (key and value pairs) that are used to select the EC2 instances to be included in an Amazon Inspector assessment target. The created resource group is then used to create an Amazon Inspector assessment target. For more information, see [CreateAssessmentTarget](@ref).

# Arguments

## `resourceGroupTags = [[ ... ], ...]` -- *Required*
A collection of keys and an array of possible values, '[{"key":"key1","values":["Value1","Value2"]},{"key":"Key2","values":["Value3"]}]'.

For example,'[{"key":"Name","values":["TestEC2Instance"]}]'.
```
 resourceGroupTags = [[
        "key" => <required> ::String,
        "value" =>  ::String
    ], ...]
```

# Returns

`CreateResourceGroupResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `LimitExceededException`, `AccessDeniedException` or `ServiceTemporarilyUnavailableException`.

# Example: Create resource group

Creates a resource group using the specified set of tags (key and value pairs) that are used to select the EC2 instances to be included in an Amazon Inspector assessment target. The created resource group is then used to create an Amazon Inspector assessment target.

Input:
```
[
    "resourceGroupTags" => [
        [
            "key" => "Name",
            "value" => "example"
        ]
    ]
]
```

Output:
```
Dict(
    "resourceGroupArn" => "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-AB6DMKnv"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/CreateResourceGroup)
"""
@inline create_resource_group(aws::AWSConfig=default_aws_config(); args...) = create_resource_group(aws, args)

@inline create_resource_group(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "CreateResourceGroup", args)

@inline create_resource_group(args) = create_resource_group(default_aws_config(), args)

"""
    using AWSSDK.Inspector.delete_assessment_run
    delete_assessment_run([::AWSConfig], arguments::Dict)
    delete_assessment_run([::AWSConfig]; assessmentRunArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DeleteAssessmentRun", arguments::Dict)
    inspector([::AWSConfig], "DeleteAssessmentRun", assessmentRunArn=)

# DeleteAssessmentRun Operation

Deletes the assessment run that is specified by the ARN of the assessment run.

# Arguments

## `assessmentRunArn = ::String` -- *Required*
The ARN that specifies the assessment run that you want to delete.

# Exceptions

`InternalException`, `InvalidInputException`, `AssessmentRunInProgressException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Delete assessment run

Deletes the assessment run that is specified by the ARN of the assessment run.

Input:
```
[
    "assessmentRunArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T/run/0-11LMTAVe"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DeleteAssessmentRun)
"""
@inline delete_assessment_run(aws::AWSConfig=default_aws_config(); args...) = delete_assessment_run(aws, args)

@inline delete_assessment_run(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DeleteAssessmentRun", args)

@inline delete_assessment_run(args) = delete_assessment_run(default_aws_config(), args)

"""
    using AWSSDK.Inspector.delete_assessment_target
    delete_assessment_target([::AWSConfig], arguments::Dict)
    delete_assessment_target([::AWSConfig]; assessmentTargetArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DeleteAssessmentTarget", arguments::Dict)
    inspector([::AWSConfig], "DeleteAssessmentTarget", assessmentTargetArn=)

# DeleteAssessmentTarget Operation

Deletes the assessment target that is specified by the ARN of the assessment target.

# Arguments

## `assessmentTargetArn = ::String` -- *Required*
The ARN that specifies the assessment target that you want to delete.

# Exceptions

`InternalException`, `InvalidInputException`, `AssessmentRunInProgressException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Delete assessment target

Deletes the assessment target that is specified by the ARN of the assessment target.

Input:
```
[
    "assessmentTargetArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DeleteAssessmentTarget)
"""
@inline delete_assessment_target(aws::AWSConfig=default_aws_config(); args...) = delete_assessment_target(aws, args)

@inline delete_assessment_target(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DeleteAssessmentTarget", args)

@inline delete_assessment_target(args) = delete_assessment_target(default_aws_config(), args)

"""
    using AWSSDK.Inspector.delete_assessment_template
    delete_assessment_template([::AWSConfig], arguments::Dict)
    delete_assessment_template([::AWSConfig]; assessmentTemplateArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DeleteAssessmentTemplate", arguments::Dict)
    inspector([::AWSConfig], "DeleteAssessmentTemplate", assessmentTemplateArn=)

# DeleteAssessmentTemplate Operation

Deletes the assessment template that is specified by the ARN of the assessment template.

# Arguments

## `assessmentTemplateArn = ::String` -- *Required*
The ARN that specifies the assessment template that you want to delete.

# Exceptions

`InternalException`, `InvalidInputException`, `AssessmentRunInProgressException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Delete assessment template

Deletes the assessment template that is specified by the ARN of the assessment template.

Input:
```
[
    "assessmentTemplateArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DeleteAssessmentTemplate)
"""
@inline delete_assessment_template(aws::AWSConfig=default_aws_config(); args...) = delete_assessment_template(aws, args)

@inline delete_assessment_template(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DeleteAssessmentTemplate", args)

@inline delete_assessment_template(args) = delete_assessment_template(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_assessment_runs
    describe_assessment_runs([::AWSConfig], arguments::Dict)
    describe_assessment_runs([::AWSConfig]; assessmentRunArns=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeAssessmentRuns", arguments::Dict)
    inspector([::AWSConfig], "DescribeAssessmentRuns", assessmentRunArns=)

# DescribeAssessmentRuns Operation

Describes the assessment runs that are specified by the ARNs of the assessment runs.

# Arguments

## `assessmentRunArns = [::String, ...]` -- *Required*
The ARN that specifies the assessment run that you want to describe.

# Returns

`DescribeAssessmentRunsResponse`

# Exceptions

`InternalException` or `InvalidInputException`.

# Example: Describte assessment runs

Describes the assessment runs that are specified by the ARNs of the assessment runs.

Input:
```
[
    "assessmentRunArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE"
    ]
]
```

Output:
```
Dict(
    "assessmentRuns" => [
        Dict(
            "name" => "Run 1 for ExampleAssessmentTemplate",
            "arn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE",
            "assessmentTemplateArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw",
            "completedAt" => "1458680301.4",
            "createdAt" => "1458680170.035",
            "dataCollected" => true,
            "durationInSeconds" => 3600,
            "findingCounts" => Dict(
                "High" => 14,
                "Informational" => 0,
                "Low" => 0,
                "Medium" => 2,
                "Undefined" => 0
            ),
            "notifications" => [

            ],
            "rulesPackageArns" => [
                "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-X1KXtawP"
            ],
            "startedAt" => "1458680170.161",
            "state" => "COMPLETED",
            "stateChangedAt" => "1458680301.4",
            "stateChanges" => [
                Dict(
                    "state" => "CREATED",
                    "stateChangedAt" => "1458680170.035"
                ),
                Dict(
                    "state" => "START_DATA_COLLECTION_PENDING",
                    "stateChangedAt" => "1458680170.065"
                ),
                Dict(
                    "state" => "START_DATA_COLLECTION_IN_PROGRESS",
                    "stateChangedAt" => "1458680170.096"
                ),
                Dict(
                    "state" => "COLLECTING_DATA",
                    "stateChangedAt" => "1458680170.161"
                ),
                Dict(
                    "state" => "STOP_DATA_COLLECTION_PENDING",
                    "stateChangedAt" => "1458680239.883"
                ),
                Dict(
                    "state" => "DATA_COLLECTED",
                    "stateChangedAt" => "1458680299.847"
                ),
                Dict(
                    "state" => "EVALUATING_RULES",
                    "stateChangedAt" => "1458680300.099"
                ),
                Dict(
                    "state" => "COMPLETED",
                    "stateChangedAt" => "1458680301.4"
                )
            ],
            "userAttributesForFindings" => [

            ]
        )
    ],
    "failedItems" => Dict(

    )
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeAssessmentRuns)
"""
@inline describe_assessment_runs(aws::AWSConfig=default_aws_config(); args...) = describe_assessment_runs(aws, args)

@inline describe_assessment_runs(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeAssessmentRuns", args)

@inline describe_assessment_runs(args) = describe_assessment_runs(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_assessment_targets
    describe_assessment_targets([::AWSConfig], arguments::Dict)
    describe_assessment_targets([::AWSConfig]; assessmentTargetArns=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeAssessmentTargets", arguments::Dict)
    inspector([::AWSConfig], "DescribeAssessmentTargets", assessmentTargetArns=)

# DescribeAssessmentTargets Operation

Describes the assessment targets that are specified by the ARNs of the assessment targets.

# Arguments

## `assessmentTargetArns = [::String, ...]` -- *Required*
The ARNs that specifies the assessment targets that you want to describe.

# Returns

`DescribeAssessmentTargetsResponse`

# Exceptions

`InternalException` or `InvalidInputException`.

# Example: Describte assessment targets

Describes the assessment targets that are specified by the ARNs of the assessment targets.

Input:
```
[
    "assessmentTargetArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq"
    ]
]
```

Output:
```
Dict(
    "assessmentTargets" => [
        Dict(
            "name" => "ExampleAssessmentTarget",
            "arn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq",
            "createdAt" => "1458074191.459",
            "resourceGroupArn" => "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-PyGXopAI",
            "updatedAt" => "1458074191.459"
        )
    ],
    "failedItems" => Dict(

    )
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeAssessmentTargets)
"""
@inline describe_assessment_targets(aws::AWSConfig=default_aws_config(); args...) = describe_assessment_targets(aws, args)

@inline describe_assessment_targets(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeAssessmentTargets", args)

@inline describe_assessment_targets(args) = describe_assessment_targets(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_assessment_templates
    describe_assessment_templates([::AWSConfig], arguments::Dict)
    describe_assessment_templates([::AWSConfig]; assessmentTemplateArns=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeAssessmentTemplates", arguments::Dict)
    inspector([::AWSConfig], "DescribeAssessmentTemplates", assessmentTemplateArns=)

# DescribeAssessmentTemplates Operation

Describes the assessment templates that are specified by the ARNs of the assessment templates.

# Arguments

## `assessmentTemplateArns = [::String, ...]` -- *Required*

# Returns

`DescribeAssessmentTemplatesResponse`

# Exceptions

`InternalException` or `InvalidInputException`.

# Example: Describte assessment templates

Describes the assessment templates that are specified by the ARNs of the assessment templates.

Input:
```
[
    "assessmentTemplateArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw"
    ]
]
```

Output:
```
Dict(
    "assessmentTemplates" => [
        Dict(
            "name" => "ExampleAssessmentTemplate",
            "arn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw",
            "assessmentRunCount" => 0,
            "assessmentTargetArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq",
            "createdAt" => "1458074191.844",
            "durationInSeconds" => 3600,
            "rulesPackageArns" => [
                "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-X1KXtawP"
            ],
            "userAttributesForFindings" => [

            ]
        )
    ],
    "failedItems" => Dict(

    )
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeAssessmentTemplates)
"""
@inline describe_assessment_templates(aws::AWSConfig=default_aws_config(); args...) = describe_assessment_templates(aws, args)

@inline describe_assessment_templates(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeAssessmentTemplates", args)

@inline describe_assessment_templates(args) = describe_assessment_templates(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_cross_account_access_role
    describe_cross_account_access_role([::AWSConfig])

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeCrossAccountAccessRole",)

# DescribeCrossAccountAccessRole Operation

Describes the IAM role that enables Amazon Inspector to access your AWS account.

# Returns

`DescribeCrossAccountAccessRoleResponse`

# Exceptions

`InternalException`.

# Example: Describte cross account access role

Describes the IAM role that enables Amazon Inspector to access your AWS account.

Output:
```
Dict(
    "registeredAt" => "1458069182.826",
    "roleArn" => "arn:aws:iam::123456789012:role/inspector",
    "valid" => true
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeCrossAccountAccessRole)
"""
@inline describe_cross_account_access_role(aws::AWSConfig=default_aws_config(); args...) = describe_cross_account_access_role(aws, args)

@inline describe_cross_account_access_role(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeCrossAccountAccessRole", args)

@inline describe_cross_account_access_role(args) = describe_cross_account_access_role(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_exclusions
    describe_exclusions([::AWSConfig], arguments::Dict)
    describe_exclusions([::AWSConfig]; exclusionArns=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeExclusions", arguments::Dict)
    inspector([::AWSConfig], "DescribeExclusions", exclusionArns=, <keyword arguments>)

# DescribeExclusions Operation

Describes the exclusions that are specified by the exclusions' ARNs.

# Arguments

## `exclusionArns = [::String, ...]` -- *Required*
The list of ARNs that specify the exclusions that you want to describe.

## `locale = "EN_US"`
The locale into which you want to translate the exclusion's title, description, and recommendation.

# Returns

`DescribeExclusionsResponse`

# Exceptions

`InternalException` or `InvalidInputException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeExclusions)
"""
@inline describe_exclusions(aws::AWSConfig=default_aws_config(); args...) = describe_exclusions(aws, args)

@inline describe_exclusions(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeExclusions", args)

@inline describe_exclusions(args) = describe_exclusions(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_findings
    describe_findings([::AWSConfig], arguments::Dict)
    describe_findings([::AWSConfig]; findingArns=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeFindings", arguments::Dict)
    inspector([::AWSConfig], "DescribeFindings", findingArns=, <keyword arguments>)

# DescribeFindings Operation

Describes the findings that are specified by the ARNs of the findings.

# Arguments

## `findingArns = [::String, ...]` -- *Required*
The ARN that specifies the finding that you want to describe.

## `locale = "EN_US"`
The locale into which you want to translate a finding description, recommendation, and the short description that identifies the finding.

# Returns

`DescribeFindingsResponse`

# Exceptions

`InternalException` or `InvalidInputException`.

# Example: Describe findings

Describes the findings that are specified by the ARNs of the findings.

Input:
```
[
    "findingArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE/finding/0-HwPnsDm4"
    ]
]
```

Output:
```
Dict(
    "failedItems" => Dict(

    ),
    "findings" => [
        Dict(
            "arn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE/finding/0-HwPnsDm4",
            "assetAttributes" => Dict(
                "ipv4Addresses" => [

                ],
                "schemaVersion" => 1
            ),
            "assetType" => "ec2-instance",
            "attributes" => [

            ],
            "confidence" => 10,
            "createdAt" => "1458680301.37",
            "description" => "Amazon Inspector did not find any potential security issues during this assessment.",
            "indicatorOfCompromise" => false,
            "numericSeverity" => 0,
            "recommendation" => "No remediation needed.",
            "schemaVersion" => 1,
            "service" => "Inspector",
            "serviceAttributes" => Dict(
                "assessmentRunArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE",
                "rulesPackageArn" => "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-X1KXtawP",
                "schemaVersion" => 1
            ),
            "severity" => "Informational",
            "title" => "No potential security issues found",
            "updatedAt" => "1458680301.37",
            "userAttributes" => [

            ]
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeFindings)
"""
@inline describe_findings(aws::AWSConfig=default_aws_config(); args...) = describe_findings(aws, args)

@inline describe_findings(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeFindings", args)

@inline describe_findings(args) = describe_findings(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_resource_groups
    describe_resource_groups([::AWSConfig], arguments::Dict)
    describe_resource_groups([::AWSConfig]; resourceGroupArns=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeResourceGroups", arguments::Dict)
    inspector([::AWSConfig], "DescribeResourceGroups", resourceGroupArns=)

# DescribeResourceGroups Operation

Describes the resource groups that are specified by the ARNs of the resource groups.

# Arguments

## `resourceGroupArns = [::String, ...]` -- *Required*
The ARN that specifies the resource group that you want to describe.

# Returns

`DescribeResourceGroupsResponse`

# Exceptions

`InternalException` or `InvalidInputException`.

# Example: Describe resource groups

Describes the resource groups that are specified by the ARNs of the resource groups.

Input:
```
[
    "resourceGroupArns" => [
        "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-PyGXopAI"
    ]
]
```

Output:
```
Dict(
    "failedItems" => Dict(

    ),
    "resourceGroups" => [
        Dict(
            "arn" => "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-PyGXopAI",
            "createdAt" => "1458074191.098",
            "tags" => [
                Dict(
                    "key" => "Name",
                    "value" => "example"
                )
            ]
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeResourceGroups)
"""
@inline describe_resource_groups(aws::AWSConfig=default_aws_config(); args...) = describe_resource_groups(aws, args)

@inline describe_resource_groups(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeResourceGroups", args)

@inline describe_resource_groups(args) = describe_resource_groups(default_aws_config(), args)

"""
    using AWSSDK.Inspector.describe_rules_packages
    describe_rules_packages([::AWSConfig], arguments::Dict)
    describe_rules_packages([::AWSConfig]; rulesPackageArns=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "DescribeRulesPackages", arguments::Dict)
    inspector([::AWSConfig], "DescribeRulesPackages", rulesPackageArns=, <keyword arguments>)

# DescribeRulesPackages Operation

Describes the rules packages that are specified by the ARNs of the rules packages.

# Arguments

## `rulesPackageArns = [::String, ...]` -- *Required*
The ARN that specifies the rules package that you want to describe.

## `locale = "EN_US"`
The locale that you want to translate a rules package description into.

# Returns

`DescribeRulesPackagesResponse`

# Exceptions

`InternalException` or `InvalidInputException`.

# Example: Describe rules packages

Describes the rules packages that are specified by the ARNs of the rules packages.

Input:
```
[
    "rulesPackageArns" => [
        "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-JJOtZiqQ"
    ]
]
```

Output:
```
Dict(
    "failedItems" => Dict(

    ),
    "rulesPackages" => [
        Dict(
            "version" => "1.1",
            "name" => "Security Best Practices",
            "arn" => "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-JJOtZiqQ",
            "description" => "The rules in this package help determine whether your systems are configured securely.",
            "provider" => "Amazon Web Services, Inc."
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/DescribeRulesPackages)
"""
@inline describe_rules_packages(aws::AWSConfig=default_aws_config(); args...) = describe_rules_packages(aws, args)

@inline describe_rules_packages(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "DescribeRulesPackages", args)

@inline describe_rules_packages(args) = describe_rules_packages(default_aws_config(), args)

"""
    using AWSSDK.Inspector.get_assessment_report
    get_assessment_report([::AWSConfig], arguments::Dict)
    get_assessment_report([::AWSConfig]; assessmentRunArn=, reportFileFormat=, reportType=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "GetAssessmentReport", arguments::Dict)
    inspector([::AWSConfig], "GetAssessmentReport", assessmentRunArn=, reportFileFormat=, reportType=)

# GetAssessmentReport Operation

Produces an assessment report that includes detailed and comprehensive results of a specified assessment run.

# Arguments

## `assessmentRunArn = ::String` -- *Required*
The ARN that specifies the assessment run for which you want to generate a report.

## `reportFileFormat = "HTML" or "PDF"` -- *Required*
Specifies the file format (html or pdf) of the assessment report that you want to generate.

## `reportType = "FINDING" or "FULL"` -- *Required*
Specifies the type of the assessment report that you want to generate. There are two types of assessment reports: a finding report and a full report. For more information, see [Assessment Reports](http://docs.aws.amazon.com/inspector/latest/userguide/inspector_reports.html).

# Returns

`GetAssessmentReportResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException`, `AssessmentRunInProgressException`, `UnsupportedFeatureException` or `ServiceTemporarilyUnavailableException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/GetAssessmentReport)
"""
@inline get_assessment_report(aws::AWSConfig=default_aws_config(); args...) = get_assessment_report(aws, args)

@inline get_assessment_report(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "GetAssessmentReport", args)

@inline get_assessment_report(args) = get_assessment_report(default_aws_config(), args)

"""
    using AWSSDK.Inspector.get_exclusions_preview
    get_exclusions_preview([::AWSConfig], arguments::Dict)
    get_exclusions_preview([::AWSConfig]; assessmentTemplateArn=, previewToken=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "GetExclusionsPreview", arguments::Dict)
    inspector([::AWSConfig], "GetExclusionsPreview", assessmentTemplateArn=, previewToken=, <keyword arguments>)

# GetExclusionsPreview Operation

Retrieves the exclusions preview (a list of ExclusionPreview objects) specified by the preview token. You can obtain the preview token by running the CreateExclusionsPreview API.

# Arguments

## `assessmentTemplateArn = ::String` -- *Required*
The ARN that specifies the assessment template for which the exclusions preview was requested.

## `previewToken = ::String` -- *Required*
The unique identifier associated of the exclusions preview.

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the GetExclusionsPreviewRequest action. Subsequent calls to the action fill nextToken in the request with the value of nextToken from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 100. The maximum value is 500.

## `locale = "EN_US"`
The locale into which you want to translate the exclusion's title, description, and recommendation.

# Returns

`GetExclusionsPreviewResponse`

# Exceptions

`InvalidInputException`, `InternalException`, `AccessDeniedException` or `NoSuchEntityException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/GetExclusionsPreview)
"""
@inline get_exclusions_preview(aws::AWSConfig=default_aws_config(); args...) = get_exclusions_preview(aws, args)

@inline get_exclusions_preview(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "GetExclusionsPreview", args)

@inline get_exclusions_preview(args) = get_exclusions_preview(default_aws_config(), args)

"""
    using AWSSDK.Inspector.get_telemetry_metadata
    get_telemetry_metadata([::AWSConfig], arguments::Dict)
    get_telemetry_metadata([::AWSConfig]; assessmentRunArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "GetTelemetryMetadata", arguments::Dict)
    inspector([::AWSConfig], "GetTelemetryMetadata", assessmentRunArn=)

# GetTelemetryMetadata Operation

Information about the data that is collected for the specified assessment run.

# Arguments

## `assessmentRunArn = ::String` -- *Required*
The ARN that specifies the assessment run that has the telemetry data that you want to obtain.

# Returns

`GetTelemetryMetadataResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

# Example: Get telemetry metadata

Information about the data that is collected for the specified assessment run.

Input:
```
[
    "assessmentRunArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE"
]
```

Output:
```
Dict(
    "telemetryMetadata" => [
        Dict(
            "count" => 2,
            "dataSize" => 345,
            "messageType" => "InspectorDuplicateProcess"
        ),
        Dict(
            "count" => 3,
            "dataSize" => 255,
            "messageType" => "InspectorTimeEventMsg"
        ),
        Dict(
            "count" => 4,
            "dataSize" => 1082,
            "messageType" => "InspectorNetworkInterface"
        ),
        Dict(
            "count" => 2,
            "dataSize" => 349,
            "messageType" => "InspectorDnsEntry"
        ),
        Dict(
            "count" => 11,
            "dataSize" => 2514,
            "messageType" => "InspectorDirectoryInfoMsg"
        ),
        Dict(
            "count" => 1,
            "dataSize" => 179,
            "messageType" => "InspectorTcpV6ListeningPort"
        ),
        Dict(
            "count" => 101,
            "dataSize" => 10949,
            "messageType" => "InspectorTerminal"
        ),
        Dict(
            "count" => 26,
            "dataSize" => 5916,
            "messageType" => "InspectorUser"
        ),
        Dict(
            "count" => 282,
            "dataSize" => 32148,
            "messageType" => "InspectorDynamicallyLoadedCodeModule"
        ),
        Dict(
            "count" => 18,
            "dataSize" => 10172,
            "messageType" => "InspectorCreateProcess"
        ),
        Dict(
            "count" => 3,
            "dataSize" => 8001,
            "messageType" => "InspectorProcessPerformance"
        ),
        Dict(
            "count" => 1,
            "dataSize" => 360,
            "messageType" => "InspectorOperatingSystem"
        ),
        Dict(
            "count" => 6,
            "dataSize" => 546,
            "messageType" => "InspectorStopProcess"
        ),
        Dict(
            "count" => 1,
            "dataSize" => 1553,
            "messageType" => "InspectorInstanceMetaData"
        ),
        Dict(
            "count" => 2,
            "dataSize" => 434,
            "messageType" => "InspectorTcpV4Connection"
        ),
        Dict(
            "count" => 474,
            "dataSize" => 2960322,
            "messageType" => "InspectorPackageInfo"
        ),
        Dict(
            "count" => 3,
            "dataSize" => 2235,
            "messageType" => "InspectorSystemPerformance"
        ),
        Dict(
            "count" => 105,
            "dataSize" => 46048,
            "messageType" => "InspectorCodeModule"
        ),
        Dict(
            "count" => 1,
            "dataSize" => 182,
            "messageType" => "InspectorUdpV6ListeningPort"
        ),
        Dict(
            "count" => 2,
            "dataSize" => 371,
            "messageType" => "InspectorUdpV4ListeningPort"
        ),
        Dict(
            "count" => 18,
            "dataSize" => 8362,
            "messageType" => "InspectorKernelModule"
        ),
        Dict(
            "count" => 29,
            "dataSize" => 48788,
            "messageType" => "InspectorConfigurationInfo"
        ),
        Dict(
            "count" => 1,
            "dataSize" => 79,
            "messageType" => "InspectorMonitoringStart"
        ),
        Dict(
            "count" => 5,
            "dataSize" => 0,
            "messageType" => "InspectorSplitMsgBegin"
        ),
        Dict(
            "count" => 51,
            "dataSize" => 4593,
            "messageType" => "InspectorGroup"
        ),
        Dict(
            "count" => 1,
            "dataSize" => 184,
            "messageType" => "InspectorTcpV4ListeningPort"
        ),
        Dict(
            "count" => 1159,
            "dataSize" => 3146579,
            "messageType" => "Total"
        ),
        Dict(
            "count" => 5,
            "dataSize" => 0,
            "messageType" => "InspectorSplitMsgEnd"
        ),
        Dict(
            "count" => 1,
            "dataSize" => 612,
            "messageType" => "InspectorLoadImageInProcess"
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/GetTelemetryMetadata)
"""
@inline get_telemetry_metadata(aws::AWSConfig=default_aws_config(); args...) = get_telemetry_metadata(aws, args)

@inline get_telemetry_metadata(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "GetTelemetryMetadata", args)

@inline get_telemetry_metadata(args) = get_telemetry_metadata(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_assessment_run_agents
    list_assessment_run_agents([::AWSConfig], arguments::Dict)
    list_assessment_run_agents([::AWSConfig]; assessmentRunArn=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListAssessmentRunAgents", arguments::Dict)
    inspector([::AWSConfig], "ListAssessmentRunAgents", assessmentRunArn=, <keyword arguments>)

# ListAssessmentRunAgents Operation

Lists the agents of the assessment runs that are specified by the ARNs of the assessment runs.

# Arguments

## `assessmentRunArn = ::String` -- *Required*
The ARN that specifies the assessment run whose agents you want to list.

## `filter = [ ... ]`
You can use this parameter to specify a subset of data to be included in the action's response.

For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match.
```
 filter = [
        "agentHealths" => <required> ["HEALTHY", "UNHEALTHY" or "UNKNOWN", ...],
        "agentHealthCodes" => <required> ["IDLE", "RUNNING", "SHUTDOWN", "UNHEALTHY", "THROTTLED" or "UNKNOWN", ...]
    ]
```

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **ListAssessmentRunAgents** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 10. The maximum value is 500.

# Returns

`ListAssessmentRunAgentsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

# Example: List assessment run agents

Lists the agents of the assessment runs that are specified by the ARNs of the assessment runs.

Input:
```
[
    "assessmentRunArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE",
    "maxResults" => 123
]
```

Output:
```
Dict(
    "assessmentRunAgents" => [
        Dict(
            "agentHealth" => "HEALTHY",
            "agentHealthCode" => "RUNNING",
            "agentId" => "i-49113b93",
            "assessmentRunArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE",
            "telemetryMetadata" => [
                Dict(
                    "count" => 2,
                    "dataSize" => 345,
                    "messageType" => "InspectorDuplicateProcess"
                ),
                Dict(
                    "count" => 3,
                    "dataSize" => 255,
                    "messageType" => "InspectorTimeEventMsg"
                ),
                Dict(
                    "count" => 4,
                    "dataSize" => 1082,
                    "messageType" => "InspectorNetworkInterface"
                ),
                Dict(
                    "count" => 2,
                    "dataSize" => 349,
                    "messageType" => "InspectorDnsEntry"
                ),
                Dict(
                    "count" => 11,
                    "dataSize" => 2514,
                    "messageType" => "InspectorDirectoryInfoMsg"
                ),
                Dict(
                    "count" => 1,
                    "dataSize" => 179,
                    "messageType" => "InspectorTcpV6ListeningPort"
                ),
                Dict(
                    "count" => 101,
                    "dataSize" => 10949,
                    "messageType" => "InspectorTerminal"
                ),
                Dict(
                    "count" => 26,
                    "dataSize" => 5916,
                    "messageType" => "InspectorUser"
                ),
                Dict(
                    "count" => 282,
                    "dataSize" => 32148,
                    "messageType" => "InspectorDynamicallyLoadedCodeModule"
                ),
                Dict(
                    "count" => 18,
                    "dataSize" => 10172,
                    "messageType" => "InspectorCreateProcess"
                ),
                Dict(
                    "count" => 3,
                    "dataSize" => 8001,
                    "messageType" => "InspectorProcessPerformance"
                ),
                Dict(
                    "count" => 1,
                    "dataSize" => 360,
                    "messageType" => "InspectorOperatingSystem"
                ),
                Dict(
                    "count" => 6,
                    "dataSize" => 546,
                    "messageType" => "InspectorStopProcess"
                ),
                Dict(
                    "count" => 1,
                    "dataSize" => 1553,
                    "messageType" => "InspectorInstanceMetaData"
                ),
                Dict(
                    "count" => 2,
                    "dataSize" => 434,
                    "messageType" => "InspectorTcpV4Connection"
                ),
                Dict(
                    "count" => 474,
                    "dataSize" => 2960322,
                    "messageType" => "InspectorPackageInfo"
                ),
                Dict(
                    "count" => 3,
                    "dataSize" => 2235,
                    "messageType" => "InspectorSystemPerformance"
                ),
                Dict(
                    "count" => 105,
                    "dataSize" => 46048,
                    "messageType" => "InspectorCodeModule"
                ),
                Dict(
                    "count" => 1,
                    "dataSize" => 182,
                    "messageType" => "InspectorUdpV6ListeningPort"
                ),
                Dict(
                    "count" => 2,
                    "dataSize" => 371,
                    "messageType" => "InspectorUdpV4ListeningPort"
                ),
                Dict(
                    "count" => 18,
                    "dataSize" => 8362,
                    "messageType" => "InspectorKernelModule"
                ),
                Dict(
                    "count" => 29,
                    "dataSize" => 48788,
                    "messageType" => "InspectorConfigurationInfo"
                ),
                Dict(
                    "count" => 1,
                    "dataSize" => 79,
                    "messageType" => "InspectorMonitoringStart"
                ),
                Dict(
                    "count" => 5,
                    "dataSize" => 0,
                    "messageType" => "InspectorSplitMsgBegin"
                ),
                Dict(
                    "count" => 51,
                    "dataSize" => 4593,
                    "messageType" => "InspectorGroup"
                ),
                Dict(
                    "count" => 1,
                    "dataSize" => 184,
                    "messageType" => "InspectorTcpV4ListeningPort"
                ),
                Dict(
                    "count" => 1159,
                    "dataSize" => 3146579,
                    "messageType" => "Total"
                ),
                Dict(
                    "count" => 5,
                    "dataSize" => 0,
                    "messageType" => "InspectorSplitMsgEnd"
                ),
                Dict(
                    "count" => 1,
                    "dataSize" => 612,
                    "messageType" => "InspectorLoadImageInProcess"
                )
            ]
        )
    ],
    "nextToken" => "1"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListAssessmentRunAgents)
"""
@inline list_assessment_run_agents(aws::AWSConfig=default_aws_config(); args...) = list_assessment_run_agents(aws, args)

@inline list_assessment_run_agents(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListAssessmentRunAgents", args)

@inline list_assessment_run_agents(args) = list_assessment_run_agents(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_assessment_runs
    list_assessment_runs([::AWSConfig], arguments::Dict)
    list_assessment_runs([::AWSConfig]; <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListAssessmentRuns", arguments::Dict)
    inspector([::AWSConfig], "ListAssessmentRuns", <keyword arguments>)

# ListAssessmentRuns Operation

Lists the assessment runs that correspond to the assessment templates that are specified by the ARNs of the assessment templates.

# Arguments

## `assessmentTemplateArns = [::String, ...]`
The ARNs that specify the assessment templates whose assessment runs you want to list.

## `filter = [ ... ]`
You can use this parameter to specify a subset of data to be included in the action's response.

For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match.
```
 filter = [
        "namePattern" =>  ::String,
        "states" =>  ["CREATED", "START_DATA_COLLECTION_PENDING", "START_DATA_COLLECTION_IN_PROGRESS", "COLLECTING_DATA", "STOP_DATA_COLLECTION_PENDING", "DATA_COLLECTED", "START_EVALUATING_RULES_PENDING", "EVALUATING_RULES", "FAILED", "ERROR", "COMPLETED", "COMPLETED_WITH_ERRORS" or "CANCELED", ...],
        "durationRange" =>  [
            "minSeconds" =>  ::Int,
            "maxSeconds" =>  ::Int
        ],
        "rulesPackageArns" =>  [::String, ...],
        "startTimeRange" =>  [
            "beginDate" =>  timestamp,
            "endDate" =>  timestamp
        ],
        "completionTimeRange" =>  [
            "beginDate" =>  timestamp,
            "endDate" =>  timestamp
        ],
        "stateChangeTimeRange" =>  [
            "beginDate" =>  timestamp,
            "endDate" =>  timestamp
        ]
    ]
```

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **ListAssessmentRuns** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 10. The maximum value is 500.

# Returns

`ListAssessmentRunsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

# Example: List assessment runs

Lists the assessment runs that correspond to the assessment templates that are specified by the ARNs of the assessment templates.

Input:
```
[
    "assessmentTemplateArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw"
    ],
    "maxResults" => 123
]
```

Output:
```
Dict(
    "assessmentRunArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE",
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-v5D6fI3v"
    ],
    "nextToken" => "1"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListAssessmentRuns)
"""
@inline list_assessment_runs(aws::AWSConfig=default_aws_config(); args...) = list_assessment_runs(aws, args)

@inline list_assessment_runs(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListAssessmentRuns", args)

@inline list_assessment_runs(args) = list_assessment_runs(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_assessment_targets
    list_assessment_targets([::AWSConfig], arguments::Dict)
    list_assessment_targets([::AWSConfig]; <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListAssessmentTargets", arguments::Dict)
    inspector([::AWSConfig], "ListAssessmentTargets", <keyword arguments>)

# ListAssessmentTargets Operation

Lists the ARNs of the assessment targets within this AWS account. For more information about assessment targets, see [Amazon Inspector Assessment Targets](http://docs.aws.amazon.com/inspector/latest/userguide/inspector_applications.html).

# Arguments

## `filter = ["assessmentTargetNamePattern" =>  ::String]`
You can use this parameter to specify a subset of data to be included in the action's response.

For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match.

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **ListAssessmentTargets** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500.

# Returns

`ListAssessmentTargetsResponse`

# Exceptions

`InternalException`, `InvalidInputException` or `AccessDeniedException`.

# Example: List assessment targets

Lists the ARNs of the assessment targets within this AWS account.

Input:
```
[
    "maxResults" => 123
]
```

Output:
```
Dict(
    "assessmentTargetArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq"
    ],
    "nextToken" => "1"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListAssessmentTargets)
"""
@inline list_assessment_targets(aws::AWSConfig=default_aws_config(); args...) = list_assessment_targets(aws, args)

@inline list_assessment_targets(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListAssessmentTargets", args)

@inline list_assessment_targets(args) = list_assessment_targets(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_assessment_templates
    list_assessment_templates([::AWSConfig], arguments::Dict)
    list_assessment_templates([::AWSConfig]; <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListAssessmentTemplates", arguments::Dict)
    inspector([::AWSConfig], "ListAssessmentTemplates", <keyword arguments>)

# ListAssessmentTemplates Operation

Lists the assessment templates that correspond to the assessment targets that are specified by the ARNs of the assessment targets.

# Arguments

## `assessmentTargetArns = [::String, ...]`
A list of ARNs that specifies the assessment targets whose assessment templates you want to list.

## `filter = [ ... ]`
You can use this parameter to specify a subset of data to be included in the action's response.

For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match.
```
 filter = [
        "namePattern" =>  ::String,
        "durationRange" =>  [
            "minSeconds" =>  ::Int,
            "maxSeconds" =>  ::Int
        ],
        "rulesPackageArns" =>  [::String, ...]
    ]
```

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **ListAssessmentTemplates** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500.

# Returns

`ListAssessmentTemplatesResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

# Example: List assessment templates

Lists the assessment templates that correspond to the assessment targets that are specified by the ARNs of the assessment targets.

Input:
```
[
    "assessmentTargetArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq"
    ],
    "maxResults" => 123
]
```

Output:
```
Dict(
    "assessmentTemplateArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw",
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-Uza6ihLh"
    ],
    "nextToken" => "1"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListAssessmentTemplates)
"""
@inline list_assessment_templates(aws::AWSConfig=default_aws_config(); args...) = list_assessment_templates(aws, args)

@inline list_assessment_templates(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListAssessmentTemplates", args)

@inline list_assessment_templates(args) = list_assessment_templates(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_event_subscriptions
    list_event_subscriptions([::AWSConfig], arguments::Dict)
    list_event_subscriptions([::AWSConfig]; <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListEventSubscriptions", arguments::Dict)
    inspector([::AWSConfig], "ListEventSubscriptions", <keyword arguments>)

# ListEventSubscriptions Operation

Lists all the event subscriptions for the assessment template that is specified by the ARN of the assessment template. For more information, see [SubscribeToEvent](@ref) and [UnsubscribeFromEvent](@ref).

# Arguments

## `resourceArn = ::String`
The ARN of the assessment template for which you want to list the existing event subscriptions.

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **ListEventSubscriptions** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500.

# Returns

`ListEventSubscriptionsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

# Example: List event subscriptions

Lists all the event subscriptions for the assessment template that is specified by the ARN of the assessment template.

Input:
```
[
    "maxResults" => 123,
    "resourceArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0"
]
```

Output:
```
Dict(
    "nextToken" => "1",
    "subscriptions" => [
        Dict(
            "eventSubscriptions" => [
                Dict(
                    "event" => "ASSESSMENT_RUN_COMPLETED",
                    "subscribedAt" => "1459455440.867"
                )
            ],
            "resourceArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0",
            "topicArn" => "arn:aws:sns:us-west-2:123456789012:exampletopic"
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListEventSubscriptions)
"""
@inline list_event_subscriptions(aws::AWSConfig=default_aws_config(); args...) = list_event_subscriptions(aws, args)

@inline list_event_subscriptions(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListEventSubscriptions", args)

@inline list_event_subscriptions(args) = list_event_subscriptions(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_exclusions
    list_exclusions([::AWSConfig], arguments::Dict)
    list_exclusions([::AWSConfig]; assessmentRunArn=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListExclusions", arguments::Dict)
    inspector([::AWSConfig], "ListExclusions", assessmentRunArn=, <keyword arguments>)

# ListExclusions Operation

List exclusions that are generated by the assessment run.

# Arguments

## `assessmentRunArn = ::String` -- *Required*
The ARN of the assessment run that generated the exclusions that you want to list.

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the ListExclusionsRequest action. Subsequent calls to the action fill nextToken in the request with the value of nextToken from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 100. The maximum value is 500.

# Returns

`ListExclusionsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListExclusions)
"""
@inline list_exclusions(aws::AWSConfig=default_aws_config(); args...) = list_exclusions(aws, args)

@inline list_exclusions(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListExclusions", args)

@inline list_exclusions(args) = list_exclusions(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_findings
    list_findings([::AWSConfig], arguments::Dict)
    list_findings([::AWSConfig]; <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListFindings", arguments::Dict)
    inspector([::AWSConfig], "ListFindings", <keyword arguments>)

# ListFindings Operation

Lists findings that are generated by the assessment runs that are specified by the ARNs of the assessment runs.

# Arguments

## `assessmentRunArns = [::String, ...]`
The ARNs of the assessment runs that generate the findings that you want to list.

## `filter = [ ... ]`
You can use this parameter to specify a subset of data to be included in the action's response.

For a record to match a filter, all specified filter attributes must match. When multiple values are specified for a filter attribute, any of the values can match.
```
 filter = [
        "agentIds" =>  [::String, ...],
        "autoScalingGroups" =>  [::String, ...],
        "ruleNames" =>  [::String, ...],
        "severities" =>  ["Low", "Medium", "High", "Informational" or "Undefined", ...],
        "rulesPackageArns" =>  [::String, ...],
        "attributes" =>  [[
            "key" => <required> ::String,
            "value" =>  ::String
        ], ...],
        "userAttributes" =>  [[
            "key" => <required> ::String,
            "value" =>  ::String
        ], ...],
        "creationTimeRange" =>  [
            "beginDate" =>  timestamp,
            "endDate" =>  timestamp
        ]
    ]
```

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **ListFindings** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500.

# Returns

`ListFindingsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

# Example: List findings

Lists findings that are generated by the assessment runs that are specified by the ARNs of the assessment runs.

Input:
```
[
    "assessmentRunArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE"
    ],
    "maxResults" => 123
]
```

Output:
```
Dict(
    "findingArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-MKkpXXPE/finding/0-HwPnsDm4",
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-4r1V2mAw/run/0-v5D6fI3v/finding/0-tyvmqBLy"
    ],
    "nextToken" => "1"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListFindings)
"""
@inline list_findings(aws::AWSConfig=default_aws_config(); args...) = list_findings(aws, args)

@inline list_findings(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListFindings", args)

@inline list_findings(args) = list_findings(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_rules_packages
    list_rules_packages([::AWSConfig], arguments::Dict)
    list_rules_packages([::AWSConfig]; <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListRulesPackages", arguments::Dict)
    inspector([::AWSConfig], "ListRulesPackages", <keyword arguments>)

# ListRulesPackages Operation

Lists all available Amazon Inspector rules packages.

# Arguments

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **ListRulesPackages** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500.

# Returns

`ListRulesPackagesResponse`

# Exceptions

`InternalException`, `InvalidInputException` or `AccessDeniedException`.

# Example: List rules packages

Lists all available Amazon Inspector rules packages.

Input:
```
[
    "maxResults" => 123
]
```

Output:
```
Dict(
    "nextToken" => "1",
    "rulesPackageArns" => [
        "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-9hgA516p",
        "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-H5hpSawc",
        "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-JJOtZiqQ",
        "arn:aws:inspector:us-west-2:758058086616:rulespackage/0-vg5GGHSD"
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListRulesPackages)
"""
@inline list_rules_packages(aws::AWSConfig=default_aws_config(); args...) = list_rules_packages(aws, args)

@inline list_rules_packages(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListRulesPackages", args)

@inline list_rules_packages(args) = list_rules_packages(default_aws_config(), args)

"""
    using AWSSDK.Inspector.list_tags_for_resource
    list_tags_for_resource([::AWSConfig], arguments::Dict)
    list_tags_for_resource([::AWSConfig]; resourceArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "ListTagsForResource", arguments::Dict)
    inspector([::AWSConfig], "ListTagsForResource", resourceArn=)

# ListTagsForResource Operation

Lists all tags associated with an assessment template.

# Arguments

## `resourceArn = ::String` -- *Required*
The ARN that specifies the assessment template whose tags you want to list.

# Returns

`ListTagsForResourceResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException` or `NoSuchEntityException`.

# Example: List tags for resource

Lists all tags associated with an assessment template.

Input:
```
[
    "resourceArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-gcwFliYu"
]
```

Output:
```
Dict(
    "tags" => [
        Dict(
            "key" => "Name",
            "value" => "Example"
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/ListTagsForResource)
"""
@inline list_tags_for_resource(aws::AWSConfig=default_aws_config(); args...) = list_tags_for_resource(aws, args)

@inline list_tags_for_resource(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "ListTagsForResource", args)

@inline list_tags_for_resource(args) = list_tags_for_resource(default_aws_config(), args)

"""
    using AWSSDK.Inspector.preview_agents
    preview_agents([::AWSConfig], arguments::Dict)
    preview_agents([::AWSConfig]; previewAgentsArn=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "PreviewAgents", arguments::Dict)
    inspector([::AWSConfig], "PreviewAgents", previewAgentsArn=, <keyword arguments>)

# PreviewAgents Operation

Previews the agents installed on the EC2 instances that are part of the specified assessment target.

# Arguments

## `previewAgentsArn = ::String` -- *Required*
The ARN of the assessment target whose agents you want to preview.

## `nextToken = ::String`
You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the **PreviewAgents** action. Subsequent calls to the action fill **nextToken** in the request with the value of **NextToken** from the previous response to continue listing data.

## `maxResults = ::Int`
You can use this parameter to indicate the maximum number of items you want in the response. The default value is 10. The maximum value is 500.

# Returns

`PreviewAgentsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException` or `InvalidCrossAccountRoleException`.

# Example: Preview agents

Previews the agents installed on the EC2 instances that are part of the specified assessment target.

Input:
```
[
    "maxResults" => 123,
    "previewAgentsArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq"
]
```

Output:
```
Dict(
    "agentPreviews" => [
        Dict(
            "agentId" => "i-49113b93"
        )
    ],
    "nextToken" => "1"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/PreviewAgents)
"""
@inline preview_agents(aws::AWSConfig=default_aws_config(); args...) = preview_agents(aws, args)

@inline preview_agents(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "PreviewAgents", args)

@inline preview_agents(args) = preview_agents(default_aws_config(), args)

"""
    using AWSSDK.Inspector.register_cross_account_access_role
    register_cross_account_access_role([::AWSConfig], arguments::Dict)
    register_cross_account_access_role([::AWSConfig]; roleArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "RegisterCrossAccountAccessRole", arguments::Dict)
    inspector([::AWSConfig], "RegisterCrossAccountAccessRole", roleArn=)

# RegisterCrossAccountAccessRole Operation

Registers the IAM role that grants Amazon Inspector access to AWS Services needed to perform security assessments.

# Arguments

## `roleArn = ::String` -- *Required*
The ARN of the IAM role that grants Amazon Inspector access to AWS Services needed to perform security assessments.

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `InvalidCrossAccountRoleException` or `ServiceTemporarilyUnavailableException`.

# Example: Register cross account access role

Registers the IAM role that Amazon Inspector uses to list your EC2 instances at the start of the assessment run or when you call the PreviewAgents action.

Input:
```
[
    "roleArn" => "arn:aws:iam::123456789012:role/inspector"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/RegisterCrossAccountAccessRole)
"""
@inline register_cross_account_access_role(aws::AWSConfig=default_aws_config(); args...) = register_cross_account_access_role(aws, args)

@inline register_cross_account_access_role(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "RegisterCrossAccountAccessRole", args)

@inline register_cross_account_access_role(args) = register_cross_account_access_role(default_aws_config(), args)

"""
    using AWSSDK.Inspector.remove_attributes_from_findings
    remove_attributes_from_findings([::AWSConfig], arguments::Dict)
    remove_attributes_from_findings([::AWSConfig]; findingArns=, attributeKeys=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "RemoveAttributesFromFindings", arguments::Dict)
    inspector([::AWSConfig], "RemoveAttributesFromFindings", findingArns=, attributeKeys=)

# RemoveAttributesFromFindings Operation

Removes entire attributes (key and value pairs) from the findings that are specified by the ARNs of the findings where an attribute with the specified key exists.

# Arguments

## `findingArns = [::String, ...]` -- *Required*
The ARNs that specify the findings that you want to remove attributes from.

## `attributeKeys = [::String, ...]` -- *Required*
The array of attribute keys that you want to remove from specified findings.

# Returns

`RemoveAttributesFromFindingsResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Remove attributes from findings

Removes entire attributes (key and value pairs) from the findings that are specified by the ARNs of the findings where an attribute with the specified key exists.

Input:
```
[
    "attributeKeys" => [
        "key=Example,value=example"
    ],
    "findingArns" => [
        "arn:aws:inspector:us-west-2:123456789012:target/0-0kFIPusq/template/0-8l1VIE0D/run/0-Z02cjjug/finding/0-T8yM9mEU"
    ]
]
```

Output:
```
Dict(
    "failedItems" => Dict(

    )
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/RemoveAttributesFromFindings)
"""
@inline remove_attributes_from_findings(aws::AWSConfig=default_aws_config(); args...) = remove_attributes_from_findings(aws, args)

@inline remove_attributes_from_findings(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "RemoveAttributesFromFindings", args)

@inline remove_attributes_from_findings(args) = remove_attributes_from_findings(default_aws_config(), args)

"""
    using AWSSDK.Inspector.set_tags_for_resource
    set_tags_for_resource([::AWSConfig], arguments::Dict)
    set_tags_for_resource([::AWSConfig]; resourceArn=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "SetTagsForResource", arguments::Dict)
    inspector([::AWSConfig], "SetTagsForResource", resourceArn=, <keyword arguments>)

# SetTagsForResource Operation

Sets tags (key and value pairs) to the assessment template that is specified by the ARN of the assessment template.

# Arguments

## `resourceArn = ::String` -- *Required*
The ARN of the assessment template that you want to set tags to.

## `tags = [[ ... ], ...]`
A collection of key and value pairs that you want to set to the assessment template.
```
 tags = [[
        "key" => <required> ::String,
        "value" =>  ::String
    ], ...]
```

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Set tags for resource

Sets tags (key and value pairs) to the assessment template that is specified by the ARN of the assessment template.

Input:
```
[
    "resourceArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0",
    "tags" => [
        [
            "key" => "Example",
            "value" => "example"
        ]
    ]
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/SetTagsForResource)
"""
@inline set_tags_for_resource(aws::AWSConfig=default_aws_config(); args...) = set_tags_for_resource(aws, args)

@inline set_tags_for_resource(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "SetTagsForResource", args)

@inline set_tags_for_resource(args) = set_tags_for_resource(default_aws_config(), args)

"""
    using AWSSDK.Inspector.start_assessment_run
    start_assessment_run([::AWSConfig], arguments::Dict)
    start_assessment_run([::AWSConfig]; assessmentTemplateArn=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "StartAssessmentRun", arguments::Dict)
    inspector([::AWSConfig], "StartAssessmentRun", assessmentTemplateArn=, <keyword arguments>)

# StartAssessmentRun Operation

Starts the assessment run specified by the ARN of the assessment template. For this API to function properly, you must not exceed the limit of running up to 500 concurrent agents per AWS account.

# Arguments

## `assessmentTemplateArn = ::String` -- *Required*
The ARN of the assessment template of the assessment run that you want to start.

## `assessmentRunName = ::String`
You can specify the name for the assessment run. The name must be unique for the assessment template whose ARN is used to start the assessment run.

# Returns

`StartAssessmentRunResponse`

# Exceptions

`InternalException`, `InvalidInputException`, `LimitExceededException`, `AccessDeniedException`, `NoSuchEntityException`, `InvalidCrossAccountRoleException`, `AgentsAlreadyRunningAssessmentException` or `ServiceTemporarilyUnavailableException`.

# Example: Start assessment run

Starts the assessment run specified by the ARN of the assessment template. For this API to function properly, you must not exceed the limit of running up to 500 concurrent agents per AWS account.

Input:
```
[
    "assessmentRunName" => "examplerun",
    "assessmentTemplateArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T"
]
```

Output:
```
Dict(
    "assessmentRunArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T/run/0-jOoroxyY"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/StartAssessmentRun)
"""
@inline start_assessment_run(aws::AWSConfig=default_aws_config(); args...) = start_assessment_run(aws, args)

@inline start_assessment_run(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "StartAssessmentRun", args)

@inline start_assessment_run(args) = start_assessment_run(default_aws_config(), args)

"""
    using AWSSDK.Inspector.stop_assessment_run
    stop_assessment_run([::AWSConfig], arguments::Dict)
    stop_assessment_run([::AWSConfig]; assessmentRunArn=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "StopAssessmentRun", arguments::Dict)
    inspector([::AWSConfig], "StopAssessmentRun", assessmentRunArn=, <keyword arguments>)

# StopAssessmentRun Operation

Stops the assessment run that is specified by the ARN of the assessment run.

# Arguments

## `assessmentRunArn = ::String` -- *Required*
The ARN of the assessment run that you want to stop.

## `stopAction = "START_EVALUATION" or "SKIP_EVALUATION"`
An input option that can be set to either START_EVALUATION or SKIP_EVALUATION. START_EVALUATION (the default value), stops the AWS agent from collecting data and begins the results evaluation and the findings generation process. SKIP_EVALUATION cancels the assessment run immediately, after which no findings are generated.

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Stop assessment run

Stops the assessment run that is specified by the ARN of the assessment run.

Input:
```
[
    "assessmentRunArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-it5r2S4T/run/0-11LMTAVe"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/StopAssessmentRun)
"""
@inline stop_assessment_run(aws::AWSConfig=default_aws_config(); args...) = stop_assessment_run(aws, args)

@inline stop_assessment_run(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "StopAssessmentRun", args)

@inline stop_assessment_run(args) = stop_assessment_run(default_aws_config(), args)

"""
    using AWSSDK.Inspector.subscribe_to_event
    subscribe_to_event([::AWSConfig], arguments::Dict)
    subscribe_to_event([::AWSConfig]; resourceArn=, event=, topicArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "SubscribeToEvent", arguments::Dict)
    inspector([::AWSConfig], "SubscribeToEvent", resourceArn=, event=, topicArn=)

# SubscribeToEvent Operation

Enables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic.

# Arguments

## `resourceArn = ::String` -- *Required*
The ARN of the assessment template that is used during the event for which you want to receive SNS notifications.

## `event = "ASSESSMENT_RUN_STARTED", "ASSESSMENT_RUN_COMPLETED", "ASSESSMENT_RUN_STATE_CHANGED", "FINDING_REPORTED" or "OTHER"` -- *Required*
The event for which you want to receive SNS notifications.

## `topicArn = ::String` -- *Required*
The ARN of the SNS topic to which the SNS notifications are sent.

# Exceptions

`InternalException`, `InvalidInputException`, `LimitExceededException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Subscribe to event

Enables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic.

Input:
```
[
    "event" => "ASSESSMENT_RUN_COMPLETED",
    "resourceArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0",
    "topicArn" => "arn:aws:sns:us-west-2:123456789012:exampletopic"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/SubscribeToEvent)
"""
@inline subscribe_to_event(aws::AWSConfig=default_aws_config(); args...) = subscribe_to_event(aws, args)

@inline subscribe_to_event(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "SubscribeToEvent", args)

@inline subscribe_to_event(args) = subscribe_to_event(default_aws_config(), args)

"""
    using AWSSDK.Inspector.unsubscribe_from_event
    unsubscribe_from_event([::AWSConfig], arguments::Dict)
    unsubscribe_from_event([::AWSConfig]; resourceArn=, event=, topicArn=)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "UnsubscribeFromEvent", arguments::Dict)
    inspector([::AWSConfig], "UnsubscribeFromEvent", resourceArn=, event=, topicArn=)

# UnsubscribeFromEvent Operation

Disables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic.

# Arguments

## `resourceArn = ::String` -- *Required*
The ARN of the assessment template that is used during the event for which you want to stop receiving SNS notifications.

## `event = "ASSESSMENT_RUN_STARTED", "ASSESSMENT_RUN_COMPLETED", "ASSESSMENT_RUN_STATE_CHANGED", "FINDING_REPORTED" or "OTHER"` -- *Required*
The event for which you want to stop receiving SNS notifications.

## `topicArn = ::String` -- *Required*
The ARN of the SNS topic to which SNS notifications are sent.

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Unsubscribe from event

Disables the process of sending Amazon Simple Notification Service (SNS) notifications about a specified event to a specified SNS topic.

Input:
```
[
    "event" => "ASSESSMENT_RUN_COMPLETED",
    "resourceArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX/template/0-7sbz2Kz0",
    "topicArn" => "arn:aws:sns:us-west-2:123456789012:exampletopic"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/UnsubscribeFromEvent)
"""
@inline unsubscribe_from_event(aws::AWSConfig=default_aws_config(); args...) = unsubscribe_from_event(aws, args)

@inline unsubscribe_from_event(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "UnsubscribeFromEvent", args)

@inline unsubscribe_from_event(args) = unsubscribe_from_event(default_aws_config(), args)

"""
    using AWSSDK.Inspector.update_assessment_target
    update_assessment_target([::AWSConfig], arguments::Dict)
    update_assessment_target([::AWSConfig]; assessmentTargetArn=, assessmentTargetName=, <keyword arguments>)

    using AWSCore.Services.inspector
    inspector([::AWSConfig], "UpdateAssessmentTarget", arguments::Dict)
    inspector([::AWSConfig], "UpdateAssessmentTarget", assessmentTargetArn=, assessmentTargetName=, <keyword arguments>)

# UpdateAssessmentTarget Operation

Updates the assessment target that is specified by the ARN of the assessment target.

If resourceGroupArn is not specified, all EC2 instances in the current AWS account and region are included in the assessment target.

# Arguments

## `assessmentTargetArn = ::String` -- *Required*
The ARN of the assessment target that you want to update.

## `assessmentTargetName = ::String` -- *Required*
The name of the assessment target that you want to update.

## `resourceGroupArn = ::String`
The ARN of the resource group that is used to specify the new resource group to associate with the assessment target.

# Exceptions

`InternalException`, `InvalidInputException`, `AccessDeniedException`, `NoSuchEntityException` or `ServiceTemporarilyUnavailableException`.

# Example: Update assessment target

Updates the assessment target that is specified by the ARN of the assessment target.

Input:
```
[
    "assessmentTargetArn" => "arn:aws:inspector:us-west-2:123456789012:target/0-nvgVhaxX",
    "assessmentTargetName" => "Example",
    "resourceGroupArn" => "arn:aws:inspector:us-west-2:123456789012:resourcegroup/0-yNbgL5Pt"
]
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/inspector-2016-02-16/UpdateAssessmentTarget)
"""
@inline update_assessment_target(aws::AWSConfig=default_aws_config(); args...) = update_assessment_target(aws, args)

@inline update_assessment_target(aws::AWSConfig, args) = AWSCore.Services.inspector(aws, "UpdateAssessmentTarget", args)

@inline update_assessment_target(args) = update_assessment_target(default_aws_config(), args)

end # module Inspector

#==============================================================================#
# End of file
#==============================================================================#


text:
using Flux.Data
using Flux.Optimise
using Flux: logitcrossentropy
@testset "training" begin
    all_train_set, _ = get_processed_data_MNIST()
    train_set = (all_train_set[1][:,:,:,1:1000], all_train_set[2][:,1:1000])
    val_set = (all_train_set[1][:,:,:,1000:2000], all_train_set[2][:,1000:2000])
    bs=512
    train_loader = DataLoader(train_set, batchsize=bs, shuffle=true)
    val_loader = DataLoader(val_set, batchsize=bs, shuffle=false)
    databunch = Databunch(train_loader,val_loader)
    nfs = [8,16,32,32]
    cnn_model = get_model(nfs)
    num_hooks = [1,2,3,4]
    n_epochs = 2
    (cnn_model_hook, dic_hooks) = get_model_hooks(cnn_model,num_hooks,n=n_epochs*(length(train_loader)+length(val_loader)))
    learning_rate = 1e-1
    SGD = Descent(learning_rate)
    loss(pred,y) = logitcrossentropy(pred,y)
    learner_cnn = Learner(cnn_model_hook,SGD,loss,databunch,cbs=(AvgStatsCallback(),AvgStatsCallback(1,accuracy),))

    rec = fit!(learner_cnn,n_epochs)
end